]> mj.ucw.cz Git - moe.git/blob - bin/mo-merge-tests
Use `char *' for all strings instead of `byte *'.
[moe.git] / bin / mo-merge-tests
1 #!/usr/bin/perl
2
3 # This script recalculates points according to grouping of testcases.
4 # This is no longer necessary, because the score table and report generators
5 # already know how to handle merging of groups, but we still keep it as an example.
6
7 @ARGV == 1 or die "Usage: mo-merge <task>\n";
8 my $task = $ARGV[0];
9 foreach my $s (`ls -d testing/*/$task`) {
10         chomp $s;
11         if (! -s "$s/points.old") {
12                 if (-s "$s/points") {
13                         rename "$s/points", "$s/points.old" or die "Rename $s/points failed: $!";
14                 } else {
15                         print "$s: NO POINTS?\n";
16                         next;
17                 }
18         }
19         open X, "$s/points.old" or die;
20         my %tests = ();
21         my %cmts = ();
22         while (<X>) {
23                 chomp;
24                 my ($test, $subtest, $pts, $cmt) = /^(\d+)([a-z]*)\s+(\d+)\s*(.*)/ or die;
25                 if (!exists($tests{$test}) || $tests{$test} > $pts) {
26                         $tests{$test} = $pts;
27                         $cmts{$test} = $cmt;
28                 }
29         }
30         close X;
31         open X, ">$s/points" or die;
32         foreach my $test (sort { $a <=> $b } keys %tests) {
33                 print X "$test $tests{$test} $cmts{$test}\n";
34         }
35         close X;
36 }