1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00
v/vlib/v/pkgconfig/pkgconfig_test.v

91 lines
2.8 KiB
V

import os
import pkgconfig
const vexe = os.getenv('VEXE')
const vroot = os.dir(vexe)
const samples_dir = os.join_path(vroot, 'vlib', 'v', 'pkgconfig', 'test_samples')
fn test_vexe_and_vroot_exist() {
assert vexe != ''
assert vroot != ''
assert os.is_file(vexe)
assert os.is_dir(vroot)
assert os.is_dir(samples_dir)
}
fn test_dependency_resolution_fails_correctly() {
pc_files := os.walk_ext(samples_dir, '.pc')
assert pc_files.len > 0
mut errors := []string{}
for pc in pc_files {
pcname := os.file_name(pc).replace('.pc', '')
pkgconfig.load(pcname, use_default_paths: false, path: samples_dir) or { errors << err }
}
assert errors.len < pc_files.len
assert errors == ['could not resolve dependency xyz-unknown-package']
}
fn test_samples() {
pc_files := os.walk_ext(samples_dir, '.pc')
assert pc_files.len > 0
for pc in pc_files {
pcname := os.file_name(pc).replace('.pc', '')
x := pkgconfig.load(pcname, use_default_paths: false, path: samples_dir) or {
if pcname == 'dep-resolution-fail' {
continue
}
println('>>> err: $err')
assert false
return
}
assert x.name != ''
assert x.modname != ''
assert x.version != ''
if pcname == 'gmodule-2.0' {
assert x.name == 'GModule'
assert x.modname == 'gmodule-2.0'
assert x.url == ''
assert x.version == '2.64.3'
assert x.description == 'Dynamic module loader for GLib'
assert x.libs ==
['-Wl,--export-dynamic', '-L/usr/lib/x86_64-linux-gnu', '-lgmodule-2.0', '-pthread', '-lglib-2.0', '-lpcre']
assert x.libs_private == ['-ldl', '-pthread']
assert x.cflags ==
['-I/usr/include', '-pthread', '-I/usr/include/glib-2.0', '-I/usr/lib/x86_64-linux-gnu/glib-2.0/include']
assert x.vars == {
'prefix': '/usr'
'libdir': '/usr/lib/x86_64-linux-gnu'
'includedir': '/usr/include'
'gmodule_supported': 'true'
}
assert x.requires == ['gmodule-no-export-2.0', 'glib-2.0']
assert x.requires_private == []
assert x.conflicts == []
}
if x.name == 'expat' {
assert x.url == 'http://www.libexpat.org'
}
if x.name == 'GLib' {
assert x.modname == 'glib-2.0'
assert x.libs == ['-L/usr/lib/x86_64-linux-gnu', '-lglib-2.0', '-lpcre']
assert x.libs_private == ['-pthread']
assert x.cflags ==
['-I/usr/include/glib-2.0', '-I/usr/lib/x86_64-linux-gnu/glib-2.0/include', '-I/usr/include']
assert x.vars == {
'prefix': '/usr'
'libdir': '/usr/lib/x86_64-linux-gnu'
'includedir': '/usr/include'
'bindir': '/usr/bin'
'glib_genmarshal': '/usr/bin/glib-genmarshal'
'gobject_query': '/usr/bin/gobject-query'
'glib_mkenums': '/usr/bin/glib-mkenums'
}
assert x.requires_private == ['libpcre']
assert x.version == '2.64.3'
assert x.conflicts == []
}
}
}