diff options
| author | Paul Buetow <paul@buetow.org> | 2026-02-22 13:53:59 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-02-22 13:53:59 +0200 |
| commit | 37665bec9014a69e82e2c19e59fc40ce06feea77 (patch) | |
| tree | 9c7e7c6f1c0c6deed94ee9db1a36f1020cafe815 /internal/showcase/showcase_test.go | |
| parent | ebc50a6600fcf4ebc53df4846f790bb05757b3df (diff) | |
fix(showcase): exclude backup-suffixed repositories
Diffstat (limited to 'internal/showcase/showcase_test.go')
| -rw-r--r-- | internal/showcase/showcase_test.go | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/internal/showcase/showcase_test.go b/internal/showcase/showcase_test.go new file mode 100644 index 0000000..284a6bc --- /dev/null +++ b/internal/showcase/showcase_test.go @@ -0,0 +1,100 @@ +package showcase + +import ( + "reflect" + "testing" + + "codeberg.org/snonux/gitsyncer/internal/config" +) + +func TestIsBackupRepo(t *testing.T) { + t.Parallel() + + tests := []struct { + name string + repo string + want bool + }{ + {name: "exact bak suffix", repo: "foo.bak", want: true}, + {name: "bak dot suffix", repo: "foo.bak.20260222", want: true}, + {name: "bak dot with multiple segments", repo: "foo.bak.tmp.snapshot", want: true}, + {name: "backup word", repo: "foo.backup", want: false}, + {name: "bak as prefix", repo: "bak.foo", want: false}, + } + + for _, tc := range tests { + tc := tc + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + got := isBackupRepo(tc.repo) + if got != tc.want { + t.Fatalf("isBackupRepo(%q) = %v, want %v", tc.repo, got, tc.want) + } + }) + } +} + +func TestIsExcluded_AdditiveRules(t *testing.T) { + t.Parallel() + + g := &Generator{ + config: &config.Config{ + ExcludeFromShowcase: []string{"manual-exclude"}, + }, + } + + tests := []struct { + name string + repo string + want bool + }{ + {name: "excluded by config", repo: "manual-exclude", want: true}, + {name: "excluded by backup suffix", repo: "repo.bak", want: true}, + {name: "not excluded", repo: "normal-repo", want: false}, + } + + for _, tc := range tests { + tc := tc + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + got := g.isExcluded(tc.repo) + if got != tc.want { + t.Fatalf("isExcluded(%q) = %v, want %v", tc.repo, got, tc.want) + } + }) + } +} + +func TestFilterExcludedRepos_RemovesBackupAndConfigRepos(t *testing.T) { + t.Parallel() + + g := &Generator{ + config: &config.Config{ + ExcludeFromShowcase: []string{"manual-exclude"}, + }, + } + + repos := []string{"normal", "manual-exclude", "mirror.bak", "mirror.bak.20260222", "keep"} + want := []string{"normal", "keep"} + + got := g.filterExcludedRepos(repos) + if !reflect.DeepEqual(got, want) { + t.Fatalf("filterExcludedRepos() = %#v, want %#v", got, want) + } +} + +func TestFilterExcludedRepos_EmptyConfigStillRemovesBackupRepos(t *testing.T) { + t.Parallel() + + g := &Generator{ + config: &config.Config{}, + } + + repos := []string{"normal", "archive.bak", "archive.bak.old", "keep"} + want := []string{"normal", "keep"} + + got := g.filterExcludedRepos(repos) + if !reflect.DeepEqual(got, want) { + t.Fatalf("filterExcludedRepos() = %#v, want %#v", got, want) + } +} |
