v2 / vlib / v / pkgconfig / pkgconfig_test.v
102 lines · 96 sloc · 3.24 KB · 343f94ca915b34f80bd05e77a95354a3898ae9a2
Raw
1import os
2import v.pkgconfig
3
4const vexe = os.getenv('VEXE')
5
6const vroot = os.dir(vexe)
7
8const samples_dir = os.join_path(vroot, 'vlib', 'v', 'pkgconfig', 'test_samples')
9
10fn test_vexe_and_vroot_exist() {
11 assert vexe != ''
12 assert vroot != ''
13 assert os.is_file(vexe)
14 assert os.is_dir(vroot)
15 assert os.is_dir(samples_dir)
16}
17
18fn test_dependency_resolution_fails_correctly() {
19 pc_files := os.walk_ext(samples_dir, '.pc')
20 assert pc_files.len > 0
21 mut errors := []string{}
22 for pc in pc_files {
23 pcname := os.file_name(pc).replace('.pc', '')
24 pkgconfig.load(pcname, use_default_paths: false, path: samples_dir) or {
25 errors << err.msg()
26 }
27 }
28 assert errors.len < pc_files.len
29 assert errors == ['could not resolve dependency xyz-unknown-package']
30}
31
32fn test_samples() {
33 pc_files := os.walk_ext(samples_dir, '.pc')
34 assert pc_files.len > 0
35 for pc in pc_files {
36 pcname := os.file_name(pc).replace('.pc', '')
37 x := pkgconfig.load(pcname, use_default_paths: false, path: samples_dir) or {
38 if pcname == 'dep-resolution-fail' {
39 continue
40 }
41 println('>>> err: ${err}')
42 assert false
43 return
44 }
45 assert x.name != ''
46 assert x.modname != ''
47 assert x.version != ''
48 if pcname == 'gmodule-2.0' {
49 assert x.name == 'GModule'
50 assert x.modname == 'gmodule-2.0'
51 assert x.url == ''
52 assert x.version == '2.64.3'
53 assert x.description == 'Dynamic module loader for GLib'
54 assert x.libs == ['-Wl,--export-dynamic', '-L/usr/lib/x86_64-linux-gnu', '-lgmodule-2.0',
55 '-pthread', '-lglib-2.0', '-lpcre']
56 assert x.libs_private == ['-ldl', '-pthread']
57 assert x.cflags == ['-I/usr/include', '-pthread', '-I/usr/include/glib-2.0',
58 '-I/usr/lib/x86_64-linux-gnu/glib-2.0/include']
59 assert x.vars == {
60 'pcfiledir': samples_dir
61 'prefix': '/usr'
62 'libdir': '/usr/lib/x86_64-linux-gnu'
63 'includedir': '/usr/include'
64 'gmodule_supported': 'true'
65 }
66 assert x.requires == ['gmodule-no-export-2.0', 'glib-2.0']
67 assert x.requires_private == []
68 assert x.conflicts == []
69 }
70 if x.name == 'expat' {
71 assert x.url == 'http://www.libexpat.org'
72 }
73 if x.name == 'GLib' {
74 assert x.modname == 'glib-2.0'
75 assert x.libs == ['-L/usr/lib/x86_64-linux-gnu', '-lglib-2.0', '-lpcre']
76 assert x.libs_private == ['-pthread']
77 assert x.cflags == ['-I/usr/include/glib-2.0',
78 '-I/usr/lib/x86_64-linux-gnu/glib-2.0/include', '-I/usr/include']
79 assert x.vars == {
80 'pcfiledir': samples_dir
81 'prefix': '/usr'
82 'libdir': '/usr/lib/x86_64-linux-gnu'
83 'includedir': '/usr/include'
84 'bindir': '/usr/bin'
85 'glib_genmarshal': '/usr/bin/glib-genmarshal'
86 'gobject_query': '/usr/bin/gobject-query'
87 'glib_mkenums': '/usr/bin/glib-mkenums'
88 }
89 assert x.requires_private == ['libpcre']
90 assert x.version == '2.64.3'
91 assert x.conflicts == []
92 }
93 if x.name == 'OpenSSL' {
94 assert x.modname == 'openssl-3.3.2'
95 assert x.version == '3.3.2'
96 assert x.description == 'Secure Sockets Layer and cryptography libraries and tools'
97 assert x.vars['prefix'] == '/opt/homebrew/Cellar/openssl@3/3.3.2'
98 assert x.vars['libdir'] == '/opt/homebrew/Cellar/openssl@3/3.3.2/lib'
99 assert x.vars['includedir'] == '/opt/homebrew/Cellar/openssl@3/3.3.2/include'
100 }
101 }
102}
103