]> Dogcows Code - chaz/p5-Alien-ZMQ/blob - examples/01-compile.t
ffde85d5f5614f1910f6ecb302bb463d0998a563
[chaz/p5-Alien-ZMQ] / examples / 01-compile.t
1 #!perl
2
3 # This test may be performed after the installation of Alien::ZMQ, e.g.:
4 # prove examples/01-compile.t
5
6 use warnings;
7 use strict;
8
9 BEGIN {
10 require ExtUtils::CBuilder;
11 unless (ExtUtils::CBuilder->new->have_compiler) {
12 require Test::More;
13 Test::More::plan(skip_all => "these tests require a working compiler");
14 }
15 }
16
17 use Alien::ZMQ;
18 use Test::More tests => 5;
19 use version;
20
21 my $cb = ExtUtils::CBuilder->new;
22
23 my $src = "test-$$.c";
24 open my $SRC, '>', $src;
25 print $SRC <<END;
26 #include <stdio.h>
27 #include <zmq.h>
28 int main(int argc, char* argv[]) {
29 int major, minor, patch;
30 zmq_version(&major, &minor, &patch);
31 printf("%d.%d.%d %d.%d.%d",
32 ZMQ_VERSION_MAJOR, ZMQ_VERSION_MINOR, ZMQ_VERSION_PATCH,
33 major, minor, patch);
34 return 0;
35 }
36 END
37 close $SRC;
38
39 my $obj = eval {
40 $cb->compile(source => $src, extra_compiler_flags => Alien::ZMQ::cflags);
41 };
42 unlink $src;
43 ok($obj, "compile C code");
44 BAIL_OUT("compile failed") unless $obj;
45
46 my $exe = eval {
47 $cb->link_executable(objects => $obj, extra_linker_flags => Alien::ZMQ::libs);
48 };
49 unlink $obj;
50 ok($exe, "link object");
51 BAIL_OUT("link failed") unless $exe;
52
53 $ENV{LD_LIBRARY_PATH} = Alien::ZMQ::lib_dir;
54 my $out = `./$exe`;
55 ok($out, "run executable");
56 unlink $exe;
57 my ($inc_version, $lib_version) = $out =~ /(\d\.\d\.\d) (\d\.\d\.\d)/;
58
59 ok(version->parse($inc_version) == Alien::ZMQ::inc_version, "include versions are equal");
60 ok(version->parse($lib_version) == Alien::ZMQ::lib_version, "library versions are equal");
61
This page took 0.034174 seconds and 3 git commands to generate.