sigs.k8s.io/kubebuilder/v3@v3.14.0/pkg/plugin/util/exec_test.go (about)

     1  /*
     2  Copyright 2022 The Kubernetes Authors.
     3  Licensed under the Apache License, Version 2.0 (the "License");
     4  you may not use this file except in compliance with the License.
     5  You may obtain a copy of the License at
     6      http://www.apache.org/licenses/LICENSE-2.0
     7  Unless required by applicable law or agreed to in writing, software
     8  distributed under the License is distributed on an "AS IS" BASIS,
     9  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    10  See the License for the specific language governing permissions and
    11  limitations under the License.
    12  */
    13  
    14  package util
    15  
    16  import (
    17  	"bytes"
    18  	"os/exec"
    19  	"strings"
    20  
    21  	. "github.com/onsi/ginkgo/v2"
    22  	. "github.com/onsi/gomega"
    23  )
    24  
    25  var _ = Describe("RunCmd", func() {
    26  	var (
    27  		output *bytes.Buffer
    28  		err    error
    29  	)
    30  	BeforeEach(func() {
    31  		output = &bytes.Buffer{}
    32  	})
    33  	AfterEach(func() {
    34  		output.Reset()
    35  	})
    36  	It("executes the command and redirects output to stdout", func() {
    37  		cmd := exec.Command("echo", "test")
    38  		cmd.Stdout = output
    39  		err = cmd.Run()
    40  		Expect(err).ToNot(HaveOccurred())
    41  		Expect(strings.TrimSpace(output.String())).To(Equal("test"))
    42  	})
    43  	It("returns an error if the command fails", func() {
    44  		err = RunCmd("unknown command", "unknowncommand")
    45  		Expect(err).To(HaveOccurred())
    46  	})
    47  })