xref: /aosp_15_r20/external/toybox/tests/cmp.test (revision cf5a6c84e2b8763fc1a7db14496fd4742913b199)
1*cf5a6c84SAndroid Build Coastguard Worker#!/bin/bash
2*cf5a6c84SAndroid Build Coastguard Worker
3*cf5a6c84SAndroid Build Coastguard Worker[ -f testing.sh ] && . testing.sh
4*cf5a6c84SAndroid Build Coastguard Worker
5*cf5a6c84SAndroid Build Coastguard Worker# TODO: coreutils cmp uses stdin if only one file is given
6*cf5a6c84SAndroid Build Coastguard Workertestcmd "one argument match" 'input && echo yes' "yes\n" \
7*cf5a6c84SAndroid Build Coastguard Worker  "one\ntwo\nthree" "one\ntwo\nthree"
8*cf5a6c84SAndroid Build Coastguard Worker# posix says ""%s %s differ: char %d, line %d\n" but diffutils says "byte"
9*cf5a6c84SAndroid Build Coastguard Workertestcmd "one argument diff" 'input | sed s/byte/char/' \
10*cf5a6c84SAndroid Build Coastguard Worker  "input - differ: char 5, line 2\n" "one\ntwo\nthree" "one\nboing\nthree"
11*cf5a6c84SAndroid Build Coastguard Worker
12*cf5a6c84SAndroid Build Coastguard Workertestcmd "missing file1 [fail]" 'file1 input 2>/dev/null || echo $?' "2\n" "foo" ""
13*cf5a6c84SAndroid Build Coastguard Worker
14*cf5a6c84SAndroid Build Coastguard Worker#mkdir dir
15*cf5a6c84SAndroid Build Coastguard Worker#testing "directory [fail]" "cmp dir dir 2>/dev/null || echo yes" \
16*cf5a6c84SAndroid Build Coastguard Worker	#"yes\n" "" ""
17*cf5a6c84SAndroid Build Coastguard Worker#rmdir dir
18*cf5a6c84SAndroid Build Coastguard Worker
19*cf5a6c84SAndroid Build Coastguard Workerecho "ab
20*cf5a6c84SAndroid Build Coastguard Workerc" > input2
21*cf5a6c84SAndroid Build Coastguard Worker
22*cf5a6c84SAndroid Build Coastguard Workertestcmd "identical files, stdout" "input input2" "" "ab\nc\n" ""
23*cf5a6c84SAndroid Build Coastguard Workertestcmd "identical files, return code" "input input2 && echo yes" "yes\n" "ab\nc\n" ""
24*cf5a6c84SAndroid Build Coastguard Worker
25*cf5a6c84SAndroid Build Coastguard Workertestcmd "EOF, stderr" "input input2 2>&1" \
26*cf5a6c84SAndroid Build Coastguard Worker  "cmp: EOF on input2 after byte 5, line 2\n" "ab\nc\nx" ""
27*cf5a6c84SAndroid Build Coastguard Workertestcmd "EOF, return code" "input input2 2>/dev/null || echo yes" "yes\n" "ab\nc\nx" ""
28*cf5a6c84SAndroid Build Coastguard Worker# The gnu/dammit version fails this because posix says "char" and they don't.
29*cf5a6c84SAndroid Build Coastguard Workertestcmd "diff, stdout" "input input2 | sed s/byte/char/" \
30*cf5a6c84SAndroid Build Coastguard Worker  "input input2 differ: char 4, line 2\n" "ab\nx\nx" ""
31*cf5a6c84SAndroid Build Coastguard Workertestcmd "diff, return code" "input input2 > /dev/null || echo yes" "yes\n" "ab\nx\nx" ""
32*cf5a6c84SAndroid Build Coastguard Worker
33*cf5a6c84SAndroid Build Coastguard Workertestcmd "-s EOF, return code" "-s input input2 2>&1 || echo yes"  "yes\n" "ab\nc\nx" ""
34*cf5a6c84SAndroid Build Coastguard Workertestcmd "-s diff, return code" "-s input input2 2>&1 || echo yes" "yes\n" "ab\nx\nx" ""
35*cf5a6c84SAndroid Build Coastguard Worker
36*cf5a6c84SAndroid Build Coastguard Workertestcmd "-l EOF, stderr" "-l input input2 2>&1" \
37*cf5a6c84SAndroid Build Coastguard Worker  "cmp: EOF on input2 after byte 5\n" "ab\nc\nx" ""
38*cf5a6c84SAndroid Build Coastguard Workertestcmd "-l diff and EOF, stdout and stderr" "-l input input2 2>&1 | sort" \
39*cf5a6c84SAndroid Build Coastguard Worker  "4 170 143\ncmp: EOF on input2 after byte 5\n" "ab\nx\nx" ""
40*cf5a6c84SAndroid Build Coastguard Worker
41*cf5a6c84SAndroid Build Coastguard Workertestcmd "-s not exist" "-s input doesnotexist 2>&1 || echo yes" "yes\n" "x" ""
42*cf5a6c84SAndroid Build Coastguard Worker
43*cf5a6c84SAndroid Build Coastguard Workerrm input2
44*cf5a6c84SAndroid Build Coastguard Worker
45*cf5a6c84SAndroid Build Coastguard Workertestcmd "stdin and file" "input - | sed s/byte/char/" \
46*cf5a6c84SAndroid Build Coastguard Worker  "input - differ: char 4, line 2\n" "ab\nc\n" "ab\nx\n"
47*cf5a6c84SAndroid Build Coastguard Workertestcmd "-n skip1 skip2" "-n 3 input - 3 5 && echo yes" "yes\n" "abcdef123" "vwxyzdef987"
48*cf5a6c84SAndroid Build Coastguard Worker
49