From e94aebefe9cbbab939e6a7ddc3b61ceb041984a4 Mon Sep 17 00:00:00 2001 From: inglorion Date: Fri, 8 Sep 2017 05:10:19 -0700 Subject: [PATCH] converted more tests to new executable support This converts the following tests: test_empty_module test_exe test_exe_voodoo test_mod test_mod_voodoo test_stat --- configure | 12 ++-- src/test/test_empty_module.sb | 104 +++++++++++++------------------ src/test/test_exe.sb | 94 ++++++++++++---------------- src/test/test_exe_voodoo.sb | 136 ++++++++++++++++++---------------------- src/test/test_mod.sb | 140 +++++++++++++++++++----------------------- src/test/test_mod_voodoo.sb | 124 ++++++++++++++++--------------------- src/test/test_stat.sb | 30 +++------ 7 files changed, 273 insertions(+), 367 deletions(-) rewrite src/test/test_empty_module.sb (90%) rewrite src/test/test_exe.sb (99%) rewrite src/test/test_exe_voodoo.sb (98%) rewrite src/test/test_mod.sb (92%) rewrite src/test/test_mod_voodoo.sb (98%) rewrite src/test/test_stat.sb (99%) diff --git a/configure b/configure index 9f85a24..11ead53 100755 --- a/configure +++ b/configure @@ -23,13 +23,7 @@ test_antimony_reader test_antimony_writer test_blob test_dynarray -test_empty_module -test_exe -test_exe_voodoo test_list -test_mod -test_mod_voodoo -test_stat test_stream test_symbol test_voodoo_translator @@ -41,10 +35,16 @@ test_anf_transform test_array test_block test_condition +test_empty_module +test_exe +test_exe_voodoo test_hash_table test_hash_set test_log +test_mod +test_mod_voodoo test_readdir +test_stat test_symbol_encoder test_tempdir test_to_core diff --git a/src/test/test_empty_module.sb b/src/test/test_empty_module.sb dissimilarity index 90% index bb2bd38..9126c50 100644 --- a/src/test/test_empty_module.sb +++ b/src/test/test_empty_module.sb @@ -1,60 +1,44 @@ -section functions -export core.main -import eq false ge gt le lt make_blob ne true -import get_namespace_absolute namespace_intern -import array chdir cstring_from_blob error execvp fork \ - hash_table_each load_module \ - module_exports path_join sb_init setenv \ - standard_output tempdir waitpid \ - write_antimony write_newline_and_flush_stream - -function write_key key value { - write_antimony key standard_output - write_newline_and_flush_stream standard_output - return 0 -} - -function core.main argc argv { - sb_init - - # Change to source directory. - chdir "../src/test" - - # Compile program. - var dir = (tempdir) - var module_path = path_join dir "empty_module.so" - var pid = (fork) - if (eq pid 0) { - # Child process. - var program = "../../bin/transmute" - var args = auto-words 6 - set-word args 0 "env" - set-word args 1 "LD_LIBRARY_PATH=../../lib" - set-word args 2 program - set-word args 3 "empty_module" - set-word args 4 "-o" - set-word args 5 module_path - execvp (get-word args 0) (array 6 args) - } else { - # Parent process. - var status = auto-words 1 - waitpid pid status 0 - if (ne (and (shr @status 8) 255) 0) { - call error "transmute" - } - } - - # Load module. - setenv "SB_MODULE_PATH" dir - var module = load_module #`empty_module - - # Show module name. - write_antimony (get-word module 1) standard_output - write_newline_and_flush_stream standard_output - - # Show module exports. - var exports = module_exports module - hash_table_each exports write_key - - return 0 -} +function write_key key value { + write_antimony key standard_output + write_newline_and_flush_stream standard_output + return 0 +} + +# Change to source directory. +chdir "../src/test" + +# Compile program. +var dir = (tempdir) +var module_path = path_join @dir "empty_module.so" +var pid = (fork) +if (eq @pid 0) { + # Child process. + var program = "../../bin/transmute" + var args = auto-words 6 + set-word args 0 "env" + set-word args 1 "LD_LIBRARY_PATH=../../lib" + set-word args 2 program + set-word args 3 "empty_module" + set-word args 4 "-o" + set-word args 5 @module_path + execvp (get-word args 0) (array 6 args) +} else { + # Parent process. + var status = auto-words 1 + waitpid @pid status 0 + if (ne (and (shr @status 8) 255) 0) { + call error "transmute" + } +} + +# Load module. +setenv "SB_MODULE_PATH" @dir +var module = load_module "empty_module" + +# Show module name. +write_antimony (get-word @module 1) standard_output +write_newline_and_flush_stream standard_output + +# Show module exports. +var exports = module_exports @module +hash_table_each exports write_key diff --git a/src/test/test_exe.sb b/src/test/test_exe.sb dissimilarity index 99% index fe90271..0326e61 100644 --- a/src/test/test_exe.sb +++ b/src/test/test_exe.sb @@ -1,54 +1,40 @@ -section functions -export core.main -import eq false ge gt le lt make_blob ne true -import get_namespace get_namespace_absolute namespace_intern -import absolute_symbol array chdir error execvp fork hash_table_each \ - load_module module_exports module_find path_join sb_init setenv \ - standard_output tempdir waitpid write_antimony \ - write_newline_and_flush_stream - -function core.main argc argv { - sb_init - - # Change to source directory. - chdir "../src/test" - - # Compile program. - var dir = (tempdir) - var src = "xyzzy" - var exe = path_join dir src - var env = "env" - var ld_library_path = "LD_LIBRARY_PATH=../../lib" - var pid = (fork) - if (eq pid 0) { - # Child process. - var program = "../../bin/transmute" - var args = auto-words 10 - set-word args 0 env - set-word args 1 ld_library_path - set-word args 2 program - set-word args 3 "-t" - set-word args 4 "exe" - set-word args 5 "-o" - set-word args 6 exe - set-word args 7 "-L" - set-word args 8 "../../lib" - set-word args 9 src - execvp (get-word args 0) (array 10 args) - } else { - # Parent process. - var status = auto-words 1 - waitpid pid status 0 - if (ne (and (shr @status 8) 255) 0) { - error "transmute" - } - } - - var args = auto-words 1 - set-word args 0 env - set-word args 1 ld_library_path - set-word args 2 exe - execvp env (array 3 args) - - return -1 -} +# Change to source directory. +chdir "../src/test" + +# Compile program. +var dir = (tempdir) +var src = "xyzzy" +var exe = path_join @dir @src +var env = "env" +var ld_library_path = "LD_LIBRARY_PATH=../../lib" +var pid = (fork) +if (eq @pid 0) { + # Child process. + var program = "../../bin/transmute" + var args = auto-words 10 + set-word args 0 @env + set-word args 1 @ld_library_path + set-word args 2 program + set-word args 3 "-t" + set-word args 4 "exe" + set-word args 5 "-o" + set-word args 6 @exe + set-word args 7 "-L" + set-word args 8 "../../lib" + set-word args 9 @src + execvp (get-word args 0) (array 10 args) +} else { + # Parent process. + var status = auto-words 1 + waitpid @pid status 0 + if (ne (and (shr @status 8) 255) 0) { + error "transmute" + } +} + +var args = auto-words 1 +set-word @args 0 @env +set-word @args 1 @ld_library_path +set-word @args 2 @exe +execvp @env (array 3 @args) +return -1 diff --git a/src/test/test_exe_voodoo.sb b/src/test/test_exe_voodoo.sb dissimilarity index 98% index 336395c..67161eb 100644 --- a/src/test/test_exe_voodoo.sb +++ b/src/test/test_exe_voodoo.sb @@ -1,77 +1,59 @@ -section functions -export core.main -import eq false ge gt le lt make_blob ne true -import get_namespace get_namespace_absolute namespace_intern -import absolute_symbol array blob_ends_with chdir closedir \ - compare_blobs concatenate_blobs error execvp fixnum_to_blob \ - fork hash_table_each \ - load_module module_exports module_find opendir path_join \ - readdir sb_init setenv \ - standard_output tempdir waitpid write_antimony \ - write_newline_and_flush_stream - -function core.main argc argv { - sb_init - - # Change to source directory. - chdir "../src/test" - - # Compile program. - var dir = (tempdir) - var src = "xyzzy" - var exe = path_join dir src - var env = "env" - var ld_library_path = "LD_LIBRARY_PATH=../../lib" - var pid = (fork) - if (eq pid 0) { - # Child process. - var program = "../../bin/transmute" - var args = auto-words 10 - set-word args 0 env - set-word args 1 ld_library_path - set-word args 2 program - set-word args 3 "-t" - set-word args 4 "exe" - set-word args 5 "-o" - set-word args 6 exe - set-word args 7 "-f" - set-word args 8 "voodoo" - set-word args 9 src - execvp (get-word args 0) (array 10 args) - } else { - # Parent process. - var status = auto-words 1 - waitpid pid status 0 - if (ne (and (shr @status 8) 255) 0) { - error "transmute" - } - } - - # Check that files have been generated and they are all Voodoo files. - var dir = opendir exe - var count = 0 - loop { - var name = 0 - do - set name readdir dir - while (ne name -1) - if (blob_ends_with name ".voo") { - set count add count 1 - } else if (eq (compare_blobs name ".") 0) { - # nothing - } else if (eq (compare_blobs name "..") 0) { - # nothing - } else { - error (concatenate_blobs "unexpected name: " name) - } - } - closedir dir - - if (lt count 3) { - error (concatenate_blobs \ - "expected at least 3 Voodoo files, but got only " \ - (fixnum_to_blob (or (shl count 2) 1))) - } - - return 0 -} +# Change to source directory. +chdir "../src/test" + +# Compile program. +var dir = (tempdir) +var src = "xyzzy" +var exe = path_join @dir @src +var env = "env" +var ld_library_path = "LD_LIBRARY_PATH=../../lib" +var pid = (fork) +if (eq @pid 0) { + # Child process. + var program = "../../bin/transmute" + var args = auto-words 10 + set-word args 0 @env + set-word args 1 @ld_library_path + set-word args 2 program + set-word args 3 "-t" + set-word args 4 "exe" + set-word args 5 "-o" + set-word args 6 @exe + set-word args 7 "-f" + set-word args 8 "voodoo" + set-word args 9 @src + execvp (get-word args 0) (array 10 args) +} else { + # Parent process. + var status = auto-words 1 + waitpid @pid status 0 + if (ne (and (shr @status 8) 255) 0) { + error "transmute" + } +} + +# Check that files have been generated and they are all Voodoo files. +var gendir = opendir @exe +var count = 0 +loop { + var name = 0 + do + set name readdir @gendir + while (ne name -1) + if (blob_ends_with name ".voo") { + set @count add @count 1 + } else if (eq (compare_blobs name ".") 0) { + # nothing + } else if (eq (compare_blobs name "..") 0) { + # nothing + } else { + error (concatenate_blobs "unexpected name: " name) + } +} +closedir @gendir + +if (lt @count 3) { + error (concatenate_blobs \ + "expected at least 3 Voodoo files, but got only " \ + (fixnum_to_blob (or (shl @count 2) 1))) +} diff --git a/src/test/test_mod.sb b/src/test/test_mod.sb dissimilarity index 92% index e20dea2..e056f14 100644 --- a/src/test/test_mod.sb +++ b/src/test/test_mod.sb @@ -1,78 +1,62 @@ -section functions -export core.main -import eq false ge gt le lt make_blob ne true -import get_namespace get_namespace_absolute namespace_intern -import absolute_intern array chdir cstring_from_blob error \ - execvp fork \ - hash_table_each load_module module_exports module_find path_join \ - sb_init setenv standard_output tempdir waitpid write_antimony \ - write_newline_and_flush_stream - -function write_key key value { - write_antimony key standard_output - write_newline_and_flush_stream standard_output - return 0 -} - -function core.main argc argv { - sb_init - - # Change to source directory. - chdir "../src/test" - - # Compile program. - var dir = (tempdir) - var module_path = path_join dir "mod.so" - var pid = (fork) - if (eq pid 0) { - # Child process. - var program = "../../bin/transmute" - var args = auto-words 6 - set-word args 0 "env" - set-word args 1 "LD_LIBRARY_PATH=../../lib" - set-word args 2 program - set-word args 3 "mod" - set-word args 4 "-o" - set-word args 5 module_path - execvp (get-word args 0) (array 6 args) - } else { - # Parent process. - var status = auto-words 1 - waitpid pid status 0 - if (ne (and (shr @status 8) 255) 0) { - error "transmute" - } - } - - # Load module. - setenv "SB_MODULE_PATH" dir - var module = load_module #`mod - - # Show module name. - write_antimony (get-word module 1) standard_output - write_newline_and_flush_stream standard_output - - # Show module exports. - var exports = module_exports module - hash_table_each exports write_key - - # Call exported function. - var fun = module_find module "str" - if (eq fun -1) { - error "mod.str not found" - } - var result = fun 169 - write_antimony result standard_output - write_newline_and_flush_stream standard_output - - # Call function exported from Voodoo. - var extra = module_find module (absolute_intern "extra") - if (eq extra -1) { - error "extra not found" - } - set result (extra) - write_antimony result standard_output - write_newline_and_flush_stream standard_output - - return 0 -} +function write_key key value { + write_antimony key standard_output + write_newline_and_flush_stream standard_output + return 0 +} + +# Change to source directory. +chdir "../src/test" + +# Compile program. +var dir = (tempdir) +var module_path = path_join @dir "mod.so" +var pid = (fork) +if (eq @pid 0) { + # Child process. + var program = "../../bin/transmute" + var args = auto-words 6 + set-word args 0 "env" + set-word args 1 "LD_LIBRARY_PATH=../../lib" + set-word args 2 program + set-word args 3 "mod" + set-word args 4 "-o" + set-word args 5 @module_path + execvp (get-word args 0) (array 6 args) +} else { + # Parent process. + var status = auto-words 1 + waitpid @pid status 0 + if (ne (and (shr @status 8) 255) 0) { + error "transmute" + } +} + +# Load module. +setenv "SB_MODULE_PATH" @dir +var module = load_module #`mod + +# Show module name. +write_antimony (get-word @module 1) standard_output +write_newline_and_flush_stream standard_output + +# Show module exports. +var exports = module_exports @module +hash_table_each @exports write_key + +# Call exported function. +var fun = module_find @module "str" +if (eq @fun -1) { + error "mod.str not found" +} +var result = @fun 169 +write_antimony @result standard_output +write_newline_and_flush_stream standard_output + +# Call function exported from Voodoo. +var extra = module_find @module (absolute_intern "extra") +if (eq @extra -1) { + error "extra not found" +} +set @result (@extra) +write_antimony @result standard_output +write_newline_and_flush_stream standard_output diff --git a/src/test/test_mod_voodoo.sb b/src/test/test_mod_voodoo.sb dissimilarity index 98% index 5dcda6f..91184c0 100644 --- a/src/test/test_mod_voodoo.sb +++ b/src/test/test_mod_voodoo.sb @@ -1,71 +1,53 @@ -section functions -export core.main -import eq false ge gt le lt make_blob ne true -import get_namespace get_namespace_absolute namespace_intern -import array absolute_symbol blob_ends_with chdir \ - closedir compare_blobs concatenate_blobs \ - cstring_from_blob error execvp fork hash_table_each \ - fixnum_to_blob load_module module_exports module_find \ - opendir path_join readdir sb_init setenv \ - standard_output tempdir waitpid \ - write_antimony write_newline_and_flush_stream - -function core.main argc argv { - sb_init - - # Change to source directory. - chdir "../src/test" - - # Compile program. - var module_path = path_join (tempdir) "mod" - var pid = (fork) - if (eq pid 0) { - # Child process. - var program = "../../bin/transmute" - var args = auto-words 8 - set-word args 0 "env" - set-word args 1 "LD_LIBRARY_PATH=../../lib" - set-word args 2 program - set-word args 3 "-f" - set-word args 4 "voodoo" - set-word args 5 "mod" - set-word args 6 "-o" - set-word args 7 module_path - execvp (get-word args 0) (array 8 args) - } else { - # Parent process. - var status = auto-words 1 - waitpid pid status 0 - if (ne (and (shr @status 8) 255) 0) { - call error "transmute" - } - } - - # Check that files have been generated and they are all Voodoo files. - var dir = opendir module_path - var count = 0 - loop { - var name = 0 - do - set name readdir dir - while (ne name -1) - if (blob_ends_with name ".voo") { - set count add count 1 - } else if (eq (compare_blobs name ".") 0) { - # nothing - } else if (eq (compare_blobs name "..") 0) { - # nothing - } else { - error (concatenate_blobs "unexpected name: " name) - } - } - closedir dir - - if (lt count 2) { - error (concatenate_blobs \ - "expected at least 2 Voodoo files, but got only " \ - (fixnum_to_blob (or (shl count 2) 1))) - } - - return 0 -} +# Change to source directory. +chdir "../src/test" + +# Compile program. +var module_path = path_join (tempdir) "mod" +var pid = (fork) +if (eq @pid 0) { + # Child process. + var program = "../../bin/transmute" + var args = auto-words 8 + set-word args 0 "env" + set-word args 1 "LD_LIBRARY_PATH=../../lib" + set-word args 2 program + set-word args 3 "-f" + set-word args 4 "voodoo" + set-word args 5 "mod" + set-word args 6 "-o" + set-word args 7 @module_path + execvp (get-word args 0) (array 8 args) +} else { + # Parent process. + var status = auto-words 1 + waitpid @pid status 0 + if (ne (and (shr @status 8) 255) 0) { + call error "transmute" + } +} + +# Check that files have been generated and they are all Voodoo files. +var dir = opendir @module_path +var count = 0 +loop { + var name = 0 + do + set name readdir @dir + while (ne name -1) + if (blob_ends_with name ".voo") { + set @count add @count 1 + } else if (eq (compare_blobs name ".") 0) { + # nothing + } else if (eq (compare_blobs name "..") 0) { + # nothing + } else { + error (concatenate_blobs "unexpected name: " name) + } +} +closedir @dir + +if (lt @count 2) { + error (concatenate_blobs \ + "expected at least 2 Voodoo files, but got only " \ + (fixnum_to_blob (or (shl @count 2) 1))) +} diff --git a/src/test/test_stat.sb b/src/test/test_stat.sb dissimilarity index 99% index ca37ae5..7d2b84d 100644 --- a/src/test/test_stat.sb +++ b/src/test/test_stat.sb @@ -1,21 +1,9 @@ -section functions -export core.main -import boolean_to_blob eq false ge gt le lt make_blob ne sb_init stat \ - stat_isdir standard_output true write_blob_to_stream \ - write_newline_and_flush_stream - -function core.main argc argv { - call sb_init - - var st = call stat "." - var result = call stat_isdir st - call write_blob_to_stream (call boolean_to_blob result) standard_output - call write_newline_and_flush_stream standard_output - - var st = call stat "test_stat" - var result = call stat_isdir st - call write_blob_to_stream (call boolean_to_blob result) standard_output - call write_newline_and_flush_stream standard_output - - return 0 -} +var st = stat "." +var result = stat_isdir @st +write_blob_to_stream (boolean_to_blob @result) standard_output +write_newline_and_flush_stream standard_output + +set @st stat "test_stat" +set @result stat_isdir @st +write_blob_to_stream (boolean_to_blob @result) standard_output +write_newline_and_flush_stream standard_output -- 2.11.4.GIT