]>
Commit | Line | Data |
---|---|---|
1 | #!/usr/bin/perl -w | |
2 | use v5.14; | |
3 | ||
4 | use Test::More skip_all => 'These tests are badly outdated and broken'; | |
5 | ||
6 | use Test::More tests => 13; | |
7 | use File::Temp qw/tempdir/; | |
8 | use Config; | |
9 | ||
10 | use Gruntmaster::Data; | |
11 | ||
12 | my $perl = $Config{perlpath} . $Config{_exe}; | |
13 | my $dir = tempdir CLEANUP => 1; | |
14 | $ENV{GRUNTMASTER_DSN} = "dbi:SQLite:dbname=$dir/testdb"; | |
15 | ||
16 | our $db; | |
17 | ||
18 | sub withdb (&) { | |
19 | local $db = Gruntmaster::Data->connect($ENV{GRUNTMASTER_DSN}); | |
20 | shift->() | |
21 | } | |
22 | ||
23 | withdb { $db->deploy }; | |
24 | ||
25 | my $pipe; | |
26 | ||
27 | open $pipe, "|$perl gruntmaster-contest add ct"; | |
28 | print $pipe <<''; | |
29 | My cool contest | |
30 | MGV | |
31 | 2014-01-01 00:00Z | |
32 | 2014-01-01 05:00Z | |
33 | ||
34 | close $pipe; | |
35 | ||
36 | withdb { | |
37 | subtest 'gruntmaster-contest add' => sub { | |
38 | plan tests => 5; | |
39 | my $ct = $db->contest('ct'); | |
40 | ok $ct, 'contest exists'; | |
41 | is $ct->name, 'My cool contest', 'contest name'; | |
42 | is $ct->owner->id, 'MGV', 'contest owner'; | |
43 | is $ct->start, 1388534400, 'contest start'; | |
44 | is $ct->stop, 1388534400 + 5 * 60 * 60, 'contest stop'; | |
45 | } | |
46 | }; | |
47 | ||
48 | is `$perl gruntmaster-contest get ct owner`, "MGV\n", 'gruntmaster-contest get'; | |
49 | system $perl, 'gruntmaster-contest', 'set', 'ct', 'owner', 'nobody'; | |
50 | withdb { is $db->contest('ct')->owner->id, 'nobody', 'gruntmaster-contest set' }; | |
51 | ||
52 | withdb { $db->contests->create({id => 'dummy', name => 'Dummy contest', owner => 'MGV', start => 0, stop => 1}) }; | |
53 | my @list = sort `$perl gruntmaster-contest list`; | |
54 | chomp @list; | |
55 | my @list2 = withdb { map { $_->id } $db->contests->all }; | |
56 | is_deeply \@list, [ sort @list2 ], 'gruntmaster-contest list'; | |
57 | ||
58 | system $perl, 'gruntmaster-contest', 'rm', 'dummy'; | |
59 | withdb { ok !$db->contest('dummy'), 'gruntmaster-contest rm' }; | |
60 | ||
61 | open $pipe, "|$perl gruntmaster-problem add pb"; | |
62 | print $pipe <<''; | |
63 | Test problem | |
64 | n | |
65 | ct | |
66 | Marius Gavrilescu | |
67 | Smaranda Ciubotaru | |
68 | MGV | |
69 | b | |
70 | gruntmaster-problem | |
71 | c | |
72 | a | |
73 | a | |
74 | 3 | |
75 | 1 | |
76 | 100 | |
77 | Ok | |
78 | Ok | |
79 | Ok | |
80 | ||
81 | close $pipe; | |
82 | ||
83 | withdb { | |
84 | subtest 'gruntmaster-problem add' => sub { | |
85 | plan tests => 13; | |
86 | my $pb = $db->problem('pb'); | |
87 | ok $pb, 'problem exists'; | |
88 | is $pb->name, 'Test problem', 'name'; | |
89 | is $pb->author, 'Marius Gavrilescu', 'author'; | |
90 | is $pb->writer, 'Smaranda Ciubotaru', 'statement writer'; | |
91 | is $pb->owner->id, 'MGV', 'owner'; | |
92 | is $pb->level, 'easy', 'level'; | |
93 | is $pb->generator, 'Undef', 'generator'; | |
94 | is $pb->runner, 'File', 'runner'; | |
95 | is $pb->judge, 'Absolute', 'judge'; | |
96 | is $pb->testcnt, 3, 'test count'; | |
97 | is $pb->timeout, 1, 'time limit'; | |
98 | is $pb->olimit, 100, 'output limit'; | |
99 | ok $db->contest_problems->find('ct', 'pb'), 'is in contest'; | |
100 | } | |
101 | }; | |
102 | ||
103 | is `$perl gruntmaster-problem get pb author`, "Marius Gavrilescu\n", 'gruntmaster-problem get'; | |
104 | system $perl, 'gruntmaster-problem', 'set', 'pb', 'owner', 'nobody'; | |
105 | withdb { is $db->problem('pb')->owner->id, 'nobody', 'gruntmaster-problem set' }; | |
106 | ||
107 | withdb { $db->problems->create({id => 'dummy', name => 'Dummy', generator => 'Undef', runner => 'File', judge => 'Absolute', level => 'beginner', value => 100, owner => 'MGV', statement => '...', testcnt => 1, timeout => 1}) }; | |
108 | ||
109 | @list = sort `$perl gruntmaster-problem list`; | |
110 | chomp @list; | |
111 | @list2 = withdb { map { $_->id } $db->problems->all }; | |
112 | is_deeply \@list, [ sort @list2 ], 'gruntmaster-problem list'; | |
113 | ||
114 | system $perl, 'gruntmaster-problem', 'rm', 'dummy'; | |
115 | withdb { ok !$db->problem('dummy'), 'gruntmaster-problem rm' }; | |
116 | ||
117 | withdb { $db->jobs->create({id => 1, date => 1, extension => '.ext', format => 'CPP', problem => 'pb', source => '...', owner => 'MGV'}) }; | |
118 | ||
119 | is `$perl gruntmaster-job get 1 format`, "CPP\n", 'gruntmaster-job get'; | |
120 | system $perl, 'gruntmaster-job', 'set', 1, 'format', 'PERL'; | |
121 | withdb { is $db->job(1)->format, 'PERL', 'gruntmaster-job set' }; | |
122 | ||
123 | system $perl, 'gruntmaster-job', 'rm', 1; | |
124 | withdb { ok !$db->job(1), 'gruntmaster-job rm' }; |