Deteksi aplikasi terminal (CLI/TUI) + perbaikan shortcut lazydocker
- internal/shortcut/terminal.go: RunsInTerminal() menebak dari library dinamis
(tanpa lib GUI = aplikasi terminal); script selalu true, .exe wine false
- checkbox 'Run in a terminal window' kini muncul untuk semua executable, bukan
hanya script, dan terisi otomatis saat berkas dipilih
- dialog edit: kalau entri lama belum menyalakan Terminal padahal aplikasinya
CLI/TUI, muncul catatan kecil sebagai petunjuk
- tes: script/.exe/binary CLI (test binary)/binary GUI (helium)/lazydocker nyata
- kasus nyata: lazydocker & docker-dash terpasang Terminal=false -> TUI gagal
('open /dev/tty: no such device or address'); dengan Terminal=true TUI jalan
This commit is contained in:
1 parent
35e83dba09
commit
63869e9158
7 files changed
+180
-18
No files matched your search
@@ -299,3 +299,49 @@ func TestScriptWrapperPrefersOriginalFile(t *testing.T) {
|
||||
t.Errorf("wrapper tidak menyiapkan PATH:\n%s", text)
|
||||
}
|
||||
}
|
||||
|
||||
func TestInstallCLIAppGetsTerminalEntry(t *testing.T) {
|
||||
testEnv(t)
|
||||
// pakai binary tes ini sendiri: ELF asli tanpa library GUI
|
||||
self, err := os.Executable()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
src := self
|
||||
|
||||
// binary tanpa library GUI -> dianggap aplikasi terminal
|
||||
terminal := RunsInTerminal(src)
|
||||
if !terminal {
|
||||
t.Fatal("binary CLI harus terdeteksi butuh terminal")
|
||||
}
|
||||
|
||||
sc, err := InstallExecutable(ExecOptions{BinaryPath: src, Name: "TUI Tool", Menu: true, Terminal: terminal})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
content, err := os.ReadFile(sc.DesktopPath)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !strings.Contains(string(content), "Terminal=true\n") {
|
||||
t.Errorf("aplikasi CLI harus Terminal=true:\n%s", content)
|
||||
}
|
||||
}
|
||||
|
||||
func TestInstallGUIAppKeepsTerminalFalse(t *testing.T) {
|
||||
home := testEnv(t)
|
||||
src := fakeBinary(t, home, "gui-tool")
|
||||
|
||||
// simulasi aplikasi GUI: tidak butuh terminal
|
||||
sc, err := InstallExecutable(ExecOptions{BinaryPath: src, Name: "GUI Tool", Menu: true, Terminal: false})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
content, err := os.ReadFile(sc.DesktopPath)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !strings.Contains(string(content), "Terminal=false\n") {
|
||||
t.Errorf("aplikasi GUI tidak boleh membuka terminal:\n%s", content)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user