trackler 2.2.1.48 → 2.2.1.49

Sign up to get free protection for your applications and to get access to all the features.
Files changed (106) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/grains/canonical-data.json +1 -1
  4. data/problem-specifications/exercises/isbn-verifier/description.md +1 -1
  5. data/tracks/dart/exercises/anagram/pubspec.lock +10 -10
  6. data/tracks/dart/exercises/bob/pubspec.lock +4 -4
  7. data/tracks/dart/exercises/difference-of-squares/pubspec.lock +4 -4
  8. data/tracks/dart/exercises/gigasecond/pubspec.lock +4 -4
  9. data/tracks/dart/exercises/hamming/pubspec.lock +4 -4
  10. data/tracks/dart/exercises/hello-world/pubspec.lock +4 -4
  11. data/tracks/dart/exercises/leap/pubspec.lock +4 -4
  12. data/tracks/dart/exercises/phone-number/pubspec.lock +4 -4
  13. data/tracks/dart/exercises/raindrops/pubspec.lock +17 -5
  14. data/tracks/dart/exercises/rna-transcription/pubspec.lock +4 -4
  15. data/tracks/dart/exercises/word-count/pubspec.lock +4 -4
  16. data/tracks/dart/pubspec.lock +3 -3
  17. data/tracks/fsharp/exercises/largest-series-product/Example.fs +18 -4
  18. data/tracks/fsharp/exercises/largest-series-product/LargestSeriesProduct.fs +1 -1
  19. data/tracks/fsharp/exercises/largest-series-product/LargestSeriesProductTest.fs +80 -36
  20. data/tracks/fsharp/generators/Exercise.fs +1 -1
  21. data/tracks/fsharp/generators/Generators.fs +10 -0
  22. data/tracks/gnu-apl/config.json +14 -0
  23. data/tracks/gnu-apl/exercises/difference-of-squares/README.md +19 -0
  24. data/tracks/gnu-apl/exercises/difference-of-squares/difference-of-squares-example.apl +13 -0
  25. data/tracks/gnu-apl/exercises/difference-of-squares/difference-of-squares.tc +38 -0
  26. data/tracks/gnu-apl/exercises/pangram/README.md +15 -0
  27. data/tracks/gnu-apl/exercises/pangram/pangram-example.apl +14 -0
  28. data/tracks/gnu-apl/exercises/pangram/pangram.tc +40 -0
  29. data/tracks/gnu-apl/exercises/raindrops/raindrops.tc +1 -1
  30. data/tracks/java/exercises/bracket-push/.meta/version +1 -0
  31. data/tracks/java/exercises/complex-numbers/.meta/version +1 -0
  32. data/tracks/java/exercises/ocr-numbers/.meta/version +1 -0
  33. data/tracks/java/exercises/queen-attack/.meta/version +1 -0
  34. data/tracks/java/exercises/rectangles/.meta/version +1 -0
  35. data/tracks/java/exercises/robot-simulator/.meta/version +1 -0
  36. data/tracks/java/exercises/secret-handshake/.meta/version +1 -0
  37. data/tracks/java/exercises/sublist/.meta/version +1 -0
  38. data/tracks/perl6/exercises/accumulate/accumulate.t +1 -6
  39. data/tracks/perl6/exercises/all-your-base/all-your-base.t +14 -19
  40. data/tracks/perl6/exercises/allergies/Allergies.pm6 +1 -1
  41. data/tracks/perl6/exercises/allergies/Example.pm6 +1 -1
  42. data/tracks/perl6/exercises/allergies/allergies.t +25 -29
  43. data/tracks/perl6/exercises/allergies/example.yaml +11 -10
  44. data/tracks/perl6/exercises/anagram/anagram.t +14 -19
  45. data/tracks/perl6/exercises/atbash-cipher/atbash-cipher.t +14 -19
  46. data/tracks/perl6/exercises/bob/bob.t +16 -23
  47. data/tracks/perl6/exercises/bob/example.yaml +1 -3
  48. data/tracks/perl6/exercises/clock/clock.t +14 -19
  49. data/tracks/perl6/exercises/flatten-array/flatten-array.t +14 -19
  50. data/tracks/perl6/exercises/grade-school/grade-school.t +1 -6
  51. data/tracks/perl6/exercises/grains/grains.t +15 -20
  52. data/tracks/perl6/exercises/hello-world/example.yaml +1 -3
  53. data/tracks/perl6/exercises/hello-world/hello-world.t +16 -23
  54. data/tracks/perl6/exercises/leap/leap.t +14 -19
  55. data/tracks/perl6/exercises/linked-list/example.yaml +59 -59
  56. data/tracks/perl6/exercises/linked-list/linked-list.t +59 -64
  57. data/tracks/perl6/exercises/luhn/luhn.t +14 -19
  58. data/tracks/perl6/exercises/phone-number/phone-number.t +14 -19
  59. data/tracks/perl6/exercises/raindrops/raindrops.t +14 -19
  60. data/tracks/perl6/exercises/rna-transcription/rna-transcription.t +14 -19
  61. data/tracks/perl6/exercises/robot-name/robot-name.t +1 -6
  62. data/tracks/perl6/exercises/scrabble-score/scrabble-score.t +14 -19
  63. data/tracks/perl6/exercises/space-age/space-age.t +14 -19
  64. data/tracks/perl6/exercises/word-count/word-count.t +14 -19
  65. data/tracks/perl6/exercises/wordy/wordy.t +14 -19
  66. data/tracks/perl6/templates/test.mustache +19 -25
  67. data/tracks/purescript/config.json +12 -0
  68. data/tracks/purescript/exercises/sum-of-multiples/README.md +15 -0
  69. data/tracks/purescript/exercises/sum-of-multiples/bower.json +26 -0
  70. data/tracks/purescript/exercises/sum-of-multiples/examples/src/SumOfMultiples.purs +16 -0
  71. data/tracks/purescript/exercises/sum-of-multiples/src/SumOfMultiples.purs +3 -0
  72. data/tracks/purescript/exercises/sum-of-multiples/test/Main.purs +63 -0
  73. data/tracks/python/README.md +5 -1
  74. data/tracks/python/config.json +52 -9
  75. data/tracks/python/exercises/allergies/allergies_test.py +7 -7
  76. data/tracks/python/exercises/allergies/example.py +1 -1
  77. data/tracks/python/exercises/binary-search/binary_search_test.py +8 -5
  78. data/tracks/python/exercises/binary/binary_test.py +8 -4
  79. data/tracks/python/exercises/book-store/example.py +1 -1
  80. data/tracks/python/exercises/clock/clock.py +3 -0
  81. data/tracks/python/exercises/clock/clock_test.py +16 -16
  82. data/tracks/python/exercises/clock/example.py +1 -1
  83. data/tracks/python/exercises/list-ops/example.py +10 -29
  84. data/tracks/python/exercises/list-ops/list_ops.py +8 -12
  85. data/tracks/python/exercises/list-ops/list_ops_test.py +55 -86
  86. data/tracks/python/exercises/meetup/meetup_test.py +2 -2
  87. data/tracks/python/exercises/minesweeper/minesweeper_test.py +6 -3
  88. data/tracks/python/exercises/ocr-numbers/ocr_numbers_test.py +11 -8
  89. data/tracks/python/exercises/pangram/pangram_test.py +25 -16
  90. data/tracks/python/exercises/point-mutations/point_mutations.py +1 -1
  91. data/tracks/python/exercises/pythagorean-triplet/pythagorean_triplet_test.py +2 -1
  92. data/tracks/python/exercises/saddle-points/saddle_points_test.py +2 -1
  93. data/tracks/python/exercises/simple-cipher/simple_cipher_test.py +4 -2
  94. data/tracks/python/exercises/triangle/triangle_test.py +10 -5
  95. data/tracks/python/exercises/wordy/wordy_test.py +8 -5
  96. data/tracks/python/exercises/zipper/README.md +43 -0
  97. data/tracks/python/exercises/zipper/example.py +41 -0
  98. data/tracks/python/exercises/zipper/zipper.py +28 -0
  99. data/tracks/python/exercises/zipper/zipper_test.py +82 -0
  100. data/tracks/racket/.travis.yml +1 -1
  101. data/tracks/racket/config.json +14 -0
  102. data/tracks/racket/exercises/meetup/README.md +54 -0
  103. data/tracks/racket/exercises/meetup/example.rkt +45 -0
  104. data/tracks/racket/exercises/meetup/meetup-test.rkt +39 -0
  105. data/tracks/racket/exercises/meetup/meetup.rkt +3 -0
  106. metadata +29 -2
@@ -7,9 +7,7 @@ use JSON::Fast;
7
7
  my Str:D $exercise := 'Luhn';
8
8
  my Version:D $version = v1;
9
9
  my Str $module //= $exercise;
10
- INIT {
11
- plan 15;
12
- }
10
+ plan 15;
13
11
 
14
12
  use-ok $module or bail-out;
15
13
  require ::($module);
@@ -26,7 +24,18 @@ require ::($module) <&is-luhn-valid>;
26
24
  my $c-data;
27
25
  is .<input>.&is-luhn-valid, |.<expected description> for @($c-data<cases>);
28
26
 
29
- done-testing;
27
+ unless %*ENV<EXERCISM> {
28
+ skip-rest 'exercism tests';
29
+ exit;
30
+ }
31
+
32
+ subtest 'canonical-data' => {
33
+ (my $c-data-file = "$dir/../../problem-specifications/exercises/{
34
+ $dir.IO.resolve.basename
35
+ }/canonical-data.json".IO.resolve) ~~ :f ??
36
+ is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'match problem-specifications' !!
37
+ flunk 'problem-specifications file not found';
38
+ }
30
39
 
31
40
  INIT {
32
41
  $c-data := from-json q:to/END/;
@@ -118,19 +127,5 @@ $c-data := from-json q:to/END/;
118
127
 
119
128
  END
120
129
 
121
- if %*ENV<EXERCISM> {
122
- $module = 'Example';
123
- if (my $c-data-file =
124
- "$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json"
125
- .IO.resolve) ~~ :f
126
- {
127
- is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'canonical-data';
128
- }
129
- else {
130
- flunk 'canonical-data';
131
- }
132
- }
133
- else {
134
- skip;
135
- }
130
+ $module = 'Example' if %*ENV<EXERCISM>;
136
131
  }
@@ -7,9 +7,7 @@ use JSON::Fast;
7
7
  my Str:D $exercise := 'Phone';
8
8
  my Version:D $version = v3;
9
9
  my Str $module //= $exercise;
10
- INIT {
11
- plan 14;
12
- }
10
+ plan 14;
13
11
 
14
12
  use-ok $module or bail-out;
15
13
  require ::($module);
@@ -32,7 +30,18 @@ for @($c-data<cases>[0]<cases>) {
32
30
  }
33
31
  }
34
32
 
35
- done-testing;
33
+ unless %*ENV<EXERCISM> {
34
+ skip-rest 'exercism tests';
35
+ exit;
36
+ }
37
+
38
+ subtest 'canonical-data' => {
39
+ (my $c-data-file = "$dir/../../problem-specifications/exercises/{
40
+ $dir.IO.resolve.basename
41
+ }/canonical-data.json".IO.resolve) ~~ :f ??
42
+ is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'match problem-specifications' !!
43
+ flunk 'problem-specifications file not found';
44
+ }
36
45
 
37
46
  INIT {
38
47
  $c-data := from-json q:to/END/;
@@ -128,19 +137,5 @@ $c-data := from-json q:to/END/;
128
137
 
129
138
  END
130
139
 
131
- if %*ENV<EXERCISM> {
132
- $module = 'Example';
133
- if (my $c-data-file =
134
- "$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json"
135
- .IO.resolve) ~~ :f
136
- {
137
- is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'canonical-data';
138
- }
139
- else {
140
- flunk 'canonical-data';
141
- }
142
- }
143
- else {
144
- skip;
145
- }
140
+ $module = 'Example' if %*ENV<EXERCISM>;
146
141
  }
@@ -7,9 +7,7 @@ use JSON::Fast;
7
7
  my Str:D $exercise := 'Raindrops';
8
8
  my Version:D $version = v1;
9
9
  my Str $module //= $exercise;
10
- INIT {
11
- plan 20;
12
- }
10
+ plan 20;
13
11
 
14
12
  use-ok $module or bail-out;
15
13
  require ::($module);
@@ -32,7 +30,18 @@ for @($c-data<cases>) {
32
30
  }
33
31
  }
34
32
 
35
- done-testing;
33
+ unless %*ENV<EXERCISM> {
34
+ skip-rest 'exercism tests';
35
+ exit;
36
+ }
37
+
38
+ subtest 'canonical-data' => {
39
+ (my $c-data-file = "$dir/../../problem-specifications/exercises/{
40
+ $dir.IO.resolve.basename
41
+ }/canonical-data.json".IO.resolve) ~~ :f ??
42
+ is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'match problem-specifications' !!
43
+ flunk 'problem-specifications file not found';
44
+ }
36
45
 
37
46
  INIT {
38
47
  $c-data := from-json q:to/END/;
@@ -154,19 +163,5 @@ $c-data := from-json q:to/END/;
154
163
 
155
164
  END
156
165
 
157
- if %*ENV<EXERCISM> {
158
- $module = 'Example';
159
- if (my $c-data-file =
160
- "$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json"
161
- .IO.resolve) ~~ :f
162
- {
163
- is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'canonical-data';
164
- }
165
- else {
166
- flunk 'canonical-data';
167
- }
168
- }
169
- else {
170
- skip;
171
- }
166
+ $module = 'Example' if %*ENV<EXERCISM>;
172
167
  }
@@ -7,9 +7,7 @@ use JSON::Fast;
7
7
  my Str:D $exercise := 'RNA';
8
8
  my Version:D $version = v1;
9
9
  my Str $module //= $exercise;
10
- INIT {
11
- plan 10;
12
- }
10
+ plan 10;
13
11
 
14
12
  use-ok $module or bail-out;
15
13
  require ::($module);
@@ -32,7 +30,18 @@ for @($c-data<cases>) {
32
30
  }
33
31
  }
34
32
 
35
- done-testing;
33
+ unless %*ENV<EXERCISM> {
34
+ skip-rest 'exercism tests';
35
+ exit;
36
+ }
37
+
38
+ subtest 'canonical-data' => {
39
+ (my $c-data-file = "$dir/../../problem-specifications/exercises/{
40
+ $dir.IO.resolve.basename
41
+ }/canonical-data.json".IO.resolve) ~~ :f ??
42
+ is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'match problem-specifications' !!
43
+ flunk 'problem-specifications file not found';
44
+ }
36
45
 
37
46
  INIT {
38
47
  $c-data := from-json q:to/END/;
@@ -106,19 +115,5 @@ $c-data := from-json q:to/END/;
106
115
 
107
116
  END
108
117
 
109
- if %*ENV<EXERCISM> {
110
- $module = 'Example';
111
- if (my $c-data-file =
112
- "$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json"
113
- .IO.resolve) ~~ :f
114
- {
115
- is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'canonical-data';
116
- }
117
- else {
118
- flunk 'canonical-data';
119
- }
120
- }
121
- else {
122
- skip;
123
- }
118
+ $module = 'Example' if %*ENV<EXERCISM>;
124
119
  }
@@ -46,11 +46,6 @@ subtest 'Randomness', {
46
46
  isnt @names, @names.sort, 'Names not ordered';
47
47
  isnt @names, @names.sort.reverse, 'Names not reverse ordered';
48
48
  }
49
-
50
- done-testing;
51
-
52
49
  INIT {
53
- if %*ENV<EXERCISM> {
54
- $module = 'Example';
55
- }
50
+ $module = 'Example' if %*ENV<EXERCISM>;
56
51
  }
@@ -7,9 +7,7 @@ use JSON::Fast;
7
7
  my Str:D $exercise := 'Scrabble';
8
8
  my Version:D $version = v1;
9
9
  my Str $module //= $exercise;
10
- INIT {
11
- plan 13;
12
- }
10
+ plan 13;
13
11
 
14
12
  use-ok $module or bail-out;
15
13
  require ::($module);
@@ -26,7 +24,18 @@ require ::($module) <&score>;
26
24
  my $c-data;
27
25
  is .<input>.&score, |.<expected description> for @($c-data<cases>);
28
26
 
29
- done-testing;
27
+ unless %*ENV<EXERCISM> {
28
+ skip-rest 'exercism tests';
29
+ exit;
30
+ }
31
+
32
+ subtest 'canonical-data' => {
33
+ (my $c-data-file = "$dir/../../problem-specifications/exercises/{
34
+ $dir.IO.resolve.basename
35
+ }/canonical-data.json".IO.resolve) ~~ :f ??
36
+ is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'match problem-specifications' !!
37
+ flunk 'problem-specifications file not found';
38
+ }
30
39
 
31
40
  INIT {
32
41
  $c-data := from-json q:to/END/;
@@ -106,19 +115,5 @@ $c-data := from-json q:to/END/;
106
115
 
107
116
  END
108
117
 
109
- if %*ENV<EXERCISM> {
110
- $module = 'Example';
111
- if (my $c-data-file =
112
- "$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json"
113
- .IO.resolve) ~~ :f
114
- {
115
- is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'canonical-data';
116
- }
117
- else {
118
- flunk 'canonical-data';
119
- }
120
- }
121
- else {
122
- skip;
123
- }
118
+ $module = 'Example' if %*ENV<EXERCISM>;
124
119
  }
@@ -7,9 +7,7 @@ use JSON::Fast;
7
7
  my Str:D $exercise := 'SpaceAge';
8
8
  my Version:D $version = v1;
9
9
  my Str $module //= $exercise;
10
- INIT {
11
- plan 10;
12
- }
10
+ plan 10;
13
11
 
14
12
  use-ok $module or bail-out;
15
13
  require ::($module);
@@ -26,7 +24,18 @@ require ::($module) <Mercury Venus Earth Mars Jupiter Saturn Uranus Neptune>;
26
24
  my $c-data;
27
25
  is (age-on ::(.<planet>): .<seconds>), |.<expected description> for @($c-data<cases>);
28
26
 
29
- done-testing;
27
+ unless %*ENV<EXERCISM> {
28
+ skip-rest 'exercism tests';
29
+ exit;
30
+ }
31
+
32
+ subtest 'canonical-data' => {
33
+ (my $c-data-file = "$dir/../../problem-specifications/exercises/{
34
+ $dir.IO.resolve.basename
35
+ }/canonical-data.json".IO.resolve) ~~ :f ??
36
+ is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'match problem-specifications' !!
37
+ flunk 'problem-specifications file not found';
38
+ }
30
39
 
31
40
  INIT {
32
41
  $c-data := from-json q:to/END/;
@@ -96,19 +105,5 @@ $c-data := from-json q:to/END/;
96
105
 
97
106
  END
98
107
 
99
- if %*ENV<EXERCISM> {
100
- $module = 'Example';
101
- if (my $c-data-file =
102
- "$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json"
103
- .IO.resolve) ~~ :f
104
- {
105
- is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'canonical-data';
106
- }
107
- else {
108
- flunk 'canonical-data';
109
- }
110
- }
111
- else {
112
- skip;
113
- }
108
+ $module = 'Example' if %*ENV<EXERCISM>;
114
109
  }
@@ -7,9 +7,7 @@ use JSON::Fast;
7
7
  my Str:D $exercise := 'WordCount';
8
8
  my Version:D $version = v1;
9
9
  my Str $module //= $exercise;
10
- INIT {
11
- plan 12;
12
- }
10
+ plan 12;
13
11
 
14
12
  use-ok $module or bail-out;
15
13
  require ::($module);
@@ -26,7 +24,18 @@ require ::($module) <&count-words>;
26
24
  my $c-data;
27
25
  is-deeply (% = .<input>.&count-words), |.<expected description> for @($c-data<cases>);
28
26
 
29
- done-testing;
27
+ unless %*ENV<EXERCISM> {
28
+ skip-rest 'exercism tests';
29
+ exit;
30
+ }
31
+
32
+ subtest 'canonical-data' => {
33
+ (my $c-data-file = "$dir/../../problem-specifications/exercises/{
34
+ $dir.IO.resolve.basename
35
+ }/canonical-data.json".IO.resolve) ~~ :f ??
36
+ is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'match problem-specifications' !!
37
+ flunk 'problem-specifications file not found';
38
+ }
30
39
 
31
40
  INIT {
32
41
  $c-data := from-json q:to/END/;
@@ -150,19 +159,5 @@ $c-data := from-json q:to/END/;
150
159
 
151
160
  END
152
161
 
153
- if %*ENV<EXERCISM> {
154
- $module = 'Example';
155
- if (my $c-data-file =
156
- "$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json"
157
- .IO.resolve) ~~ :f
158
- {
159
- is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'canonical-data';
160
- }
161
- else {
162
- flunk 'canonical-data';
163
- }
164
- }
165
- else {
166
- skip;
167
- }
162
+ $module = 'Example' if %*ENV<EXERCISM>;
168
163
  }
@@ -7,9 +7,7 @@ use JSON::Fast;
7
7
  my Str:D $exercise := 'Wordy';
8
8
  my Version:D $version = v1;
9
9
  my Str $module //= $exercise;
10
- INIT {
11
- plan 18;
12
- }
10
+ plan 18;
13
11
 
14
12
  use-ok $module or bail-out;
15
13
  require ::($module);
@@ -32,7 +30,18 @@ for @($c-data<cases>) {
32
30
  }
33
31
  }
34
32
 
35
- done-testing;
33
+ unless %*ENV<EXERCISM> {
34
+ skip-rest 'exercism tests';
35
+ exit;
36
+ }
37
+
38
+ subtest 'canonical-data' => {
39
+ (my $c-data-file = "$dir/../../problem-specifications/exercises/{
40
+ $dir.IO.resolve.basename
41
+ }/canonical-data.json".IO.resolve) ~~ :f ??
42
+ is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'match problem-specifications' !!
43
+ flunk 'problem-specifications file not found';
44
+ }
36
45
 
37
46
  INIT {
38
47
  $c-data := from-json q:to/END/;
@@ -147,19 +156,5 @@ $c-data := from-json q:to/END/;
147
156
 
148
157
  END
149
158
 
150
- if %*ENV<EXERCISM> {
151
- $module = 'Example';
152
- if (my $c-data-file =
153
- "$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json"
154
- .IO.resolve) ~~ :f
155
- {
156
- is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'canonical-data';
157
- }
158
- else {
159
- flunk 'canonical-data';
160
- }
161
- }
162
- else {
163
- skip;
164
- }
159
+ $module = 'Example' if %*ENV<EXERCISM>;
165
160
  }
@@ -8,9 +8,7 @@ use #`{{&use}};#`{{/modules}}
8
8
  my Str:D $exercise#`{{#exercise}} := '#`{{&exercise}}'#`{{/exercise}};#`{{#exercise_comment}} #`[#`{{&exercise_comment}}]#`{{/exercise_comment}}
9
9
  my Version:D $version#`{{#version}} = v#`{{&version}}#`{{/version}};#`{{#version_comment}} #`[#`{{&version_comment}}]#`{{/version_comment}}
10
10
  my Str $module //= $exercise;#`{{#module_comment}} #`[#`{{&module_comment}}]#`{{/module_comment}}#`{{#plan}}
11
- #`{{#cdata}}INIT {
12
- #`{{/cdata}}plan #`{{&plan}};#`{{#plan_comment}} #`[#`{{&plan_comment}}]#`{{/plan_comment}}#`{{#cdata}}
13
- }#`{{/cdata}}#`{{/plan}}
11
+ plan #`{{&plan}};#`{{#plan_comment}} #`[#`{{&plan_comment}}]#`{{/plan_comment}}#`{{/plan}}
14
12
  #`{{#use_test_comment}}
15
13
 
16
14
  #`[#`{{&use_test_comment}}]#`{{/use_test_comment}}
@@ -36,33 +34,29 @@ subtest 'Class methods', {
36
34
  #`{{/methods}}#`{{#cdata}}
37
35
  my $c-data;#`{{/cdata}}
38
36
  #`{{&tests}}
37
+ #`{{#exercism_comment}}
39
38
 
40
- done-testing;#`{{#done_testing_comment}} #`[#`{{&done_testing_comment}}]#`{{/done_testing_comment}}#`{{#after_done_testing}}
39
+ #`[#`{{&exercism_comment}}]#`{{/exercism_comment}}#`{{#cdata}}
40
+ unless %*ENV<EXERCISM> {
41
+ skip-rest 'exercism tests';
42
+ exit;
43
+ }
41
44
 
42
- #`{{&after_done_testing}}#`{{/after_done_testing}}
43
- #`{{#INIT_comment}}
45
+ subtest 'canonical-data' => {
46
+ (my $c-data-file = "$dir/../../problem-specifications/exercises/{
47
+ $dir.IO.resolve.basename
48
+ }/canonical-data.json".IO.resolve) ~~ :f ??
49
+ is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'match problem-specifications' !!
50
+ flunk 'problem-specifications file not found';
51
+ }
44
52
 
45
- #`[#`{{&INIT_comment}}]#`{{/INIT_comment}}
46
- INIT {
47
- #`{{#cdata}}$c-data := from-json q:to/END/;
53
+ #`{{/cdata}}
54
+ INIT {#`{{#cdata}}
55
+ $c-data := from-json q:to/END/;
48
56
 
49
57
  #`{{&json}}
50
58
  END
59
+ #`{{/cdata}}
51
60
 
52
- #`{{/cdata}} if %*ENV<EXERCISM> {#`{{#exercism_comment}}
53
- #`[#`{{&exercism_comment}}]#`{{/exercism_comment}}
54
- $module = 'Example';#`{{#cdata}}
55
- if (my $c-data-file =
56
- "$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json"
57
- .IO.resolve) ~~ :f
58
- {
59
- is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'canonical-data';
60
- }
61
- else {
62
- flunk 'canonical-data';
63
- }
64
- }
65
- else {
66
- skip;#`{{/cdata}}
67
- }
61
+ $module = 'Example' if %*ENV<EXERCISM>;
68
62
  }