node build fixed
This commit is contained in:
133
seanime-2.9.10/internal/library/filesystem/mediapath_test.go
Normal file
133
seanime-2.9.10/internal/library/filesystem/mediapath_test.go
Normal file
@@ -0,0 +1,133 @@
|
||||
package filesystem
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"seanime/internal/util"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestSeparateFilePathS(t *testing.T) {
|
||||
tests := []struct {
|
||||
path string
|
||||
potentialPrefixes []string
|
||||
expected *SeparatedFilePath
|
||||
}{
|
||||
{
|
||||
path: "/path/to/file.mkv",
|
||||
potentialPrefixes: []string{"/path/to", "/path"},
|
||||
expected: &SeparatedFilePath{Filename: "file.mkv", Dirnames: []string{}},
|
||||
},
|
||||
{
|
||||
path: "/path/TO/to/file.mkv",
|
||||
potentialPrefixes: []string{"/path"},
|
||||
expected: &SeparatedFilePath{Filename: "file.mkv", Dirnames: []string{"TO", "to"}},
|
||||
},
|
||||
{
|
||||
path: "/path/to/file2.mkv",
|
||||
potentialPrefixes: []string{},
|
||||
expected: &SeparatedFilePath{Filename: "file2.mkv", Dirnames: []string{"path", "to"}},
|
||||
},
|
||||
{
|
||||
path: "/mnt/Anime/Bungou Stray Dogs/Bungou Stray Dogs 5th Season/[SubsPlease] Bungou Stray Dogs - 61 (1080p) [F609B947].mkv",
|
||||
potentialPrefixes: []string{"/mnt/Anime", "/mnt/Anime/", "/mnt", "/var/"},
|
||||
expected: &SeparatedFilePath{Filename: "[SubsPlease] Bungou Stray Dogs - 61 (1080p) [F609B947].mkv", Dirnames: []string{"Bungou Stray Dogs", "Bungou Stray Dogs 5th Season"}},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.path, func(t *testing.T) {
|
||||
fmt.Println("Here")
|
||||
res := SeparateFilePathS(tt.path, tt.potentialPrefixes)
|
||||
assert.Equal(t, tt.expected.Filename, res.Filename)
|
||||
assert.Equal(t, tt.expected.Dirnames, res.Dirnames)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// Test with symlinks
|
||||
func TestGetVideoFilePathsFromDir_WithSymlinks(t *testing.T) {
|
||||
tmpDir := t.TempDir()
|
||||
|
||||
libDir := filepath.Join(tmpDir, "library")
|
||||
externalLibDir := t.TempDir()
|
||||
os.Mkdir(libDir, 0755)
|
||||
// Create files in the external directory
|
||||
createFile(t, filepath.Join(externalLibDir, "external_video1.mkv"))
|
||||
createFile(t, filepath.Join(externalLibDir, "external_video2.mp4"))
|
||||
|
||||
// Create directories and files
|
||||
dir1 := filepath.Join(libDir, "Anime1")
|
||||
os.Mkdir(dir1, 0755)
|
||||
createFile(t, filepath.Join(dir1, "Anime1_1.mkv"))
|
||||
createFile(t, filepath.Join(dir1, "Anime1_2.mp4"))
|
||||
|
||||
dir2 := filepath.Join(libDir, "Anime2")
|
||||
os.Mkdir(dir2, 0755)
|
||||
createFile(t, filepath.Join(dir2, "Anime2_1.mkv"))
|
||||
|
||||
// Create a symlink to the external directory
|
||||
symlinkPath := filepath.Join(libDir, "symlink_to_external")
|
||||
if err := os.Symlink(externalLibDir, symlinkPath); err != nil {
|
||||
t.Fatalf("Failed to create symlink: %s", err)
|
||||
}
|
||||
// Create a recursive symlink to the library directory
|
||||
symlinkToLibPath := filepath.Join(externalLibDir, "symlink_to_library")
|
||||
if err := os.Symlink(libDir, symlinkToLibPath); err != nil {
|
||||
t.Fatalf("Failed to create symlink: %s", err)
|
||||
}
|
||||
|
||||
// Expected files
|
||||
expectedPaths := []string{
|
||||
filepath.Join(dir1, "Anime1_1.mkv"),
|
||||
filepath.Join(dir1, "Anime1_2.mp4"),
|
||||
filepath.Join(dir2, "Anime2_1.mkv"),
|
||||
filepath.Join(externalLibDir, "external_video1.mkv"),
|
||||
filepath.Join(externalLibDir, "external_video2.mp4"),
|
||||
}
|
||||
|
||||
filePaths, err := GetMediaFilePathsFromDirS(libDir)
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error: %s", err)
|
||||
}
|
||||
|
||||
util.Spew(filePaths)
|
||||
|
||||
// Check results
|
||||
for _, expected := range expectedPaths {
|
||||
found := false
|
||||
for _, path := range filePaths {
|
||||
// if path == expected {
|
||||
// found = true
|
||||
// break
|
||||
// }
|
||||
// Compare the paths using stdlib
|
||||
info1, err := os.Stat(path)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to get file info for %s: %s", path, err)
|
||||
}
|
||||
info2, err := os.Stat(expected)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to get file info for %s: %s", expected, err)
|
||||
}
|
||||
if os.SameFile(info1, info2) {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
t.Errorf("Expected file path %s not found in result", expected)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func createFile(t *testing.T, path string) {
|
||||
file, err := os.Create(path)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to create file: %s", err)
|
||||
}
|
||||
defer file.Close()
|
||||
}
|
||||
Reference in New Issue
Block a user