From 337132306fad7c8d8f6df701db1f1b534c78278b Mon Sep 17 00:00:00 2001 From: Isaac Good Date: Thu, 13 Aug 2026 10:11:49 -0700 Subject: [PATCH 1/2] Remove the index from the test case loop; simplify the cases object MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Summarized changes: ``` ยป g diff | grep '^[+-][^+-]' | sort | uniq -c 1 + "cases": cases, 1 - "cases": list(enumerate(cases)), 77 +{% for case in cases %} 77 -{% for idx, case in cases %} 1 -# generated on 2026-06-30T17:59:19+00:00 1 +# generated on 2026-08-13T17:20:33+00:00 55 - {% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip 21 - {% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip 55 + {% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip 21 + {% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip 1 -@test each_file_gets_its_own_forth { 1 +@test "each input file has its own evaluator" { 1 -@test macro_empty_definition { 1 -@test macro_missing_semicolon { 1 +@test "new word definition missing the required semicolon" { 1 +@test "new word with empty definition" { ``` --- bin/generate_tests | 2 +- exercises/practice/acronym/.meta/template.j2 | 4 ++-- exercises/practice/affine-cipher/.meta/template.j2 | 4 ++-- exercises/practice/all-your-base/.meta/template.j2 | 4 ++-- exercises/practice/allergies/.meta/template.j2 | 4 ++-- exercises/practice/anagram/.meta/template.j2 | 4 ++-- exercises/practice/armstrong-numbers/.meta/template.j2 | 4 ++-- exercises/practice/atbash-cipher/.meta/template.j2 | 4 ++-- exercises/practice/binary-search/.meta/template.j2 | 4 ++-- exercises/practice/bob/.meta/template.j2 | 4 ++-- exercises/practice/book-store/.meta/template.j2 | 4 ++-- exercises/practice/bottle-song/.meta/template.j2 | 4 ++-- exercises/practice/bowling/.meta/template.j2 | 4 ++-- exercises/practice/change/.meta/template.j2 | 4 ++-- exercises/practice/clock/.meta/template.j2 | 4 ++-- exercises/practice/collatz-conjecture/.meta/template.j2 | 4 ++-- exercises/practice/crypto-square/.meta/template.j2 | 4 ++-- exercises/practice/darts/.meta/template.j2 | 4 ++-- exercises/practice/diamond/.meta/template.j2 | 4 ++-- .../practice/difference-of-squares/.meta/template.j2 | 4 ++-- exercises/practice/eliuds-eggs/.meta/template.j2 | 4 ++-- exercises/practice/flower-field/.meta/template.j2 | 4 ++-- exercises/practice/food-chain/.meta/template.j2 | 4 ++-- exercises/practice/forth/.meta/template.j2 | 4 ++-- exercises/practice/forth/test-forth.bats | 8 ++++---- exercises/practice/gigasecond/.meta/template.j2 | 4 ++-- exercises/practice/grade-school/.meta/template.j2 | 4 ++-- exercises/practice/grains/.meta/template.j2 | 4 ++-- exercises/practice/hamming/.meta/template.j2 | 4 ++-- exercises/practice/hello-world/.meta/template.j2 | 2 +- exercises/practice/house/.meta/template.j2 | 4 ++-- exercises/practice/isbn-verifier/.meta/template.j2 | 4 ++-- exercises/practice/isogram/.meta/template.j2 | 4 ++-- exercises/practice/killer-sudoku-helper/.meta/template.j2 | 4 ++-- exercises/practice/kindergarten-garden/.meta/template.j2 | 4 ++-- exercises/practice/knapsack/.meta/template.j2 | 4 ++-- .../practice/largest-series-product/.meta/template.j2 | 4 ++-- exercises/practice/leap/.meta/template.j2 | 4 ++-- exercises/practice/line-up/.meta/template.j2 | 4 ++-- exercises/practice/luhn/.meta/template.j2 | 4 ++-- exercises/practice/matching-brackets/.meta/template.j2 | 4 ++-- exercises/practice/matrix/.meta/template.j2 | 4 ++-- exercises/practice/meetup/.meta/template.j2 | 4 ++-- exercises/practice/minesweeper/.meta/template.j2 | 4 ++-- exercises/practice/nth-prime/.meta/template.j2 | 4 ++-- exercises/practice/ocr-numbers/.meta/template.j2 | 4 ++-- exercises/practice/pangram/.meta/template.j2 | 4 ++-- exercises/practice/pascals-triangle/.meta/template.j2 | 4 ++-- exercises/practice/phone-number/.meta/template.j2 | 4 ++-- exercises/practice/pig-latin/.meta/template.j2 | 4 ++-- exercises/practice/poker/.meta/template.j2 | 4 ++-- exercises/practice/prime-factors/.meta/template.j2 | 4 ++-- exercises/practice/prism/.meta/template.j2 | 4 ++-- exercises/practice/protein-translation/.meta/template.j2 | 4 ++-- exercises/practice/proverb/.meta/template.j2 | 4 ++-- exercises/practice/pythagorean-triplet/.meta/template.j2 | 4 ++-- exercises/practice/raindrops/.meta/template.j2 | 4 ++-- exercises/practice/rectangles/.meta/template.j2 | 4 ++-- exercises/practice/resistor-color-duo/.meta/template.j2 | 4 ++-- exercises/practice/resistor-color-trio/.meta/template.j2 | 4 ++-- exercises/practice/reverse-string/.meta/template.j2 | 4 ++-- exercises/practice/rna-transcription/.meta/template.j2 | 4 ++-- exercises/practice/roman-numerals/.meta/template.j2 | 4 ++-- exercises/practice/rotational-cipher/.meta/template.j2 | 4 ++-- exercises/practice/run-length-encoding/.meta/template.j2 | 4 ++-- exercises/practice/saddle-points/.meta/template.j2 | 4 ++-- exercises/practice/say/.meta/template.j2 | 4 ++-- exercises/practice/scrabble-score/.meta/template.j2 | 4 ++-- exercises/practice/secret-handshake/.meta/template.j2 | 4 ++-- exercises/practice/series/.meta/template.j2 | 4 ++-- exercises/practice/sieve/.meta/template.j2 | 4 ++-- exercises/practice/space-age/.meta/template.j2 | 4 ++-- exercises/practice/spiral-matrix/.meta/template.j2 | 4 ++-- exercises/practice/sum-of-multiples/.meta/template.j2 | 4 ++-- exercises/practice/triangle/.meta/template.j2 | 4 ++-- exercises/practice/two-bucket/.meta/template.j2 | 4 ++-- exercises/practice/word-count/.meta/template.j2 | 4 ++-- exercises/practice/wordy/.meta/template.j2 | 4 ++-- exercises/practice/yacht/.meta/template.j2 | 4 ++-- 79 files changed, 158 insertions(+), 158 deletions(-) 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/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 < Date: Fri, 14 Aug 2026 09:11:25 -0700 Subject: [PATCH 2/2] Add changes for alphametics --- exercises/practice/alphametics/.meta/template.j2 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 %}