Thread (183 messages) 183 messages, 9 authors, 2022-06-11

Re: [PATCH v4 5/5] unpack-objects: unpack_non_delta_entry() read data in a stream

From: Han Xin <hidden>
Date: 2021-12-07 06:17:54

On Fri, Dec 3, 2021 at 9:59 PM Ævar Arnfjörð Bjarmason [off-list ref] wrote:

On Fri, Dec 03 2021, Han Xin wrote:
quoted
diff --git a/t/t5590-unpack-non-delta-objects.sh b/t/t5590-unpack-non-delta-objects.sh
new file mode 100755
index 0000000000..01d950d119
--- /dev/null
+++ b/t/t5590-unpack-non-delta-objects.sh
@@ -0,0 +1,76 @@
+#!/bin/sh
+#
+# Copyright (c) 2021 Han Xin
+#
+
+test_description='Test unpack-objects when receive pack'
+
+GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
+export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+
+. ./test-lib.sh
+
+test_expect_success "create commit with big blobs (1.5 MB)" '
+     test-tool genrandom foo 1500000 >big-blob &&
+     test_commit --append foo big-blob &&
+     test-tool genrandom bar 1500000 >big-blob &&
+     test_commit --append bar big-blob &&
+     (
+             cd .git &&
+             find objects/?? -type f | sort
...are thse...
quoted
+     ) >expect &&
+     PACK=$(echo main | git pack-objects --progress --revs test)
Is --progress needed?
"--progress" is not necessary.
quoted
+'
+
+test_expect_success 'setup GIT_ALLOC_LIMIT to 1MB' '
+     GIT_ALLOC_LIMIT=1m &&
+     export GIT_ALLOC_LIMIT
+'
+
+test_expect_success 'prepare dest repository' '
+     git init --bare dest.git &&
+     git -C dest.git config core.bigFileThreshold 2m &&
+     git -C dest.git config receive.unpacklimit 100
I think it would be better to just (could roll this into a function):

        test_when_finished "rm -rf dest.git" &&
        git init dest.git &&
        git -C dest.git config ...

Then you can use it with e.g. --run=3-4 and not have it error out
because of skipped setup.

A lot of our tests fail like that, but in this case fixing it seems
trivial.
OK, I will take it.
quoted
+'
+
+test_expect_success 'fail to unpack-objects: cannot allocate' '
+     test_must_fail git -C dest.git unpack-objects <test-$PACK.pack 2>err &&
+     test_i18ngrep "fatal: attempting to allocate" err &&
nit: just "grep", not "test_i18ngrep"
quoted
+     (
+             cd dest.git &&
+             find objects/?? -type f | sort
..."find" needed over just globbing?:

    obj=$(echo objects/*/*)

?
I tried to use "echo" instead of "find". It works well on my personal
computer, but fails due to the "info/commit-graph" generated when CI on
Github.
So it seems that ".git/objects/??" will be more rigorous?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help