github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/internal/scriptfile/scriptfile_test.go (about) 1 package scriptfile 2 3 import ( 4 "os" 5 "path" 6 "runtime" 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10 "github.com/stretchr/testify/require" 11 12 "github.com/ActiveState/cli/internal/language" 13 ) 14 15 func TestScriptFile(t *testing.T) { 16 sf, err := New(language.Bash, t.Name(), "echo hello") 17 require.NoError(t, err) 18 require.FileExists(t, sf.Filename()) 19 sf.Clean() 20 21 _, err = os.Stat(sf.Filename()) 22 if err == nil || !os.IsNotExist(err) { 23 require.FailNow(t, "file should not exist") 24 } 25 26 sf, err = New(language.Bash, t.Name(), "echo hello") 27 require.NoError(t, err) 28 defer sf.Clean() 29 assert.NotEmpty(t, path.Ext(sf.Filename())) 30 31 info, err := os.Stat(sf.Filename()) 32 require.NoError(t, err) 33 assert.NotZero(t, info.Size()) 34 res := int64(0500 & info.Mode()) // readable/executable by user 35 if runtime.GOOS == "windows" { 36 res = int64(0400 & info.Mode()) // readable by user 37 } 38 assert.NotZero(t, res, "file should be readable/executable") 39 40 sf, err = New(language.Batch, t.Name(), "echo hello") 41 require.NoError(t, err) 42 defer sf.Clean() 43 44 info, err = os.Stat(sf.Filename()) 45 require.NoError(t, err) 46 assert.NotZero(t, info.Size()) 47 assert.True(t, info.Size() == int64(len("echo hello"))) 48 }