4bb1b04fd1
$COMMAND environment variable, instead put full command line (including command to run) in second argument. Modify $PATH to have test versions of commands at start of path. (Also more infrastructure for testing as root, work in progress...)
71 lines
2.3 KiB
Bash
Executable File
71 lines
2.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# SUSv3 compliant uniq tests.
|
|
# Copyright 2005 by Rob Landley <rob@landley.net>
|
|
# Licensed under GPL v2, see file LICENSE for details.
|
|
|
|
# AUDIT: Full SUSv3 coverage (except internationalization).
|
|
|
|
. testing.sh
|
|
|
|
# testing "test name" "options" "expected result" "file input" "stdin"
|
|
# file input will be file called "input"
|
|
# test can create a file "actual" instead of writing to stdout
|
|
|
|
# Test exit status
|
|
|
|
testing "uniq (exit with error)" "uniq nonexistent 2> /dev/null || echo yes" \
|
|
"yes\n" "" ""
|
|
testing "uniq (exit success)" "uniq /dev/null && echo yes" "yes\n" "" ""
|
|
|
|
# Test various data sources and destinations
|
|
|
|
testing "uniq (default to stdin)" "uniq" "one\ntwo\nthree\n" "" \
|
|
"one\ntwo\ntwo\nthree\nthree\nthree\n"
|
|
testing "uniq - (specify stdin)" "uniq -" "one\ntwo\nthree\n" "" \
|
|
"one\ntwo\ntwo\nthree\nthree\nthree\n"
|
|
testing "uniq input (specify file)" "uniq input" "one\ntwo\nthree\n" \
|
|
"one\ntwo\ntwo\nthree\nthree\nthree\n" ""
|
|
|
|
testing "uniq input outfile (two files)" "uniq input actual > /dev/null" \
|
|
"one\ntwo\nthree\n" "one\ntwo\ntwo\nthree\nthree\nthree\n" ""
|
|
testing "uniq (stdin) outfile" "uniq - actual" \
|
|
"one\ntwo\nthree\n" "" "one\ntwo\ntwo\nthree\nthree\nthree\n"
|
|
# Note: SUSv3 doesn't seem to require support for "-" output, but we do anyway.
|
|
testing "uniq input - (specify stdout)" "uniq input -" \
|
|
"one\ntwo\nthree\n" "one\ntwo\ntwo\nthree\nthree\nthree\n" ""
|
|
|
|
|
|
#-f skip fields
|
|
#-s skip chars
|
|
#-c occurrences
|
|
#-d dups only
|
|
#-u
|
|
|
|
# Test various command line options
|
|
|
|
# Leading whitespace is a minor technical violation of the spec,
|
|
# but since gnu does it...
|
|
testing "uniq -c (occurrence count)" "uniq -c | sed 's/^[ \t]*//'" \
|
|
"1 one\n2 two\n3 three\n" "" \
|
|
"one\ntwo\ntwo\nthree\nthree\nthree\n"
|
|
testing "uniq -d (dups only) " "uniq -d" "two\nthree\n" "" \
|
|
"one\ntwo\ntwo\nthree\nthree\nthree\n"
|
|
|
|
testing "uniq -f -s (skip fields and chars)" "uniq -f2 -s 3" \
|
|
"cc dd ee8
|
|
aa bb cc9
|
|
" "" \
|
|
"cc dd ee8
|
|
bb cc dd8
|
|
aa bb cc9
|
|
"
|
|
|
|
# -d is "Suppress the writing fo lines that are not repeated in the input."
|
|
# -u is "Suppress the writing of lines that are repeated in the input."
|
|
# Therefore, together this means they should produce no output.
|
|
testing "uniq -u and -d produce no output" "uniq -d -u" "" "" \
|
|
"one\ntwo\ntwo\nthree\nthree\nthree\n"
|
|
|
|
exit $FAILCOUNT
|