One more test ....
[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];
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 STDERR "Running $cmdline\n";
20
21     my $exitcode = system $cmdline;
22     if ($exitcode != 0) {
23         print STDERR "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 foreach my $file (@normal) {
61     print STDERR "RUNNING TEST: $file\n";
62     if (NormalTest ($file)) {
63         print STDERR "TEST SUCCEEDED: $file\n";
64     } else {
65         print STDERR "TEST FAILED: $file\n";
66     }
67 }
68
69 foreach my $file (@library) {
70     print STDERR "RUNNING LIBRARY TEST: $file\n";
71     if (LibraryTest ($file)) {
72         print STDERR "TEST SUCCEEDED: $file\n";
73     } else {
74         print STDERR "TEST FAILED: $file\n";
75     }
76 }