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 }