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  }