files_test.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package read_test
  2. import (
  3. . "github.com/onsi/ginkgo"
  4. . "github.com/onsi/gomega"
  5. "github.com/felamaslen/go-music-player/pkg/read"
  6. _ "github.com/felamaslen/go-music-player/pkg/testing"
  7. )
  8. var _ = Describe("reading files", func() {
  9. Describe("reading file info", func() {
  10. var results []*read.Song
  11. BeforeEach(func() {
  12. results = nil
  13. files := make(chan string, 1)
  14. go func() {
  15. defer close(files)
  16. files <- read.TestSong.RelativePath
  17. }()
  18. outputChan := read.ReadMultipleFiles(read.TestDirectory, files)
  19. outputDone := false
  20. for !outputDone {
  21. select {
  22. case result, more := <- outputChan:
  23. if more {
  24. results = append(results, result)
  25. }
  26. outputDone = !more
  27. }
  28. }
  29. })
  30. It("should return the correct number of results", func() {
  31. Expect(results).To(HaveLen(1))
  32. })
  33. It("should get the correct info from the file", func() {
  34. Expect(*results[0]).To(Equal(read.TestSong))
  35. })
  36. })
  37. Describe("scanning a directory recursively", func() {
  38. var results []string
  39. BeforeEach(func() {
  40. results = nil
  41. files := read.ScanDirectory(read.TestDirectory)
  42. done := false
  43. for !done {
  44. select {
  45. case result, more := <- files:
  46. if more {
  47. results = append(results, result)
  48. }
  49. done = !more
  50. }
  51. }
  52. })
  53. It("should return a channel with all the files in the directory", func() {
  54. Expect(results).To(Equal([]string{
  55. read.TestSong.RelativePath,
  56. read.TestSongNested.RelativePath,
  57. }))
  58. })
  59. })
  60. })