39 lines
1.1 KiB
Go
39 lines
1.1 KiB
Go
package app
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func TestResolveOutputDirRejectsDanglingSymlinkComponents(t *testing.T) {
|
|
workingDir := t.TempDir()
|
|
dangling := filepath.Join(workingDir, "dangling")
|
|
if err := os.Symlink(filepath.Join(workingDir, "missing"), dangling); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
for _, directory := range []string{dangling, filepath.Join(dangling, "reports")} {
|
|
t.Run(filepath.Base(directory), func(t *testing.T) {
|
|
if _, err := resolveOutputDir(workingDir, directory); err == nil {
|
|
t.Fatalf("resolveOutputDir(%q) error = nil, want dangling symlink error", directory)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestResolveOutputDirAllowsMissingDirectoryBelowValidSymlink(t *testing.T) {
|
|
workingDir := t.TempDir()
|
|
target := t.TempDir()
|
|
link := filepath.Join(workingDir, "linked")
|
|
if err := os.Symlink(target, link); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
directory := filepath.Join(link, "reports")
|
|
got, err := resolveOutputDir(workingDir, directory)
|
|
if err != nil || got != directory {
|
|
t.Fatalf("resolveOutputDir() = %q, %v, want %q, nil", got, err, directory)
|
|
}
|
|
}
|