70 lines
1.8 KiB
Go
70 lines
1.8 KiB
Go
package integration
|
|
|
|
import (
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/spf13/cobra"
|
|
|
|
"github.com/rogeecn/renamer/internal/listing"
|
|
)
|
|
|
|
func TestScopeFlagsProduceConsistentRequests(t *testing.T) {
|
|
root := &cobra.Command{Use: "renamer"}
|
|
listing.RegisterScopeFlags(root.PersistentFlags())
|
|
|
|
listCmd := &cobra.Command{Use: "list"}
|
|
previewCmd := &cobra.Command{Use: "preview"}
|
|
|
|
root.AddCommand(listCmd, previewCmd)
|
|
|
|
tmp := t.TempDir()
|
|
|
|
mustSet := func(name, value string) {
|
|
if err := root.PersistentFlags().Set(name, value); err != nil {
|
|
t.Fatalf("set %s: %v", name, err)
|
|
}
|
|
}
|
|
|
|
mustSet("path", tmp)
|
|
mustSet("recursive", "true")
|
|
mustSet("include-dirs", "true")
|
|
mustSet("hidden", "true")
|
|
mustSet("extensions", ".jpg|.png")
|
|
|
|
reqList, err := listing.ScopeFromCmd(listCmd)
|
|
if err != nil {
|
|
t.Fatalf("list request: %v", err)
|
|
}
|
|
|
|
reqPreview, err := listing.ScopeFromCmd(previewCmd)
|
|
if err != nil {
|
|
t.Fatalf("preview request: %v", err)
|
|
}
|
|
|
|
if reqList.WorkingDir != reqPreview.WorkingDir {
|
|
t.Fatalf("working dir mismatch: %s vs %s", reqList.WorkingDir, reqPreview.WorkingDir)
|
|
}
|
|
if reqList.Recursive != reqPreview.Recursive {
|
|
t.Fatalf("recursive mismatch")
|
|
}
|
|
if reqList.IncludeDirectories != reqPreview.IncludeDirectories {
|
|
t.Fatalf("include-dirs mismatch")
|
|
}
|
|
if reqList.IncludeHidden != reqPreview.IncludeHidden {
|
|
t.Fatalf("hidden mismatch")
|
|
}
|
|
if len(reqList.Extensions) != len(reqPreview.Extensions) {
|
|
t.Fatalf("extension length mismatch: %d vs %d", len(reqList.Extensions), len(reqPreview.Extensions))
|
|
}
|
|
for i := range reqList.Extensions {
|
|
if reqList.Extensions[i] != reqPreview.Extensions[i] {
|
|
t.Fatalf("extension mismatch at %d: %s vs %s", i, reqList.Extensions[i], reqPreview.Extensions[i])
|
|
}
|
|
}
|
|
|
|
if filepath.Clean(reqList.WorkingDir) != reqList.WorkingDir {
|
|
t.Fatalf("expected cleaned working dir, got %s", reqList.WorkingDir)
|
|
}
|
|
}
|