github.com/mborho/rem@v0.17.0/cli_test.go (about) 1 package main 2 3 import ( 4 "io/ioutil" 5 "os" 6 "strings" 7 "testing" 8 ) 9 10 func TestRunDefault(t *testing.T) { 11 // create test file 12 rem := getTestRem(t) 13 defer removeRemFile(rem) 14 rem.read() 15 16 rescueStdout := os.Stdout 17 r, w, _ := os.Pipe() 18 os.Stdout = w 19 20 err := run(testRemFile) 21 if err != nil { 22 t.Error("Error when calling without argument!") 23 } 24 w.Close() 25 out, _ := ioutil.ReadAll(r) 26 os.Stdout = rescueStdout 27 28 if string(out) != " 0 - ls\n 1 foo ls -la\n 2 - echo test\n" { 29 t.Errorf("Wrong line output, got %s", out) 30 } 31 } 32 33 func TestRunRmAdd(t *testing.T) { 34 // create test file 35 rem := getTestRem(t) 36 defer removeRemFile(rem) 37 rem.read() 38 39 // remove line with index 1 40 os.Args = []string{"", "rm", "1"} 41 err := run(testRemFile) 42 if err != nil { 43 t.Error("Error when calling without argument!") 44 } 45 46 // add line 47 os.Args = []string{"", "add", "pwd"} 48 err = run(testRemFile) 49 if err != nil { 50 t.Error("Error when calling without argument!") 51 } 52 53 // list all commands 54 rescueStdout := os.Stdout 55 r, w, _ := os.Pipe() 56 os.Stdout = w 57 58 os.Args = []string{""} 59 err = run(testRemFile) 60 61 w.Close() 62 out, _ := ioutil.ReadAll(r) 63 os.Stdout = rescueStdout 64 if string(out) != " 0 ls\n 1 echo test\n 2 pwd\n" { 65 t.Errorf("Wrong line output, got %s", out) 66 } 67 } 68 69 /*func TestRunAddFlag(t *testing.T) { 70 // create test file 71 rem := getTestRem(t) 72 defer removeRemFile(rem) 73 rem.read() 74 75 // add line 76 tagStr := "" 77 tagFlag = &tagStr 78 os.Args = []string{"", "-a", "pwd"} 79 err := run(testRemFile+"1") 80 if err != nil { 81 t.Error("Error when adding line!") 82 } 83 84 // list all commands 85 rescueStdout := os.Stdout 86 r, w, _ := os.Pipe() 87 os.Stdout = w 88 89 os.Args = []string{""} 90 err = run(testRemFile+"1") 91 92 w.Close() 93 out, _ := ioutil.ReadAll(r) 94 os.Stdout = rescueStdout 95 t.Log(string(out)) 96 if string(out) != " 0 - ls\n 1 foo ls -la\n 2 - echo test\n 3 - pwd\n" { 97 t.Errorf("Wrong line output, got %s", out) 98 } 99 }*/ 100 101 func TestRunPrintLine(t *testing.T) { 102 // create test file 103 rem := getTestRem(t) 104 defer removeRemFile(rem) 105 rem.read() 106 107 rescueStdout := os.Stdout 108 r, w, _ := os.Pipe() 109 os.Stdout = w 110 111 os.Args = []string{"", "echo", "1"} 112 113 err := run(testRemFile) 114 if err != nil { 115 t.Error("Error when echoing line!") 116 } 117 w.Close() 118 out, _ := ioutil.ReadAll(r) 119 os.Stdout = rescueStdout 120 if string(out) != "ls -la\n" { 121 t.Errorf("Wrong line output, got %s", out) 122 } 123 } 124 125 func TestRunPrintTag(t *testing.T) { 126 // create test file 127 rem := getTestRem(t) 128 defer removeRemFile(rem) 129 rem.read() 130 131 rescueStdout := os.Stdout 132 r, w, _ := os.Pipe() 133 os.Stdout = w 134 135 os.Args = []string{"", "echo", "foo"} 136 137 err := run(testRemFile) 138 if err != nil { 139 t.Error("Error when echoing line!") 140 } 141 w.Close() 142 out, _ := ioutil.ReadAll(r) 143 os.Stdout = rescueStdout 144 if string(out) != "ls -la\n" { 145 t.Errorf("Wrong line output, got %s", out) 146 } 147 } 148 149 func TestRunPrintEmpty(t *testing.T) { 150 // create test file 151 rem := getTestRem(t) 152 defer removeRemFile(rem) 153 rem.read() 154 155 rescueStdout := os.Stdout 156 r, w, _ := os.Pipe() 157 os.Stdout = w 158 159 os.Args = []string{"", "echo", ""} 160 161 err := run(testRemFile) 162 if err != nil { 163 t.Error("Error when echoing line!") 164 } 165 w.Close() 166 out, _ := ioutil.ReadAll(r) 167 os.Stdout = rescueStdout 168 if string(out) != "" { 169 t.Errorf("Wrong line output, got %s", out) 170 } 171 } 172 173 func TestRunFilter(t *testing.T) { 174 // create test file 175 rem := getTestRem(t) 176 defer removeRemFile(rem) 177 rem.read() 178 179 rescueStdout := os.Stdout 180 r, w, _ := os.Pipe() 181 os.Stdout = w 182 183 os.Args = []string{"", "filter", "echo"} 184 185 err := run(testRemFile) 186 if err != nil { 187 t.Error("Error when filter lines!") 188 } 189 w.Close() 190 out, _ := ioutil.ReadAll(r) 191 os.Stdout = rescueStdout 192 if string(out) != " 2 echo test\n" { 193 t.Errorf("Wrong filter output, got %s", out) 194 } 195 } 196 197 func TestRunFilterFlag(t *testing.T) { 198 // create test file 199 rem := getTestRem(t) 200 defer removeRemFile(rem) 201 rem.read() 202 203 rescueStdout := os.Stdout 204 r, w, _ := os.Pipe() 205 os.Stdout = w 206 207 os.Args = []string{"", "-f", "echo"} 208 209 err := run(testRemFile) 210 if err != nil { 211 t.Error("Error when filter lines!") 212 } 213 w.Close() 214 out, _ := ioutil.ReadAll(r) 215 os.Stdout = rescueStdout 216 if string(out) != " 2 echo test\n" { 217 t.Errorf("Wrong filter output, got %s", out) 218 } 219 220 // reset filter 221 *filter = "" 222 } 223 224 func TestRunHereClear(t *testing.T) { 225 if _, err := os.Stat(testRemFile); os.IsNotExist(err) == false { 226 t.Log("Local testRemFile already created!") 227 } 228 229 // create local rem file 230 globalBool := false 231 globalFlag = &globalBool 232 233 os.Args = []string{"", "here"} 234 err := run(testRemFile) 235 if err != nil { 236 t.Error("Error when creating local testRemFile!") 237 } 238 if _, err := os.Stat(testRemFile); os.IsNotExist(err) { 239 t.Log("Local testRemFile was not created!") 240 } 241 242 // clear local rem file 243 os.Args = []string{"", "clear"} 244 err = run(testRemFile) 245 if err != nil { 246 t.Error("Error when removing local testRemFile!") 247 } 248 if _, err := os.Stat(testRemFile); os.IsNotExist(err) == false { 249 t.Log("Local testRemFile was not cleared!") 250 } 251 252 } 253 254 func TestInitialHelp(t *testing.T) { 255 // create test file 256 rem := getTestEmptyRem(t) 257 defer removeRemFile(rem) 258 rem.read() 259 260 rescueStdout := os.Stdout 261 r, w, _ := os.Pipe() 262 os.Stdout = w 263 264 os.Args = []string{""} 265 err := run(testRemFile) 266 if err != nil { 267 t.Errorf("Error when running, got %s", err) 268 } 269 w.Close() 270 out, _ := ioutil.ReadAll(r) 271 os.Stdout = rescueStdout 272 273 if strings.Contains(string(out), help) == false { 274 t.Errorf("Help not displayed, got %s", out) 275 } 276 } 277 278 func TestRunHelp(t *testing.T) { 279 rescueStdout := os.Stdout 280 r, w, _ := os.Pipe() 281 os.Stdout = w 282 283 helpBool := true 284 helpFlag = &helpBool 285 286 err := run(testRemFile) 287 if err != nil { 288 t.Error("Error when calling without argument!") 289 } 290 291 w.Close() 292 out, _ := ioutil.ReadAll(r) 293 os.Stdout = rescueStdout 294 if strings.Contains(string(out), help) == false { 295 t.Error("Help not correct!") 296 } 297 }