Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion bin/generate_tests
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ def generate(specs: pathlib.Path, exercise: pathlib.Path) -> None:
"""
).strip()
data = {
"cases": list(enumerate(cases)),
"cases": cases,
"header": header,
"solution": json.loads((exercise / ".meta/config.json").read_text())["files"]["solution"][0]
}
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/acronym/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash {{ solution }} "{{ case["input"]["phrase"] }}"
assert_success
assert_output "{{ case["expected"] }}"
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/affine-cipher/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash {{ solution }} {{ case["property"] }} {{ case["input"]["key"]["a"] }} {{ case["input"]["key"]["b"] }} "{{ case["input"]["phrase"] }}"
{%- if case["expect_error"] %}
assert_failure
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/all-your-base/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test '{{ case["description"] }}' {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash {{ solution }} {{ case["input"]["inputBase"] }} "{{ case["input"]["digits"] | join(" ") }}" {{ case["input"]["outputBase"] }}
{%- if case["expect_error"] %}
assert_failure
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/allergies/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test {{ case["descriptions"] | join(":") | quote }} {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{%- if case["property"] == "allergicTo" %}
run bash {{ solution }} {{ case["input"]["score"] }} allergic_to {{ case["input"]["item"] }}

Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/anagram/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash {{ solution }} "{{ case["input"]["subject"] }}" "{{ case["input"]["candidates"] | join(" ") }}"
assert_success
{%- if case["expected"] | length == 0 %}
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/armstrong-numbers/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test '{{ case["description"] }}' {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash {{ solution }} {{ case["input"]["number"] }}
assert_success
assert_output "{{ case["expected"] }}"
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/atbash-cipher/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash {{ solution }} {{ case["property"] }} "{{ case["input"]["phrase"] }}"
assert_success
assert_output "{{ case["expected"] }}"
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/binary-search/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{%- if case["expect_error"] %}
expected="-1"
{%- else %}
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/bob/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash {{ solution }} ${{ case["input"]["heyBob"] | repr }}
assert_success
assert_output "{{ case["expected"] }}"
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/bottle-song/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test '{{ case["description"] }}' {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
expected="\
{{ case["expected"] | join("\n") }}"
run bash {{ solution }} {{ case["input"]["startBottles"] }} {{ case["input"]["takeDown"] }}
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/bowling/.meta/template.j2
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
# shell script. We'll just pass in all the individual rolls
# and expect the score (or error) as output.

{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{%- set args = [solution] + case["input"]["previousRolls"] %}
{%- if case["property"] == "roll" %}{%- set args = args + [case["input"]["roll"]] %}{%- endif %}
run bash {{ args | join(" ") }}
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/change/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{%- if case["expect_error"] %}
expected="{{ case["expect_error_msg"] }}"
{%- else %}
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/clock/.meta/template.j2
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@
#
# The clock script will output the clock value in %H:%M format

{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{%- if case["property"] == "create" %}
run bash {{ solution }} {{ case["input"]["hour"] }} {{ case["input"]["minute"] }}
{%- elif case["property"] == "add" %}
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/collatz-conjecture/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash {{ solution }} {{ case["input"]["number"] }}
{%- if case["expect_error"] %}
assert_failure
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/crypto-square/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash {{ solution }} "{{ case["input"]["plaintext"] }}"
assert_success
assert_output "{{ case["expected"] }}"
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/darts/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash {{ solution }} {{ case["input"]["x"] }} {{ case["input"]["y"] }}
assert_success
assert_output "{{ case["expected"] }}"
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/diamond/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
expected="$(cat << EOT
{{ case["expected"] | join("\n") }}
EOT
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/difference-of-squares/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash {{ solution }} {{
case["property"] | camel_to_snake | replace("difference_of_squares", "difference")
}} {{ case["input"]["number"] }}
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/dnd-character/.meta/template.j2
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@


# ability modifier
{% for idx, case in cases %}
{% for case in cases %}
{%- if case["property"] == "modifier" %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash {{ solution }} {{ case["property"] }} {{ case["input"]["score"] }}
assert_success
assert_output "{{ case["expected"] }}"
Expand Down
3 changes: 1 addition & 2 deletions exercises/practice/dnd-character/dnd_character.bats
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
#!/usr/bin/env bats
load bats-extra

# generated on 2026-06-29T18:26:21+00:00
# local version: 2.0.0.0
# generated on 2026-08-13T17:30:08+00:00

# usage: dnd_character.sh modifier n
# -> output expected modifier
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/eliuds-eggs/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash {{ solution }} {{ case["input"]["number"] }}
assert_success
assert_output {{ case["expected"] }}
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/flower-field/.meta/template.j2
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ join() {
local IFS=$'\n'
echo "$*"
}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
input=({% for line in case["input"]["garden"] %}
"{{ line }}"
{%- endfor %}
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/food-chain/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test '{{ case["description"] }}' {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
expected="{{ case["expected"] | join("\n") }}"
run bash {{ solution }} {{ case["input"]["startVerse"] }} {{ case["input"]["endVerse"] }}
assert_success
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/forth/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["descriptions"] | join(": ") }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash {{ solution }} <<END
{{ case["input"]["instructions"] | join("\n") }}
END
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/game-of-life/.meta/template.j2
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ join() {
local IFS=$'\n'
echo "$*"
}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
input=(
{%- for row in case["input"]["matrix"] %}
"{{ row | join("") }}"
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/gigasecond/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test '{{ case["description"] }}' {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash {{ solution }} '{{ case["input"]["moment"] }}'

assert_success
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/grains/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{%- if case["property"] == "total" %}
run bash {{ solution }} total
{%- else %}
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/hamming/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test '{{ case["description"] }}' {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash {{ solution }} '{{ case["input"]["strand1"] }}' '{{ case["input"]["strand2"] }}'
{%- if case["expect_error"] %}
assert_failure
Expand Down
2 changes: 1 addition & 1 deletion exercises/practice/hello-world/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
run bash {{ solution }}

Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/house/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
expected=$(cat <<END
{{ case["expected"] | join("\n") }}
END
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["descriptions"] | join(": ") }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash {{ solution }} {{ case["property"] | camel_to_snake }} "{{ case["input"]["message"] | join(" ") }}"
assert_success
{%- if case["expect_error"] %}
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/isbn-verifier/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test '{{ case["description"] }}' {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash {{ solution }} '{{ case["input"]["isbn"] }}'
assert_success
assert_output "{{ case["expected"] }}"
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/isogram/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test '{{ case["description"] }}' {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash {{ solution }} '{{ case["input"]["phrase"] }}'
assert_success
assert_output "{{ case["expected"] }}"
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/kindergarten-garden/.meta/template.j2
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

# Note: using ANSI-C Quoting here
# see https://www.gnu.org/software/bash/manual/bash.html#ANSI_002dC-Quoting
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash {{ solution }} ${{ case["input"]["diagram"] | repr }} "{{ case["input"]["student"] }}"
assert_success
assert_output "{{ case["expected"] | join(" ") }}"
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/knapsack/.meta/template.j2
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
# should return:
# 90
#
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash {{ solution }} {{ case["input"]["maximumWeight"] }} {%- for item in case["input"]["items"] %} {{ item["weight"] }}:{{ item["value"] }}{%- endfor %}
assert_success
assert_output "{{ case["expected"] }}"
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/largest-series-product/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash {{ solution }} "{{ case["input"]["digits"] }}" "{{ case["input"]["span"] }}"
{%- if case["expect_error"] %}
expected="{{ case["expect_error_msg"] }}"
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/leap/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test '{{ case["description"] }}' {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash {{ solution }} {{ case["input"]["year"] }}

assert_success
Expand Down
Loading