From 7dee06709e01118dc3b56e79b1050de9bace92a3 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 31 Oct 2007 16:29:32 +0100 Subject: r25767: pidl: make it easier to debug errors in pidl tests we now print the C program that we tried to compile metze (This used to be commit 299e74314c05209bdc9fe2c41cae7094b2f15c11) --- source4/pidl/tests/Util.pm | 69 +++++++++++++++++++++++++++++++--------------- 1 file changed, 47 insertions(+), 22 deletions(-) (limited to 'source4/pidl') diff --git a/source4/pidl/tests/Util.pm b/source4/pidl/tests/Util.pm index c7fca95aaa..82ab130e5a 100644 --- a/source4/pidl/tests/Util.pm +++ b/source4/pidl/tests/Util.pm @@ -47,6 +47,9 @@ use Parse::Pidl::Samba4::Header; sub test_samba4_ndr { my ($name,$idl,$c,$extra) = @_; + + $extra = "" unless defined($extra); + my $pidl = Parse::Pidl::IDL::parse_string("interface echo { $idl }; ", "<$name>"); ok(defined($pidl), "($name) parse idl"); @@ -66,8 +69,49 @@ SKIP: { skip "no samba environment available, skipping compilation", 3 if (system("pkg-config --exists ndr") != 0); - my $test_data_prefix = $ENV{TEST_DATA_PREFIX}; + my $main = " +#define uint_t unsigned int +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include + +/* header start */ +$header +/* header end */ + +/* ndrheader start */ +$ndrheader +/* ndrheader end */ + +/* extra start */ +$extra +/* extra end */ + +/* ndrparser start */ +$ndrparser +/* ndrparser end */ + +/* main start */ +int main(int argc, const char **argv) +{ + TALLOC_CTX *mem_ctx = talloc_init(NULL); + +$c + + talloc_free(mem_ctx); + return 0; +} +/* main end */ +\n"; + + my $main_debug = "# ".join("\n# ", split("\n", $main)); + + my $test_data_prefix = $ENV{TEST_DATA_PREFIX}; my $outfile; if (defined($test_data_prefix)) { $outfile = "$test_data_prefix/test-$name"; @@ -95,32 +139,13 @@ SKIP: { my $cmd = "$cc $cflags -x c - -o $outfile $flags $ldflags"; $cmd =~ s/\n//g; open CC, "|$cmd"; - print CC "#define uint_t unsigned int\n"; - print CC "#define _GNU_SOURCE\n"; - print CC "#include \n"; - print CC "#include \n"; - print CC "#include \n"; - print CC "#include \n"; - print CC "#include \n"; - print CC "#include \n"; - print CC $header; - print CC $ndrheader; - print CC $extra if ($extra); - print CC $ndrparser; - print CC "int main(int argc, const char **argv) -{ - TALLOC_CTX *mem_ctx = talloc_init(NULL); - - $c - - talloc_free(mem_ctx); - - return 0; }\n"; + print CC $main; close CC; ok(-f $outfile, "($name) compile"); my $ret = system($outfile, ()) >> 8; + print "# code:\n#\n$main_debug\n" if ($ret != 0); print "# cmd: $cmd\n" if ($ret != 0); print "# return code: $ret\n" if ($ret != 0); -- cgit