From 77c67b5b50f6d33ce10f8fec3e1ce1f86a7613a5 Mon Sep 17 00:00:00 2001 From: Isaac Good Date: Sun, 28 Jun 2026 22:07:04 -0700 Subject: [PATCH] [perfect-numbers] Add a Jinja test template --- .../practice/perfect-numbers/.meta/example.sh | 2 +- .../perfect-numbers/.meta/template.j2 | 14 +++++++++++++ .../perfect-numbers/perfect_numbers.bats | 21 +++++++------------ 3 files changed, 22 insertions(+), 15 deletions(-) create mode 100644 exercises/practice/perfect-numbers/.meta/template.j2 diff --git a/exercises/practice/perfect-numbers/.meta/example.sh b/exercises/practice/perfect-numbers/.meta/example.sh index 5597c287..03e8f271 100644 --- a/exercises/practice/perfect-numbers/.meta/example.sh +++ b/exercises/practice/perfect-numbers/.meta/example.sh @@ -29,7 +29,7 @@ aliquot_sum() { declare -i num=$1 if ((num <= 0)); then - echo "Classification is only possible for natural numbers." >&2 + echo "Classification is only possible for positive integers." >&2 exit 1 fi diff --git a/exercises/practice/perfect-numbers/.meta/template.j2 b/exercises/practice/perfect-numbers/.meta/template.j2 new file mode 100644 index 00000000..ececdb7e --- /dev/null +++ b/exercises/practice/perfect-numbers/.meta/template.j2 @@ -0,0 +1,14 @@ +{{ header }} +{% for idx, case in cases %} +@test "{{ case["description"] }}" { + {% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip + run bash {{ solution }} {{ case["input"]["number"] }} +{%- if case["expect_error"] %} + assert_failure + assert_output "{{ case["expect_error_msg"] }}" +{%- else %} + assert_success + assert_output "{{ case["expected"] }}" +{%- endif %} +} +{% endfor %} diff --git a/exercises/practice/perfect-numbers/perfect_numbers.bats b/exercises/practice/perfect-numbers/perfect_numbers.bats index 7a1089c4..be15996e 100644 --- a/exercises/practice/perfect-numbers/perfect_numbers.bats +++ b/exercises/practice/perfect-numbers/perfect_numbers.bats @@ -1,12 +1,11 @@ #!/usr/bin/env bats load bats-extra -# local version: 1.1.0.0 - -# "Perfect numbers" +# generated on 2026-06-29T05:05:58+00:00 +# local version: 2.0.0.0 @test "Smallest perfect number is classified correctly" { - #[[ $BATS_RUN_SKIPPED == "true" ]] || skip + # [[ $BATS_RUN_SKIPPED == "true" ]] || skip run bash perfect_numbers.sh 6 assert_success assert_output "perfect" @@ -26,8 +25,6 @@ load bats-extra assert_output "perfect" } -# "Abundant numbers" - @test "Smallest abundant number is classified correctly" { [[ $BATS_RUN_SKIPPED == "true" ]] || skip run bash perfect_numbers.sh 12 @@ -56,8 +53,6 @@ load bats-extra assert_output "abundant" } -# "Deficient numbers" - @test "Smallest prime deficient number is classified correctly" { [[ $BATS_RUN_SKIPPED == "true" ]] || skip run bash perfect_numbers.sh 2 @@ -93,18 +88,16 @@ load bats-extra assert_output "deficient" } -# "Invalid inputs" - -@test "Zero is rejected (not a natural number)" { +@test "Zero is rejected (as it is not a positive integer)" { [[ $BATS_RUN_SKIPPED == "true" ]] || skip run bash perfect_numbers.sh 0 assert_failure - assert_output "Classification is only possible for natural numbers." + assert_output "Classification is only possible for positive integers." } -@test "Negative integer is rejected (not a natural number)" { +@test "Negative integer is rejected (as it is not a positive integer)" { [[ $BATS_RUN_SKIPPED == "true" ]] || skip run bash perfect_numbers.sh -1 assert_failure - assert_output "Classification is only possible for natural numbers." + assert_output "Classification is only possible for positive integers." }