7 my $resfile_name = "result.xml";
9 my $old_file = $ARGV[0]."/".$resfile_name;
10 my $new_file = $ARGV[1]."/".$resfile_name;
11 my $diff_file = "results_diff.xml";
13 $| = 1; # perform flush after each write to STDOUT
15 print "reading $old_file ... ";
17 my $res_old = XMLin("$old_file", forcearray => 1);
18 print "done (", time - $start," s)\n";
20 print "reading $new_file ... ";
22 my $res_new = XMLin("$new_file", forcearray => 1);
23 print "done (", time - $start," s)\n";
25 open(DIFF, ">$diff_file") or die "Could not open $diff_file, reason:$!\n";
27 print DIFF "<?xml version=\"1.0\"?>\n";
28 print DIFF "<results>\n";
29 print DIFF " <files>\n";
30 print DIFF " <OLD>$old_file</OLD>\n";
31 print DIFF " <NEW>$new_file</NEW>\n";
32 print DIFF " </files>\n";
34 if (! exists($res_old->{"environment"})) {
35 print "environment missing in $old_file!\n";
37 elsif (! exists($res_new->{"environment"})) {
38 print "environment missing in $new_file!\n";
41 print DIFF " <environment>\n";
42 print DIFF " <OLD>\n";
44 my %env = %{ @{ $res_old->{"environment"} }[0] };
46 foreach (keys(%env)) {
47 print DIFF " <$_>", @{ $env{"$_"} }[0], "</$_>\n";
49 print DIFF " </OLD>\n";
50 print DIFF " <NEW>\n";
52 %env = %{ @{ $res_new->{"environment"} }[0] };
54 foreach (keys(%env)) {
55 print DIFF " <$_>", @{ $env{"$_"} }[0], "</$_>\n";
57 print DIFF " </NEW>\n";
58 print DIFF " </environment>\n";
61 my $section_old = $res_old->{"section"};
62 my $section_new = $res_new->{"section"};
64 foreach (keys(%{ $section_old })) {
65 if (! exists($section_new->{"$_"})) {
66 print "Section $_ missing in $new_file!\n";
70 print DIFF " <section name=\"$_\">\n";
72 my $old = $section_old->{"$_"}{"result"};
73 my $new = $section_new->{"$_"}{"result"};
75 foreach my $test (keys(%{ $old })) {
76 my $entry_old = $old->{"$test"};
77 my $entry_new = $new->{"$test"};
80 if (! exists($new->{"$test"})) {
81 foreach my $k1 (keys(%{ $entry_old })) {
82 $entry_new->{"$k1"} = [ 'missing' ];
87 foreach my $k (keys(%{ $entry_old })) {
88 if (! exists($entry_new->{"$k"})) {
89 $entry_new->{"$k"} = [ 'missing' ];
93 my @val_old = @{ $entry_old->{"$k"} };
94 my @val_new = @{ $entry_new->{"$k"} };
95 if ($val_old[0] ne $val_new[0]) {
102 if ($has_diff == 1) {
103 print DIFF " <result name=\"$test\">\n";
104 print DIFF " <OLD>\n";
105 emit_entry($entry_old);
106 print DIFF " </OLD>\n";
107 print DIFF " <NEW>\n";
108 emit_entry($entry_new);
109 print DIFF " </NEW>\n";
110 print DIFF " </result>\n";
114 print DIFF " </section>\n";
117 print DIFF "</results>\n";
121 print "processing results_diff.xml ... ";
122 `xsltproc --output results_diff.html makediffhtml.xslt results_diff.xml`;
123 print "results_diff.html created\n";
128 foreach (keys(%{ $href })) {
129 my @val = @{ $href->{"$_"} };
130 print DIFF " <$_>", $val[0], "</$_>\n";