| 40 | } |
| 41 | |
| 42 | func TestSearchCommand(t *testing.T) { |
| 43 | for _, tests := range [][]test{searchReplaceCases, putPatternCases} { |
| 44 | for i := range tests { |
| 45 | test := tests[i] |
| 46 | t.Run(test.name, func(t *testing.T) { |
| 47 | ext.KRMFileName = func() string { |
| 48 | return kptfile.KptFileName |
| 49 | } |
| 50 | baseDir, err := ioutil.TempDir("", "") |
| 51 | if !assert.NoError(t, err) { |
| 52 | t.FailNow() |
| 53 | } |
| 54 | defer os.RemoveAll(baseDir) |
| 55 | |
| 56 | r, err := ioutil.TempFile(baseDir, "k8s-cli-*.yaml") |
| 57 | if !assert.NoError(t, err) { |
| 58 | t.FailNow() |
| 59 | } |
| 60 | defer os.Remove(r.Name()) |
| 61 | err = ioutil.WriteFile(r.Name(), []byte(test.input), 0600) |
| 62 | if !assert.NoError(t, err) { |
| 63 | t.FailNow() |
| 64 | } |
| 65 | |
| 66 | if test.inputKptfile != "" { |
| 67 | err = ioutil.WriteFile(filepath.Join(baseDir, kptfile.KptFileName), []byte(test.inputKptfile), 0600) |
| 68 | if !assert.NoError(t, err) { |
| 69 | t.FailNow() |
| 70 | } |
| 71 | } else { |
| 72 | err = ioutil.WriteFile(filepath.Join(baseDir, kptfile.KptFileName), []byte(`apiVersion: v1alpha1 |
| 73 | kind: Kptfile`), 0600) |
| 74 | if !assert.NoError(t, err) { |
| 75 | t.FailNow() |
| 76 | } |
| 77 | } |
| 78 | |
| 79 | runner := NewSearchRunner("") |
| 80 | out := &bytes.Buffer{} |
| 81 | runner.Command.SetOut(out) |
| 82 | runner.Command.SetArgs(append([]string{baseDir}, test.args...)) |
| 83 | err = runner.Command.Execute() |
| 84 | if test.errMsg != "" { |
| 85 | if !assert.NotNil(t, err) { |
| 86 | t.FailNow() |
| 87 | } |
| 88 | if !assert.Contains(t, err.Error(), test.errMsg) { |
| 89 | t.FailNow() |
| 90 | } |
| 91 | } |
| 92 | |
| 93 | if test.errMsg == "" && !assert.NoError(t, err) { |
| 94 | t.FailNow() |
| 95 | } |
| 96 | |
| 97 | // normalize path format for windows |
| 98 | actualNormalized := strings.ReplaceAll( |
| 99 | strings.ReplaceAll(out.String(), "\\", "/"), |