]> git.kaiwu.me - njs.git/commitdiff
Tests: added support for proper negative test262 tests.
authorDmitry Volyntsev <xeioex@nginx.com>
Wed, 26 Jan 2022 17:24:58 +0000 (17:24 +0000)
committerDmitry Volyntsev <xeioex@nginx.com>
Wed, 26 Jan 2022 17:24:58 +0000 (17:24 +0000)
test/options
test/prepare
test/test262

index 023fde0a5cbc32fda96e75a6159a927a6918bd4a..a7b6bd3edaf90c43bafd996d0481d0de1fe19c3b 100644 (file)
@@ -59,3 +59,8 @@ do
 done
 
 NJS_TEST_PATHS=${@:-test}
+
+NJS_TEST_EXIT_CODE=1
+if echo $NJS_TEST_BINARY | grep -q njs; then
+    NJS_TEST_EXIT_CODE=23
+fi
index 45adcfbd95b96376560b9e28fae94783213e3a03..6791738a252485f1ef39aebf55127a70fbed225b 100644 (file)
@@ -7,6 +7,9 @@ njs_includes=`grep 'includes: \[[^]]*]' $njs_test \
              | sed -e 's/includes: \[//' | sed -e 's/,/ /g' | sed -e 's/\]//'`
 njs_includes="assert.js sta.js $njs_includes"
 
+njs_paths=`grep 'paths: \[[^]]*]' $njs_test \
+             | sed -e 's/paths: \[//' | sed -e 's/ *, */:/g' | sed -e 's/\]//'`
+
 njs_flags=`grep 'flags: \[[^]]*]' $njs_test \
              | sed -e 's/flags: \[//' | sed -e 's/,/ /g' | sed -e 's/\]//'`
 
index ae4ce6e7a17f12fdb4c6c60e2a6556f83df8d4e2..86892e3baa8561b198501dad8f1e3d0dda3306a4 100755 (executable)
@@ -19,18 +19,18 @@ for njs_test in $NJS_TESTS; do
 running $njs_test $njs_log
 END
 
-    if /bin/sh -c "(NJS_TEST_DIR=$NJS_TEST_DIR $NJS_TEST_BINARY $NJS_TEST_DIR/$njs_test)" > $njs_log 2>&1; then
-        njs_success=yes
-    else
-        njs_success=no
-    fi
+    status=0
+
+    NJS_PATH=$njs_paths \
+    NJS_EXIT_CODE=$NJS_TEST_EXIT_CODE \
+    $NJS_TEST_BINARY $NJS_TEST_DIR/$njs_test > $njs_log 2>&1 || status=$?
 
     cat $njs_log >> $NJS_TEST_LOG
     njs_out=`cat $njs_log`
 
-    if [ $njs_success = yes ]; then
+    if [ "$status" -eq 0 ]; then
         if [ -n "$njs_negative" ]; then
-            failed $njs_test
+            failed $njs_test $njs_log
 
         elif [ $njs_async = yes ]; then
             if [ "$njs_out" != 'Test262:AsyncTestComplete' ]; then
@@ -51,7 +51,12 @@ END
 
     else
         if [ -n "$njs_negative" ]; then
-            passed $njs_test
+            if [ "$status" = "$NJS_TEST_EXIT_CODE" ]; then
+                passed $njs_test
+            else
+                echo "negative test exited with unexpected exit code:$status"
+                failed $njs_test $njs_log
+            fi
 
         else
             failed $njs_test $njs_log