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  }