image_ref_repo_test.go RawHistoryFolder

1package domain_test
2
3import (
4	"testing"
5
6	"github.com/stretchr/testify/assert"
7
8	"github.com/bnema/gordon/internal/domain"
9)
10
11func TestImageRefRepository(t *testing.T) {
12	cases := []struct {
13		ref  string
14		want string
15	}{
16		{"registry.example.com/blog/web:1.4.2", "blog/web"},
17		{"registry.example.com/blog/web@sha256:" + testDigest202[7:], "blog/web"},
18		{"blog/web:1.4.2", "blog/web"},
19		{"localhost:5000/private/app:1", "private/app"},
20		{"127.0.0.1:12345/private@sha256:" + testDigest202[7:], "private"},
21		{"nginx:1.25", "nginx"},
22		{"", ""},
23	}
24	for _, tc := range cases {
25		t.Run(tc.ref, func(t *testing.T) {
26			assert.Equal(t, tc.want, domain.ImageRefRepository(tc.ref))
27		})
28	}
29}
30
31// TestImageRefRoots_QualifiesDigestWithRepository proves a digest root keeps
32// the repository so prune can traverse the manifest's full closure.
33func TestImageRefRoots_QualifiesDigestWithRepository(t *testing.T) {
34	digest := testDigest202
35	roots := domain.ImageRefRoots(domain.ProtectionActiveService, "registry.example.com/blog/web@"+digest, "blog@active.web")
36
37	var digestRoot *domain.ProtectionRoot
38	for i := range roots {
39		if roots[i].Ref == digest {
40			digestRoot = &roots[i]
41		}
42	}
43	if digestRoot == nil {
44		t.Fatalf("expected a digest root in %+v", roots)
45	}
46	assert.Equal(t, "blog/web", digestRoot.Repository)
47}

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 7

Tags 106

↑↓ moveenter openesc close