purge_test.go 966 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package fileutil
  2. import (
  3. "fmt"
  4. "io/ioutil"
  5. "os"
  6. "path"
  7. "reflect"
  8. "testing"
  9. "time"
  10. )
  11. func TestPurgeFile(t *testing.T) {
  12. dir, err := ioutil.TempDir("", "purgefile")
  13. if err != nil {
  14. t.Fatal(err)
  15. }
  16. defer os.RemoveAll(dir)
  17. for i := 0; i < 5; i++ {
  18. _, err := os.Create(path.Join(dir, fmt.Sprintf("%d.test", i)))
  19. if err != nil {
  20. t.Fatal(err)
  21. }
  22. }
  23. stop := make(chan struct{})
  24. errch := PurgeFile(dir, "test", 3, time.Millisecond, stop)
  25. for i := 5; i < 10; i++ {
  26. _, err := os.Create(path.Join(dir, fmt.Sprintf("%d.test", i)))
  27. if err != nil {
  28. t.Fatal(err)
  29. }
  30. time.Sleep(time.Millisecond)
  31. }
  32. fnames, err := ReadDir(dir)
  33. if err != nil {
  34. t.Fatal(err)
  35. }
  36. wnames := []string{"7.test", "8.test", "9.test"}
  37. if !reflect.DeepEqual(fnames, wnames) {
  38. t.Errorf("filenames = %v, want %v", fnames, wnames)
  39. }
  40. select {
  41. case err := <-errch:
  42. t.Errorf("unexpected purge error %v", err)
  43. case <-time.After(time.Millisecond):
  44. }
  45. close(stop)
  46. }