diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 96711cc..ba27e08 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -42,4 +42,4 @@ jobs: - name: Test shell: bash - run: cd lua-tests && sh run_tests.sh ${{runner.workspace}}/build/ravi + run: cd tests && sh run_tests.sh ${{runner.workspace}}/build/ravi diff --git a/.travis.yml b/.travis.yml index 543d229..c54efea 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,8 +19,8 @@ script: - mkdir $TRAVIS_BUILD_DIR/build - cd $TRAVIS_BUILD_DIR/build && cmake -DCMAKE_BUILD_TYPE=Debug -DLLVM_DIR=$TRAVIS_BUILD_DIR/clang+llvm-6.0.1-x86_64-linux-gnu-ubuntu-16.04/lib/cmake/llvm -G "Unix Makefiles" -DLLVM_JIT=ON .. - cd $TRAVIS_BUILD_DIR/build && make - - cd $TRAVIS_BUILD_DIR/lua-tests && sh ./run_travis_tests.sh $TRAVIS_BUILD_DIR/build/ravi + - cd $TRAVIS_BUILD_DIR/tests && sh ./run_tests.sh $TRAVIS_BUILD_DIR/build/ravi - mkdir $TRAVIS_BUILD_DIR/buildmir - - cd $TRAVIS_BUILD_DIR/buildmir && cmake -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles" -DMIR_JIT=ON .. + - cd $TRAVIS_BUILD_DIR/buildmir && cmake -DCMAKE_BUILD_TYPE=Debug -DLTESTS=ON -DMIR_JIT=ON -G "Unix Makefiles" .. - cd $TRAVIS_BUILD_DIR/buildmir && make - - cd $TRAVIS_BUILD_DIR/lua-tests && sh ./run_travis_tests.sh $TRAVIS_BUILD_DIR/buildmir/ravi + - cd $TRAVIS_BUILD_DIR/tests && sh ./run_tests.sh $TRAVIS_BUILD_DIR/buildmir/ravi diff --git a/lua-tests/run_tests.sh b/lua-tests/run_tests.sh deleted file mode 100644 index 7818134..0000000 --- a/lua-tests/run_tests.sh +++ /dev/null @@ -1,42 +0,0 @@ -LUA=$1 -if [ "$LUA" = "" ] -then - echo "Please pass path to Lua" - exit 1 -fi - -# Run the interpreter tests first -$LUA -e"_port=true" all.lua -if [ $? != 0 ] -then - echo "all.lua interpreted failed" - exit 1 -fi - -# Run tests in JIT mode without support for the line hook -$LUA -e"_port=true; ravi.auto(true,1)" all.lua -if [ $? != 0 ] -then - echo "all.lua compiled without tracehook failed" - exit 1 -fi - -# Run tests in JIT mode with suppor for the line hook -$LUA -e"_port=true; ravi.tracehook(true); ravi.auto(true,1)" all.lua -if [ $? != 0 ] -then - echo "all.lua compiled with tracehook failed" - exit 1 -fi - -# Run tests in partial JIT mode, with line hook -$LUA -e"_port=true; ravi.tracehook(true); ravi.auto(true)" all.lua -if [ $? != 0 ] -then - echo "all.lua partially compiled with tracehook failed" - exit 1 -fi - -cd ../ravi-tests -. ./run_tests.sh "$LUA" -cd - diff --git a/lua-tests/run_travis_tests.sh b/lua-tests/run_travis_tests.sh deleted file mode 100644 index d4c7d19..0000000 --- a/lua-tests/run_travis_tests.sh +++ /dev/null @@ -1,26 +0,0 @@ -LUA=$1 -if [ "$LUA" = "" ] -then - echo "Please pass path to Lua" - exit 1 -fi - -# Run the interpreter tests first -$LUA -e"_port=true" all.lua -if [ $? != 0 ] -then - echo "all.lua interpreted failed" - exit 1 -fi - -# Run tests in JIT mode without support for the line hook -$LUA -e"_port=true; ravi.auto(true)" all.lua -if [ $? != 0 ] -then - echo "all.lua partially compiled with tracehook failed" - exit 1 -fi - -cd ../ravi-tests -. ./run_tests.sh "$LUA" -cd - diff --git a/ravi-tests/README.rst b/ravi-tests/README.rst deleted file mode 100644 index 15d550c..0000000 --- a/ravi-tests/README.rst +++ /dev/null @@ -1,34 +0,0 @@ -This folder contains various performance and unit tests. - -Language tests --------------- -* basics.lua - some simple tests -* ravi_tests1.ravi - contains most of the Ravi specific tests -* ravi_tests3.ravi - additional tests -* ravi_errors.ravi - contains tests for error conditions -* bitwise_tests.lua - modified Lua 5.3 tests to exercise JIT on bitwise operations - -Performance tests ------------------ -Following are simple loop tests: - -* fornum_test1.lua -* fornum_test2.lua -* fornum_test2.ravi - with optional types -* fornum_test3.lua - -Matrix multiplication test: - -* matmul1.lua - matrix multiplication (Lua compatible) -* matmul1.ravi - matrix multiplication (ravi version with static typing) -* matmul1_ravi.lua - matrix multiplication (ravi version with static typing) - -Following performance tests were obtained from the `The Computer Programming Language Benchmarks Game `_. Original author is `Mike Pall `_. - -* fannkuchen.lua -* fannkuchen.ravi - with optional types - -* mandel1.ravi - modified so that it can be JIT compiled -* mandel1.lua - can be JIT compiled but also compatible with Lua - -See ``run_tests.sh`` for how to run these tests. \ No newline at end of file diff --git a/ravi-tests/bug.lua b/ravi-tests/bug.lua deleted file mode 100644 index 649350c..0000000 --- a/ravi-tests/bug.lua +++ /dev/null @@ -1,31 +0,0 @@ --- test 40 -function x(t) return t; end -function f() - local tt: integer[] = {1} - local ss: number[] = { 55.5 } - tt = x(tt) - ss = x(ss) -end -assert(ravi.compile(x)) -assert(ravi.compile(f)) -assert(pcall(f)) -function f() - local tt: integer[] = {1} - tt = x({}) -end ---ravi.dumplua(f) -print'+' -assert(ravi.compile(f)) -assert(not pcall(f)) -print'+' -function f() - local tt: integer[] = {1} - local ss: number[] = { 55.5 } - ss = x(tt) -end -print'+' -assert(ravi.compile(f)) -assert(not pcall(f)) - -print("test 40 OK") - diff --git a/ravi-tests/dmrc_getsymbols.lua b/ravi-tests/dmrc_getsymbols.lua deleted file mode 100644 index cfefbef..0000000 --- a/ravi-tests/dmrc_getsymbols.lua +++ /dev/null @@ -1,38 +0,0 @@ --- Print anything - including nested tables -local function table_print (tt, indent, done) - done = done or {} - indent = indent or 0 - if type(tt) == "table" then - for key, value in pairs (tt) do - io.write(string.rep (" ", indent)) -- indent it - if type (value) == "table" and not done [value] then - done [value] = true - io.write(string.format("[%s] => table\n", tostring (key))); - io.write(string.rep (" ", indent+4)) -- indent it - io.write("(\n"); - table_print (value, indent + 7, done) - io.write(string.rep (" ", indent+4)) -- indent it - io.write(")\n"); - else - io.write(string.format("[%s] => %s\n", - tostring (key), tostring(value))) - end - end - else - io.write(tostring(tt) .. "\n") - end -end - - -local somecode = [[ -extern int adder(int a, int b); - -int adder(int a, int b) -{ - return a+b; -} -]] - -local symbols = dmrc.getsymbols(somecode) - -table_print(symbols) \ No newline at end of file diff --git a/ravi-tests/dmrc_testllvm.lua b/ravi-tests/dmrc_testllvm.lua deleted file mode 100644 index ef9beb9..0000000 --- a/ravi-tests/dmrc_testllvm.lua +++ /dev/null @@ -1,20 +0,0 @@ -local testfunc = [[ -struct lua_State; -extern int puts(const char *); -extern int TestFunc(struct lua_State *L); - -int TestFunc(struct lua_State *L) -{ - puts("hello world!\n"); - return 0; -} -]] - - -local ctx = llvm.context() -local m = ctx:newmodule() -m:compileC(testfunc) -local f = m:getfunction("TestFunc") -local callable = f:compile() - -callable() \ No newline at end of file diff --git a/ravi-tests/listings/fannkuchen.listing b/ravi-tests/listings/fannkuchen.listing deleted file mode 100644 index 76a290e..0000000 --- a/ravi-tests/listings/fannkuchen.listing +++ /dev/null @@ -1,143 +0,0 @@ - -main (39 instructions at 0x1c5d5c0) -0+ params, 13 slots, 1 upvalue, 6 locals, 12 constants, 1 function - 1 [67] CLOSURE 0 0 ; 0x1c5d880 - 2 [69] GETTABUP 1 0 -1 ; _ENV "tonumber" - 3 [69] GETTABUP 2 0 -2 ; _ENV "arg" - 4 [69] TEST 2 0 - 5 [69] JMP 0 2 ; to 8 - 6 [69] GETTABUP 2 0 -2 ; _ENV "arg" - 7 [69] GETTABLE 2 2 -3 ; 1 - 8 [69] CALL 1 2 2 - 9 [69] TEST 1 1 - 10 [69] JMP 0 1 ; to 12 - 11 [69] LOADK 1 -3 ; 1 - 12 [70] GETTABUP 2 0 -4 ; _ENV "os" - 13 [70] GETTABLE 2 2 -5 ; "time" - 14 [70] CALL 2 1 2 - 15 [71] MOVE 3 0 - 16 [71] MOVE 4 1 - 17 [71] CALL 3 2 3 - 18 [72] GETTABUP 5 0 -4 ; _ENV "os" - 19 [72] GETTABLE 5 5 -5 ; "time" - 20 [72] CALL 5 1 2 - 21 [73] GETTABUP 6 0 -6 ; _ENV "io" - 22 [73] GETTABLE 6 6 -7 ; "write" - 23 [73] MOVE 7 3 - 24 [73] LOADK 8 -8 ; "\nPfannkuchen(" - 25 [73] MOVE 9 1 - 26 [73] LOADK 10 -9 ; ") = " - 27 [73] MOVE 11 4 - 28 [73] LOADK 12 -10 ; "\n" - 29 [73] CALL 6 7 1 - 30 [74] GETTABUP 6 0 -6 ; _ENV "io" - 31 [74] GETTABLE 6 6 -7 ; "write" - 32 [74] LOADK 7 -11 ; "elapsed time in secs " - 33 [74] GETTABUP 8 0 -4 ; _ENV "os" - 34 [74] GETTABLE 8 8 -12 ; "difftime" - 35 [74] MOVE 9 5 - 36 [74] MOVE 10 2 - 37 [74] CALL 8 3 0 - 38 [74] CALL 6 0 1 - 39 [74] RETURN 0 1 - -function (98 instructions at 0x1c5d880) -1 param, 20 slots, 0 upvalues, 31 locals, 7 constants, 0 functions - 1 [6] LOADK 1 -1 ; 11 - 2 [7] NEWARRAYI 2 - 3 [7] NEWARRAYI 3 - 4 [7] NEWARRAYI 4 - 5 [7] LOADK 5 -2 ; 1 - 6 [7] LOADK 6 -3 ; 0 - 7 [7] LOADK 7 -3 ; 0 - 8 [8] LOADK 8 -2 ; 1 - 9 [8] MOVE 9 1 - 10 [8] LOADK 10 -2 ; 1 - 11 [8] FORPREP 8 3 ; to 15 - 12 [9] SETTABLE_AI 2 -12 -12 - 13 [10] SETTABLE_AI 3 -12 -12 - 14 [11] SETTABLE_AI 4 -12 -12 - 15 [8] FORLOOP 8 -4 ; to 12 - 16 [15] GETTABLE_AI 8 2 -2 - 17 [16] EQ 1 8 -2 ; - 1 - 18 [16] JMP 0 35 ; to 54 - 19 [17] LOADK 9 -4 ; 2 - 20 [17] MOVE 10 1 - 21 [17] LOADK 11 -2 ; 1 - 22 [17] FORPREP 9 2 ; to 25 - 23 [18] GETTABLE_AI 13 2 -13 - 24 [18] SETTABLE_AI 3 -13 -14 - 25 [17] FORLOOP 9 -3 ; to 23 - 26 [20] LOADK 9 -2 ; 1 - 27 [22] GETTABLE_AI 10 3 -9 - 28 [23] EQ 0 10 -2 ; - 1 - 29 [23] JMP 0 6 ; to 36 - 30 [24] MULII 11 -6 -10 - 31 [24] ADDII 7 -8 -12 - 32 [25] LT 0 6 9 - 33 [25] JMP 0 20 ; to 54 - 34 [26] MOVEI 6 9 - 35 [27] JMP 0 18 ; to 54 - 36 [30] SETTABLE_AI 3 -9 -9 - 37 [31] LE 0 -5 8 ; 4 - - 38 [31] JMP 0 10 ; to 49 - 39 [32] LOADK 11 -4 ; 2 - 40 [32] SUBII 12 -9 -2 - 41 [34] GETTABLE_AI 13 3 -13 - 42 [34] GETTABLE_AI 14 3 -12 - 43 [34] SETTABLE_AI 3 -13 -15 - 44 [34] SETTABLE_AI 3 -12 -14 - 45 [35] ADDIN 11 -12 1 - 46 [36] SUBII 12 -13 -2 - 47 [37] LE 0 12 11 - 48 [37] JMP 0 -8 ; to 41 - 49 [39] MOVEI 8 10 - 50 [40] ADDIN 9 -10 1 - 51 [41] LOADBOOL 11 0 0 - 52 [41] TEST 11 0 - 53 [41] JMP 0 -27 ; to 27 - 54 [44] EQ 0 5 -2 ; - 1 - 55 [44] JMP 0 6 ; to 62 - 56 [45] GETTABLE_AI 9 2 -2 - 57 [45] GETTABLE_AI 10 2 -4 - 58 [45] SETTABLE_AI 2 -2 -11 - 59 [45] SETTABLE_AI 2 -4 -10 - 60 [45] LOADK 5 -6 ; -1 - 61 [45] JMP 0 33 ; to 95 - 62 [47] GETTABLE_AI 9 2 -7 - 63 [47] GETTABLE_AI 10 2 -4 - 64 [47] SETTABLE_AI 2 -7 -11 - 65 [47] SETTABLE_AI 2 -4 -10 - 66 [47] LOADK 5 -2 ; 1 - 67 [48] LOADK 9 -7 ; 3 - 68 [48] MOVE 10 1 - 69 [48] LOADK 11 -2 ; 1 - 70 [48] FORPREP 9 23 ; to 94 - 71 [49] GETTABLE_AI 13 4 -13 - 72 [50] EQ 1 13 -2 ; - 1 - 73 [50] JMP 0 3 ; to 77 - 74 [51] SUBII 14 -14 -2 - 75 [51] SETTABLE_AI 4 -13 -15 - 76 [51] JMP 0 18 ; to 95 - 77 [54] EQ 0 12 1 - 78 [54] JMP 0 3 ; to 82 - 79 [55] MOVE 14 7 - 80 [55] MOVE 15 6 - 81 [55] RETURN 14 3 - 82 [57] SETTABLE_AI 4 -13 -13 - 83 [59] GETTABLE_AI 14 2 -2 - 84 [60] LOADK 15 -2 ; 1 - 85 [60] MOVE 16 12 - 86 [60] LOADK 17 -2 ; 1 - 87 [60] FORPREP 15 3 ; to 91 - 88 [61] ADDIN 19 -19 1 - 89 [61] GETTABLE_AI 19 2 -20 - 90 [61] SETTABLE_AI 2 -19 -20 - 91 [60] FORLOOP 15 -4 ; to 88 - 92 [63] ADDIN 15 -13 1 - 93 [63] SETTABLE_AI 2 -16 -15 - 94 [48] FORLOOP 9 -24 ; to 71 - 95 [66] LOADBOOL 9 0 0 - 96 [66] TEST 9 0 - 97 [66] JMP 0 -82 ; to 16 - 98 [67] RETURN 0 1 diff --git a/ravi-tests/listings/mandel.listing b/ravi-tests/listings/mandel.listing deleted file mode 100644 index b7331bc..0000000 --- a/ravi-tests/listings/mandel.listing +++ /dev/null @@ -1,107 +0,0 @@ - -main (104 instructions at 0x1c665c0) -0+ params, 35 slots, 1 upvalue, 38 locals, 24 constants, 0 functions - 1 [5] GETTABUP 0 0 -1 ; _ENV "arg" - 2 [5] TEST 0 0 - 3 [5] JMP 0 4 ; to 8 - 4 [5] GETTABUP 0 0 -1 ; _ENV "arg" - 5 [5] GETTABLE 0 0 -2 ; 1 - 6 [5] TEST 0 1 - 7 [5] JMP 0 1 ; to 9 - 8 [5] LOADK 0 -3 ; 100 - 9 [6] GETTABUP 1 0 -4 ; _ENV "tonumber" - 10 [6] MOVE 2 0 - 11 [6] CALL 1 2 2 - 12 [6] TOINT 1 - 13 [7] MOVE 2 1 - 14 [7] DIVFI 3 -5 -2 - 15 [8] LOADK 4 -6 ; 50 - 16 [8] LOADK 5 -7 ; 4.0 - 17 [9] GETTABUP 6 0 -8 ; _ENV "io" - 18 [9] GETTABLE 6 6 -9 ; "write" - 19 [9] GETTABUP 7 0 -10 ; _ENV "string" - 20 [9] GETTABLE 7 7 -11 ; "char" - 21 [11] MOVE 8 6 - 22 [11] LOADK 9 -12 ; "P4\n" - 23 [11] MOVE 10 1 - 24 [11] LOADK 11 -13 ; " " - 25 [11] MOVE 12 2 - 26 [11] LOADK 13 -14 ; "\n" - 27 [11] CALL 8 6 1 - 28 [12] GETTABUP 8 0 -16 ; _ENV "os" - 29 [12] GETTABLE 8 8 -17 ; "time" - 30 [12] CALL 8 1 2 - 31 [12] SETTABUP 0 -15 8 ; _ENV "t1" - 32 [13] LOADK 8 -18 ; 0 - 33 [13] SUBII 9 -3 -2 - 34 [13] LOADK 10 -2 ; 1 - 35 [13] FORPREP 8 58 ; to 94 - 36 [14] MULFI 12 -5 -12 - 37 [14] DIVFI 12 -13 -3 - 38 [14] SUBFI 12 -13 -2 - 39 [15] LOADK 13 -18 ; 0 - 40 [15] SUBII 14 -2 -2 - 41 [15] LOADK 15 -19 ; 8 - 42 [15] FORPREP 13 50 ; to 93 - 43 [16] LOADK 17 -18 ; 0 - 44 [17] ADDIN 18 -17 7 - 45 [18] LOADNIL 19 0 - 46 [18] LOADIZ 19 - 47 [19] LT 0 18 1 - 48 [19] JMP 0 2 ; to 51 - 49 [20] MOVEI 19 18 - 50 [20] JMP 0 1 ; to 52 - 51 [22] SUBII 19 -2 -2 - 52 [24] MOVE 20 16 - 53 [24] MOVE 21 19 - 54 [24] LOADK 22 -2 ; 1 - 55 [24] FORPREP 20 24 ; to 80 - 56 [25] ADDII 17 -18 -18 - 57 [26] LOADK 24 -21 ; 0.0 - 58 [26] LOADK 25 -21 ; 0.0 - 59 [26] LOADK 26 -21 ; 0.0 - 60 [26] LOADK 27 -21 ; 0.0 - 61 [27] MULFI 28 -4 -24 - 62 [27] SUBFF 28 -29 -22 - 63 [28] LOADK 29 -2 ; 1 - 64 [28] MOVE 30 4 - 65 [28] LOADK 31 -2 ; 1 - 66 [28] FORPREP 29 12 ; to 79 - 67 [29] MULFF 33 -25 -26 - 68 [30] SUBFF 34 -27 -28 - 69 [30] ADDFF 24 -35 -29 - 70 [31] ADDFF 34 -34 -34 - 71 [31] ADDFF 25 -35 -13 - 72 [32] MULFF 26 -25 -25 - 73 [33] MULFF 27 -26 -26 - 74 [34] ADDFF 34 -27 -28 - 75 [34] LT 0 5 34 - 76 [34] JMP 0 2 ; to 79 - 77 [35] ADDIN 17 -18 1 - 78 [35] JMP 0 1 ; to 80 - 79 [28] FORLOOP 29 -13 ; to 67 - 80 [24] FORLOOP 20 -25 ; to 56 - 81 [40] LE 0 1 18 - 82 [40] JMP 0 7 ; to 90 - 83 [41] MOVE 20 1 - 84 [41] MOVE 21 18 - 85 [41] LOADK 22 -2 ; 1 - 86 [41] FORPREP 20 2 ; to 89 - 87 [41] ADDII 24 -18 -18 - 88 [41] ADDIN 17 -25 1 - 89 [41] FORLOOP 20 -3 ; to 87 - 90 [44] GETTABUP 20 0 -23 ; _ENV "print" - 91 [44] MOVE 21 17 - 92 [44] CALL 20 2 1 - 93 [15] FORLOOP 13 -51 ; to 43 - 94 [13] FORLOOP 8 -59 ; to 36 - 95 [47] GETTABUP 8 0 -16 ; _ENV "os" - 96 [47] GETTABLE 8 8 -17 ; "time" - 97 [47] CALL 8 1 2 - 98 [47] SETTABUP 0 -24 8 ; _ENV "t2" - 99 [48] GETTABUP 8 0 -23 ; _ENV "print" - 100 [48] GETTABUP 9 0 -24 ; _ENV "t2" - 101 [48] GETTABUP 10 0 -15 ; _ENV "t1" - 102 [48] SUB 9 9 10 - 103 [48] CALL 8 2 1 - 104 [48] RETURN 0 1 diff --git a/ravi-tests/pcall.lua b/ravi-tests/pcall.lua deleted file mode 100644 index 174eefe..0000000 --- a/ravi-tests/pcall.lua +++ /dev/null @@ -1,25 +0,0 @@ --- This is a copy of snippet from --- calls.lua - -local function rais(n, f) - --local x = n == 0 and error() - --rais(n-1) - print("called") - if n == 0 then f() - else rais(n-1, f) - end - print("normal exit") -end -ravi.dumplua(rais) -ravi.compile(rais) - -function caller(n) - if n > 0 then - pcall(rais,n,error) - caller(n-1) - end -end -ravi.compile(caller) - -caller(10) -print("OK") \ No newline at end of file diff --git a/ravi-tests/run_tests.sh b/ravi-tests/run_tests.sh deleted file mode 100644 index dd8c00d..0000000 --- a/ravi-tests/run_tests.sh +++ /dev/null @@ -1,99 +0,0 @@ -LUA=$1 -if [ "$LUA" = "" ] -then - echo "Please pass path to Lua" - exit 1 -fi - -$LUA fornum_test1.lua -if [ $? != 0 ] -then - echo "fornum_test1 failed" - exit 1 -fi - -$LUA fornum_test2.ravi -if [ $? != 0 ] -then - echo "fornum_test2 failed" - exit 1 -fi - -$LUA mandel1.ravi -if [ $? != 0 ] -then - echo "mandel1 failed" - exit 1 -fi - -$LUA fannkuchen.ravi -if [ $? != 0 ] -then - echo "fannkuchen failed" - exit 1 -fi - -$LUA matmul1.ravi -if [ $? != 0 ] -then - echo "matmul1 failed" - exit 1 -fi - -$LUA basics.lua -if [ $? != 0 ] -then - echo "basics failed" - exit 1 -fi - -$LUA ravi_tests1.ravi -if [ $? != 0 ] -then - echo "ravi_tests1 failed" - exit 1 -fi - -$LUA fornum_test3.lua -if [ $? != 0 ] -then - echo "fornum_test3 failed" - exit 1 -fi - -$LUA bitwise_tests.lua -if [ $? != 0 ] -then - echo "bitwise failed" - exit 1 -fi - -$LUA ravi_errors.ravi -if [ $? != 0 ] -then - echo "ravi_errors failed" - exit 1 -fi - -$LUA -e"ravi.auto(true,1)" ravi_errors.ravi -if [ $? != 0 ] -then - echo "ravi_errors failed" - exit 1 -fi - -echo "=======================================" - -$LUA gaussian2.lua -if [ $? != 0 ] -then - echo "gaussian2 failed" - exit 1 -fi - -$LUA -e"ravi.auto(true,1)" gaussian2.lua -if [ $? != 0 ] -then - echo "gaussian2 failed" - exit 1 -fi diff --git a/tests/README.rst b/tests/README.rst new file mode 100644 index 0000000..11a6349 --- /dev/null +++ b/tests/README.rst @@ -0,0 +1,34 @@ +This folder contains various performance and unit tests. + +Language tests +-------------- +* language/basics.lua - some simple tests +* language/ravi_tests1.ravi - contains most of the Ravi specific tests +* language/ravi_tests3.ravi - additional tests +* language/ravi_errors.ravi - contains tests for error conditions +* language/bitwise_tests.lua - modified Lua 5.3 tests to exercise JIT on bitwise operations + +Performance tests +----------------- +Following are simple loop tests: + +* performance/fornum_test1.lua +* performance/fornum_test2.lua +* performance/fornum_test2.ravi - with optional types +* performance/fornum_test3.lua + +Matrix multiplication test: + +* performance/matmul1.lua - matrix multiplication (Lua compatible) +* performance/matmul1.ravi - matrix multiplication (ravi version with static typing) +* performance/matmul1_ravi.lua - matrix multiplication (ravi version with static typing) + +Following performance tests were obtained from the `The Computer Programming Language Benchmarks Game `_. Original author is `Mike Pall `_. + +* performance/fannkuchen.lua +* performance/fannkuchen.ravi - with optional types + +* performance/mandel1.ravi - modified so that it can be JIT compiled +* performance/mandel1.lua - can be JIT compiled but also compatible with Lua + +See ``run_tests.sh`` for how to run these tests. \ No newline at end of file diff --git a/ravi-tests/debugger_test.lua b/tests/debugger/debugger_test.lua similarity index 100% rename from ravi-tests/debugger_test.lua rename to tests/debugger/debugger_test.lua diff --git a/ravi-tests/bittest.lua b/tests/extra/bittest.lua similarity index 100% rename from ravi-tests/bittest.lua rename to tests/extra/bittest.lua diff --git a/ravi-tests/gaussian2.lua b/tests/extra/gaussian2.lua similarity index 100% rename from ravi-tests/gaussian2.lua rename to tests/extra/gaussian2.lua diff --git a/ravi-tests/gaussian4.lua b/tests/extra/gaussian4.lua similarity index 100% rename from ravi-tests/gaussian4.lua rename to tests/extra/gaussian4.lua diff --git a/ravi-tests/basics.lua b/tests/language/basics.lua similarity index 100% rename from ravi-tests/basics.lua rename to tests/language/basics.lua diff --git a/ravi-tests/bitwise_tests.lua b/tests/language/bitwise_tests.lua similarity index 100% rename from ravi-tests/bitwise_tests.lua rename to tests/language/bitwise_tests.lua diff --git a/ravi-tests/clang-output/README.rst b/tests/language/clang-output/README.rst similarity index 100% rename from ravi-tests/clang-output/README.rst rename to tests/language/clang-output/README.rst diff --git a/ravi-tests/clang-output/bitwise.c b/tests/language/clang-output/bitwise.c similarity index 100% rename from ravi-tests/clang-output/bitwise.c rename to tests/language/clang-output/bitwise.c diff --git a/ravi-tests/clang-output/inline_getstr.c b/tests/language/clang-output/inline_getstr.c similarity index 100% rename from ravi-tests/clang-output/inline_getstr.c rename to tests/language/clang-output/inline_getstr.c diff --git a/ravi-tests/clang-output/inline_getstr.ll b/tests/language/clang-output/inline_getstr.ll similarity index 100% rename from ravi-tests/clang-output/inline_getstr.ll rename to tests/language/clang-output/inline_getstr.ll diff --git a/ravi-tests/clang-output/lua_for_num.c b/tests/language/clang-output/lua_for_num.c similarity index 100% rename from ravi-tests/clang-output/lua_for_num.c rename to tests/language/clang-output/lua_for_num.c diff --git a/ravi-tests/clang-output/lua_for_num.ll b/tests/language/clang-output/lua_for_num.ll similarity index 100% rename from ravi-tests/clang-output/lua_for_num.ll rename to tests/language/clang-output/lua_for_num.ll diff --git a/ravi-tests/clang-output/lua_hdr.h b/tests/language/clang-output/lua_hdr.h similarity index 100% rename from ravi-tests/clang-output/lua_hdr.h rename to tests/language/clang-output/lua_hdr.h diff --git a/ravi-tests/clang-output/lua_if_else.c b/tests/language/clang-output/lua_if_else.c similarity index 100% rename from ravi-tests/clang-output/lua_if_else.c rename to tests/language/clang-output/lua_if_else.c diff --git a/ravi-tests/clang-output/lua_if_else.ll b/tests/language/clang-output/lua_if_else.ll similarity index 100% rename from ravi-tests/clang-output/lua_if_else.ll rename to tests/language/clang-output/lua_if_else.ll diff --git a/ravi-tests/clang-output/lua_op_call.c b/tests/language/clang-output/lua_op_call.c similarity index 100% rename from ravi-tests/clang-output/lua_op_call.c rename to tests/language/clang-output/lua_op_call.c diff --git a/ravi-tests/clang-output/lua_op_call.ll b/tests/language/clang-output/lua_op_call.ll similarity index 100% rename from ravi-tests/clang-output/lua_op_call.ll rename to tests/language/clang-output/lua_op_call.ll diff --git a/ravi-tests/clang-output/lua_op_forloop.c b/tests/language/clang-output/lua_op_forloop.c similarity index 100% rename from ravi-tests/clang-output/lua_op_forloop.c rename to tests/language/clang-output/lua_op_forloop.c diff --git a/ravi-tests/clang-output/lua_op_forloop.ll b/tests/language/clang-output/lua_op_forloop.ll similarity index 100% rename from ravi-tests/clang-output/lua_op_forloop.ll rename to tests/language/clang-output/lua_op_forloop.ll diff --git a/ravi-tests/clang-output/lua_op_forprep.c b/tests/language/clang-output/lua_op_forprep.c similarity index 100% rename from ravi-tests/clang-output/lua_op_forprep.c rename to tests/language/clang-output/lua_op_forprep.c diff --git a/ravi-tests/clang-output/lua_op_forprep.ll b/tests/language/clang-output/lua_op_forprep.ll similarity index 100% rename from ravi-tests/clang-output/lua_op_forprep.ll rename to tests/language/clang-output/lua_op_forprep.ll diff --git a/ravi-tests/clang-output/lua_op_loadk_return.c b/tests/language/clang-output/lua_op_loadk_return.c similarity index 100% rename from ravi-tests/clang-output/lua_op_loadk_return.c rename to tests/language/clang-output/lua_op_loadk_return.c diff --git a/ravi-tests/clang-output/lua_op_loadk_return.ll b/tests/language/clang-output/lua_op_loadk_return.ll similarity index 100% rename from ravi-tests/clang-output/lua_op_loadk_return.ll rename to tests/language/clang-output/lua_op_loadk_return.ll diff --git a/ravi-tests/clang-output/lua_op_loadk_return_ravi.ll b/tests/language/clang-output/lua_op_loadk_return_ravi.ll similarity index 100% rename from ravi-tests/clang-output/lua_op_loadk_return_ravi.ll rename to tests/language/clang-output/lua_op_loadk_return_ravi.ll diff --git a/ravi-tests/clang-output/lua_savedpc.c b/tests/language/clang-output/lua_savedpc.c similarity index 100% rename from ravi-tests/clang-output/lua_savedpc.c rename to tests/language/clang-output/lua_savedpc.c diff --git a/ravi-tests/clang-output/lua_savedpc.ll b/tests/language/clang-output/lua_savedpc.ll similarity index 100% rename from ravi-tests/clang-output/lua_savedpc.ll rename to tests/language/clang-output/lua_savedpc.ll diff --git a/ravi-tests/clang-output/lua_upval.c b/tests/language/clang-output/lua_upval.c similarity index 100% rename from ravi-tests/clang-output/lua_upval.c rename to tests/language/clang-output/lua_upval.c diff --git a/ravi-tests/clang-output/lua_upval.ll b/tests/language/clang-output/lua_upval.ll similarity index 100% rename from ravi-tests/clang-output/lua_upval.ll rename to tests/language/clang-output/lua_upval.ll diff --git a/ravi-tests/clang-output/runclang.bat b/tests/language/clang-output/runclang.bat similarity index 100% rename from ravi-tests/clang-output/runclang.bat rename to tests/language/clang-output/runclang.bat diff --git a/ravi-tests/clang-output/tab.c b/tests/language/clang-output/tab.c similarity index 100% rename from ravi-tests/clang-output/tab.c rename to tests/language/clang-output/tab.c diff --git a/ravi-tests/clang-output/tab.ll b/tests/language/clang-output/tab.ll similarity index 100% rename from ravi-tests/clang-output/tab.ll rename to tests/language/clang-output/tab.ll diff --git a/ravi-tests/clang-output/tbaa.c b/tests/language/clang-output/tbaa.c similarity index 100% rename from ravi-tests/clang-output/tbaa.c rename to tests/language/clang-output/tbaa.c diff --git a/ravi-tests/ravi_errors.ravi b/tests/language/ravi_errors.ravi similarity index 100% rename from ravi-tests/ravi_errors.ravi rename to tests/language/ravi_errors.ravi diff --git a/ravi-tests/ravi_tests1.ravi b/tests/language/ravi_tests1.ravi similarity index 100% rename from ravi-tests/ravi_tests1.ravi rename to tests/language/ravi_tests1.ravi diff --git a/ravi-tests/ravi_tests2.ravi b/tests/language/ravi_tests2.ravi similarity index 100% rename from ravi-tests/ravi_tests2.ravi rename to tests/language/ravi_tests2.ravi diff --git a/ravi-tests/ravi_tests3.ravi b/tests/language/ravi_tests3.ravi similarity index 100% rename from ravi-tests/ravi_tests3.ravi rename to tests/language/ravi_tests3.ravi diff --git a/lua-tests/README.rst b/tests/lua53/README.rst similarity index 100% rename from lua-tests/README.rst rename to tests/lua53/README.rst diff --git a/lua-tests/all.lua b/tests/lua53/all.lua similarity index 100% rename from lua-tests/all.lua rename to tests/lua53/all.lua diff --git a/lua-tests/api.lua b/tests/lua53/api.lua similarity index 100% rename from lua-tests/api.lua rename to tests/lua53/api.lua diff --git a/lua-tests/attrib.lua b/tests/lua53/attrib.lua similarity index 100% rename from lua-tests/attrib.lua rename to tests/lua53/attrib.lua diff --git a/lua-tests/big.lua b/tests/lua53/big.lua similarity index 100% rename from lua-tests/big.lua rename to tests/lua53/big.lua diff --git a/lua-tests/bitwise.lua b/tests/lua53/bitwise.lua similarity index 100% rename from lua-tests/bitwise.lua rename to tests/lua53/bitwise.lua diff --git a/lua-tests/calls.lua b/tests/lua53/calls.lua similarity index 100% rename from lua-tests/calls.lua rename to tests/lua53/calls.lua diff --git a/lua-tests/closure.lua b/tests/lua53/closure.lua similarity index 100% rename from lua-tests/closure.lua rename to tests/lua53/closure.lua diff --git a/lua-tests/code.lua b/tests/lua53/code.lua similarity index 100% rename from lua-tests/code.lua rename to tests/lua53/code.lua diff --git a/lua-tests/constructs.lua b/tests/lua53/constructs.lua similarity index 100% rename from lua-tests/constructs.lua rename to tests/lua53/constructs.lua diff --git a/lua-tests/coroutine.lua b/tests/lua53/coroutine.lua similarity index 100% rename from lua-tests/coroutine.lua rename to tests/lua53/coroutine.lua diff --git a/lua-tests/db.lua b/tests/lua53/db.lua similarity index 100% rename from lua-tests/db.lua rename to tests/lua53/db.lua diff --git a/lua-tests/errors.lua b/tests/lua53/errors.lua similarity index 100% rename from lua-tests/errors.lua rename to tests/lua53/errors.lua diff --git a/lua-tests/events.lua b/tests/lua53/events.lua similarity index 100% rename from lua-tests/events.lua rename to tests/lua53/events.lua diff --git a/lua-tests/files.lua b/tests/lua53/files.lua similarity index 100% rename from lua-tests/files.lua rename to tests/lua53/files.lua diff --git a/lua-tests/gc.lua b/tests/lua53/gc.lua similarity index 100% rename from lua-tests/gc.lua rename to tests/lua53/gc.lua diff --git a/lua-tests/goto.lua b/tests/lua53/goto.lua similarity index 100% rename from lua-tests/goto.lua rename to tests/lua53/goto.lua diff --git a/lua-tests/libs/lib1.c b/tests/lua53/libs/lib1.c similarity index 100% rename from lua-tests/libs/lib1.c rename to tests/lua53/libs/lib1.c diff --git a/lua-tests/libs/lib11.c b/tests/lua53/libs/lib11.c similarity index 100% rename from lua-tests/libs/lib11.c rename to tests/lua53/libs/lib11.c diff --git a/lua-tests/libs/lib2.c b/tests/lua53/libs/lib2.c similarity index 100% rename from lua-tests/libs/lib2.c rename to tests/lua53/libs/lib2.c diff --git a/lua-tests/libs/lib21.c b/tests/lua53/libs/lib21.c similarity index 100% rename from lua-tests/libs/lib21.c rename to tests/lua53/libs/lib21.c diff --git a/lua-tests/libs/makefile b/tests/lua53/libs/makefile similarity index 100% rename from lua-tests/libs/makefile rename to tests/lua53/libs/makefile diff --git a/lua-tests/literals.lua b/tests/lua53/literals.lua similarity index 100% rename from lua-tests/literals.lua rename to tests/lua53/literals.lua diff --git a/lua-tests/locals.lua b/tests/lua53/locals.lua similarity index 100% rename from lua-tests/locals.lua rename to tests/lua53/locals.lua diff --git a/lua-tests/ltests/ltests.c b/tests/lua53/ltests/ltests.c similarity index 100% rename from lua-tests/ltests/ltests.c rename to tests/lua53/ltests/ltests.c diff --git a/lua-tests/ltests/ltests.h b/tests/lua53/ltests/ltests.h similarity index 100% rename from lua-tests/ltests/ltests.h rename to tests/lua53/ltests/ltests.h diff --git a/lua-tests/main.lua b/tests/lua53/main.lua similarity index 100% rename from lua-tests/main.lua rename to tests/lua53/main.lua diff --git a/lua-tests/math.lua b/tests/lua53/math.lua similarity index 100% rename from lua-tests/math.lua rename to tests/lua53/math.lua diff --git a/lua-tests/nextvar.lua b/tests/lua53/nextvar.lua similarity index 100% rename from lua-tests/nextvar.lua rename to tests/lua53/nextvar.lua diff --git a/lua-tests/pm.lua b/tests/lua53/pm.lua similarity index 100% rename from lua-tests/pm.lua rename to tests/lua53/pm.lua diff --git a/lua-tests/sort.lua b/tests/lua53/sort.lua similarity index 100% rename from lua-tests/sort.lua rename to tests/lua53/sort.lua diff --git a/lua-tests/strings.lua b/tests/lua53/strings.lua similarity index 100% rename from lua-tests/strings.lua rename to tests/lua53/strings.lua diff --git a/lua-tests/tpack.lua b/tests/lua53/tpack.lua similarity index 100% rename from lua-tests/tpack.lua rename to tests/lua53/tpack.lua diff --git a/lua-tests/utf8.lua b/tests/lua53/utf8.lua similarity index 100% rename from lua-tests/utf8.lua rename to tests/lua53/utf8.lua diff --git a/lua-tests/vararg.lua b/tests/lua53/vararg.lua similarity index 100% rename from lua-tests/vararg.lua rename to tests/lua53/vararg.lua diff --git a/lua-tests/verybig.lua b/tests/lua53/verybig.lua similarity index 100% rename from lua-tests/verybig.lua rename to tests/lua53/verybig.lua diff --git a/ravi-tests/binarytrees.lua b/tests/performance/binarytrees.lua similarity index 100% rename from ravi-tests/binarytrees.lua rename to tests/performance/binarytrees.lua diff --git a/ravi-tests/bitbench.lua b/tests/performance/bitbench.lua similarity index 100% rename from ravi-tests/bitbench.lua rename to tests/performance/bitbench.lua diff --git a/ravi-tests/egor_test.lua b/tests/performance/egor_test.lua similarity index 100% rename from ravi-tests/egor_test.lua rename to tests/performance/egor_test.lua diff --git a/ravi-tests/egor_test_typed.lua b/tests/performance/egor_test_typed.lua similarity index 100% rename from ravi-tests/egor_test_typed.lua rename to tests/performance/egor_test_typed.lua diff --git a/ravi-tests/fannkuchen.lua b/tests/performance/fannkuchen.lua similarity index 100% rename from ravi-tests/fannkuchen.lua rename to tests/performance/fannkuchen.lua diff --git a/ravi-tests/fannkuchen.ravi b/tests/performance/fannkuchen.ravi similarity index 100% rename from ravi-tests/fannkuchen.ravi rename to tests/performance/fannkuchen.ravi diff --git a/ravi-tests/fornum_test1.lua b/tests/performance/fornum_test1.lua similarity index 100% rename from ravi-tests/fornum_test1.lua rename to tests/performance/fornum_test1.lua diff --git a/ravi-tests/fornum_test2.lua b/tests/performance/fornum_test2.lua similarity index 100% rename from ravi-tests/fornum_test2.lua rename to tests/performance/fornum_test2.lua diff --git a/ravi-tests/fornum_test2.ravi b/tests/performance/fornum_test2.ravi similarity index 100% rename from ravi-tests/fornum_test2.ravi rename to tests/performance/fornum_test2.ravi diff --git a/ravi-tests/fornum_test3.lua b/tests/performance/fornum_test3.lua similarity index 100% rename from ravi-tests/fornum_test3.lua rename to tests/performance/fornum_test3.lua diff --git a/ravi-tests/mandel.lua b/tests/performance/mandel.lua similarity index 100% rename from ravi-tests/mandel.lua rename to tests/performance/mandel.lua diff --git a/ravi-tests/mandel.ravi b/tests/performance/mandel.ravi similarity index 100% rename from ravi-tests/mandel.ravi rename to tests/performance/mandel.ravi diff --git a/ravi-tests/mandel1.lua b/tests/performance/mandel1.lua similarity index 100% rename from ravi-tests/mandel1.lua rename to tests/performance/mandel1.lua diff --git a/ravi-tests/mandel1.ravi b/tests/performance/mandel1.ravi similarity index 100% rename from ravi-tests/mandel1.ravi rename to tests/performance/mandel1.ravi diff --git a/ravi-tests/matmul1.lua b/tests/performance/matmul1.lua similarity index 100% rename from ravi-tests/matmul1.lua rename to tests/performance/matmul1.lua diff --git a/ravi-tests/matmul1.ravi b/tests/performance/matmul1.ravi similarity index 100% rename from ravi-tests/matmul1.ravi rename to tests/performance/matmul1.ravi diff --git a/ravi-tests/matmul1_ravi.lua b/tests/performance/matmul1_ravi.lua similarity index 100% rename from ravi-tests/matmul1_ravi.lua rename to tests/performance/matmul1_ravi.lua diff --git a/ravi-tests/matmul2.lua b/tests/performance/matmul2.lua similarity index 100% rename from ravi-tests/matmul2.lua rename to tests/performance/matmul2.lua diff --git a/ravi-tests/md5test.lua b/tests/performance/md5test.lua similarity index 100% rename from ravi-tests/md5test.lua rename to tests/performance/md5test.lua diff --git a/ravi-tests/nsievebits.lua b/tests/performance/nsievebits.lua similarity index 100% rename from ravi-tests/nsievebits.lua rename to tests/performance/nsievebits.lua diff --git a/ravi-tests/pisum.lua b/tests/performance/pisum.lua similarity index 100% rename from ravi-tests/pisum.lua rename to tests/performance/pisum.lua diff --git a/ravi-tests/pisum.ravi b/tests/performance/pisum.ravi similarity index 100% rename from ravi-tests/pisum.ravi rename to tests/performance/pisum.ravi diff --git a/ravi-tests/sieve.lua b/tests/performance/sieve.lua similarity index 100% rename from ravi-tests/sieve.lua rename to tests/performance/sieve.lua diff --git a/ravi-tests/sieve.ravi b/tests/performance/sieve.ravi similarity index 100% rename from ravi-tests/sieve.ravi rename to tests/performance/sieve.ravi diff --git a/ravi-tests/sieve_puc.lua b/tests/performance/sieve_puc.lua similarity index 100% rename from ravi-tests/sieve_puc.lua rename to tests/performance/sieve_puc.lua diff --git a/ravi-tests/tableaccess.lua b/tests/performance/tableaccess.lua similarity index 100% rename from ravi-tests/tableaccess.lua rename to tests/performance/tableaccess.lua diff --git a/tests/run_tests.sh b/tests/run_tests.sh new file mode 100644 index 0000000..fc84ffe --- /dev/null +++ b/tests/run_tests.sh @@ -0,0 +1,66 @@ +#!/bin/sh + +LUA=$1 +RUN_TRACEHOOK_TESTS=$2 + +if [ "$LUA" = "" ] +then + echo "Please pass path to Ravi executable" + exit 1 +fi + +run_lua53_tests() { + arg=$1 + errmsg=$2 + cd lua53 + $LUA -e"$arg" all.lua + rc=$? + cd .. + if [ $rc != 0 ] + then + echo "$errmsg" + exit 1 + fi +} + +run_ravi_tests() { + dir=$1 + script=$2 + arg=$3 + cd $dir + $LUA -e"$arg" $script + rc=$? + cd .. + if [ $rc != 0 ] + then + echo "Test $script failed" + exit 1 + fi +} + +run_lua53_tests "_port=true ravi.jit(false)" "Lua53 interpreter test failed" +run_lua53_tests "_port=true ravi.auto(true)" "Lua53 auto JIT test failed" +run_lua53_tests "_port=true ravi.auto(true,1)" "Lua53 auto JIT all test failed" + +run_ravi_tests language ravi_tests1.ravi "ravi.jit(false)" +run_ravi_tests language ravi_tests1.ravi "ravi.auto(true,1)" +run_ravi_tests language ravi_tests2.ravi "ravi.auto(true,1)" +run_ravi_tests language ravi_tests3.ravi "ravi.auto(true,1)" +run_ravi_tests language ravi_errors.ravi "ravi.auto(true,1)" +run_ravi_tests language basics.lua "ravi.auto(true,1)" +run_ravi_tests extra gaussian2.lua "ravi.auto(true,1)" +run_ravi_tests extra bittest.lua "ravi.auto(true,1)" +run_ravi_tests performance fannkuchen.ravi "ravi.auto(true,1)" +run_ravi_tests performance mandel1.ravi "ravi.auto(true,1)" +run_ravi_tests performance matmul1_ravi.lua "ravi.auto(true,1)" +run_ravi_tests performance sieve.ravi "ravi.auto(true,1)" +run_ravi_tests performance pisum.ravi "ravi.auto(true,1)" +run_ravi_tests performance md5test.lua "ravi.auto(true,1)" + +if [ "$RUN_TRACEHOOK_TESTS" = "" ] +then + exit 0 +fi + +run_lua53_tests "_port=true ravi.tracehook(true) ravi.auto(true)" "Lua53 tracehook test failed" +run_lua53_tests "_port=true ravi.tracehook(true) ravi.auto(true,1)" "Lua53 tracehook test failed"