refactor podcast schema and generate unique episode paths (#373)

closes #350
This commit is contained in:
Senan Kelly
2023-09-21 00:01:16 +01:00
committed by GitHub
parent c13d17262f
commit 33f1f2e0cf
15 changed files with 401 additions and 193 deletions

56
fileutil/fileutil_test.go Normal file
View File

@@ -0,0 +1,56 @@
package fileutil
import (
"os"
"path/filepath"
"testing"
"github.com/stretchr/testify/require"
)
func TestUniquePath(t *testing.T) {
unq := func(base, filename string, count uint) string {
r, err := unique(base, filename, count)
require.NoError(t, err)
return r
}
require.Equal(t, "test/wow.mp3", unq("test", "wow.mp3", 0))
require.Equal(t, "test/wow (1).mp3", unq("test", "wow.mp3", 1))
require.Equal(t, "test/wow (2).mp3", unq("test", "wow.mp3", 2))
require.Equal(t, "test", unq("test", "", 0))
require.Equal(t, "test (1)", unq("test", "", 1))
base := filepath.Join(t.TempDir(), "a")
require.NoError(t, os.MkdirAll(base, os.ModePerm))
next := base + " (1)"
require.Equal(t, next, unq(base, "", 0))
require.NoError(t, os.MkdirAll(next, os.ModePerm))
next = base + " (2)"
require.Equal(t, next, unq(base, "", 0))
_, err := os.Create(filepath.Join(base, "test.mp3"))
require.NoError(t, err)
require.Equal(t, filepath.Join(base, "test (1).mp3"), unq(base, "test.mp3", 0))
}
func TestFirst(t *testing.T) {
base := t.TempDir()
name := filepath.Join(base, "test")
_, err := os.Create(name)
require.NoError(t, err)
p := func(name string) string {
return filepath.Join(base, name)
}
r, err := First(p("one"), p("two"), p("test"), p("four"))
require.NoError(t, err)
require.Equal(t, p("test"), r)
}