From 4f5af88e8e0e83e478c35f98aef322f15f15717d Mon Sep 17 00:00:00 2001 From: Igor Susic Date: Tue, 5 May 2026 20:03:57 +0200 Subject: [PATCH] fix: Binary naming for harness --- internal/update/extract_test.go | 22 +++++++++++----------- internal/update/github_client.go | 2 +- internal/update/harness.go | 2 +- internal/update/harness_test.go | 10 +++++----- internal/update/workflow_test.go | 4 ++-- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/internal/update/extract_test.go b/internal/update/extract_test.go index 64f14ba..adb0086 100644 --- a/internal/update/extract_test.go +++ b/internal/update/extract_test.go @@ -17,18 +17,18 @@ func TestExtractStructuredArchive_SplitsBinAndData(t *testing.T) { archive := createArchive(t, []archiveFile{ {Name: "bin", IsDir: true}, - {Name: "bin/kimchi-code", Content: binaryContent, Mode: 0755}, + {Name: "bin/kimchi", Content: binaryContent, Mode: 0755}, {Name: "share/kimchi", IsDir: true}, {Name: "share/kimchi/package.json", Content: packageJSON}, {Name: "share/kimchi/theme", IsDir: true}, {Name: "share/kimchi/theme/dark.json", Content: themeContent}, }) - root, err := extractStructuredArchive(bytes.NewReader(archive), "kimchi-code") + root, err := extractStructuredArchive(bytes.NewReader(archive), "kimchi") require.NoError(t, err) defer func() { _ = os.RemoveAll(root) }() - gotBinary, err := os.ReadFile(filepath.Join(root, "bin", "kimchi-code")) + gotBinary, err := os.ReadFile(filepath.Join(root, "bin", "kimchi")) require.NoError(t, err) assert.Equal(t, binaryContent, gotBinary) @@ -46,39 +46,39 @@ func TestExtractStructuredArchive_MissingBinary(t *testing.T) { {Name: "share/kimchi/package.json", Content: []byte(`{}`)}, }) - _, err := extractStructuredArchive(bytes.NewReader(archive), "kimchi-code") + _, err := extractStructuredArchive(bytes.NewReader(archive), "kimchi") require.Error(t, err) - assert.ErrorContains(t, err, "kimchi-code") + assert.ErrorContains(t, err, "kimchi") assert.ErrorContains(t, err, "not found") } func TestExtractStructuredArchive_PreservesFilePermissions(t *testing.T) { archive := createArchive(t, []archiveFile{ - {Name: "bin/kimchi-code", Content: []byte("binary"), Mode: 0755}, + {Name: "bin/kimchi", Content: []byte("binary"), Mode: 0755}, {Name: "share/kimchi/package.json", Content: []byte(`{}`)}, }) - root, err := extractStructuredArchive(bytes.NewReader(archive), "kimchi-code") + root, err := extractStructuredArchive(bytes.NewReader(archive), "kimchi") require.NoError(t, err) defer func() { _ = os.RemoveAll(root) }() - info, err := os.Stat(filepath.Join(root, "bin", "kimchi-code")) + info, err := os.Stat(filepath.Join(root, "bin", "kimchi")) require.NoError(t, err) assert.Equal(t, os.FileMode(0755), info.Mode().Perm()) } func TestExtractStructuredArchive_SkipsDirectoryTraversal(t *testing.T) { archive := createArchive(t, []archiveFile{ - {Name: "bin/kimchi-code", Content: []byte("binary"), Mode: 0755}, + {Name: "bin/kimchi", Content: []byte("binary"), Mode: 0755}, {Name: "share/kimchi/package.json", Content: []byte(`{}`)}, {Name: "../etc/passwd", Content: []byte("malicious")}, }) - root, err := extractStructuredArchive(bytes.NewReader(archive), "kimchi-code") + root, err := extractStructuredArchive(bytes.NewReader(archive), "kimchi") require.NoError(t, err) defer func() { _ = os.RemoveAll(root) }() - assert.FileExists(t, filepath.Join(root, "bin", "kimchi-code")) + assert.FileExists(t, filepath.Join(root, "bin", "kimchi")) assert.FileExists(t, filepath.Join(root, "share", "kimchi", "package.json")) assert.NoFileExists(t, filepath.Join(root, "..", "etc", "passwd")) } diff --git a/internal/update/github_client.go b/internal/update/github_client.go index ab4b9fb..0143886 100644 --- a/internal/update/github_client.go +++ b/internal/update/github_client.go @@ -27,7 +27,7 @@ type Repo struct { var ( kimchiRepo = Repo{Owner: "castai", Name: "kimchi", Binary: "kimchi"} - kimchiDevRepo = Repo{Owner: "castai", Name: "kimchi-dev", Binary: "kimchi-code"} + kimchiDevRepo = Repo{Owner: "castai", Name: "kimchi-dev", Binary: "kimchi"} ) type ReleaseInfo struct { diff --git a/internal/update/harness.go b/internal/update/harness.go index 628360b..f8a2715 100644 --- a/internal/update/harness.go +++ b/internal/update/harness.go @@ -85,7 +85,7 @@ func HarnessPathInDir(dir string) string { // ResolveHarnessPath derives the harness binary path from the kimchi executable's // resolved directory. For example, if kimchi is at /usr/local/bin/kimchi, this -// returns /usr/local/bin/kimchi-code. +// returns /usr/local/bin/kimchi. func ResolveHarnessPath() (string, error) { execPath, err := ResolveExecutablePath() if err != nil { diff --git a/internal/update/harness_test.go b/internal/update/harness_test.go index f5fa28a..5bea21c 100644 --- a/internal/update/harness_test.go +++ b/internal/update/harness_test.go @@ -11,19 +11,19 @@ import ( func TestHarnessPathInDir(t *testing.T) { got := HarnessPathInDir("/usr/local/bin") - assert.Equal(t, "/usr/local/bin/kimchi-code", got) + assert.Equal(t, "/usr/local/bin/kimchi", got) } func Test_HarnessInstalled(t *testing.T) { t.Run("exists", func(t *testing.T) { dir := t.TempDir() - path := filepath.Join(dir, "kimchi-code") + path := filepath.Join(dir, "kimchi") require.NoError(t, os.WriteFile(path, []byte("binary"), 0755)) assert.True(t, HarnessInstalled(path)) }) t.Run("missing", func(t *testing.T) { - assert.False(t, HarnessInstalled(filepath.Join(t.TempDir(), "kimchi-code"))) + assert.False(t, HarnessInstalled(filepath.Join(t.TempDir(), "kimchi"))) }) } @@ -37,7 +37,7 @@ func TestResolveHarnessPackageJSON(t *testing.T) { require.NoError(t, os.WriteFile(xdgPkg, []byte(`{"version":"2.0.0"}`), 0644)) binDir := t.TempDir() - binaryPath := filepath.Join(binDir, "kimchi-code") + binaryPath := filepath.Join(binDir, "kimchi") legacyPkg := filepath.Join(binDir, "package.json") require.NoError(t, os.WriteFile(legacyPkg, []byte(`{"version":"1.0.0"}`), 0644)) @@ -50,7 +50,7 @@ func TestResolveHarnessPackageJSON(t *testing.T) { t.Setenv("XDG_DATA_HOME", t.TempDir()) binDir := t.TempDir() - binaryPath := filepath.Join(binDir, "kimchi-code") + binaryPath := filepath.Join(binDir, "kimchi") got, err := resolveHarnessPackageJSON(binaryPath) require.NoError(t, err) diff --git a/internal/update/workflow_test.go b/internal/update/workflow_test.go index d63e131..c8b9217 100644 --- a/internal/update/workflow_test.go +++ b/internal/update/workflow_test.go @@ -420,7 +420,7 @@ func TestWorkflowRun_HarnessUpdate_PlacesSupportingFilesInDataDir(t *testing.T) t.Setenv("XDG_CACHE_HOME", t.TempDir()) newBinary := []byte("#!/bin/sh\necho v2.0.0") - packageJSON := []byte(`{"name":"kimchi-code","version":"2.0.0"}`) + packageJSON := []byte(`{"name":"kimchi","version":"2.0.0"}`) themeContent := []byte(`{"background":"#000"}`) archive := createArchive(t, []archiveFile{ @@ -485,7 +485,7 @@ func TestWorkflowRun_HarnessFreshInstall_PlacesSupportingFilesInDataDir(t *testi t.Setenv("XDG_CACHE_HOME", t.TempDir()) newBinary := []byte("#!/bin/sh\necho v1.0.0") - packageJSON := []byte(`{"name":"kimchi-code","version":"1.0.0"}`) + packageJSON := []byte(`{"name":"kimchi","version":"1.0.0"}`) themeContent := []byte(`{"background":"#000"}`) archive := createArchive(t, []archiveFile{