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