t0021: refactor `generate_random_characters()` to not depend on Perl

The `generate_random_characters()` helper function generates N
random characters in the range 'a-z' and writes them into a file. The
logic currently uses Perl, but it can be adapted rather easily by:

  - Making `test-tool genrandom` generate an infinite stream.

  - Using `tr -dc` to strip all characters which aren't in the range of
    'a-z'.

  - Using `test_copy_bytes()` to copy the first N bytes.

This allows us to drop the PERL_TEST_HELPERS prerequisite.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Patrick Steinhardt 2025-04-03 07:06:08 +02:00 committed by Junio C Hamano
parent cee137b7e5
commit 88ed7b84cd
1 changed files with 3 additions and 4 deletions

View File

@ -20,8 +20,7 @@ EOF
generate_random_characters () {
LEN=$1
NAME=$2
test-tool genrandom some-seed $LEN |
perl -pe "s/./chr((ord($&) % 26) + ord('a'))/sge" >"$TEST_ROOT/$NAME"
test-tool genrandom some-seed | tr -dc 'a-z' | test_copy_bytes "$LEN" >"$TEST_ROOT/$NAME"
}

filter_git () {
@ -619,7 +618,7 @@ test_expect_success 'required process filter should be used only for "clean" ope
)
'

test_expect_success PERL_TEST_HELPERS 'required process filter should process multiple packets' '
test_expect_success 'required process filter should process multiple packets' '
test_config_global filter.protocol.process "test-tool rot13-filter --log=debug.log clean smudge" &&
test_config_global filter.protocol.required true &&

@ -684,7 +683,7 @@ test_expect_success PERL_TEST_HELPERS 'required process filter should process mu
)
'

test_expect_success PERL_TEST_HELPERS 'required process filter with clean error should fail' '
test_expect_success 'required process filter with clean error should fail' '
test_config_global filter.protocol.process "test-tool rot13-filter --log=debug.log clean smudge" &&
test_config_global filter.protocol.required true &&
rm -rf repo &&