1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# frozen_string_literal: false
require_relative 'base'
require 'shellwords'
class TestMkmfPkgConfig < TestMkmf
PKG_CONFIG = find_executable0("pkg-config")
def setup
super
if PKG_CONFIG
@fixtures_dir = File.join(Dir.pwd, "fixtures")
@fixtures_lib_dir = File.join(@fixtures_dir, "lib")
@fixtures_inc_dir = File.join(@fixtures_dir, "include")
FileUtils.mkdir(@fixtures_dir)
File.write("fixtures/test1.pc", <<~EOF)
libdir=#{@fixtures_lib_dir}
includedir=#{@fixtures_inc_dir}
Name: test1
Description: Test for mkmf pkg-config method
Version: 1.2.3
Libs: -L${libdir} -ltest1-public
Libs.private: -ltest1-private
Cflags: -I${includedir}/cflags-I --cflags-other
EOF
@pkg_config_path, ENV["PKG_CONFIG_PATH"] = ENV["PKG_CONFIG_PATH"], File.join(Dir.pwd, "fixtures")
end
end
def teardown
if PKG_CONFIG
ENV["PKG_CONFIG_PATH"] = @pkg_config_path
end
super
end
def test_pkgconfig_with_option_returns_nil_on_error
pend("skipping because pkg-config is not installed") unless PKG_CONFIG
assert_nil(pkg_config("package-does-not-exist", "exists"), MKMFLOG)
end
def test_pkgconfig_with_libs_option_returns_output
pend("skipping because pkg-config is not installed") unless PKG_CONFIG
expected = ["-L#{@fixtures_lib_dir}", "-ltest1-public"].sort
actual = pkg_config("test1", "libs").shellsplit.sort
assert_equal(expected, actual, MKMFLOG)
end
def test_pkgconfig_with_cflags_option_returns_output
pend("skipping because pkg-config is not installed") unless PKG_CONFIG
expected = ["--cflags-other", "-I#{@fixtures_inc_dir}/cflags-I"].sort
actual = pkg_config("test1", "cflags").shellsplit.sort
assert_equal(expected, actual, MKMFLOG)
end
def test_pkgconfig_with_multiple_options
pend("skipping because pkg-config is not installed") unless PKG_CONFIG
expected = ["-L#{@fixtures_lib_dir}", "-ltest1-public", "-ltest1-private"].sort
actual = pkg_config("test1", "libs", "static").shellsplit.sort
assert_equal(expected, actual, MKMFLOG)
end
end
|