diff options
| author | 2026-04-02 06:23:30 +0000 | |
|---|---|---|
| committer | 2026-04-02 06:28:39 +0000 | |
| commit | a041d523de389b65b98a5373a8034041db2a8d83 (patch) | |
| tree | 7b423dc735f463be616045f2c3c2095a7737aca7 /internal/testgit/repo_pack_objects_is_thin.go | |
| parent | research: Add dynamic pack resources (diff) | |
| signature | No signature | |
*: Remove
Diffstat (limited to 'internal/testgit/repo_pack_objects_is_thin.go')
| -rw-r--r-- | internal/testgit/repo_pack_objects_is_thin.go | 77 |
1 files changed, 0 insertions, 77 deletions
diff --git a/internal/testgit/repo_pack_objects_is_thin.go b/internal/testgit/repo_pack_objects_is_thin.go deleted file mode 100644 index c37b6d27..00000000 --- a/internal/testgit/repo_pack_objects_is_thin.go +++ /dev/null @@ -1,77 +0,0 @@ -package testgit - -import ( - "os/exec" - "strings" - "testing" -) - -// PackObjectsIsThin reports whether git emits one thin pack for the given revs. -// -// It streams `git pack-objects --stdout --revs --thin` into `git index-pack -// --stdin` in one scratch bare repository. A failure in index-pack due to -// unresolved deltas is treated as confirmation that the emitted pack is thin. -func (testRepo *TestRepo) PackObjectsIsThin(tb testing.TB, revs []string) bool { - tb.Helper() - - scratch := NewRepo(tb, RepoOptions{ObjectFormat: testRepo.algo, Bare: true}) - - packArgs := []string{"pack-objects", "--stdout", "--revs", "--thin"} - //nolint:noctx - packCmd := exec.Command("git", packArgs...) //#nosec G204 - packCmd.Dir = testRepo.dir - packCmd.Env = testRepo.env - packCmd.Stdin = strings.NewReader(strings.Join(revs, "\n") + "\n") - packStderr := &strings.Builder{} - packCmd.Stderr = packStderr - - packStdout, err := packCmd.StdoutPipe() - if err != nil { - tb.Fatalf("git %v stdout pipe: %v", packArgs, err) - } - - indexArgs := []string{"index-pack", "--stdin"} - //nolint:noctx - indexCmd := exec.Command("git", indexArgs...) //#nosec G204 - indexCmd.Dir = scratch.dir - indexCmd.Env = scratch.env - indexCmd.Stdin = packStdout - indexStderr := &strings.Builder{} - indexCmd.Stderr = indexStderr - - err = indexCmd.Start() - if err != nil { - tb.Fatalf("git %v start failed: %v", indexArgs, err) - } - - err = packCmd.Start() - if err != nil { - _ = indexCmd.Process.Kill() - _ = indexCmd.Wait() - - tb.Fatalf("git %v start failed: %v", packArgs, err) - } - - packErr := packCmd.Wait() - if packErr != nil { - tb.Fatalf("git %v failed: %v\n%s", packArgs, packErr, packStderr.String()) - } - - indexErr := indexCmd.Wait() - if indexErr == nil { - return false - } - - stderr := strings.ToLower(indexStderr.String()) - if strings.Contains(stderr, "unresolved") && strings.Contains(stderr, "delta") { - return true - } - - if strings.Contains(stderr, "missing") && strings.Contains(stderr, "base") { - return true - } - - tb.Fatalf("git %v failed unexpectedly: %v\n%s", indexArgs, indexErr, indexStderr.String()) - - return false -} |
