detached e97d131

test(cef): cover eager transcode seam

commit
e97d1315edd606ce4e61303baea27ce1c6e96c8d
author
brice · · 2026-04-11 13:21 UTC
parent
a8274e6
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
3 files · +15 -2
M internal/infrastructure/cef/engine_init.go +1 -1
@@ -71,7 +71,7 @@ func NewEngine(
7171 }
7272 os.Args = savedArgs
7373
74- return wireEngine(ctx, eng, cfg, transcodingCfg, windowlessFrameRate, audioFactory, logger, deps.MediaClassifier.normalize(), deps.CurrentConfigPayload, deps.DefaultConfigPayload)
74+ return wireEngine(ctx, eng, cfg, transcodingCfg, windowlessFrameRate, audioFactory, logger, deps.MediaClassifier, deps.CurrentConfigPayload, deps.DefaultConfigPayload)
7575 }
7676
7777 func resolvedStateRoot(opts port.EngineOptions) string {
@@ -71,7 +71,7 @@ func NewEngine(
71 }71 }
72 os.Args = savedArgs72 os.Args = savedArgs
73 73
74- return wireEngine(ctx, eng, cfg, transcodingCfg, windowlessFrameRate, audioFactory, logger, deps.MediaClassifier.normalize(), deps.CurrentConfigPayload, deps.DefaultConfigPayload)74+ return wireEngine(ctx, eng, cfg, transcodingCfg, windowlessFrameRate, audioFactory, logger, deps.MediaClassifier, deps.CurrentConfigPayload, deps.DefaultConfigPayload)
75 }75 }
76 76
77 func resolvedStateRoot(opts port.EngineOptions) string {77 func resolvedStateRoot(opts port.EngineOptions) string {
M internal/infrastructure/cef/transcoding_handler.go +1 -1
@@ -200,7 +200,7 @@ func newTranscodingRequestHandler(
200200 ) purecef.ResourceRequestHandler {
201201 return purecef.NewResourceRequestHandler(&transcodingRequestHandler{
202202 transcoder: tc,
203- classifier: classifier.normalize(),
203+ classifier: classifier,
204204 ctxf: ctxf,
205205 })
206206 }
@@ -200,7 +200,7 @@ func newTranscodingRequestHandler(
200 ) purecef.ResourceRequestHandler {200 ) purecef.ResourceRequestHandler {
201 return purecef.NewResourceRequestHandler(&transcodingRequestHandler{201 return purecef.NewResourceRequestHandler(&transcodingRequestHandler{
202 transcoder: tc,202 transcoder: tc,
203- classifier: classifier.normalize(),203+ classifier: classifier,
204 ctxf: ctxf,204 ctxf: ctxf,
205 })205 })
206 }206 }
M internal/infrastructure/cef/transcoding_handler_test.go +13 -0
@@ -34,3 +34,16 @@ func TestResolveTranscodeSource_UsesInjectedClassifier(t *testing.T) {
3434 require.Equal(t, "https://example.com", referer)
3535 require.Equal(t, "https://example.com", origin)
3636 }
37+
38+func TestResolveTranscodeSource_UsesEagerFallback(t *testing.T) {
39+ classifier := MediaClassifier{
40+ ParseSyntheticTranscodeURL: func(string) (string, string, string, bool) { return "", "", "", false },
41+ IsEagerTranscodeURL: func(string) bool { return true },
42+ }.normalize()
43+
44+ src, referer, origin, eager := resolveTranscodeSource(classifier, "https://cdn.example/video.mp4")
45+ require.True(t, eager)
46+ require.Equal(t, "https://cdn.example/video.mp4", src)
47+ require.Empty(t, referer)
48+ require.Empty(t, origin)
49+}
@@ -34,3 +34,16 @@ func TestResolveTranscodeSource_UsesInjectedClassifier(t *testing.T) {
34 require.Equal(t, "https://example.com", referer)34 require.Equal(t, "https://example.com", referer)
35 require.Equal(t, "https://example.com", origin)35 require.Equal(t, "https://example.com", origin)
36 }36 }
37+
38+func TestResolveTranscodeSource_UsesEagerFallback(t *testing.T) {
39+ classifier := MediaClassifier{
40+ ParseSyntheticTranscodeURL: func(string) (string, string, string, bool) { return "", "", "", false },
41+ IsEagerTranscodeURL: func(string) bool { return true },
42+ }.normalize()
43+
44+ src, referer, origin, eager := resolveTranscodeSource(classifier, "https://cdn.example/video.mp4")
45+ require.True(t, eager)
46+ require.Equal(t, "https://cdn.example/video.mp4", src)
47+ require.Empty(t, referer)
48+ require.Empty(t, origin)
49+}

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 8

Tags 42

↑↓ moveenter openesc close