github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/internal/osutils/shellescape_test.go (about)

     1  package osutils_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/ActiveState/cli/internal/osutils"
     7  	"github.com/ActiveState/cli/internal/testhelpers/suite"
     8  )
     9  
    10  type ShellEscaperTestSuite struct {
    11  	suite.Suite
    12  }
    13  
    14  func (suite *ShellEscaperTestSuite) TestBashEscaper() {
    15  	escaper := osutils.NewBashEscaper()
    16  	suite.Equal(`quoted`, escaper.Quote(`quoted`))
    17  	suite.Equal(`"\"quoted\""`, escaper.Quote(`"quoted"`))
    18  	suite.Equal(`"'quoted'"`, escaper.Quote(`'quoted'`))
    19  	suite.Equal(`"quoted\nquote"`, escaper.Quote("quoted\nquote"))
    20  	suite.Equal(`"quote\\"`, escaper.Quote(`quote\`))
    21  	suite.Equal(`"quote\"quote"`, escaper.Quote(`quote"quote`))
    22  	suite.Equal(`"\$FOO"`, escaper.Quote(`$FOO`))
    23  }
    24  
    25  func (suite *ShellEscaperTestSuite) TestBatchEscaper() {
    26  	escaper := osutils.NewBatchEscaper()
    27  	suite.Equal(`quoted`, escaper.Quote(`quoted`))
    28  	suite.Equal(`"""quoted"""`, escaper.Quote(`"quoted"`))
    29  	suite.Equal(`"'quoted'"`, escaper.Quote(`'quoted'`))
    30  	suite.Equal(`"quoted\nquote"`, escaper.Quote("quoted\nquote"))
    31  	suite.Equal(`"quote\"`, escaper.Quote(`quote\`))
    32  	suite.Equal(`"quote""quote"`, escaper.Quote(`quote"quote`))
    33  }
    34  
    35  func (suite *ShellEscaperTestSuite) TestCmdEscaper() {
    36  	escaper := osutils.NewCmdEscaper()
    37  	suite.Equal(`quoted`, escaper.Quote(`quoted`))
    38  	suite.Equal(`"quoted quote"`, escaper.Quote(`quoted quote`))
    39  	suite.Equal(`project/org`, escaper.Quote(`project/org`))
    40  	suite.Equal(`cmd.exe`, escaper.Quote(`cmd.exe`))
    41  }
    42  
    43  func TestShellEscaperTestSuite(t *testing.T) {
    44  	suite.Run(t, new(ShellEscaperTestSuite))
    45  }