diff --git a/bin/generate_tests b/bin/generate_tests index aa463470..3c1c2fa4 100755 --- a/bin/generate_tests +++ b/bin/generate_tests @@ -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] } diff --git a/exercises/practice/acronym/.meta/template.j2 b/exercises/practice/acronym/.meta/template.j2 index 706acc29..12479537 100644 --- a/exercises/practice/acronym/.meta/template.j2 +++ b/exercises/practice/acronym/.meta/template.j2 @@ -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 gawk -f {{ solution }} <<< "{{ case["input"]["phrase"] }}" assert_success assert_output "{{ case["expected"] }}" diff --git a/exercises/practice/affine-cipher/.meta/template.j2 b/exercises/practice/affine-cipher/.meta/template.j2 index a7326637..cfd8bf39 100644 --- a/exercises/practice/affine-cipher/.meta/template.j2 +++ b/exercises/practice/affine-cipher/.meta/template.j2 @@ -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 gawk -f {{ solution }} <<< "{{ [case["property"], case["input"]["key"]["a"], case["input"]["key"]["b"], case["input"]["phrase"]] | join("|") }}" {%- if case["expect_error"] %} assert_failure diff --git a/exercises/practice/all-your-base/.meta/template.j2 b/exercises/practice/all-your-base/.meta/template.j2 index 1c7233a3..89993a46 100644 --- a/exercises/practice/all-your-base/.meta/template.j2 +++ b/exercises/practice/all-your-base/.meta/template.j2 @@ -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 gawk -f {{ solution }} -v ibase={{ case["input"]["inputBase"] }} -v obase={{ case["input"]["outputBase"] }} <<< "{{ case["input"]["digits"] | join(" ") }}" {%- if case["expect_error"] %} assert_failure diff --git a/exercises/practice/allergies/.meta/template.j2 b/exercises/practice/allergies/.meta/template.j2 index d3a92c66..15ff953f 100644 --- a/exercises/practice/allergies/.meta/template.j2 +++ b/exercises/practice/allergies/.meta/template.j2 @@ -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 {%- if case["property"] == "allergicTo" %} run gawk -f {{ solution }} <<< '{{ [case["input"]["score"], case["property"] | camel_to_snake, case["input"]["item"]] | join(",") }}' assert_success diff --git a/exercises/practice/alphametics/.meta/template.j2 b/exercises/practice/alphametics/.meta/template.j2 index 520a8285..1ea12808 100644 --- a/exercises/practice/alphametics/.meta/template.j2 +++ b/exercises/practice/alphametics/.meta/template.j2 @@ -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 awk -f alphametics.awk <<< "{{ case.input.puzzle }}" assert_success {% if case.expected %} diff --git a/exercises/practice/anagram/.meta/template.j2 b/exercises/practice/anagram/.meta/template.j2 index ce0178e9..22f5dddd 100644 --- a/exercises/practice/anagram/.meta/template.j2 +++ b/exercises/practice/anagram/.meta/template.j2 @@ -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 gawk -f {{ solution }} -v key={{ case["input"]["subject"] }} < 10000000 %} {%- set flags="-M " %} diff --git a/exercises/practice/atbash-cipher/.meta/template.j2 b/exercises/practice/atbash-cipher/.meta/template.j2 index a24fbe0d..00d4ab38 100644 --- a/exercises/practice/atbash-cipher/.meta/template.j2 +++ b/exercises/practice/atbash-cipher/.meta/template.j2 @@ -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 gawk -f {{ solution }} -v direction={{ case["property"] }} <<< "{{ case["input"]["phrase"] }}" assert_success assert_output "{{ case["expected"] }}" diff --git a/exercises/practice/binary-search/.meta/template.j2 b/exercises/practice/binary-search/.meta/template.j2 index 5b1dd202..c45fea90 100644 --- a/exercises/practice/binary-search/.meta/template.j2 +++ b/exercises/practice/binary-search/.meta/template.j2 @@ -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 gawk -f {{ solution }} -v value={{ case["input"]["value"] }} <<< "{{ case["input"]["array"] | join(",") }}" {%- if case["expect_error"] %} assert_success diff --git a/exercises/practice/bob/.meta/template.j2 b/exercises/practice/bob/.meta/template.j2 index 756f9459..80cd2c2a 100644 --- a/exercises/practice/bob/.meta/template.j2 +++ b/exercises/practice/bob/.meta/template.j2 @@ -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 gawk -f {{ solution }} <<< ${{ case["input"]["heyBob"] | repr}} assert_success assert_output "{{ case["expected"] }}" diff --git a/exercises/practice/book-store/.meta/template.j2 b/exercises/practice/book-store/.meta/template.j2 index 253693c5..4487c912 100644 --- a/exercises/practice/book-store/.meta/template.j2 +++ b/exercises/practice/book-store/.meta/template.j2 @@ -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 gawk -f {{ solution }} < first.txt echo '1 1 +' >> first.txt diff --git a/exercises/practice/gigasecond/.meta/template.j2 b/exercises/practice/gigasecond/.meta/template.j2 index 4e8cfa01..efda424c 100644 --- a/exercises/practice/gigasecond/.meta/template.j2 +++ b/exercises/practice/gigasecond/.meta/template.j2 @@ -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 gawk -f {{ solution }} <<< '{{ case["input"]["moment"] }}' assert_success diff --git a/exercises/practice/grade-school/.meta/template.j2 b/exercises/practice/grade-school/.meta/template.j2 index 7ac3d54b..391270ca 100644 --- a/exercises/practice/grade-school/.meta/template.j2 +++ b/exercises/practice/grade-school/.meta/template.j2 @@ -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"] == "roster" %} run gawk -f {{ solution }} -v action={{ case["property"] }} << END_INPUT {%- else %} diff --git a/exercises/practice/grains/.meta/template.j2 b/exercises/practice/grains/.meta/template.j2 index bad85da8..89312d1e 100644 --- a/exercises/practice/grains/.meta/template.j2 +++ b/exercises/practice/grains/.meta/template.j2 @@ -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 gawk -M -f {{ solution }} <<< total {%- else %} diff --git a/exercises/practice/hamming/.meta/template.j2 b/exercises/practice/hamming/.meta/template.j2 index 29bd6e9d..b85f7dae 100644 --- a/exercises/practice/hamming/.meta/template.j2 +++ b/exercises/practice/hamming/.meta/template.j2 @@ -8,9 +8,9 @@ populate_test_file() { teardown() { rm -f input.txt } -{% 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 populate_test_file '{{ case["input"]["strand1"] }}' '{{ case["input"]["strand2"] }}' run gawk -f {{ solution }} input.txt {%- if case["expect_error"] %} diff --git a/exercises/practice/hello-world/.meta/template.j2 b/exercises/practice/hello-world/.meta/template.j2 index ab084006..5124f35f 100644 --- a/exercises/practice/hello-world/.meta/template.j2 +++ b/exercises/practice/hello-world/.meta/template.j2 @@ -1,5 +1,5 @@ {{ header }} -{% for idx, case in cases %} +{% for case in cases %} @test "{{ case["description"] }}" { run gawk -f {{ solution }} diff --git a/exercises/practice/house/.meta/template.j2 b/exercises/practice/house/.meta/template.j2 index 2e6b1b32..dc6c8e5a 100644 --- a/exercises/practice/house/.meta/template.j2 +++ b/exercises/practice/house/.meta/template.j2 @@ -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 < input.txt run gawk ' diff --git a/exercises/practice/meetup/.meta/template.j2 b/exercises/practice/meetup/.meta/template.j2 index a796e870..90845ca7 100644 --- a/exercises/practice/meetup/.meta/template.j2 +++ b/exercises/practice/meetup/.meta/template.j2 @@ -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 gawk -f {{ solution }} <<< "{{ [ case["input"]["year"], diff --git a/exercises/practice/minesweeper/.meta/template.j2 b/exercises/practice/minesweeper/.meta/template.j2 index cd61b6ad..b760c643 100644 --- a/exercises/practice/minesweeper/.meta/template.j2 +++ b/exercises/practice/minesweeper/.meta/template.j2 @@ -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 gawk -f {{ solution }} << 'END_INPUT' {%- if case["input"]["minefield"] %} {{ case["input"]["minefield"] | join("\n") | replace(" ", ".") }} diff --git a/exercises/practice/nth-prime/.meta/template.j2 b/exercises/practice/nth-prime/.meta/template.j2 index 3861518d..cca60297 100644 --- a/exercises/practice/nth-prime/.meta/template.j2 +++ b/exercises/practice/nth-prime/.meta/template.j2 @@ -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 gawk -f {{ solution }} -v n={{ case["input"]["number"] }} {%- if case["expect_error"] %} assert_failure diff --git a/exercises/practice/ocr-numbers/.meta/template.j2 b/exercises/practice/ocr-numbers/.meta/template.j2 index 882e148d..800fd7fd 100644 --- a/exercises/practice/ocr-numbers/.meta/template.j2 +++ b/exercises/practice/ocr-numbers/.meta/template.j2 @@ -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 gawk -f {{ solution }} << INPUT {{ case["input"]["rows"] | join("\n") }} INPUT diff --git a/exercises/practice/pangram/.meta/template.j2 b/exercises/practice/pangram/.meta/template.j2 index 5b0c7c33..56d1a77b 100644 --- a/exercises/practice/pangram/.meta/template.j2 +++ b/exercises/practice/pangram/.meta/template.j2 @@ -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 gawk -f {{ solution }} <<< '{{ case["input"]["sentence"] }}' assert_success assert_output "{{ case["expected"] }}" diff --git a/exercises/practice/pascals-triangle/.meta/template.j2 b/exercises/practice/pascals-triangle/.meta/template.j2 index d9b0a1ee..ac3c7b01 100644 --- a/exercises/practice/pascals-triangle/.meta/template.j2 +++ b/exercises/practice/pascals-triangle/.meta/template.j2 @@ -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 {%- if case["expected"] %} {{ case["expected"] | map("join", " ") | join("\n") }} diff --git a/exercises/practice/phone-number/.meta/template.j2 b/exercises/practice/phone-number/.meta/template.j2 index 80d975a8..a487e060 100644 --- a/exercises/practice/phone-number/.meta/template.j2 +++ b/exercises/practice/phone-number/.meta/template.j2 @@ -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 gawk -f {{ solution }} <<< "{{ case["input"]["phrase"] }}" {%- if case["expect_error"] %} assert_failure diff --git a/exercises/practice/pig-latin/.meta/template.j2 b/exercises/practice/pig-latin/.meta/template.j2 index aca8d168..75ee0074 100644 --- a/exercises/practice/pig-latin/.meta/template.j2 +++ b/exercises/practice/pig-latin/.meta/template.j2 @@ -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 gawk -f {{ solution }} <<< "{{ case["input"]["phrase"] }}" assert_success assert_output "{{ case["expected"] }}" diff --git a/exercises/practice/poker/.meta/template.j2 b/exercises/practice/poker/.meta/template.j2 index 9694530a..50fab5e4 100644 --- a/exercises/practice/poker/.meta/template.j2 +++ b/exercises/practice/poker/.meta/template.j2 @@ -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 <