package commands import ( "fmt" "os" "testing" "gitlab.com/revalus/grm/config" ) func createTempDir() string { checkErrorDuringPreparation := func(err error) { if err != nil { fmt.Printf("Cannot prepare a temporary directory for testing! %v ", err.Error()) os.Exit(2) } } baseTmp := fmt.Sprintf("%v/grmTest", os.TempDir()) if _, ok := os.Stat(baseTmp); ok != nil { err := os.Mkdir(baseTmp, 0777) checkErrorDuringPreparation(err) } tempDir, err := os.MkdirTemp(baseTmp, "*") checkErrorDuringPreparation(err) return tempDir } func TestSyncInit(t *testing.T) { sync := NewSynchronizer("test") if sync.workspace != "test" { t.Errorf("Expected to get \"test\", instead of this got %v", sync.workspace) } } func TestSyncCommand(t *testing.T) { workdir := createTempDir() defer func() { os.RemoveAll(workdir) }() sync := Synchronizer{ workspace: workdir, } cfg := config.RepositoryConfig{ Src: "https://github.com/avelino/awesome-go", Dest: "awesome-go", } ch := make(chan CommandStatus) // Pull part go sync.Command(cfg, ch) cloneStatus := <-ch if cloneStatus.Error { t.Errorf("Unexpected error: %v", cloneStatus.Message) } info, err := os.Stat(fmt.Sprintf("%v/awesome-go/.git", workdir)) if err != nil { t.Errorf("Unexpected error: %v", err.Error()) } if !info.IsDir() { t.Errorf("Expected that the selected path is dir") } if cloneStatus.Changed != true { t.Errorf("Expected that the status is changed") } if cloneStatus.Message != syncCloned { t.Errorf("Expected to get %v, instead of this got %v", syncCloned, cloneStatus.Message) } // Fetch part go sync.Command(cfg, ch) fetchStatus := <-ch if fetchStatus.Error { t.Errorf("Unexpected error: %v", err.Error()) } if fetchStatus.Changed != false { t.Errorf("Expected that the status is not changed") } if fetchStatus.Message != syncUpToDate { t.Errorf("Expected to get %v, instead of this got %v", syncUpToDate, cloneStatus.Message) } }