v / examples / dynamic_library_loading / use_library_test.v
65 lines · 57 sloc · 1.69 KB · a4306450589a730ee76367b3bc7d6b8c532c7b00
Raw
1module main
2
3// vtest retry: 3
4import os
5import dl
6
7const vexe = os.real_path(os.getenv('VEXE'))
8const cfolder = os.dir(@FILE)
9const so_ext = dl.dl_ext
10const library_file_name = os.join_path(cfolder, dl.get_libname('library'))
11
12fn test_vexe() {
13 // dump(vexe)
14 assert vexe != ''
15 // dump(os.executable())
16 // dump(@FILE)
17 // dump(cfolder)
18 // dump(so_ext)
19 // dump(library_file_name)
20}
21
22fn test_can_compile_library() {
23 os.chdir(cfolder) or {}
24 os.rm(library_file_name) or {}
25 v_compile('-d no_backtrace -o library -shared modules/library/library.v')
26 assert os.is_file(library_file_name)
27}
28
29fn test_can_compile_main_program() {
30 os.chdir(cfolder) or {}
31 assert os.is_file(library_file_name)
32 result := v_compile('run use_dl_module.v')
33 // dump(result)
34 assert result.output.contains('res: 4')
35 os.rm(library_file_name) or {}
36}
37
38fn test_can_compile_and_use_library_with_skip_unused() {
39 os.chdir(cfolder) or {}
40 os.rm(library_file_name) or {}
41 v_compile('-skip-unused -d no_backtrace -o library -shared modules/library/library.v')
42 assert os.is_file(library_file_name)
43 result := v_compile('run use_dl_module.v')
44 assert result.output.contains('res: 4')
45 os.rm(library_file_name) or {}
46}
47
48fn test_can_compile_and_use_library_with_prod() {
49 os.chdir(cfolder) or {}
50 os.rm(library_file_name) or {}
51 v_compile('-prod -d no_backtrace -o library -shared modules/library/library.v')
52 assert os.is_file(library_file_name)
53 result := v_compile('run use_dl_module.v')
54 assert result.output.contains('res: 4')
55 os.rm(library_file_name) or {}
56}
57
58fn v_compile(vopts string) os.Result {
59 cmd := '${os.quoted_path(vexe)} -showcc ${vopts}'
60 // dump(cmd)
61 res := os.execute_or_exit(cmd)
62 // dump(res)
63 assert res.exit_code == 0
64 return res
65}
66