7 my $old_file = $ARGV[0];
8 my $new_file = $ARGV[1];
9 my $diff_file = "results_diff.xml";
11 $| = 1; # perform flush after each write to STDOUT
13 print "reading $old_file ... ";
15 my $res_old = XMLin("$old_file", forcearray => 1);
16 print "done (", time - $start," s)\n";
18 print "reading $new_file ... ";
20 my $res_new = XMLin("$new_file", forcearray => 1);
21 print "done (", time - $start," s)\n";
23 open(DIFF, ">$diff_file") or die "Could not open $diff_file, reason:$!\n";
25 print DIFF "<?xml version=\"1.0\"?>\n";
26 print DIFF "<results>\n";
27 print DIFF " <files>\n";
28 print DIFF " <OLD>$old_file</OLD>\n";
29 print DIFF " <NEW>$new_file</NEW>\n";
30 print DIFF " </files>\n";
32 if (! exists($res_old->{"environment"})) {
33 print "environment missing in $old_file!\n";
35 elsif (! exists($res_new->{"environment"})) {
36 print "environment missing in $new_file!\n";
39 print DIFF " <environment>\n";
40 print DIFF " <OLD>\n";
42 my %env = %{ @{ $res_old->{"environment"} }[0] };
44 foreach (keys(%env)) {
45 print DIFF " <$_>", @{ $env{"$_"} }[0], "</$_>\n";
47 print DIFF " </OLD>\n";
48 print DIFF " <NEW>\n";
50 %env = %{ @{ $res_new->{"environment"} }[0] };
52 foreach (keys(%env)) {
53 print DIFF " <$_>", @{ $env{"$_"} }[0], "</$_>\n";
55 print DIFF " </NEW>\n";
56 print DIFF " </environment>\n";
59 my $section_old = $res_old->{"section"};
60 my $section_new = $res_new->{"section"};
62 foreach (keys(%{ $section_old })) {
63 if (! exists($section_new->{"$_"})) {
64 print "Section $_ missing in $new_file!\n";
68 print DIFF " <section name=\"$_\">\n";
70 my $old = $section_old->{"$_"}{"result"};
71 my $new = $section_new->{"$_"}{"result"};
73 foreach my $test (keys(%{ $old })) {
74 my $entry_old = $old->{"$test"};
75 my $entry_new = $new->{"$test"};
78 if (! exists($new->{"$test"})) {
79 foreach my $k1 (keys(%{ $entry_old })) {
80 $entry_new->{"$k1"} = [ 'missing' ];
85 foreach my $k (keys(%{ $entry_old })) {
86 if (! exists($entry_new->{"$k"})) {
87 $entry_new->{"$k"} = [ 'missing' ];
91 my @val_old = @{ $entry_old->{"$k"} };
92 my @val_new = @{ $entry_new->{"$k"} };
93 if ($val_old[0] ne $val_new[0]) {
100 if ($has_diff == 1) {
101 print DIFF " <result name=\"$test\">\n";
102 print DIFF " <OLD>\n";
103 emit_entry($entry_old);
104 print DIFF " </OLD>\n";
105 print DIFF " <NEW>\n";
106 emit_entry($entry_new);
107 print DIFF " </NEW>\n";
108 print DIFF " </result>\n";
112 print DIFF " </section>\n";
115 print DIFF "</results>\n";
122 foreach (keys(%{ $href })) {
123 my @val = @{ $href->{"$_"} };
124 print DIFF " <$_>", $val[0], "</$_>\n";