github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/pkg/platform/runtime/setup/implementations/camel/prepare_lin_win_test.go (about)

     1  // +build !darwin
     2  
     3  package camel_test
     4  
     5  import (
     6  	"fmt"
     7  	"os"
     8  	"path/filepath"
     9  	rt "runtime"
    10  	"strings"
    11  
    12  	"github.com/ActiveState/cli/internal/fileutils"
    13  	"github.com/ActiveState/cli/pkg/platform/runtime/setup/implementations/camel"
    14  )
    15  
    16  func (suite *MetaDataTestSuite) TestMetaData_Prepare() {
    17  	template := `{
    18  		"affected_env": "PYTHONPATH",
    19  		"binaries_in": [
    20  			{
    21  				"path": "%s",
    22  				"relative": 0
    23  			}
    24  		],
    25  		"relocation_dir": "/relocate"
    26  	}`
    27  
    28  	originalValue := os.Getenv("PYTHONIOENCODING")
    29  	os.Unsetenv("PYTHONIOENCODING")
    30  	defer func() {
    31  		os.Setenv("PYTHONIOENCODING", originalValue)
    32  	}()
    33  
    34  	tempDir := suite.dir
    35  	pythonBinaryFilename := "python3"
    36  	if rt.GOOS == "windows" {
    37  		pythonBinaryFilename = pythonBinaryFilename + ".exe"
    38  		tempDir = strings.ReplaceAll(tempDir, "\\", "\\\\")
    39  	}
    40  	err := fileutils.Touch(filepath.Join(suite.dir, pythonBinaryFilename))
    41  	suite.Require().NoError(err)
    42  
    43  	contents := fmt.Sprintf(template, tempDir)
    44  	metaData, err := camel.ParseMetaData([]byte(contents))
    45  	suite.Require().NoError(err)
    46  
    47  	err = metaData.Prepare(suite.dir)
    48  	suite.Require().NoError(err)
    49  	suite.Require().NotEmpty(metaData.Env["PYTHONIOENCODING"])
    50  }