view tests/ls.test @ 1572:da1bf31ed322 draft

Tweak the "ignoring return value" fortify workaround for readlinkat. We zero the buffer and if the link read fails that's left alone, so it's ok for the symlink not to be there. Unfortunately, typecasting the return value to (void) doesn't shut up gcc, and having an if(); with the semicolon on the same line doesn't shut up llvm. (The semicolon on a new line would, but C does not have significant whitespace and I'm not going to humor llvm if it plans to start.) So far, empty curly brackets consistently get the warning to shut up.
author Rob Landley <rob@landley.net>
date Mon, 24 Nov 2014 17:23:23 -0600
parents 28b0987d4952
children
line wrap: on
line source

#!/bin/bash

# Copyright 2013 Robin Mittal <robinmittal.it@gmail.com>
# Copyright 2013 Divya Kothari <divya.s.kothari@gmail.com>

[ -f testing.sh ] && . testing.sh

#testing "name" "command" "result" "infile" "stdin"
#set -x

# Creating test-file/dir for testing ls
mkdir -p lstest/dir1 lstest/dir2 || exit 1
echo "test file1" > lstest/file1.txt
echo "test file2" > lstest/file2.txt
echo "hidden file1" > lstest/.hfile1

IN="cd lstest"
OUT="cd .. "

testing "ls no argument" "$IN && ls; $OUT" "dir1\ndir2\nfile1.txt\nfile2.txt\n" "" ""
testing "ls with wild char" "$IN && ls file*; $OUT" "file1.txt\nfile2.txt\n" "" ""
testing "ls with wild char - long listing" "$IN && ls -1 file*; $OUT" "file1.txt\nfile2.txt\n" "" ""
testing "ls with -p" "$IN && ls -p; $OUT" "dir1/\ndir2/\nfile1.txt\nfile2.txt\n" "" ""
testing "ls with -a" "$IN && ls -a; $OUT" \
        ".\n..\ndir1\ndir2\nfile1.txt\nfile2.txt\n.hfile1\n" "" ""
testing "ls with -A" "$IN && ls -A; $OUT" \
        "dir1\ndir2\nfile1.txt\nfile2.txt\n.hfile1\n" "" ""
testing "ls with -d" "$IN && ls -d; $OUT" ".\n" "" ""
testing "ls with wild char and -d *" "$IN && ls -d *; $OUT" "dir1\ndir2\nfile1.txt\nfile2.txt\n" "" ""
testing "ls with -k" "$IN && ls -k; $OUT" "dir1\ndir2\nfile1.txt\nfile2.txt\n" "" ""
testing "ls with -m" "$IN && ls -m; $OUT" "dir1, dir2, file1.txt, file2.txt\n" "" ""
testing "ls with -F" "$IN && ls -F; $OUT" "dir1/\ndir2/\nfile1.txt\nfile2.txt\n" "" ""
testing "ls with -dk *" "$IN && ls -dk *; $OUT" "dir1\ndir2\nfile1.txt\nfile2.txt\n" "" ""

ln -s file1.txt lstest/slink
testing "ls softlink - long listing" "$IN && ls -l slink | awk '{ print \$NF }' ; $OUT" \
          "file1.txt\n" "" ""
rm -f lstest/slink

ln -s /dev/null/nosuchfile lstest/nosuchfile
testing "ls with -d - broken softlink" "$IN && ls -d nosuchfile; $OUT" "nosuchfile\n" "" ""
rm -f lstest/nosuchfile

rm -rf lstest/* && mkdir -p lstest/dir1 && touch lstest/file1.txt
testing "ls nested recursively" "$IN && ls -R; $OUT" \
          ".:\ndir1\nfile1.txt\n\n./dir1:\n" "" ""

rm -rf lstest/* && touch lstest/file1.txt && INODE=`stat -c %i lstest/file1.txt`
testing "ls with -i" "$IN && ls -i 2>/dev/null; $OUT" "$INODE file1.txt\n" "" ""
unset INODE

# Removing test dir for cleanup purpose
rm -rf lstest