MCPcopy Create free account
hub / github.com/chainreactors/EvilProxy / setupGitRemoteRepository

Function setupGitRemoteRepository

internal/store/gitstore_test.go:348–408  ·  view source on GitHub ↗
(t *testing.T, root, defaultBranch string, branches ...testBranchSpec)

Source from the content-addressed store, hash-verified

346}
347
348func setupGitRemoteRepository(t *testing.T, root, defaultBranch string, branches ...testBranchSpec) string {
349 t.Helper()
350
351 remoteDir := filepath.Join(root, "remote.git")
352 if _, err := git.PlainInit(remoteDir, true); err != nil {
353 t.Fatalf("init bare remote: %v", err)
354 }
355
356 seedDir := filepath.Join(root, "seed")
357 seedRepo, err := git.PlainInit(seedDir, false)
358 if err != nil {
359 t.Fatalf("init seed repo: %v", err)
360 }
361 if err := seedRepo.Storer.SetReference(plumbing.NewSymbolicReference(plumbing.HEAD, plumbing.NewBranchReferenceName(defaultBranch))); err != nil {
362 t.Fatalf("set seed HEAD: %v", err)
363 }
364
365 worktree, err := seedRepo.Worktree()
366 if err != nil {
367 t.Fatalf("open seed worktree: %v", err)
368 }
369
370 defaultSpec, ok := findBranchSpec(branches, defaultBranch)
371 if !ok {
372 t.Fatalf("missing default branch spec for %q", defaultBranch)
373 }
374 commitBranchMarker(t, seedDir, worktree, defaultSpec, "seed default branch")
375
376 for _, branch := range branches {
377 if branch.name == defaultBranch {
378 continue
379 }
380 if err := worktree.Checkout(&git.CheckoutOptions{Branch: plumbing.NewBranchReferenceName(defaultBranch)}); err != nil {
381 t.Fatalf("checkout default branch %s: %v", defaultBranch, err)
382 }
383 if err := worktree.Checkout(&git.CheckoutOptions{Branch: plumbing.NewBranchReferenceName(branch.name), Create: true}); err != nil {
384 t.Fatalf("create branch %s: %v", branch.name, err)
385 }
386 commitBranchMarker(t, seedDir, worktree, branch, "seed branch "+branch.name)
387 }
388
389 if _, err := seedRepo.CreateRemote(&gitconfig.RemoteConfig{Name: "origin", URLs: []string{remoteDir}}); err != nil {
390 t.Fatalf("create origin remote: %v", err)
391 }
392 if err := seedRepo.Push(&git.PushOptions{
393 RemoteName: "origin",
394 RefSpecs: []gitconfig.RefSpec{gitconfig.RefSpec("refs/heads/*:refs/heads/*")},
395 }); err != nil {
396 t.Fatalf("push seed branches: %v", err)
397 }
398
399 remoteRepo, err := git.PlainOpen(remoteDir)
400 if err != nil {
401 t.Fatalf("open remote repo: %v", err)
402 }
403 if err := remoteRepo.Storer.SetReference(plumbing.NewSymbolicReference(plumbing.HEAD, plumbing.NewBranchReferenceName(defaultBranch))); err != nil {
404 t.Fatalf("set remote HEAD: %v", err)
405 }

Calls 3

findBranchSpecFunction · 0.85
commitBranchMarkerFunction · 0.85
PushMethod · 0.80

Tested by

no test coverage detected