New test.
[mono.git] / mcs / tests / gen-test.pl
1 #!/usr/bin/perl -w
2
3 my $gmcs = "gmcs";
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                 gen-38 gen-39 gen-40 gen-41 gen-42 gen-43 gen-44 gen-45 gen-46 gen-48 gen-49
11                 gen-50 gen-51 gen-52 gen-53 gen-54 gen-55 gen-56 gen-58 gen-59 gen-60 gen-62
12                 gen-63 gen-64];
13 my @compileonly = qw[];
14 my @library = qw[gen-13 gen-17 gen-31 gen-47];
15
16 sub RunTest
17 {
18     my ($quiet,@args) = @_;
19     my $cmdline = join ' ', @args;
20
21     $cmdline .= " > /dev/null" if $quiet;
22
23     print "Running $cmdline\n";
24
25     my $exitcode = system $cmdline;
26     if ($exitcode != 0) {
27         print "Command failed!\n";
28         return 0;
29     }
30
31     return 1;
32 }
33
34 sub NormalTest
35 {
36     my ($file) = @_;
37
38     my $cs = qq[$file.cs];
39     my $exe = qq[$file.exe];
40
41     RunTest (0, $gmcs, $cs) or return 0;
42     RunTest (1, $monodis, $exe) or return 0;
43     RunTest (1, $mono, $exe) or return 0;
44
45     return 1;
46 }
47
48 sub CompileOnlyTest
49 {
50     my ($file) = @_;
51
52     my $cs = qq[$file.cs];
53     my $exe = qq[$file.exe];
54
55     RunTest (0, $gmcs, $cs) or return 0;
56
57     return 1;
58 }
59
60 sub LibraryTest
61 {
62     my ($file) = @_;
63
64     my $cs_dll = qq[$file-dll.cs];
65     my $dll = qq[$file-dll.dll];
66     my $cs_exe = qq[$file-exe.cs];
67     my $exe = qq[$file-exe.exe];
68
69     RunTest (0, $gmcs, "/target:library", $cs_dll) or return 0;
70     RunTest (1, $monodis, $dll) or return 0;
71     RunTest (0, $gmcs, "/r:$dll", $cs_exe) or return 0;
72     RunTest (1, $monodis, $exe) or return 0;
73     RunTest (0, $mono, $exe) or return 0;
74 }
75
76 my @verify;
77 push @verify, "cologne";
78 push @verify, 'bin/peverify.sh';
79
80 foreach my $file (@normal) {
81     print "RUNNING TEST: $file\n";
82     if (NormalTest ($file)) {
83         print STDERR "TEST SUCCEEDED: $file\n";
84         push @verify, qq[$file.exe];
85     } else {
86         print STDERR "TEST FAILED: $file\n";
87     }
88 }
89
90 foreach my $file (@compileonly) {
91     print "RUNNING COMPILATION ONLY TEST: $file\n";
92     if (CompileOnlyTest ($file)) {
93         print STDERR "TEST SUCCEEDED: $file\n";
94         push @verify, qq[$file.exe];
95     } else {
96         print STDERR "TEST FAILED: $file\n";
97     }
98 }
99
100 foreach my $file (@library) {
101     print "RUNNING LIBRARY TEST: $file\n";
102     if (LibraryTest ($file)) {
103         print STDERR "TEST SUCCEEDED: $file\n";
104         push @verify, qq[$file-dll.dll];
105         push @verify, qq[$file-exe.exe];
106     } else {
107         print STDERR "TEST FAILED: $file\n";
108     }
109 }
110
111 my $hostname = `hostname --fqdn`;
112 chop $hostname;
113
114 if ($hostname eq 'gondor.boston.ximian.com') {
115     print STDERR "VERIFYING TESTS\n";
116     RunTest (0, "ssh", @verify);
117 }