Make life a bit easier for me ....
[mono.git] / mcs / tests / gen-test.pl
1 #!/usr/bin/perl -w
2
3 my $gmcs = "mono ../gmcs/gmcs.exe";
4 my $monodis = "monodis";
5 my $mono = "mono";
6
7 my @normal = qw[gen-1 gen-2 gen-3 gen-4 gen-5 gen-6 gen-7 gen-8 gen-9 gen-10 gen-11 gen-12
8                 gen-14 gen-15 gen-16 gen-18 gen-19 gen-20 gen-21 gen-22 gen-23 gen-24 gen-25
9                 gen-26 gen-27 gen-28 gen-29 gen-30 gen-32 gen-33 gen-34 gen-35 gen-36 gen-37];
10 my @library = qw[gen-13 gen-17 gen-31];
11
12 sub RunTest
13 {
14     my ($quiet,@args) = @_;
15     my $cmdline = join ' ', @args;
16
17     $cmdline .= " > /dev/null" if $quiet;
18
19     print "Running $cmdline\n";
20
21     my $exitcode = system $cmdline;
22     if ($exitcode != 0) {
23         print "Command failed!\n";
24         return 0;
25     }
26
27     return 1;
28 }
29
30 sub NormalTest
31 {
32     my ($file) = @_;
33
34     my $cs = qq[$file.cs];
35     my $exe = qq[$file.exe];
36
37     RunTest (0, $gmcs, $cs) or return 0;
38     RunTest (1, $monodis, $exe) or return 0;
39     RunTest (0, $mono, $exe) or return 0;
40
41     return 1;
42 }
43
44 sub LibraryTest
45 {
46     my ($file) = @_;
47
48     my $cs_dll = qq[$file-dll.cs];
49     my $dll = qq[$file-dll.dll];
50     my $cs_exe = qq[$file-exe.cs];
51     my $exe = qq[$file-exe.exe];
52
53     RunTest (0, $gmcs, "/target:library", $cs_dll) or return 0;
54     RunTest (1, $monodis, $dll) or return 0;
55     RunTest (0, $gmcs, "/r:$dll", $cs_exe) or return 0;
56     RunTest (1, $monodis, $exe) or return 0;
57     RunTest (0, $mono, $exe) or return 0;
58 }
59
60 my @verify;
61 push @verify, "sidney";
62 push @verify, 'bin/peverify.sh';
63
64 foreach my $file (@normal) {
65     print "RUNNING TEST: $file\n";
66     if (NormalTest ($file)) {
67         print STDERR "TEST SUCCEEDED: $file\n";
68         push @verify, qq[$file.exe];
69     } else {
70         print STDERR "TEST FAILED: $file\n";
71     }
72 }
73
74 foreach my $file (@library) {
75     print "RUNNING LIBRARY TEST: $file\n";
76     if (LibraryTest ($file)) {
77         print STDERR "TEST SUCCEEDED: $file\n";
78         push @verify, qq[$file-dll.dll];
79         push @verify, qq[$file-exe.exe];
80     } else {
81         print STDERR "TEST FAILED: $file\n";
82     }
83 }
84
85 my $hostname = `hostname --fqdn`;
86 chop $hostname;
87
88 if ($hostname eq 'gondor.martin.baulig') {
89     print STDERR "VERIFYING TESTS\n";
90     RunTest (0, "ssh", @verify);
91 }