github.com/anishathalye/periscope@v0.3.5/internal/periscope/finish_test.go (about) 1 package periscope 2 3 import ( 4 "bytes" 5 "io" 6 "os" 7 "testing" 8 ) 9 10 func dummyFile() *os.File { 11 r, w, _ := os.Pipe() 12 go func() { 13 var buf bytes.Buffer 14 io.Copy(&buf, r) 15 }() 16 return w 17 } 18 19 func TestFinish(t *testing.T) { 20 oldStdout := os.Stdout 21 defer func() { 22 os.Stdout = oldStdout 23 }() 24 os.Stdout = dummyFile() 25 fakeHome := tempDir() 26 defer os.RemoveAll(fakeHome) 27 scanDir := tempDir() 28 defer os.RemoveAll(scanDir) 29 var err error 30 oldCacheHome, wasSet := os.LookupEnv("XDG_CACHE_HOME") 31 if wasSet { 32 defer os.Setenv("XDG_CACHE_HOME", oldCacheHome) 33 } 34 os.Unsetenv("XDG_CACHE_HOME") 35 oldHome := os.Getenv("HOME") 36 defer os.Setenv("HOME", oldHome) 37 os.Setenv("HOME", fakeHome) 38 err = Finish(&FinishOptions{}) // should be ok with no db 39 check(t, err) 40 ps, err := New(&Options{Debug: testDebug}) 41 check(t, err) 42 ps.outStream = new(bytes.Buffer) 43 ps.errStream = new(bytes.Buffer) 44 err = ps.Scan([]string{scanDir}, &ScanOptions{}) 45 check(t, err) 46 dbPath, err := dbPath() 47 check(t, err) 48 info, err := os.Stat(dbPath) 49 check(t, err) 50 if !info.Mode().IsRegular() { 51 t.Fatal("db was not created") 52 } 53 err = Finish(&FinishOptions{}) 54 check(t, err) 55 _, err = os.Stat(dbPath) 56 if !os.IsNotExist(err) { 57 t.Fatal("db was not deleted") 58 } 59 }