Skip to content
Snippets Groups Projects
Commit 6d8fd673 authored by Simon McVittie's avatar Simon McVittie
Browse files

Run capsule-symbols and capsule-version tests at build-time

parent 51535a21
No related branches found
No related tags found
1 merge request!311Build capsule-capture-libs from a bundled copy of libcapsule
......@@ -195,7 +195,9 @@ LOG_COMPILER =
TEST_EXTENSIONS = .pl
PL_LOG_DRIVER = $(LOG_DRIVER)
PL_LOG_COMPILER = $(PERL)
AM_TESTS_ENVIRONMENT = export CAPSULE_TESTS_UNINSTALLED=1; \
AM_TESTS_ENVIRONMENT = export CAPSULE_SYMBOLS_TOOL="$(abs_builddir)/capsule-symbols";\
export CAPSULE_TESTS_UNINSTALLED=1; \
export CAPSULE_VERSION_TOOL="$(abs_builddir)/capsule-version";\
export G_TEST_SRCDIR="$(abs_srcdir)"; \
export G_TEST_BUILDDIR="$(abs_builddir)";\
export G_DEBUG=gc-friendly; \
......@@ -208,7 +210,9 @@ tests_notgl_helper_user_LDADD = tests/lib/libnotgl.la \
test_extra_scripts = tests/manual/gl.pl
test_programs =
test_scripts = tests/notgl.pl
test_scripts = tests/notgl.pl \
tests/symbols.pl \
tests/version.pl
nobase_insttests_PROGRAMS = $(test_programs) \
$(test_extra_programs)
nobase_dist_insttests_SCRIPTS = $(test_scripts) \
......
......@@ -13,8 +13,10 @@ Build-Depends:
gtk-doc-tools,
libelf-dev,
libipc-run-perl,
libjpeg62-turbo <!nocheck> | libjpeg62 (>= 6b1) <!nocheck>,
perl,
xsltproc,
zlib1g <!nocheck>,
Vcs-Git: https://gitlab.collabora.com/vivek/libcapsule.git
Vcs-Browser: https://gitlab.collabora.com/vivek/libcapsule
Homepage: https://gitlab.collabora.com/vivek/libcapsule
......
Tests: smoke symbols version
Tests: smoke
Restrictions: allow-stderr
Depends:
bubblewrap,
......@@ -14,7 +14,13 @@ Depends:
Tests: gnome-desktop-testing
Restrictions: allow-stderr
Depends:
bubblewrap,
gnome-desktop-testing,
libcapsule-dev,
libcapsule-dev-bin,
libcapsule-tests,
libipc-run-perl,
libjpeg62 (>= 6b1) | libjpeg62-turbo,
perl,
pkg-config,
zlib1g,
......@@ -26,7 +26,7 @@ use IPC::Run qw(run);
use Test::More;
use FindBin;
use lib "$FindBin::Bin/../../tests";
use lib $FindBin::Bin;
use CapsuleTest;
......@@ -37,29 +37,54 @@ diag "Working directory: $test_tempdir";
my $host = "${test_tempdir}/host";
mkdir($host);
my $libexecdir = `pkg-config --variable=libexecdir capsule`;
chomp $libexecdir;
my $CAPSULE_SYMBOLS_TOOL = "$libexecdir/capsule-symbols";
# We need a well-behaved library with a simple ABI to inspect. Let's use
# libcapsule itself :-)
my $output;
run_ok([qw(bwrap --ro-bind / / --ro-bind /), $host,
qw(--dev-bind /dev /dev),
$CAPSULE_SYMBOLS_TOOL, 'libcapsule.so.0', $host], '>', \$output);
diag_multiline $output;
like($output, qr{^capsule_init $}m, "capsule_init is an unversioned symbol");
unlike($output, qr{^(?!capsule)}m, "all of libcapsule's ABI matches /^capsule/");
# Try the same thing without a prefix
run_ok([$CAPSULE_SYMBOLS_TOOL, 'libcapsule.so.0', '/'], '>', \$output);
diag_multiline $output;
like($output, qr{^capsule_init $}m, "capsule_init is an unversioned symbol");
unlike($output, qr{^(?!capsule)}m, "all of libcapsule's ABI matches /^capsule/");
my $CAPSULE_SYMBOLS_TOOL = $ENV{CAPSULE_SYMBOLS_TOOL};
unless (defined $CAPSULE_SYMBOLS_TOOL) {
my $libexecdir = `pkg-config --variable=libexecdir capsule`;
chomp $libexecdir;
$CAPSULE_SYMBOLS_TOOL = "$libexecdir/capsule-symbols";
}
if (length $ENV{CAPSULE_TESTS_UNINSTALLED}) {
my $path = $ENV{LD_LIBRARY_PATH};
if (length $path) {
$path = "$ENV{G_TEST_BUILDDIR}/.libs:$path";
}
else {
$path = $ENV{G_TEST_BUILDDIR};
}
$ENV{LD_LIBRARY_PATH} = $path;
TODO: {
local $TODO = "capsule-symbols doesn't respect LD_LIBRARY_PATH";
fail 'Re-enable this later';
}
}
else {
# We need a well-behaved library with a simple ABI to inspect. Let's use
# libcapsule itself :-)
my $output;
run_ok([qw(bwrap --ro-bind / / --ro-bind /), $host,
qw(--dev-bind /dev /dev),
$CAPSULE_SYMBOLS_TOOL, 'libcapsule.so.0', $host], '>', \$output);
diag_multiline $output;
return unless $output;
like($output, qr{^capsule_init $}m, "capsule_init is an unversioned symbol");
unlike($output, qr{^(?!capsule)}m, "all of libcapsule's ABI matches /^capsule/");
# Try the same thing without a prefix
run_ok([$CAPSULE_SYMBOLS_TOOL, 'libcapsule.so.0', '/'], '>', \$output);
diag_multiline $output;
like($output, qr{^capsule_init $}m, "capsule_init is an unversioned symbol");
unlike($output, qr{^(?!capsule)}m, "all of libcapsule's ABI matches /^capsule/");
}
# How about versioned symbols?
my $output;
run_ok([$CAPSULE_SYMBOLS_TOOL, 'libjpeg.so.62', '/'], '>', \$output);
diag_multiline $output;
......
......@@ -26,7 +26,7 @@ use IPC::Run qw(run);
use Test::More;
use FindBin;
use lib "$FindBin::Bin/../../tests";
use lib $FindBin::Bin;
use CapsuleTest;
......@@ -37,15 +37,20 @@ diag "Working directory: $test_tempdir";
my $host = "${test_tempdir}/host";
mkdir($host);
my $libexecdir = `pkg-config --variable=libexecdir capsule`;
chomp $libexecdir;
my $CAPSULE_VERSION_TOOL = "$libexecdir/capsule-version";
my $CAPSULE_VERSION_TOOL = $ENV{CAPSULE_VERSION_TOOL};
unless (defined $CAPSULE_VERSION_TOOL) {
my $libexecdir = `pkg-config --variable=libexecdir capsule`;
chomp $libexecdir;
$CAPSULE_VERSION_TOOL = "$libexecdir/capsule-version";
}
my $output;
my ($root, $soname, $version, $path);
run_ok([qw(bwrap --ro-bind / / --ro-bind /), $host,
qw(--dev-bind /dev /dev), $CAPSULE_VERSION_TOOL, 'libz.so.1',
$host], '>', \$output);
diag("$output");
like($output, qr{^(\S+)\s+(\S+)\s+(\S+)\s+(\S+)$});
$output =~ m{^(\S+)\s+(\S+)\s+(\S+)\s+(\S+)$};
$root = $1;
......@@ -61,6 +66,7 @@ ok(-e $path);
# Try the same thing without a prefix
run_ok([$CAPSULE_VERSION_TOOL, 'libz.so.1', '/'], '>', \$output);
diag("$output");
like($output, qr{^(\S+)\s+(\S+)\s+(\S+)\s+(\S+)$});
$output =~ m{^(\S+)\s+(\S+)\s+(\S+)\s+(\S+)$};
$root = $1;
......@@ -82,6 +88,7 @@ ok(-e $1);
# A different way
run_ok([$CAPSULE_VERSION_TOOL, 'libz.so.1', ''], '>', \$output);
diag("$output");
like($output, qr{^(\S*)\s+(\S+)\s+(\S+)\s+(\S+)$});
$output =~ m{^(\S*)\s+(\S+)\s+(\S+)\s+(\S+)$};
$root = $1;
......@@ -94,15 +101,12 @@ TODO: {
local $TODO = 'returns 1 for some reason';
like($version, qr{^1\.[0-9]+\.[0-9]+$});
}
TODO: {
local $TODO = "would be nice if this didn't start with //";
like($path, qr{^(/?(?:usr/)?lib/.*-linux-gnu.*/libz\.so\.\Q$version\E)$});
}
like($path, qr{^(//?(?:usr/)?lib/.*-linux-gnu.*/libz\.so\.\Q$version\E)$});
like($path, qr{^(/?(?:usr/)?lib/.*-linux-gnu.*/libz\.so\.\Q$version\E)$});
ok(-e $path);
# Another different way
run_ok([$CAPSULE_VERSION_TOOL, 'libz.so.1'], '>', \$output);
diag("$output");
like($output, qr{^(\S+)\s+(\S+)\s+(\S+)\s+(\S+)$});
$output =~ m{^(\S+)\s+(\S+)\s+(\S+)\s+(\S+)$};
$root = $1;
......@@ -116,11 +120,7 @@ TODO: {
local $TODO = 'returns 1 for some reason';
like($version, qr{^1\.[0-9]+\.[0-9]+$});
}
TODO: {
local $TODO = "would be nice if this didn't start with //";
like($path, qr{^(/?(?:usr/)?lib/.*-linux-gnu.*/libz\.so\.\Q$3\E)$});
}
like($path, qr{^(//?(?:usr/)?lib/.*-linux-gnu.*/libz\.so\.\Q$3\E)$});
like($path, qr{^(/?(?:usr/)?lib/.*-linux-gnu.*/libz\.so\.\Q$3\E)$});
ok(-e $path);
done_testing;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment