Skip to content

Commit 79b6e8d

Browse files
committed
Exit 1 if any part got an unexpected answer
1 parent 7c5681b commit 79b6e8d

File tree

13 files changed

+64
-1
lines changed

13 files changed

+64
-1
lines changed

2021/day1/day1.raku

+5
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ class RunContext {
3939
has $.input-file;
4040
has $.input;
4141
has %.expected is rw;
42+
has @.passed;
4243

4344
method run-part(Int $part) {
4445
my $expected = $.expected«$part» // '';
@@ -49,6 +50,7 @@ class RunContext {
4950
my $end = now;
5051
put $result;
5152
"Part $part took %.3fms\n".printf(($end - $start) * 1000);
53+
@!passed.push($result eq 'TODO' || $expected && $expected eq $result);
5254
if $expected {
5355
if $expected eq $result {
5456
say "\c[CHECK MARK] PASS with expected value '$result'";
@@ -60,6 +62,7 @@ class RunContext {
6062
}
6163

6264
sub MAIN(*@input-files) {
65+
my $exit = all();
6366
for @input-files -> $input-file {
6467
if $input-file.IO.slurp -> $input {
6568
my $context = RunContext.new(:$input, :$input-file);
@@ -71,9 +74,11 @@ sub MAIN(*@input-files) {
7174
$context.run-part(1);
7275
say '';
7376
$context.run-part(2);
77+
$exit &= all($context.passed);
7478
} else {
7579
say "EMPTY INPUT FILE: $input-file";
7680
}
7781
say '=' x 40;
7882
}
83+
exit $exit ?? 0 !! 1;
7984
}

2021/day10/day10.raku

+5
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ class RunContext {
6666
has $.input-file;
6767
has $.input;
6868
has %.expected is rw;
69+
has @.passed;
6970

7071
method run-part(Solver:U $part) {
7172
my $num = $part.^name.comb(/\d+/).head;
@@ -77,6 +78,7 @@ class RunContext {
7778
my $end = now;
7879
put $result;
7980
"Part $num took %.3fms\n".printf(($end - $start) * 1000);
81+
@!passed.push($result eq 'TODO' || $expected && $expected eq $result);
8082
if $expected {
8183
if $expected eq $result {
8284
say "\c[CHECK MARK] PASS with expected value '$result'";
@@ -88,6 +90,7 @@ class RunContext {
8890
}
8991

9092
sub MAIN(*@input-files) {
93+
my $exit = all();
9194
for @input-files -> $input-file {
9295
if $input-file.IO.slurp -> $input {
9396
my $context = RunContext.new(:$input, :$input-file);
@@ -99,9 +102,11 @@ sub MAIN(*@input-files) {
99102
$context.run-part(Part1);
100103
say '';
101104
$context.run-part(Part2);
105+
$exit &= all($context.passed);
102106
} else {
103107
say "EMPTY INPUT FILE: $input-file";
104108
}
105109
say '=' x 40;
106110
}
111+
exit $exit ?? 0 !! 1;
107112
}

2021/day11/day11.raku

+5
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ class RunContext {
8484
has $.input-file;
8585
has $.input;
8686
has %.expected is rw;
87+
has @.passed;
8788

8889
method run-part(Solver:U $part) {
8990
my $num = $part.^name.comb(/\d+/).head;
@@ -95,6 +96,7 @@ class RunContext {
9596
my $end = now;
9697
put $result;
9798
"Part $num took %.3fms\n".printf(($end - $start) * 1000);
99+
@!passed.push($result eq 'TODO' || $expected && $expected eq $result);
98100
if $expected {
99101
if $expected eq $result {
100102
say "\c[CHECK MARK] PASS with expected value '$result'";
@@ -106,6 +108,7 @@ class RunContext {
106108
}
107109

108110
sub MAIN(*@input-files) {
111+
my $exit = all();
109112
for @input-files -> $input-file {
110113
if $input-file.IO.slurp -> $input {
111114
my $context = RunContext.new(:$input, :$input-file);
@@ -117,9 +120,11 @@ sub MAIN(*@input-files) {
117120
$context.run-part(Part1);
118121
say '';
119122
$context.run-part(Part2);
123+
$exit &= all($context.passed);
120124
} else {
121125
say "EMPTY INPUT FILE: $input-file";
122126
}
123127
say '=' x 40;
124128
}
129+
exit $exit ?? 0 !! 1;
125130
}

2021/day12/day12.raku

+5
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ class RunContext {
7676
has $.input-file;
7777
has $.input;
7878
has %.expected is rw;
79+
has @.passed;
7980

8081
method run-part(Solver:U $part) {
8182
my $num = $part.^name.comb(/\d+/).head;
@@ -88,6 +89,7 @@ class RunContext {
8889
put $result;
8990
"Part $num took %.3fms\n".printf(($end - $start) * 1000);
9091
say "Memoization of {+$solver.dfsmemo} items saved {$solver.memosaved} paths";
92+
@!passed.push($result eq 'TODO' || $expected && $expected eq $result);
9193
if $expected {
9294
if $expected eq $result {
9395
say "\c[CHECK MARK] PASS with expected value '$result'";
@@ -99,6 +101,7 @@ class RunContext {
99101
}
100102

101103
sub MAIN(*@input-files) {
104+
my $exit = all();
102105
for @input-files -> $input-file {
103106
if $input-file.IO.slurp -> $input {
104107
my $context = RunContext.new(:$input, :$input-file);
@@ -110,9 +113,11 @@ sub MAIN(*@input-files) {
110113
$context.run-part(Part1);
111114
say '';
112115
$context.run-part(Part2);
116+
$exit &= all($context.passed);
113117
} else {
114118
say "EMPTY INPUT FILE: $input-file";
115119
}
116120
say '=' x 40;
117121
}
122+
return $exit ?? 0 !! 1;
118123
}

2021/day2/day2.raku

+5
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ class RunContext {
7373
has $.input-file;
7474
has $.input;
7575
has %.expected is rw;
76+
has @.passed;
7677

7778
method run-part(Int $part) {
7879
my $expected = $.expected«$part» // '';
@@ -83,6 +84,7 @@ class RunContext {
8384
my $end = now;
8485
put $result;
8586
"Part $part took %.3fms\n".printf(($end - $start) * 1000);
87+
@!passed.push($result eq 'TODO' || $expected && $expected eq $result);
8688
if $expected {
8789
if $expected eq $result {
8890
say "\c[CHECK MARK] PASS with expected value '$result'";
@@ -94,6 +96,7 @@ class RunContext {
9496
}
9597

9698
sub MAIN(*@input-files) {
99+
my $exit = all();
97100
for @input-files -> $input-file {
98101
if $input-file.IO.slurp -> $input {
99102
my $context = RunContext.new(:$input, :$input-file);
@@ -105,9 +108,11 @@ sub MAIN(*@input-files) {
105108
$context.run-part(1);
106109
say '';
107110
$context.run-part(2);
111+
$exit &= all($context.passed);
108112
} else {
109113
say "EMPTY INPUT FILE: $input-file";
110114
}
111115
say '=' x 40;
112116
}
117+
exit $exit ?? 0 !! 1;
113118
}

2021/day3/day3.raku

+5
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ class RunContext {
6565
has $.input-file;
6666
has $.input;
6767
has %.expected is rw;
68+
has @.passed;
6869

6970
method run-part(Solver:U $part) {
7071
my $num = $part.^name.comb(/\d+/).head;
@@ -76,6 +77,7 @@ class RunContext {
7677
my $end = now;
7778
put $result;
7879
"Part $num took %.3fms\n".printf(($end - $start) * 1000);
80+
@!passed.push($result eq 'TODO' || $expected && $expected eq $result);
7981
if $expected {
8082
if $expected eq $result {
8183
say "\c[CHECK MARK] PASS with expected value '$result'";
@@ -87,6 +89,7 @@ class RunContext {
8789
}
8890

8991
sub MAIN(*@input-files) {
92+
my $exit = all();
9093
for @input-files -> $input-file {
9194
if $input-file.IO.slurp -> $input {
9295
my $context = RunContext.new(:$input, :$input-file);
@@ -98,9 +101,11 @@ sub MAIN(*@input-files) {
98101
$context.run-part(Part1);
99102
say '';
100103
$context.run-part(Part2);
104+
$exit &= all($context.passed);
101105
} else {
102106
say "EMPTY INPUT FILE: $input-file";
103107
}
104108
say '=' x 40;
105109
}
110+
exit $exit ?? 0 !! 1;
106111
}

2021/day4/day4.raku

+5
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ class RunContext {
9090
has $.input-file;
9191
has $.input;
9292
has %.expected is rw;
93+
has @.passed;
9394

9495
method run-part(Solver:U $part) {
9596
my $num = $part.^name.comb(/\d+/).head;
@@ -101,6 +102,7 @@ class RunContext {
101102
my $end = now;
102103
put $result;
103104
"Part $num took %.3fms\n".printf(($end - $start) * 1000);
105+
@!passed.push($result eq 'TODO' || $expected && $expected eq $result);
104106
if $expected {
105107
if $expected eq $result {
106108
say "\c[CHECK MARK] PASS with expected value '$result'";
@@ -112,6 +114,7 @@ class RunContext {
112114
}
113115

114116
sub MAIN(*@input-files) {
117+
my $exit = all();
115118
for @input-files -> $input-file {
116119
if $input-file.IO.slurp -> $input {
117120
my $context = RunContext.new(:$input, :$input-file);
@@ -123,9 +126,11 @@ sub MAIN(*@input-files) {
123126
$context.run-part(Part1);
124127
say '';
125128
$context.run-part(Part2);
129+
$exit &= all($context.passed);
126130
} else {
127131
say "EMPTY INPUT FILE: $input-file";
128132
}
129133
say '=' x 40;
130134
}
135+
exit $exit ?? 0 !! 1;
131136
}

2021/day5/day5.raku

+5
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ class RunContext {
6666
has $.input-file;
6767
has $.input;
6868
has %.expected is rw;
69+
has @.passed;
6970

7071
method run-part(Solver:U $part) {
7172
my $num = $part.^name.comb(/\d+/).head;
@@ -77,6 +78,7 @@ class RunContext {
7778
my $end = now;
7879
put $result;
7980
"Part $num took %.3fms\n".printf(($end - $start) * 1000);
81+
@!passed.push($result eq 'TODO' || $expected && $expected eq $result);
8082
if $expected {
8183
if $expected eq $result {
8284
say "\c[CHECK MARK] PASS with expected value '$result'";
@@ -88,6 +90,7 @@ class RunContext {
8890
}
8991

9092
sub MAIN(*@input-files) {
93+
my $exit = all();
9194
for @input-files -> $input-file {
9295
if $input-file.IO.slurp -> $input {
9396
my $context = RunContext.new(:$input, :$input-file);
@@ -99,9 +102,11 @@ sub MAIN(*@input-files) {
99102
$context.run-part(Part1);
100103
say '';
101104
$context.run-part(Part2);
105+
$exit &= all($context.passed);
102106
} else {
103107
say "EMPTY INPUT FILE: $input-file";
104108
}
105109
say '=' x 40;
106110
}
111+
exit $exit ?? 0 !! 1;
107112
}

2021/day6/day6.raku

+5
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ class RunContext {
3333
has $.input-file;
3434
has $.input;
3535
has %.expected is rw;
36+
has @.passed;
3637

3738
method run-part(Solver:U $part) {
3839
my $num = $part.^name.comb(/\d+/).head;
@@ -44,6 +45,7 @@ class RunContext {
4445
my $end = now;
4546
put $result;
4647
"Part $num took %.3fms\n".printf(($end - $start) * 1000);
48+
@!passed.push($result eq 'TODO' || $expected && $expected eq $result);
4749
if $expected {
4850
if $expected eq $result {
4951
say "\c[CHECK MARK] PASS with expected value '$result'";
@@ -55,6 +57,7 @@ class RunContext {
5557
}
5658

5759
sub MAIN(*@input-files) {
60+
my $exit = all();
5861
for @input-files -> $input-file {
5962
if $input-file.IO.slurp -> $input {
6063
my $context = RunContext.new(:$input, :$input-file);
@@ -66,9 +69,11 @@ sub MAIN(*@input-files) {
6669
$context.run-part(Part1);
6770
say '';
6871
$context.run-part(Part2);
72+
$exit &= all($context.passed);
6973
} else {
7074
say "EMPTY INPUT FILE: $input-file";
7175
}
7276
say '=' x 40;
7377
}
78+
exit $exit ?? 0 !! 1;
7479
}

2021/day7/day7.raku

+5
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class RunContext {
3232
has $.input-file;
3333
has $.input;
3434
has %.expected is rw;
35+
has @.passed;
3536

3637
method run-part(Solver:U $part) {
3738
my $num = $part.^name.comb(/\d+/).head;
@@ -43,6 +44,7 @@ class RunContext {
4344
my $end = now;
4445
put $result;
4546
"Part $num took %.3fms\n".printf(($end - $start) * 1000);
47+
@!passed.push($result eq 'TODO' || $expected && $expected eq $result);
4648
if $expected {
4749
if $expected eq $result {
4850
say "\c[CHECK MARK] PASS with expected value '$result'";
@@ -54,6 +56,7 @@ class RunContext {
5456
}
5557

5658
sub MAIN(*@input-files) {
59+
my $exit = all();
5760
for @input-files -> $input-file {
5861
if $input-file.IO.slurp -> $input {
5962
my $context = RunContext.new(:$input, :$input-file);
@@ -65,9 +68,11 @@ sub MAIN(*@input-files) {
6568
$context.run-part(Part1);
6669
say '';
6770
$context.run-part(Part2);
71+
$exit &= all($context.passed);
6872
} else {
6973
say "EMPTY INPUT FILE: $input-file";
7074
}
7175
say '=' x 40;
7276
}
77+
exit $exit ?? 0 !! 1;
7378
}

2021/day8/day8.raku

+5
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ class RunContext {
9595
has $.input-file;
9696
has $.input;
9797
has %.expected is rw;
98+
has @.passed;
9899

99100
method run-part(Solver:U $part) {
100101
my $num = $part.^name.comb(/\d+/).head;
@@ -106,6 +107,7 @@ class RunContext {
106107
my $end = now;
107108
put $result;
108109
"Part $num took %.3fms\n".printf(($end - $start) * 1000);
110+
@!passed.push($result eq 'TODO' || $expected && $expected eq $result);
109111
if $expected {
110112
if $expected eq $result {
111113
say "\c[CHECK MARK] PASS with expected value '$result'";
@@ -117,6 +119,7 @@ class RunContext {
117119
}
118120

119121
sub MAIN(*@input-files) {
122+
my $exit = all();
120123
for @input-files -> $input-file {
121124
if $input-file.IO.slurp -> $input {
122125
my $context = RunContext.new(:$input, :$input-file);
@@ -128,9 +131,11 @@ sub MAIN(*@input-files) {
128131
$context.run-part(Part1);
129132
say '';
130133
$context.run-part(Part2);
134+
$exit &= all($context.passed);
131135
} else {
132136
say "EMPTY INPUT FILE: $input-file";
133137
}
134138
say '=' x 40;
135139
}
140+
exit $exit ?? 0 !! 1;
136141
}

0 commit comments

Comments
 (0)