summaryrefslogtreecommitdiffstats
path: root/package/busybox/busybox-1.14.2-test.patch
blob: ce0d9a77ee85e6fd286c76e83508cf125c09b47a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
diff -urpN busybox-1.14.2/coreutils/test.c busybox-1.14.2-test/coreutils/test.c
--- busybox-1.14.2/coreutils/test.c	2009-07-05 22:59:28.000000000 +0200
+++ busybox-1.14.2-test/coreutils/test.c	2009-07-17 01:46:28.000000000 +0200
@@ -571,7 +571,14 @@ static number_t nexpr(enum token n)
 
 	nest_msg(">nexpr(%s)\n", TOKSTR[n]);
 	if (n == UNOT) {
-		res = !nexpr(check_operator(*++args));
+		n = check_operator(*++args);
+		if (n == EOI) {
+			/* special case: [ ! ], [ a -a ! ] are valid */
+			/* IOW, "! ARG" may miss ARG */
+			unnest_msg("<nexpr:1 (!EOI)\n");
+			return 1;
+		}
+		res = !nexpr(n);
 		unnest_msg("<nexpr:%lld\n", res);
 		return res;
 	}
@@ -742,7 +749,7 @@ int test_main(int argc, char **argv)
 		check_operator(argv[1]);
 		if (last_operator->op_type == BINOP) {
 			/* "test [!] arg1 <binary_op> arg2" */
-			args = &argv[0];
+			args = argv;
 			res = (binop() == 0);
 			goto ret;
 		}
@@ -755,7 +762,7 @@ int test_main(int argc, char **argv)
 		argv--;
 	}
 #endif
-	args = &argv[0];
+	args = argv;
 	res = !oexpr(check_operator(*args));
 
 	if (*args != NULL && *++args != NULL) {
diff -urpN busybox-1.14.2/testsuite/test.tests busybox-1.14.2-test/testsuite/test.tests
--- busybox-1.14.2/testsuite/test.tests	2009-07-05 22:59:22.000000000 +0200
+++ busybox-1.14.2-test/testsuite/test.tests	2009-07-17 01:46:28.000000000 +0200
@@ -21,6 +21,11 @@ testing "test '': should be false (1)" \
 	"1\n" \
 	"" ""
 
+testing "test !: should be true (0)" \
+	"busybox test !; echo \$?" \
+	"0\n" \
+	"" ""
+
 testing "test a: should be true (0)" \
 	"busybox test a; echo \$?" \
 	"0\n" \
@@ -51,6 +56,11 @@ testing "test -lt = -gt: should be false
 	"1\n" \
 	"" ""
 
+testing "test a -a !: should be true (0)" \
+	"busybox test a -a !; echo \$?" \
+	"0\n" \
+	"" ""
+
 testing "test -f = a -o b: should be true (0)" \
 	"busybox test -f = a -o b; echo \$?" \
 	"0\n" \