diff options
author | Martin Polden <mpolden@mpolden.no> | 2018-03-29 15:06:39 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2018-03-29 15:07:34 +0200 |
commit | 985b2c45ecf2764defabdd881fc5e617cbe22ee3 (patch) | |
tree | 5cb63a0ad9e16ef5e592dd825fd306ae72cb3fc2 | |
parent | 9a400e6a00982ca2d54f92fcd990cc6903f7f3fc (diff) |
Handle spaces in imported path
-rw-r--r-- | queue/queue.go | 5 | ||||
-rw-r--r-- | queue/queue_test.go | 40 |
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) } } } |