Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions internal/presets/linux_scan_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,37 @@ func TestRetroDECKDetection(t *testing.T) {
}
}

// RetroDECK installed in a folder of the user's choosing, as a user had it:
// ~/Games/Retrodeck/retrodeck/saves. Its systems are found there too.
func TestRetroDECKDetection_ChosenFolder(t *testing.T) {
t.Setenv("XDG_DATA_HOME", "")
t.Setenv("XDG_CONFIG_HOME", "")
home := t.TempDir()
for _, system := range []string{"ps2", "snes"} {
p := filepath.Join(home, "Games", "Retrodeck", "retrodeck", "saves", system)
if err := os.MkdirAll(p, 0o777); err != nil {
t.Fatal(err)
}
if err := os.WriteFile(filepath.Join(p, "game.srm"), []byte("x"), 0o666); err != nil {
t.Fatal(err)
}
}

sc := &Scanner{CacheFile: filepath.Join(t.TempDir(), "cache.json"), GOOS: "linux", HomeDir: home}
got := map[string]string{}
for _, d := range sc.Scan(nil) {
if strings.HasPrefix(d.ID, "retrodeck-") {
got[d.ID] = d.SavePath
}
}
for _, system := range []string{"ps2", "snes"} {
want := filepath.Join(home, "Games", "Retrodeck", "retrodeck", "saves", system)
if got["retrodeck-"+system] != want {
t.Errorf("%s: found at %q, want %q (all: %v)", system, got["retrodeck-"+system], want, got)
}
}
}

// TestPresetGlobPaths: SD-card style wildcard locations resolve through
// filepath.Glob.
func TestPresetGlobPaths(t *testing.T) {
Expand Down
8 changes: 6 additions & 2 deletions internal/presets/presets.go
Original file line number Diff line number Diff line change
Expand Up @@ -189,13 +189,17 @@ var presetDefs = []preset{
}},

// RetroDECK keeps every system's saves in one tree as well:
// retrodeck/saves/<system>, in the home folder, or on an SD card when it
// was moved there.
// retrodeck/saves/<system>. Its folder is always named retrodeck, but it
// goes wherever the user chose: the home folder by default, a folder in
// it (~/Games/Retrodeck/retrodeck, as a user had it), or an SD card.
{ID: "retrodeck", Name: "RetroDECK", Type: "emulator", IsWrapper: true,
LinuxPath: []string{
"~/retrodeck/saves",
"~/*/retrodeck/saves",
"~/*/*/retrodeck/saves",
"/run/media/*/retrodeck/saves",
"/run/media/*/*/retrodeck/saves",
"/run/media/*/*/*/retrodeck/saves",
}},

// Steam-emulator / repack wrappers (each subfolder = one game). These
Expand Down
Loading