svn commit: samba r25767 - in branches/SAMBA_4_0/source/pidl/tests: .

metze at samba.org metze at samba.org
Wed Oct 31 16:29:32 GMT 2007


Author: metze
Date: 2007-10-31 16:29:32 +0000 (Wed, 31 Oct 2007)
New Revision: 25767

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=25767

Log:
pidl: make it easier to debug errors in pidl tests

we now print the C program that we tried to compile

metze
Modified:
   branches/SAMBA_4_0/source/pidl/tests/Util.pm


Changeset:
Modified: branches/SAMBA_4_0/source/pidl/tests/Util.pm
===================================================================
--- branches/SAMBA_4_0/source/pidl/tests/Util.pm	2007-10-31 16:27:21 UTC (rev 25766)
+++ branches/SAMBA_4_0/source/pidl/tests/Util.pm	2007-10-31 16:29:32 UTC (rev 25767)
@@ -47,6 +47,9 @@
 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 "no samba environment available, skipping compilation", 3 
 		if (system("pkg-config --exists ndr") != 0);
 
+	my $main = "
+#define uint_t unsigned int
+#define _GNU_SOURCE
+#include <stdint.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdbool.h>
+#include <stdarg.h>
+#include <util/data_blob.h>
+
+/* 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 @@
 	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 <stdint.h>\n";
-	print CC "#include <stdlib.h>\n";
-	print CC "#include <stdio.h>\n";
-	print CC "#include <stdbool.h>\n";
-	print CC "#include <stdarg.h>\n";
-	print CC "#include <util/data_blob.h>\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);
 



More information about the samba-cvs mailing list