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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
require 'pkg-config'
class PkgConfigTest < Test::Unit::TestCase
def setup
@cairo = PackageConfig.new("cairo")
@cairo_png = PackageConfig.new("cairo-png")
end
def test_exist?
assert(system('pkg-config --exists cairo'))
assert(@cairo.exist?)
assert(system('pkg-config --exists cairo-png'))
assert(@cairo_png.exist?)
end
def test_cflags
assert_pkg_config("cairo", ["--cflags"], @cairo.cflags)
assert_pkg_config("cairo-png", ["--cflags"], @cairo_png.cflags)
end
def test_cflags_only_I
assert_pkg_config("cairo", ["--cflags-only-I"], @cairo.cflags_only_I)
assert_pkg_config("cairo-png", ["--cflags-only-I"], @cairo_png.cflags_only_I)
end
def test_libs
assert_pkg_config("cairo", ["--libs"], @cairo.libs)
assert_pkg_config("cairo-png", ["--libs"], @cairo_png.libs)
@cairo.msvc_syntax = true
result = pkg_config("cairo", "--libs")
msvc_result = result.gsub(/-lcairo\b/, "cairo.lib")
assert_not_equal(msvc_result, result)
assert_equal(msvc_result, @cairo.libs)
end
def test_libs_only_l
assert_pkg_config("cairo", ["--libs-only-l"], @cairo.libs_only_l)
assert_pkg_config("cairo-png", ["--libs-only-l"], @cairo_png.libs_only_l)
@cairo_png.msvc_syntax = true
result = pkg_config("cairo-png", "--libs-only-l")
msvc_result = result.gsub(/-l(cairo|png12)\b/, '\1.lib')
assert_not_equal(msvc_result, result)
assert_equal(msvc_result, @cairo_png.libs_only_l)
end
def test_requires
assert_equal([], @cairo.requires)
end
def test_requires_private
assert_equal(["freetype2", "fontconfig", "libpng12",
"xcb", "xcb-render", "xcb-renderutil",
"xrender", "x11", "pixman-1"],
@cairo.requires_private)
end
def test_version
assert_pkg_config("cairo", ["--modversion"], @cairo.version)
end
def test_parse_override_variables
assert_override_variables({}, nil)
assert_override_variables({"prefix" => "c:\\\\gtk-dev"},
"prefix=c:\\\\gtk-dev")
assert_override_variables({
"prefix" => "c:\\\\gtk-dev",
"includdir" => "d:\\\\gtk\\include"
},
["prefix=c:\\\\gtk-dev",
"includdir=d:\\\\gtk\\include"].join(","))
end
def test_override_variables
overridden_prefix = "c:\\\\gtk-dev"
original_prefix = @cairo.variable("prefix")
assert_not_equal(overridden_prefix, original_prefix)
with_override_variables("prefix=#{overridden_prefix}") do
cairo = PackageConfig.new("cairo")
assert_equal(overridden_prefix, cairo.variable("prefix"))
end
end
private
def pkg_config(package, *args)
args = args.collect {|arg| arg.dump}.join(' ')
`pkg-config #{args} #{package}`.strip
end
def assert_pkg_config(package, pkg_config_args, actual)
result = pkg_config(package, *pkg_config_args)
result = nil if result.empty?
assert_equal(result, actual)
end
def assert_override_variables(expected, override_variables)
with_override_variables(override_variables) do
cairo = PackageConfig.new("cairo")
assert_equal(expected, cairo.instance_variable_get("@override_variables"))
end
end
def with_override_variables(override_variables)
if override_variables.nil?
args = {}
else
args = {"--with-override-variables" => override_variables}
end
configure_args(args) do
yield
end
end
def configure_args(args)
original_configure_args = $configure_args
$configure_args = $configure_args.merge(args)
yield
ensure
$configure_args = original_configure_args
end
end
|