Extract Files seam, WebDAV, and Visit from CheckDNS.
Publish go-nc-files v1 with local/WebDAV Root, DefaultPathStore, and neutral Working Folder language; depends on go-nc-exapp v0.1.0. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+137
@@ -0,0 +1,137 @@
|
||||
package goncfiles_test
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"gitea.neitzel.de/konrad/go-nc-files"
|
||||
)
|
||||
|
||||
const testInitialFolder = "myapp"
|
||||
|
||||
func TestAppIconLaunchCreatesInitialFolder(t *testing.T) {
|
||||
t.Parallel()
|
||||
root := t.TempDir()
|
||||
settings := filepath.Join(t.TempDir(), "settings.json")
|
||||
|
||||
visit, err := goncfiles.OpenLocal(root, settings, testInitialFolder, "")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if visit.SavedDefault != testInitialFolder {
|
||||
t.Fatalf("saved: %s", visit.SavedDefault)
|
||||
}
|
||||
info, err := os.Stat(filepath.Join(root, testInitialFolder))
|
||||
if err != nil || !info.IsDir() {
|
||||
t.Fatalf("initial folder: %v", err)
|
||||
}
|
||||
if visit.WorkingDir() != filepath.Join(root, testInitialFolder) {
|
||||
t.Fatalf("working: %s", visit.WorkingDir())
|
||||
}
|
||||
}
|
||||
|
||||
func TestSetDefaultPersistsAndDoesNotNeedVisitFolder(t *testing.T) {
|
||||
t.Parallel()
|
||||
root := t.TempDir()
|
||||
settings := filepath.Join(t.TempDir(), "settings.json")
|
||||
if err := os.Mkdir(filepath.Join(root, "Zones"), 0o755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
visit, err := goncfiles.OpenLocal(root, settings, testInitialFolder, "")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := visit.SetDefault("Zones"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
again, err := goncfiles.OpenLocal(root, settings, testInitialFolder, "")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if again.SavedDefault != "Zones" {
|
||||
t.Fatalf("saved: %s", again.SavedDefault)
|
||||
}
|
||||
if again.WorkingDir() != filepath.Join(root, "Zones") {
|
||||
t.Fatalf("working: %s", again.WorkingDir())
|
||||
}
|
||||
}
|
||||
|
||||
func TestFilesViewLaunchDoesNotChangeSavedDefault(t *testing.T) {
|
||||
t.Parallel()
|
||||
root := t.TempDir()
|
||||
settings := filepath.Join(t.TempDir(), "settings.json")
|
||||
share := filepath.Join(root, "Shared", "TeamDNS")
|
||||
if err := os.MkdirAll(share, 0o755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
visit, err := goncfiles.OpenLocal(root, settings, testInitialFolder, "Shared/TeamDNS")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if visit.SavedDefault != testInitialFolder {
|
||||
t.Fatalf("saved default must stay %s, got %s", testInitialFolder, visit.SavedDefault)
|
||||
}
|
||||
if visit.WorkingDir() != share {
|
||||
t.Fatalf("visit working: %s", visit.WorkingDir())
|
||||
}
|
||||
if _, err := os.Stat(filepath.Join(root, testInitialFolder)); err == nil {
|
||||
t.Fatal("files-view launch must not create the initial folder")
|
||||
}
|
||||
}
|
||||
|
||||
func TestFilesViewMissingFolderFailsClosed(t *testing.T) {
|
||||
t.Parallel()
|
||||
root := t.TempDir()
|
||||
settings := filepath.Join(t.TempDir(), "settings.json")
|
||||
|
||||
_, err := goncfiles.OpenLocal(root, settings, testInitialFolder, "Missing/Folder")
|
||||
if err == nil {
|
||||
t.Fatal("expected error")
|
||||
}
|
||||
if !goncfiles.IsNotExist(err) {
|
||||
t.Fatalf("want ErrNotExist, got %v", err)
|
||||
}
|
||||
if _, err := os.Stat(filepath.Join(root, "Missing")); err == nil {
|
||||
t.Fatal("must not create the visit path")
|
||||
}
|
||||
if _, err := os.Stat(filepath.Join(root, testInitialFolder)); err == nil {
|
||||
t.Fatal("must not fall back to creating initial folder")
|
||||
}
|
||||
}
|
||||
|
||||
func TestFileStorePersistsDefaultPath(t *testing.T) {
|
||||
t.Parallel()
|
||||
path := filepath.Join(t.TempDir(), "settings.json")
|
||||
store := goncfiles.FileStore{Path: path}
|
||||
if err := store.SetDefault("Zones"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
got, err := store.GetDefault()
|
||||
if err != nil || got != "Zones" {
|
||||
t.Fatalf("got %q err=%v", got, err)
|
||||
}
|
||||
body, err := os.ReadFile(path)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !strings.Contains(string(body), `"defaultPath"`) {
|
||||
t.Fatalf("expected defaultPath key in %s", body)
|
||||
}
|
||||
}
|
||||
|
||||
func TestMemoryStore(t *testing.T) {
|
||||
t.Parallel()
|
||||
var m goncfiles.Memory
|
||||
if err := m.SetDefault("a"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
got, err := m.GetDefault()
|
||||
if err != nil || got != "a" {
|
||||
t.Fatalf("got %q err=%v", got, err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user