|
1 | 1 | package repository
|
2 | 2 |
|
3 | 3 | import (
|
| 4 | + "testing" |
| 5 | + |
4 | 6 | "github.com/go-git/go-git/v5/plumbing"
|
5 | 7 | "github.com/nlewo/comin/internal/types"
|
6 | 8 | "github.com/stretchr/testify/assert"
|
7 |
| - "testing" |
8 | 9 | )
|
9 | 10 |
|
10 | 11 | func TestNew(t *testing.T) {
|
@@ -272,16 +273,15 @@ func TestMultipleRemote(t *testing.T) {
|
272 | 273 | assert.Equal(t, "main", r.RepositoryStatus.SelectedBranchName)
|
273 | 274 | assert.Equal(t, "r2", r.RepositoryStatus.SelectedRemoteName)
|
274 | 275 |
|
275 |
| - // r1/main: c1 - c2 - c3 - c4 - c5 |
276 |
| - // r2/main: c1 - c2 - c3 - c4 - *c5 |
277 |
| - // FIXME: maybe it could be better to switch to the first remote, ie r1/main |
| 276 | + // r1/main: c1 - c2 - c3 - c4 - *c5 |
| 277 | + // r2/main: c1 - c2 - c3 - c4 - c5 |
278 | 278 | newCommitId, err = commitFile(r1, r1Dir, "main", "file-5")
|
279 | 279 | assert.Nil(t, err)
|
280 | 280 | _ = r.Fetch("")
|
281 | 281 | _ = r.Update()
|
282 | 282 | assert.Equal(t, newCommitId, r.RepositoryStatus.SelectedCommitId)
|
283 | 283 | assert.Equal(t, "main", r.RepositoryStatus.SelectedBranchName)
|
284 |
| - assert.Equal(t, "r2", r.RepositoryStatus.SelectedRemoteName) |
| 284 | + assert.Equal(t, "r1", r.RepositoryStatus.SelectedRemoteName) |
285 | 285 |
|
286 | 286 | // r1/main: c1 - c2 - c3 - c4 - c5 - c6
|
287 | 287 | // r2/main: c1 - c2 - c3 - c4 - c5 - c6
|
@@ -413,9 +413,9 @@ func TestTestingSwitch(t *testing.T) {
|
413 | 413 | // r2/testing: c1 - c2 - c3 - *c4
|
414 | 414 | _ = r.Fetch("")
|
415 | 415 | _ = r.Update()
|
416 |
| - assert.Equal(t, c4, r.RepositoryStatus.SelectedCommitId) |
417 | 416 | assert.Equal(t, "testing", r.RepositoryStatus.SelectedBranchName)
|
418 | 417 | assert.Equal(t, "r2", r.RepositoryStatus.SelectedRemoteName)
|
| 418 | + assert.Equal(t, c4, r.RepositoryStatus.SelectedCommitId) |
419 | 419 |
|
420 | 420 | // r1/main: c1 - c2 - c3
|
421 | 421 | // r1/testing: c1 - c2 - c3
|
@@ -647,3 +647,63 @@ func TestRepositoryUpdateTesting(t *testing.T) {
|
647 | 647 | assert.Equal(t, "main", r.RepositoryStatus.SelectedBranchName)
|
648 | 648 | assert.Equal(t, "origin", r.RepositoryStatus.SelectedRemoteName)
|
649 | 649 | }
|
| 650 | + |
| 651 | +func TestTestingHardReset(t *testing.T) { |
| 652 | + var err error |
| 653 | + r1Dir := t.TempDir() |
| 654 | + cominRepositoryDir := t.TempDir() |
| 655 | + r1, err := initRemoteRepostiory(r1Dir, true) |
| 656 | + cMain := HeadCommitId(r1) |
| 657 | + gitConfig := types.GitConfig{ |
| 658 | + Path: cominRepositoryDir, |
| 659 | + Remotes: []types.Remote{ |
| 660 | + { |
| 661 | + Name: "r1", |
| 662 | + URL: r1Dir, |
| 663 | + Branches: types.Branches{ |
| 664 | + Main: types.Branch{ |
| 665 | + Name: "main", |
| 666 | + }, |
| 667 | + Testing: types.Branch{ |
| 668 | + Name: "testing", |
| 669 | + }, |
| 670 | + }, |
| 671 | + Timeout: 30, |
| 672 | + }, |
| 673 | + }, |
| 674 | + } |
| 675 | + r, err := New(gitConfig, RepositoryStatus{}) |
| 676 | + assert.Nil(t, err) |
| 677 | + // r1/main: c1 - c2 - *c3 |
| 678 | + // r1/testing: c1 - c2 - c3 |
| 679 | + err = r.Fetch("") |
| 680 | + assert.Nil(t, err) |
| 681 | + err = r.Update() |
| 682 | + assert.Nil(t, err) |
| 683 | + assert.Equal(t, cMain, r.RepositoryStatus.SelectedCommitId) |
| 684 | + assert.Equal(t, "main", r.RepositoryStatus.SelectedBranchName) |
| 685 | + assert.Equal(t, "r1", r.RepositoryStatus.SelectedRemoteName) |
| 686 | + |
| 687 | + // r1/main: c1 - c2 - c3 |
| 688 | + // r1/testing: c1 - c2 - c3 - *c4 |
| 689 | + c4, err := commitFile(r1, r1Dir, "testing", "file-4") |
| 690 | + err = r.Fetch("") |
| 691 | + assert.Nil(t, err) |
| 692 | + err = r.Update() |
| 693 | + assert.Nil(t, err) |
| 694 | + assert.Equal(t, c4, r.RepositoryStatus.SelectedCommitId) |
| 695 | + assert.Equal(t, "testing", r.RepositoryStatus.SelectedBranchName) |
| 696 | + assert.Equal(t, "r1", r.RepositoryStatus.SelectedRemoteName) |
| 697 | + |
| 698 | + // r1/main: c1 - c2 - *c3 |
| 699 | + // r1/testing: c1 - c2 - c3 |
| 700 | + ref := plumbing.NewHashReference("refs/heads/testing", plumbing.NewHash(cMain)) |
| 701 | + r1.Storer.SetReference(ref) |
| 702 | + err = r.Fetch("") |
| 703 | + assert.Nil(t, err) |
| 704 | + err = r.Update() |
| 705 | + assert.Nil(t, err) |
| 706 | + assert.Equal(t, cMain, r.RepositoryStatus.SelectedCommitId) |
| 707 | + assert.Equal(t, "main", r.RepositoryStatus.SelectedBranchName) |
| 708 | + assert.Equal(t, "r1", r.RepositoryStatus.SelectedRemoteName) |
| 709 | +} |
0 commit comments