fix lint in browser launch feature
- commit
- 60b8e9394522f033fa739465a340287b169ba8e0
- author
- brice · · 2026-04-14 16:33 UTC
- parent
- 85687b3
- signature
- GPG Verified
CD88F9E564E0102646FB6077A1A07C7C7C3E349D· arch-gpg Verified for the committer email
6 files · +42 -54
M internal/infrastructure/desktop/browser_launch_relay.go +15 -13
| @@ -20,6 +20,8 @@ const browserLaunchSocketName = "browser-launch.sock" | |||
| 20 | 20 | ||
| 21 | 21 | const browserLaunchIOTimeout = 50 * time.Millisecond | |
| 22 | 22 | ||
| 23 | + | const browserLaunchDirPerm = 0o700 | |
| 24 | + | ||
| 23 | 25 | type browserLaunchRelay struct { | |
| 24 | 26 | xdg port.XDGPaths | |
| 25 | 27 | } | |
| @@ -64,7 +66,7 @@ func (r *browserLaunchRelay) DeliverOpenFreshWindow(ctx context.Context, url str | |||
| 64 | 66 | } | |
| 65 | 67 | return false, err | |
| 66 | 68 | } | |
| 67 | - | defer conn.Close() | |
| 69 | + | defer func() { _ = conn.Close() }() | |
| 68 | 70 | ||
| 69 | 71 | if err := setBrowserLaunchConnDeadline(ctx, conn); err != nil { | |
| 70 | 72 | return false, err | |
| @@ -80,17 +82,17 @@ func (r *browserLaunchRelay) DeliverOpenFreshWindow(ctx context.Context, url str | |||
| 80 | 82 | var response browserLaunchResponse | |
| 81 | 83 | decoder := json.NewDecoder(conn) | |
| 82 | 84 | for { | |
| 83 | - | if err := decoder.Decode(&response); err != nil { | |
| 84 | - | if isBrowserLaunchReadTimeout(err) { | |
| 85 | + | if decodeErr := decoder.Decode(&response); decodeErr != nil { | |
| 86 | + | if isBrowserLaunchReadTimeout(decodeErr) { | |
| 85 | 87 | if ctxErr := ctx.Err(); ctxErr != nil { | |
| 86 | 88 | return false, ctxErr | |
| 87 | 89 | } | |
| 88 | - | if err := setBrowserLaunchConnDeadline(ctx, conn); err != nil { | |
| 89 | - | return false, err | |
| 90 | + | if deadlineErr := setBrowserLaunchConnDeadline(ctx, conn); deadlineErr != nil { | |
| 91 | + | return false, deadlineErr | |
| 90 | 92 | } | |
| 91 | 93 | continue | |
| 92 | 94 | } | |
| 93 | - | return false, err | |
| 95 | + | return false, decodeErr | |
| 94 | 96 | } | |
| 95 | 97 | break | |
| 96 | 98 | } | |
| @@ -125,11 +127,11 @@ func (r *browserLaunchRelay) Listen(ctx context.Context, opener port.BrowserWind | |||
| 125 | 127 | return nil, err | |
| 126 | 128 | } | |
| 127 | 129 | ||
| 128 | - | if err := os.MkdirAll(filepath.Dir(socketPath), 0o700); err != nil { | |
| 129 | - | return nil, fmt.Errorf("create browser launch dir: %w", err) | |
| 130 | + | if mkdirErr := os.MkdirAll(filepath.Dir(socketPath), browserLaunchDirPerm); mkdirErr != nil { | |
| 131 | + | return nil, fmt.Errorf("create browser launch dir: %w", mkdirErr) | |
| 130 | 132 | } | |
| 131 | - | if err := os.Remove(socketPath); err != nil && !os.IsNotExist(err) { | |
| 132 | - | return nil, fmt.Errorf("remove stale browser launch socket: %w", err) | |
| 133 | + | if removeErr := os.Remove(socketPath); removeErr != nil && !os.IsNotExist(removeErr) { | |
| 134 | + | return nil, fmt.Errorf("remove stale browser launch socket: %w", removeErr) | |
| 133 | 135 | } | |
| 134 | 136 | ||
| 135 | 137 | listener, err := net.ListenUnix("unix", &net.UnixAddr{Name: socketPath, Net: "unix"}) | |
| @@ -179,7 +181,7 @@ func (l *browserLaunchRelayListener) Close() error { | |||
| 179 | 181 | } | |
| 180 | 182 | ||
| 181 | 183 | func (l *browserLaunchRelayListener) serve(ctx context.Context, opener port.BrowserWindowOpener) { | |
| 182 | - | defer l.Close() | |
| 184 | + | defer func() { _ = l.Close() }() | |
| 183 | 185 | ||
| 184 | 186 | for { | |
| 185 | 187 | if err := l.listener.SetDeadline(time.Now().Add(browserLaunchIOTimeout)); err != nil { | |
| @@ -204,8 +206,8 @@ func (l *browserLaunchRelayListener) serve(ctx context.Context, opener port.Brow | |||
| 204 | 206 | } | |
| 205 | 207 | } | |
| 206 | 208 | ||
| 207 | - | func (l *browserLaunchRelayListener) handleConnection(ctx context.Context, conn *net.UnixConn, opener port.BrowserWindowOpener) { | |
| 208 | - | defer conn.Close() | |
| 209 | + | func (*browserLaunchRelayListener) handleConnection(ctx context.Context, conn *net.UnixConn, opener port.BrowserWindowOpener) { | |
| 210 | + | defer func() { _ = conn.Close() }() | |
| 209 | 211 | ||
| 210 | 212 | var request browserLaunchRequest | |
| 211 | 213 | if err := json.NewDecoder(conn).Decode(&request); err != nil { | |
| @@ -20,6 +20,8 @@ const browserLaunchSocketName = "browser-launch.sock" | |||||
| 20 | 20 | ||||
| 21 | const browserLaunchIOTimeout = 50 * time.Millisecond | 21 | const browserLaunchIOTimeout = 50 * time.Millisecond | ||
| 22 | 22 | ||||
| 23 | + | const browserLaunchDirPerm = 0o700 | |||
| 24 | + | ||||
| 23 | type browserLaunchRelay struct { | 25 | type browserLaunchRelay struct { | ||
| 24 | xdg port.XDGPaths | 26 | xdg port.XDGPaths | ||
| 25 | } | 27 | } | ||
| @@ -64,7 +66,7 @@ func (r *browserLaunchRelay) DeliverOpenFreshWindow(ctx context.Context, url str | |||||
| 64 | } | 66 | } | ||
| 65 | return false, err | 67 | return false, err | ||
| 66 | } | 68 | } | ||
| 67 | - | defer conn.Close() | 69 | + | defer func() { _ = conn.Close() }() |
| 68 | 70 | ||||
| 69 | if err := setBrowserLaunchConnDeadline(ctx, conn); err != nil { | 71 | if err := setBrowserLaunchConnDeadline(ctx, conn); err != nil { | ||
| 70 | return false, err | 72 | return false, err | ||
| @@ -80,17 +82,17 @@ func (r *browserLaunchRelay) DeliverOpenFreshWindow(ctx context.Context, url str | |||||
| 80 | var response browserLaunchResponse | 82 | var response browserLaunchResponse | ||
| 81 | decoder := json.NewDecoder(conn) | 83 | decoder := json.NewDecoder(conn) | ||
| 82 | for { | 84 | for { | ||
| 83 | - | if err := decoder.Decode(&response); err != nil { | 85 | + | if decodeErr := decoder.Decode(&response); decodeErr != nil { |
| 84 | - | if isBrowserLaunchReadTimeout(err) { | 86 | + | if isBrowserLaunchReadTimeout(decodeErr) { |
| 85 | if ctxErr := ctx.Err(); ctxErr != nil { | 87 | if ctxErr := ctx.Err(); ctxErr != nil { | ||
| 86 | return false, ctxErr | 88 | return false, ctxErr | ||
| 87 | } | 89 | } | ||
| 88 | - | if err := setBrowserLaunchConnDeadline(ctx, conn); err != nil { | 90 | + | if deadlineErr := setBrowserLaunchConnDeadline(ctx, conn); deadlineErr != nil { |
| 89 | - | return false, err | 91 | + | return false, deadlineErr |
| 90 | } | 92 | } | ||
| 91 | continue | 93 | continue | ||
| 92 | } | 94 | } | ||
| 93 | - | return false, err | 95 | + | return false, decodeErr |
| 94 | } | 96 | } | ||
| 95 | break | 97 | break | ||
| 96 | } | 98 | } | ||
| @@ -125,11 +127,11 @@ func (r *browserLaunchRelay) Listen(ctx context.Context, opener port.BrowserWind | |||||
| 125 | return nil, err | 127 | return nil, err | ||
| 126 | } | 128 | } | ||
| 127 | 129 | ||||
| 128 | - | if err := os.MkdirAll(filepath.Dir(socketPath), 0o700); err != nil { | 130 | + | if mkdirErr := os.MkdirAll(filepath.Dir(socketPath), browserLaunchDirPerm); mkdirErr != nil { |
| 129 | - | return nil, fmt.Errorf("create browser launch dir: %w", err) | 131 | + | return nil, fmt.Errorf("create browser launch dir: %w", mkdirErr) |
| 130 | } | 132 | } | ||
| 131 | - | if err := os.Remove(socketPath); err != nil && !os.IsNotExist(err) { | 133 | + | if removeErr := os.Remove(socketPath); removeErr != nil && !os.IsNotExist(removeErr) { |
| 132 | - | return nil, fmt.Errorf("remove stale browser launch socket: %w", err) | 134 | + | return nil, fmt.Errorf("remove stale browser launch socket: %w", removeErr) |
| 133 | } | 135 | } | ||
| 134 | 136 | ||||
| 135 | listener, err := net.ListenUnix("unix", &net.UnixAddr{Name: socketPath, Net: "unix"}) | 137 | listener, err := net.ListenUnix("unix", &net.UnixAddr{Name: socketPath, Net: "unix"}) | ||
| @@ -179,7 +181,7 @@ func (l *browserLaunchRelayListener) Close() error { | |||||
| 179 | } | 181 | } | ||
| 180 | 182 | ||||
| 181 | func (l *browserLaunchRelayListener) serve(ctx context.Context, opener port.BrowserWindowOpener) { | 183 | func (l *browserLaunchRelayListener) serve(ctx context.Context, opener port.BrowserWindowOpener) { | ||
| 182 | - | defer l.Close() | 184 | + | defer func() { _ = l.Close() }() |
| 183 | 185 | ||||
| 184 | for { | 186 | for { | ||
| 185 | if err := l.listener.SetDeadline(time.Now().Add(browserLaunchIOTimeout)); err != nil { | 187 | if err := l.listener.SetDeadline(time.Now().Add(browserLaunchIOTimeout)); err != nil { | ||
| @@ -204,8 +206,8 @@ func (l *browserLaunchRelayListener) serve(ctx context.Context, opener port.Brow | |||||
| 204 | } | 206 | } | ||
| 205 | } | 207 | } | ||
| 206 | 208 | ||||
| 207 | - | func (l *browserLaunchRelayListener) handleConnection(ctx context.Context, conn *net.UnixConn, opener port.BrowserWindowOpener) { | 209 | + | func (*browserLaunchRelayListener) handleConnection(ctx context.Context, conn *net.UnixConn, opener port.BrowserWindowOpener) { |
| 208 | - | defer conn.Close() | 210 | + | defer func() { _ = conn.Close() }() |
| 209 | 211 | ||||
| 210 | var request browserLaunchRequest | 212 | var request browserLaunchRequest | ||
| 211 | if err := json.NewDecoder(conn).Decode(&request); err != nil { | 213 | if err := json.NewDecoder(conn).Decode(&request); err != nil { | ||
M internal/infrastructure/desktop/browser_launch_relay_test.go +16 -16
| @@ -20,16 +20,16 @@ type testXDGPaths struct { | |||
| 20 | 20 | ||
| 21 | 21 | var _ port.XDGPaths = testXDGPaths{} | |
| 22 | 22 | ||
| 23 | - | func (x testXDGPaths) ConfigDir() (string, error) { return "", nil } | |
| 24 | - | func (x testXDGPaths) DataDir() (string, error) { return "", nil } | |
| 25 | - | func (x testXDGPaths) StateDir() (string, error) { return x.stateDir, nil } | |
| 26 | - | func (x testXDGPaths) RuntimeDir() (string, error) { return x.runtimeDir, nil } | |
| 27 | - | func (x testXDGPaths) CacheDir() (string, error) { return "", nil } | |
| 28 | - | func (x testXDGPaths) FilterJSONDir() (string, error) { return "", nil } | |
| 29 | - | func (x testXDGPaths) FilterStoreDir() (string, error) { return "", nil } | |
| 30 | - | func (x testXDGPaths) FilterCacheDir() (string, error) { return "", nil } | |
| 31 | - | func (x testXDGPaths) ManDir() (string, error) { return "", nil } | |
| 32 | - | func (x testXDGPaths) DownloadDir() (string, error) { return "", nil } | |
| 23 | + | func (testXDGPaths) ConfigDir() (string, error) { return "", nil } | |
| 24 | + | func (testXDGPaths) DataDir() (string, error) { return "", nil } | |
| 25 | + | func (x testXDGPaths) StateDir() (string, error) { return x.stateDir, nil } | |
| 26 | + | func (x testXDGPaths) RuntimeDir() (string, error) { return x.runtimeDir, nil } | |
| 27 | + | func (testXDGPaths) CacheDir() (string, error) { return "", nil } | |
| 28 | + | func (testXDGPaths) FilterJSONDir() (string, error) { return "", nil } | |
| 29 | + | func (testXDGPaths) FilterStoreDir() (string, error) { return "", nil } | |
| 30 | + | func (testXDGPaths) FilterCacheDir() (string, error) { return "", nil } | |
| 31 | + | func (testXDGPaths) ManDir() (string, error) { return "", nil } | |
| 32 | + | func (testXDGPaths) DownloadDir() (string, error) { return "", nil } | |
| 33 | 33 | ||
| 34 | 34 | type browserWindowOpenerFunc func(context.Context, string) error | |
| 35 | 35 | ||
| @@ -84,7 +84,7 @@ func TestBrowserLaunchRelay_DeliverOpenFreshWindow_RoundTrip(t *testing.T) { | |||
| 84 | 84 | ctx, cancel := context.WithCancel(context.Background()) | |
| 85 | 85 | defer cancel() | |
| 86 | 86 | ||
| 87 | - | closer, err := relay.Listen(ctx, browserWindowOpenerFunc(func(ctx context.Context, url string) error { | |
| 87 | + | closer, err := relay.Listen(ctx, browserWindowOpenerFunc(func(_ context.Context, url string) error { | |
| 88 | 88 | received <- url | |
| 89 | 89 | return nil | |
| 90 | 90 | })) | |
| @@ -114,7 +114,7 @@ func TestBrowserLaunchRelay_UsesStateFallbackWhenRuntimeDirMissing(t *testing.T) | |||
| 114 | 114 | ctx, cancel := context.WithCancel(context.Background()) | |
| 115 | 115 | defer cancel() | |
| 116 | 116 | ||
| 117 | - | closer, err := relay.Listen(ctx, browserWindowOpenerFunc(func(ctx context.Context, url string) error { | |
| 117 | + | closer, err := relay.Listen(ctx, browserWindowOpenerFunc(func(_ context.Context, url string) error { | |
| 118 | 118 | received <- url | |
| 119 | 119 | return nil | |
| 120 | 120 | })) | |
| @@ -145,7 +145,7 @@ func TestBrowserLaunchRelay_RejectsMalformedPayloads(t *testing.T) { | |||
| 145 | 145 | ctx, cancel := context.WithCancel(context.Background()) | |
| 146 | 146 | defer cancel() | |
| 147 | 147 | ||
| 148 | - | closer, err := relay.Listen(ctx, browserWindowOpenerFunc(func(ctx context.Context, url string) error { | |
| 148 | + | closer, err := relay.Listen(ctx, browserWindowOpenerFunc(func(_ context.Context, url string) error { | |
| 149 | 149 | received <- url | |
| 150 | 150 | return nil | |
| 151 | 151 | })) | |
| @@ -227,8 +227,8 @@ func TestBrowserLaunchRelay_DeliverOpenFreshWindow_RespectsResponseReadTimeout(t | |||
| 227 | 227 | ready := make(chan struct{}) | |
| 228 | 228 | go func() { | |
| 229 | 229 | close(ready) | |
| 230 | - | conn, err := listener.AcceptUnix() | |
| 231 | - | if err != nil { | |
| 230 | + | conn, acceptErr := listener.AcceptUnix() | |
| 231 | + | if acceptErr != nil { | |
| 232 | 232 | return | |
| 233 | 233 | } | |
| 234 | 234 | defer conn.Close() | |
| @@ -242,6 +242,6 @@ func TestBrowserLaunchRelay_DeliverOpenFreshWindow_RespectsResponseReadTimeout(t | |||
| 242 | 242 | ||
| 243 | 243 | delivered, err := relay.DeliverOpenFreshWindow(ctx, "https://example.com/slow") | |
| 244 | 244 | require.Error(t, err) | |
| 245 | - | assert.ErrorIs(t, err, context.DeadlineExceeded) | |
| 245 | + | require.ErrorIs(t, err, context.DeadlineExceeded) | |
| 246 | 246 | assert.False(t, delivered) | |
| 247 | 247 | } | |
| @@ -20,16 +20,16 @@ type testXDGPaths struct { | |||||
| 20 | 20 | ||||
| 21 | var _ port.XDGPaths = testXDGPaths{} | 21 | var _ port.XDGPaths = testXDGPaths{} | ||
| 22 | 22 | ||||
| 23 | - | func (x testXDGPaths) ConfigDir() (string, error) { return "", nil } | 23 | + | func (testXDGPaths) ConfigDir() (string, error) { return "", nil } |
| 24 | - | func (x testXDGPaths) DataDir() (string, error) { return "", nil } | 24 | + | func (testXDGPaths) DataDir() (string, error) { return "", nil } |
| 25 | - | func (x testXDGPaths) StateDir() (string, error) { return x.stateDir, nil } | 25 | + | func (x testXDGPaths) StateDir() (string, error) { return x.stateDir, nil } |
| 26 | - | func (x testXDGPaths) RuntimeDir() (string, error) { return x.runtimeDir, nil } | 26 | + | func (x testXDGPaths) RuntimeDir() (string, error) { return x.runtimeDir, nil } |
| 27 | - | func (x testXDGPaths) CacheDir() (string, error) { return "", nil } | 27 | + | func (testXDGPaths) CacheDir() (string, error) { return "", nil } |
| 28 | - | func (x testXDGPaths) FilterJSONDir() (string, error) { return "", nil } | 28 | + | func (testXDGPaths) FilterJSONDir() (string, error) { return "", nil } |
| 29 | - | func (x testXDGPaths) FilterStoreDir() (string, error) { return "", nil } | 29 | + | func (testXDGPaths) FilterStoreDir() (string, error) { return "", nil } |
| 30 | - | func (x testXDGPaths) FilterCacheDir() (string, error) { return "", nil } | 30 | + | func (testXDGPaths) FilterCacheDir() (string, error) { return "", nil } |
| 31 | - | func (x testXDGPaths) ManDir() (string, error) { return "", nil } | 31 | + | func (testXDGPaths) ManDir() (string, error) { return "", nil } |
| 32 | - | func (x testXDGPaths) DownloadDir() (string, error) { return "", nil } | 32 | + | func (testXDGPaths) DownloadDir() (string, error) { return "", nil } |
| 33 | 33 | ||||
| 34 | type browserWindowOpenerFunc func(context.Context, string) error | 34 | type browserWindowOpenerFunc func(context.Context, string) error | ||
| 35 | 35 | ||||
| @@ -84,7 +84,7 @@ func TestBrowserLaunchRelay_DeliverOpenFreshWindow_RoundTrip(t *testing.T) { | |||||
| 84 | ctx, cancel := context.WithCancel(context.Background()) | 84 | ctx, cancel := context.WithCancel(context.Background()) | ||
| 85 | defer cancel() | 85 | defer cancel() | ||
| 86 | 86 | ||||
| 87 | - | closer, err := relay.Listen(ctx, browserWindowOpenerFunc(func(ctx context.Context, url string) error { | 87 | + | closer, err := relay.Listen(ctx, browserWindowOpenerFunc(func(_ context.Context, url string) error { |
| 88 | received <- url | 88 | received <- url | ||
| 89 | return nil | 89 | return nil | ||
| 90 | })) | 90 | })) | ||
| @@ -114,7 +114,7 @@ func TestBrowserLaunchRelay_UsesStateFallbackWhenRuntimeDirMissing(t *testing.T) | |||||
| 114 | ctx, cancel := context.WithCancel(context.Background()) | 114 | ctx, cancel := context.WithCancel(context.Background()) | ||
| 115 | defer cancel() | 115 | defer cancel() | ||
| 116 | 116 | ||||
| 117 | - | closer, err := relay.Listen(ctx, browserWindowOpenerFunc(func(ctx context.Context, url string) error { | 117 | + | closer, err := relay.Listen(ctx, browserWindowOpenerFunc(func(_ context.Context, url string) error { |
| 118 | received <- url | 118 | received <- url | ||
| 119 | return nil | 119 | return nil | ||
| 120 | })) | 120 | })) | ||
| @@ -145,7 +145,7 @@ func TestBrowserLaunchRelay_RejectsMalformedPayloads(t *testing.T) { | |||||
| 145 | ctx, cancel := context.WithCancel(context.Background()) | 145 | ctx, cancel := context.WithCancel(context.Background()) | ||
| 146 | defer cancel() | 146 | defer cancel() | ||
| 147 | 147 | ||||
| 148 | - | closer, err := relay.Listen(ctx, browserWindowOpenerFunc(func(ctx context.Context, url string) error { | 148 | + | closer, err := relay.Listen(ctx, browserWindowOpenerFunc(func(_ context.Context, url string) error { |
| 149 | received <- url | 149 | received <- url | ||
| 150 | return nil | 150 | return nil | ||
| 151 | })) | 151 | })) | ||
| @@ -227,8 +227,8 @@ func TestBrowserLaunchRelay_DeliverOpenFreshWindow_RespectsResponseReadTimeout(t | |||||
| 227 | ready := make(chan struct{}) | 227 | ready := make(chan struct{}) | ||
| 228 | go func() { | 228 | go func() { | ||
| 229 | close(ready) | 229 | close(ready) | ||
| 230 | - | conn, err := listener.AcceptUnix() | 230 | + | conn, acceptErr := listener.AcceptUnix() |
| 231 | - | if err != nil { | 231 | + | if acceptErr != nil { |
| 232 | return | 232 | return | ||
| 233 | } | 233 | } | ||
| 234 | defer conn.Close() | 234 | defer conn.Close() | ||
| @@ -242,6 +242,6 @@ func TestBrowserLaunchRelay_DeliverOpenFreshWindow_RespectsResponseReadTimeout(t | |||||
| 242 | 242 | ||||
| 243 | delivered, err := relay.DeliverOpenFreshWindow(ctx, "https://example.com/slow") | 243 | delivered, err := relay.DeliverOpenFreshWindow(ctx, "https://example.com/slow") | ||
| 244 | require.Error(t, err) | 244 | require.Error(t, err) | ||
| 245 | - | assert.ErrorIs(t, err, context.DeadlineExceeded) | 245 | + | require.ErrorIs(t, err, context.DeadlineExceeded) |
| 246 | assert.False(t, delivered) | 246 | assert.False(t, delivered) | ||
| 247 | } | 247 | } | ||
M internal/infrastructure/desktop/browser_launcher_test.go +2 -2
| @@ -23,7 +23,7 @@ func TestBrowserLauncher_LaunchURL_ReturnsWithoutSpawningWhenRelayDelivers(t *te | |||
| 23 | 23 | t.Fatal("expected executable path resolution to be skipped") | |
| 24 | 24 | return "", nil | |
| 25 | 25 | } | |
| 26 | - | launcher.startDetachedProcess = func(cmd *exec.Cmd) error { | |
| 26 | + | launcher.startDetachedProcess = func(_ *exec.Cmd) error { | |
| 27 | 27 | spawned = true | |
| 28 | 28 | return nil | |
| 29 | 29 | } | |
| @@ -65,7 +65,7 @@ func TestBrowserLauncher_LaunchURL_ReportsRelayErrorWhenDelivered(t *testing.T) | |||
| 65 | 65 | t.Fatal("expected executable path resolution to be skipped") | |
| 66 | 66 | return "", nil | |
| 67 | 67 | } | |
| 68 | - | launcher.startDetachedProcess = func(cmd *exec.Cmd) error { | |
| 68 | + | launcher.startDetachedProcess = func(_ *exec.Cmd) error { | |
| 69 | 69 | t.Fatal("expected launch to stop after relay delivery") | |
| 70 | 70 | return nil | |
| 71 | 71 | } | |
| @@ -23,7 +23,7 @@ func TestBrowserLauncher_LaunchURL_ReturnsWithoutSpawningWhenRelayDelivers(t *te | |||||
| 23 | t.Fatal("expected executable path resolution to be skipped") | 23 | t.Fatal("expected executable path resolution to be skipped") | ||
| 24 | return "", nil | 24 | return "", nil | ||
| 25 | } | 25 | } | ||
| 26 | - | launcher.startDetachedProcess = func(cmd *exec.Cmd) error { | 26 | + | launcher.startDetachedProcess = func(_ *exec.Cmd) error { |
| 27 | spawned = true | 27 | spawned = true | ||
| 28 | return nil | 28 | return nil | ||
| 29 | } | 29 | } | ||
| @@ -65,7 +65,7 @@ func TestBrowserLauncher_LaunchURL_ReportsRelayErrorWhenDelivered(t *testing.T) | |||||
| 65 | t.Fatal("expected executable path resolution to be skipped") | 65 | t.Fatal("expected executable path resolution to be skipped") | ||
| 66 | return "", nil | 66 | return "", nil | ||
| 67 | } | 67 | } | ||
| 68 | - | launcher.startDetachedProcess = func(cmd *exec.Cmd) error { | 68 | + | launcher.startDetachedProcess = func(_ *exec.Cmd) error { |
| 69 | t.Fatal("expected launch to stop after relay delivery") | 69 | t.Fatal("expected launch to stop after relay delivery") | ||
| 70 | return nil | 70 | return nil | ||
| 71 | } | 71 | } | ||
M internal/infrastructure/xdg/adapter_test.go +1 -1
| @@ -55,7 +55,7 @@ func TestAdapter_RuntimeDir(t *testing.T) { | |||
| 55 | 55 | dir, err := adapter.RuntimeDir() | |
| 56 | 56 | ||
| 57 | 57 | require.NoError(t, err) | |
| 58 | - | assert.Equal(t, filepath.Join("/tmp/dumber-state", "dumber", "runtime"), dir) | |
| 58 | + | assert.Equal(t, "/tmp/dumber-state/dumber/runtime", dir) | |
| 59 | 59 | }) | |
| 60 | 60 | } | |
| 61 | 61 | ||
| @@ -55,7 +55,7 @@ func TestAdapter_RuntimeDir(t *testing.T) { | |||||
| 55 | dir, err := adapter.RuntimeDir() | 55 | dir, err := adapter.RuntimeDir() | ||
| 56 | 56 | ||||
| 57 | require.NoError(t, err) | 57 | require.NoError(t, err) | ||
| 58 | - | assert.Equal(t, filepath.Join("/tmp/dumber-state", "dumber", "runtime"), dir) | 58 | + | assert.Equal(t, "/tmp/dumber-state/dumber/runtime", dir) |
| 59 | }) | 59 | }) | ||
| 60 | } | 60 | } | ||
| 61 | 61 | ||||
M internal/ui/app.go +8 -8
| @@ -534,29 +534,29 @@ func (a *App) openFreshWindow(ctx context.Context, url string) error { | |||
| 534 | 534 | a.tabCreationWindow = nil | |
| 535 | 535 | }() | |
| 536 | 536 | ||
| 537 | - | tab, err := a.tabCoord.Create(ctx, url) | |
| 538 | - | if err != nil { | |
| 537 | + | createdTab, createErr := a.tabCoord.Create(ctx, url) | |
| 538 | + | if createErr != nil { | |
| 539 | 539 | a.removeBrowserWindow(created.id) | |
| 540 | 540 | if created.mainWindow != nil { | |
| 541 | 541 | created.mainWindow.Destroy() | |
| 542 | 542 | } | |
| 543 | - | return err | |
| 543 | + | return createErr | |
| 544 | 544 | } | |
| 545 | - | if a.workspaceViews[tab.ID] == nil { | |
| 545 | + | if a.workspaceViews[createdTab.ID] == nil { | |
| 546 | 546 | if a.tabs != nil { | |
| 547 | - | a.tabs.Remove(tab.ID) | |
| 547 | + | a.tabs.Remove(createdTab.ID) | |
| 548 | 548 | } | |
| 549 | 549 | if a.mainWindow != nil && a.mainWindow.TabBar() != nil { | |
| 550 | - | a.mainWindow.TabBar().RemoveTab(tab.ID) | |
| 550 | + | a.mainWindow.TabBar().RemoveTab(createdTab.ID) | |
| 551 | 551 | a.mainWindow.TabBar().SetActive(a.tabs.ActiveTabID) | |
| 552 | 552 | } | |
| 553 | 553 | a.removeBrowserWindow(created.id) | |
| 554 | 554 | if created.mainWindow != nil { | |
| 555 | 555 | created.mainWindow.Destroy() | |
| 556 | 556 | } | |
| 557 | - | return fmt.Errorf("workspace view not created for tab %s", tab.ID) | |
| 557 | + | return fmt.Errorf("workspace view not created for tab %s", createdTab.ID) | |
| 558 | 558 | } | |
| 559 | - | a.setBrowserWindowForTab(tab.ID, created) | |
| 559 | + | a.setBrowserWindowForTab(createdTab.ID, created) | |
| 560 | 560 | if created.mainWindow != nil { | |
| 561 | 561 | created.mainWindow.Show() | |
| 562 | 562 | } | |
| @@ -534,29 +534,29 @@ func (a *App) openFreshWindow(ctx context.Context, url string) error { | |||||
| 534 | a.tabCreationWindow = nil | 534 | a.tabCreationWindow = nil | ||
| 535 | }() | 535 | }() | ||
| 536 | 536 | ||||
| 537 | - | tab, err := a.tabCoord.Create(ctx, url) | 537 | + | createdTab, createErr := a.tabCoord.Create(ctx, url) |
| 538 | - | if err != nil { | 538 | + | if createErr != nil { |
| 539 | a.removeBrowserWindow(created.id) | 539 | a.removeBrowserWindow(created.id) | ||
| 540 | if created.mainWindow != nil { | 540 | if created.mainWindow != nil { | ||
| 541 | created.mainWindow.Destroy() | 541 | created.mainWindow.Destroy() | ||
| 542 | } | 542 | } | ||
| 543 | - | return err | 543 | + | return createErr |
| 544 | } | 544 | } | ||
| 545 | - | if a.workspaceViews[tab.ID] == nil { | 545 | + | if a.workspaceViews[createdTab.ID] == nil { |
| 546 | if a.tabs != nil { | 546 | if a.tabs != nil { | ||
| 547 | - | a.tabs.Remove(tab.ID) | 547 | + | a.tabs.Remove(createdTab.ID) |
| 548 | } | 548 | } | ||
| 549 | if a.mainWindow != nil && a.mainWindow.TabBar() != nil { | 549 | if a.mainWindow != nil && a.mainWindow.TabBar() != nil { | ||
| 550 | - | a.mainWindow.TabBar().RemoveTab(tab.ID) | 550 | + | a.mainWindow.TabBar().RemoveTab(createdTab.ID) |
| 551 | a.mainWindow.TabBar().SetActive(a.tabs.ActiveTabID) | 551 | a.mainWindow.TabBar().SetActive(a.tabs.ActiveTabID) | ||
| 552 | } | 552 | } | ||
| 553 | a.removeBrowserWindow(created.id) | 553 | a.removeBrowserWindow(created.id) | ||
| 554 | if created.mainWindow != nil { | 554 | if created.mainWindow != nil { | ||
| 555 | created.mainWindow.Destroy() | 555 | created.mainWindow.Destroy() | ||
| 556 | } | 556 | } | ||
| 557 | - | return fmt.Errorf("workspace view not created for tab %s", tab.ID) | 557 | + | return fmt.Errorf("workspace view not created for tab %s", createdTab.ID) |
| 558 | } | 558 | } | ||
| 559 | - | a.setBrowserWindowForTab(tab.ID, created) | 559 | + | a.setBrowserWindowForTab(createdTab.ID, created) |
| 560 | if created.mainWindow != nil { | 560 | if created.mainWindow != nil { | ||
| 561 | created.mainWindow.Show() | 561 | created.mainWindow.Show() | ||
| 562 | } | 562 | } | ||
M internal/ui/app_browser_launch_test.go +0 -14
| @@ -12,9 +12,7 @@ import ( | |||
| 12 | 12 | "github.com/bnema/dumber/internal/domain/entity" | |
| 13 | 13 | "github.com/bnema/dumber/internal/ui/component" | |
| 14 | 14 | "github.com/bnema/dumber/internal/ui/coordinator" | |
| 15 | - | "github.com/bnema/dumber/internal/ui/layout" | |
| 16 | 15 | "github.com/bnema/dumber/internal/ui/window" | |
| 17 | - | "github.com/bnema/puregotk/v4/gtk" | |
| 18 | 16 | ) | |
| 19 | 17 | ||
| 20 | 18 | type testBrowserLaunchRelay struct { | |
| @@ -93,18 +91,6 @@ func windowTabBarActiveID(t *testing.T, mw *window.MainWindow) entity.TabID { | |||
| 93 | 91 | return mw.TabBar().ActiveTabID() | |
| 94 | 92 | } | |
| 95 | 93 | ||
| 96 | - | type fakeWidgetFactory struct{} | |
| 97 | - | ||
| 98 | - | func (fakeWidgetFactory) NewPaned(layout.Orientation) layout.PanedWidget { return nil } | |
| 99 | - | func (fakeWidgetFactory) NewBox(layout.Orientation, int) layout.BoxWidget { return nil } | |
| 100 | - | func (fakeWidgetFactory) NewOverlay() layout.OverlayWidget { return nil } | |
| 101 | - | func (fakeWidgetFactory) NewLabel(string) layout.LabelWidget { return nil } | |
| 102 | - | func (fakeWidgetFactory) NewButton() layout.ButtonWidget { return nil } | |
| 103 | - | func (fakeWidgetFactory) NewImage() layout.ImageWidget { return nil } | |
| 104 | - | func (fakeWidgetFactory) NewProgressBar() layout.ProgressBarWidget { return nil } | |
| 105 | - | func (fakeWidgetFactory) NewSpinner() layout.SpinnerWidget { return nil } | |
| 106 | - | func (fakeWidgetFactory) WrapWidget(*gtk.Widget) layout.Widget { return nil } | |
| 107 | - | ||
| 108 | 94 | func TestApp_FinalizeActivationStartsBrowserLaunchRelayOnceAndClosesOnShutdown(t *testing.T) { | |
| 109 | 95 | relay := &testBrowserLaunchRelay{closer: &testCloser{}} | |
| 110 | 96 | deps := &Dependencies{} | |
| @@ -12,9 +12,7 @@ import ( | |||||
| 12 | "github.com/bnema/dumber/internal/domain/entity" | 12 | "github.com/bnema/dumber/internal/domain/entity" | ||
| 13 | "github.com/bnema/dumber/internal/ui/component" | 13 | "github.com/bnema/dumber/internal/ui/component" | ||
| 14 | "github.com/bnema/dumber/internal/ui/coordinator" | 14 | "github.com/bnema/dumber/internal/ui/coordinator" | ||
| 15 | - | "github.com/bnema/dumber/internal/ui/layout" | |||
| 16 | "github.com/bnema/dumber/internal/ui/window" | 15 | "github.com/bnema/dumber/internal/ui/window" | ||
| 17 | - | "github.com/bnema/puregotk/v4/gtk" | |||
| 18 | ) | 16 | ) | ||
| 19 | 17 | ||||
| 20 | type testBrowserLaunchRelay struct { | 18 | type testBrowserLaunchRelay struct { | ||
| @@ -93,18 +91,6 @@ func windowTabBarActiveID(t *testing.T, mw *window.MainWindow) entity.TabID { | |||||
| 93 | return mw.TabBar().ActiveTabID() | 91 | return mw.TabBar().ActiveTabID() | ||
| 94 | } | 92 | } | ||
| 95 | 93 | ||||
| 96 | - | type fakeWidgetFactory struct{} | |||
| 97 | - | ||||
| 98 | - | func (fakeWidgetFactory) NewPaned(layout.Orientation) layout.PanedWidget { return nil } | |||
| 99 | - | func (fakeWidgetFactory) NewBox(layout.Orientation, int) layout.BoxWidget { return nil } | |||
| 100 | - | func (fakeWidgetFactory) NewOverlay() layout.OverlayWidget { return nil } | |||
| 101 | - | func (fakeWidgetFactory) NewLabel(string) layout.LabelWidget { return nil } | |||
| 102 | - | func (fakeWidgetFactory) NewButton() layout.ButtonWidget { return nil } | |||
| 103 | - | func (fakeWidgetFactory) NewImage() layout.ImageWidget { return nil } | |||
| 104 | - | func (fakeWidgetFactory) NewProgressBar() layout.ProgressBarWidget { return nil } | |||
| 105 | - | func (fakeWidgetFactory) NewSpinner() layout.SpinnerWidget { return nil } | |||
| 106 | - | func (fakeWidgetFactory) WrapWidget(*gtk.Widget) layout.Widget { return nil } | |||
| 107 | - | ||||
| 108 | func TestApp_FinalizeActivationStartsBrowserLaunchRelayOnceAndClosesOnShutdown(t *testing.T) { | 94 | func TestApp_FinalizeActivationStartsBrowserLaunchRelayOnceAndClosesOnShutdown(t *testing.T) { | ||
| 109 | relay := &testBrowserLaunchRelay{closer: &testCloser{}} | 95 | relay := &testBrowserLaunchRelay{closer: &testCloser{}} | ||
| 110 | deps := &Dependencies{} | 96 | deps := &Dependencies{} | ||