Tombol Run menghormati Terminal=true (gio launch) + wrapper pakai script asli
- launch lewat 'gio launch <file .desktop>' kalau tersedia: Terminal=true membuka terminal, Path= dihormati, sama seperti menu desktop (script yang butuh sudo atau input sekarang bisa jalan dari tombol Run) - wrapper script memakai berkas script asli kalau masih ada, jadi dirname $0 menunjuk folder aslinya (laporan/hasil tidak nyasar ke ~/.local/bin); salinan .real tetap jadi cadangan - tes: pemilihan perintah launch, wrapper memakai script asli + PATH
This commit is contained in:
1 parent
581cd07dba
commit
35e83dba09
7 files changed
+150
-18
No files matched your search
@@ -267,3 +267,35 @@ func TestUninstallKeepsBinaryByDefault(t *testing.T) {
|
||||
t.Errorf("binary harus tetap ada: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestScriptWrapperPrefersOriginalFile(t *testing.T) {
|
||||
home := testEnv(t)
|
||||
dir := filepath.Join(home, "proyek")
|
||||
if err := os.MkdirAll(dir, 0o755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
src := filepath.Join(dir, "bench.sh")
|
||||
if err := os.WriteFile(src, []byte("#!/bin/sh\necho asli \"$(pwd)\"\n"), 0o755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
sc, err := InstallExecutable(ExecOptions{BinaryPath: src, Name: "Bench", Menu: true})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
wrapper, err := os.ReadFile(sc.BinaryPath)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
text := string(wrapper)
|
||||
if !strings.Contains(text, shellQuote(src)) {
|
||||
t.Errorf("wrapper tidak memakai script asli:\n%s", text)
|
||||
}
|
||||
if !strings.Contains(text, shellQuote(dir)) {
|
||||
t.Errorf("wrapper tidak cd ke folder asli:\n%s", text)
|
||||
}
|
||||
if !strings.Contains(text, "PATH=\"$HOME/.local/bin:$PATH\"") {
|
||||
t.Errorf("wrapper tidak menyiapkan PATH:\n%s", text)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user