mirror of
https://github.com/git/git.git
synced 2026-02-28 18:48:50 +00:00
t/helper: improve "genrandom" test helper
The `test-tool genrandom` test helper can be used to generate random
data, either as an infinite stream or with a specified number of bytes.
The way we handle parsing the number of bytes is lacking though:
- We don't have good error handling, so if the caller for example uses
`test-tool genrandom 200xyz` then we'll end up generating 200 bytes
of random data successfully.
- Many callers want to generate e.g. 1 kilobyte or megabyte of data,
but they have to either use unwieldy numbers like 1048576, or they
have to precompute them.
Fix both of these issues by using `git_parse_ulong()` to parse the
argument. This function has better error handling, and it knows to
handle unit suffixes.
Adapt a couple of our tests to use suffixes instead of manual
computations.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
67ad42147a
commit
26fc7b59cd
@@ -6,6 +6,7 @@
|
||||
|
||||
#include "test-tool.h"
|
||||
#include "git-compat-util.h"
|
||||
#include "parse.h"
|
||||
|
||||
int cmd__genrandom(int argc, const char **argv)
|
||||
{
|
||||
@@ -22,7 +23,9 @@ int cmd__genrandom(int argc, const char **argv)
|
||||
next = next * 11 + *c;
|
||||
} while (*c++);
|
||||
|
||||
count = (argc == 3) ? strtoul(argv[2], NULL, 0) : ULONG_MAX;
|
||||
count = ULONG_MAX;
|
||||
if (argc == 3 && !git_parse_ulong(argv[2], &count))
|
||||
return error_errno("cannot parse argument '%s'", argv[2]);
|
||||
|
||||
while (count--) {
|
||||
next = next * 1103515245 + 12345;
|
||||
|
||||
@@ -643,7 +643,7 @@ test_expect_success 'object reference via commit text search' '
|
||||
'
|
||||
|
||||
test_expect_success 'setup blobs which are likely to delta' '
|
||||
test-tool genrandom foo 10240 >foo &&
|
||||
test-tool genrandom foo 10k >foo &&
|
||||
{ cat foo && echo plus; } >foo-plus &&
|
||||
git add foo foo-plus &&
|
||||
git commit -m foo &&
|
||||
|
||||
@@ -104,9 +104,9 @@ test_expect_success 'packsize limit' '
|
||||
# mid1 and mid2 will fit within 256k limit but
|
||||
# appending mid3 will bust the limit and will
|
||||
# result in a separate packfile.
|
||||
test-tool genrandom "a" $(( 66 * 1024 )) >mid1 &&
|
||||
test-tool genrandom "b" $(( 80 * 1024 )) >mid2 &&
|
||||
test-tool genrandom "c" $(( 128 * 1024 )) >mid3 &&
|
||||
test-tool genrandom "a" 66k >mid1 &&
|
||||
test-tool genrandom "b" 80k >mid2 &&
|
||||
test-tool genrandom "c" 128k >mid3 &&
|
||||
git add mid1 mid2 mid3 &&
|
||||
|
||||
count=0 &&
|
||||
|
||||
@@ -918,7 +918,7 @@ test_expect_success 'fsck detects trailing loose garbage (large blob)' '
|
||||
test_expect_success 'fsck detects truncated loose object' '
|
||||
# make it big enough that we know we will truncate in the data
|
||||
# portion, not the header
|
||||
test-tool genrandom truncate 4096 >file &&
|
||||
test-tool genrandom truncate 4k >file &&
|
||||
blob=$(git hash-object -w file) &&
|
||||
file=$(sha1_file $blob) &&
|
||||
test_when_finished "remove_object $blob" &&
|
||||
|
||||
@@ -12,7 +12,7 @@ test_expect_success 'setup' '
|
||||
for i in a b c
|
||||
do
|
||||
echo $i >$i &&
|
||||
test-tool genrandom "$i" 32768 >>$i &&
|
||||
test-tool genrandom "$i" 32k >>$i &&
|
||||
git update-index --add $i || return 1
|
||||
done &&
|
||||
echo d >d && cat c >>d && git update-index --add d &&
|
||||
|
||||
@@ -242,7 +242,7 @@ test_bitmap_cases () {
|
||||
'
|
||||
|
||||
test_expect_success 'splitting packs does not generate bogus bitmaps' '
|
||||
test-tool genrandom foo $((1024 * 1024)) >rand &&
|
||||
test-tool genrandom foo 1m >rand &&
|
||||
git add rand &&
|
||||
git commit -m "commit with big file" &&
|
||||
git -c pack.packSizeLimit=500k repack -adb &&
|
||||
|
||||
@@ -20,7 +20,7 @@ test_expect_success 'setup: create "template" repository' '
|
||||
test_commit -C template 1 &&
|
||||
test_commit -C template 2 &&
|
||||
test_commit -C template 3 &&
|
||||
test-tool genrandom foo 10240 >template/foo &&
|
||||
test-tool genrandom foo 10k >template/foo &&
|
||||
git -C template add foo &&
|
||||
git -C template commit -m foo
|
||||
'
|
||||
@@ -376,7 +376,7 @@ test_expect_success "clone with promisor.advertise set to 'true' but don't delet
|
||||
|
||||
test_expect_success "setup for subsequent fetches" '
|
||||
# Generate new commit with large blob
|
||||
test-tool genrandom bar 10240 >template/bar &&
|
||||
test-tool genrandom bar 10k >template/bar &&
|
||||
git -C template add bar &&
|
||||
git -C template commit -m bar &&
|
||||
|
||||
|
||||
@@ -319,7 +319,7 @@ test_expect_success 'no bitmaps created if .keep files present' '
|
||||
|
||||
test_expect_success 'auto-bitmaps do not complain if unavailable' '
|
||||
test_config -C bare.git pack.packSizeLimit 1M &&
|
||||
blob=$(test-tool genrandom big $((1024*1024)) |
|
||||
blob=$(test-tool genrandom big 1m |
|
||||
git -C bare.git hash-object -w --stdin) &&
|
||||
git -C bare.git update-ref refs/tags/big $blob &&
|
||||
|
||||
@@ -495,9 +495,9 @@ test_expect_success '--filter works with --max-pack-size' '
|
||||
cd max-pack-size &&
|
||||
test_commit base &&
|
||||
# two blobs which exceed the maximum pack size
|
||||
test-tool genrandom foo 1048576 >foo &&
|
||||
test-tool genrandom foo 1m >foo &&
|
||||
git hash-object -w foo &&
|
||||
test-tool genrandom bar 1048576 >bar &&
|
||||
test-tool genrandom bar 1m >bar &&
|
||||
git hash-object -w bar &&
|
||||
git add foo bar &&
|
||||
git commit -m "adding foo and bar"
|
||||
|
||||
Reference in New Issue
Block a user