github.com/ocurr/cryorio@v0.0.0-20220116160810-2fb94073801b/roborio/roborio_test.go (about) 1 //go:build !windows 2 3 package roborio 4 5 import ( 6 "strings" 7 "testing" 8 9 "github.com/google/go-cmp/cmp" 10 ) 11 12 func getTestRio(t *testing.T) *Roborio { 13 rio, err := NewRoborio(func(user, pass, addr string) (Conn, error) { 14 return &TestConn{t.TempDir()}, nil 15 }, "test", "test", Addresses("test"), Team(973), Port(8080)) 16 if err != nil { 17 t.Fatal(err) 18 } 19 err = rio.Connect() 20 if err != nil { 21 t.Fatal(err) 22 } 23 return rio 24 } 25 26 func assertCmdSuccess(t *testing.T, err error) { 27 assertCmdSuccessAndNoOutput(t, []byte{}, err) 28 } 29 30 func assertCmdSuccessAndNoOutput(t *testing.T, out []byte, err error) { 31 if err != nil { 32 t.Fatal(err) 33 } 34 if len(out) != 0 { 35 t.Fatal(out) 36 } 37 } 38 39 func TestRoborio(t *testing.T) { 40 t.Run("CreateAndSeeFiles", func(t *testing.T) { 41 rio := getTestRio(t) 42 out, err := rio.Touch("foo.txt") 43 assertCmdSuccessAndNoOutput(t, out, err) 44 out, err = rio.ListDir() 45 assertCmdSuccess(t, err) 46 got := strings.TrimSpace(string(out)) 47 if got != "foo.txt" { 48 t.Fatalf("want: foo.txt got: %s", got) 49 } 50 }) 51 t.Run("CreateAndDeleteFiles", func(t *testing.T) { 52 rio := getTestRio(t) 53 out, err := rio.Touch("bar.txt") 54 assertCmdSuccessAndNoOutput(t, out, err) 55 out, err = rio.Remove("bar.txt") 56 assertCmdSuccessAndNoOutput(t, out, err) 57 out, err = rio.ListDir() 58 assertCmdSuccess(t, err) 59 got := strings.TrimSpace(string(out)) 60 if got != "" { 61 t.Fatalf("want: %q got: %s", "", got) 62 } 63 }) 64 t.Run("CopyFiles", func(t *testing.T) { 65 rio := getTestRio(t) 66 out, err := rio.Touch("FRCUserProgram") 67 assertCmdSuccessAndNoOutput(t, out, err) 68 out, err = rio.Copy("FRCUserProgram", "match.backup") 69 assertCmdSuccessAndNoOutput(t, out, err) 70 out, err = rio.ListDir() 71 assertCmdSuccess(t, err) 72 gotStr := strings.TrimSpace(string(out)) 73 got := strings.Split(gotStr, "\n") 74 want := []string{"FRCUserProgram", "match.backup"} 75 if !cmp.Equal(got, want) { 76 t.Fatalf("want: %q got: %q", want, got) 77 } 78 }) 79 t.Run("BackupFile", func(t *testing.T) { 80 rio := getTestRio(t) 81 out, err := rio.Touch("FRCUserProgram") 82 assertCmdSuccessAndNoOutput(t, out, err) 83 err = rio.BackupFile("FRCUserProgram", "match") 84 if err != nil { 85 t.Fatal(err) 86 } 87 out, err = rio.ListDir() 88 assertCmdSuccess(t, err) 89 gotStr := strings.TrimSpace(string(out)) 90 got := strings.Split(gotStr, "\n") 91 want := []string{"FRCUserProgram", "match.backup"} 92 if !cmp.Equal(got, want) { 93 t.Fatalf("want: %q got: %q", want, got) 94 } 95 }) 96 }