diff --git a/ghbackup/run_test.go b/ghbackup/run_test.go index 047b107..0748b5f 100644 --- a/ghbackup/run_test.go +++ b/ghbackup/run_test.go @@ -5,11 +5,18 @@ import ( "io/ioutil" "log" "os" + "path/filepath" + "strings" "testing" "qvl.io/ghbackup/ghbackup" ) +const ( + expectedRepos = " ghbackup homebrew-tap promplot qvl.io slangbrain.com sleepto " + gitFiles = "HEAD config description hooks info objects packed-refs refs" +) + func TestRun(t *testing.T) { dir, err := ioutil.TempDir("", "qvl-backup") if err != nil { @@ -35,4 +42,34 @@ func TestRun(t *testing.T) { if err != nil { t.Error("Unexpected error:", err) } + + // Check contents of backup directory + files, err := ioutil.ReadDir(dir) + if err != nil { + t.Error(err) + } + minLen := len(strings.Split(strings.TrimSpace(expectedRepos), " ")) + if len(files) < minLen { + t.Errorf("Expected to fetch at least %d repositories; got %d", minLen, len(files)) + } + + for _, f := range files { + if !f.IsDir() { + t.Errorf("Expected %s to be a directory", f.Name()) + } + strings.Contains(expectedRepos, " "+f.Name()+".git ") + repoFiles, err := ioutil.ReadDir(filepath.Join(dir, f.Name())) + if err != nil { + t.Error(err) + } + + var rs []string + for _, r := range repoFiles { + rs = append(rs, r.Name()) + } + s := strings.Join(rs, " ") + if s != gitFiles { + t.Errorf("Expected repository for '%s' to contain:\n'%s'\nbut got:\n'%s'", f.Name(), gitFiles, s) + } + } } diff --git a/main.go b/main.go index 84f7f65..3890e71 100644 --- a/main.go +++ b/main.go @@ -63,18 +63,17 @@ func main() { os.Exit(1) } - errs := log.New(os.Stderr, "", 0) - logs := log.New(os.Stdout, "", 0) + logger := log.New(os.Stdout, "", 0) if *silent { - logs = log.New(ioutil.Discard, "", 0) + logger = log.New(ioutil.Discard, "", 0) } err := ghbackup.Run(ghbackup.Config{ Account: *account, Dir: args[0], Secret: *secret, - Log: logs, - Err: errs, + Log: logger, + Err: log.New(os.Stderr, "", 0), }) if err != nil {