aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2018-03-29 15:06:39 +0200
committerMartin Polden <mpolden@mpolden.no>2018-03-29 15:07:34 +0200
commit985b2c45ecf2764defabdd881fc5e617cbe22ee3 (patch)
tree5cb63a0ad9e16ef5e592dd825fd306ae72cb3fc2
parent9a400e6a00982ca2d54f92fcd990cc6903f7f3fc (diff)
Handle spaces in imported path
-rw-r--r--queue/queue.go5
-rw-r--r--queue/queue_test.go40
2 files changed, 25 insertions, 20 deletions
diff --git a/queue/queue.go b/queue/queue.go
index 23bcc53..f6fa14c 100644
--- a/queue/queue.go
+++ b/queue/queue.go
@@ -16,6 +16,8 @@ import (
"time"
)
+var fieldSplitter = regexp.MustCompile(`\s+`)
+
type readDir func(dirname string) ([]os.FileInfo, error)
type Consumer interface {
@@ -46,7 +48,8 @@ func Read(sites []Site, r io.Reader) ([]Queue, error) {
// Store mapping from site name to queue index in qs, as we only want to return a single queue per site
indices := map[string]int{}
for scanner.Scan() {
- fields := strings.Fields(scanner.Text())
+ line := strings.TrimSpace(scanner.Text())
+ fields := fieldSplitter.Split(line, 2)
if len(fields) < 2 {
continue
}
diff --git a/queue/queue_test.go b/queue/queue_test.go
index 0887d29..db6a536 100644
--- a/queue/queue_test.go
+++ b/queue/queue_test.go
@@ -325,15 +325,15 @@ func TestReadQueue(t *testing.T) {
lines := `
t1 /tv/The.Wire.S01E01
-t2 /tv/The.Wire.S01E04 ignored
+ t1 /tv/The.Wire.S01 E04
ignored
- t1 /tv/The.Wire.S01E02
+t2 /tv/The.Wire.S01E02
-t1 /tv/The.Wire.S01E03
+t1 /tv/The.Wire.S01E03
-t2 /tv/The.Wire.S01E05
+ t2 /tv/The.Wire.S01E05
`
s1, s2 := newTestSite(), newTestSite()
s1.Name = "t1"
@@ -345,23 +345,25 @@ t2 /tv/The.Wire.S01E05
if len(queues) != 2 {
t.Fatal("Expected 2 sites")
}
- for _, q := range queues {
- if q.Site.Name == s1.Name {
- if len(q.Items) != 3 {
- t.Fatalf("Expected 3 items for site %s", q.Site.Name)
- }
- }
- if q.Site.Name == s2.Name {
- if len(q.Items) != 2 {
- t.Fatalf("Expected 2 items for site %s", q.Site.Name)
- }
+ var tests = []struct {
+ site string
+ remotePaths []string
+ }{
+ {"t1", []string{"/tv/The.Wire.S01E01", "/tv/The.Wire.S01 E04", "/tv/The.Wire.S01E03"}},
+ {"t2", []string{"/tv/The.Wire.S01E02", "/tv/The.Wire.S01E05"}},
+ }
+ for i, tt := range tests {
+ q := queues[i]
+ if q.Site.Name != tt.site {
+ t.Errorf("want Site.Name=%s, got %s for queue #%d", tt.site, q.Site.Name, i)
}
- for i := range q.Items {
- if want, got := "The.Wire", q.Items[i].Media.Name; got != want {
- t.Errorf("got Items[%d].Media.Name=%q, want %q", i, got, want)
+ for j, rpath := range tt.remotePaths {
+ item := q.Items[j]
+ if item.RemotePath != rpath {
+ t.Errorf("want RemotePath=%s, got %s for item #%d in queue #%d", rpath, item.RemotePath, j, i)
}
- if !q.Items[i].Transfer {
- t.Errorf("got Items[%d].Transfer=true, want %t", i, false)
+ if !item.Transfer {
+ t.Errorf("want Transfer=true, got %t for item #%d in queue #%d", item.Transfer, j, i)
}
}
}