github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/pkg/platform/runtime/setup/implementations/camel/prepare_mac_test.go (about) 1 // +build darwin 2 3 package camel_test 4 5 import ( 6 "fmt" 7 "os" 8 "path/filepath" 9 10 "github.com/ActiveState/cli/internal/fileutils" 11 "github.com/ActiveState/cli/pkg/platform/runtime/setup/implementations/camel" 12 ) 13 14 func (suite *MetaDataTestSuite) TestMetaData_Prepare() { 15 template := `{ 16 "affected_env": "PYTHONPATH", 17 "binaries_in": [ 18 { 19 "path": "%s", 20 "relative": 1 21 } 22 ], 23 "relocation_dir": "/relocate" 24 }` 25 26 originalValue := os.Getenv("PYTHONIOENCODING") 27 os.Unsetenv("PYTHONIOENCODING") 28 defer func() { 29 os.Setenv("PYTHONIOENCODING", originalValue) 30 }() 31 32 relBinDir := filepath.Join("Library", "Frameworks", "Python.framework", "Versions", "Current", "bin") 33 relVersionedDir := filepath.Join("Library", "Frameworks", "Python.framework", "Versions", "3.7") 34 35 // Directory that contains binary file on MacOS 36 tempDir := filepath.Join(suite.dir, relBinDir) 37 err := fileutils.Mkdir(tempDir) 38 suite.Require().NoError(err) 39 40 versionedDir := filepath.Join(suite.dir, relVersionedDir) 41 err = fileutils.Mkdir(versionedDir) 42 suite.Require().NoError(err) 43 44 // Directory that contains site-packages on MacOS 45 err = fileutils.Mkdir(suite.dir, "Library/Frameworks/Python.framework/Versions/Current/lib") 46 suite.Require().NoError(err) 47 48 pythonBinaryFilename := "python3" 49 err = fileutils.Touch(filepath.Join(tempDir, pythonBinaryFilename)) 50 suite.Require().NoError(err) 51 52 contents := fmt.Sprintf(template, tempDir) 53 metaData, err := camel.ParseMetaData([]byte(contents)) 54 suite.Require().NoError(err) 55 56 err = metaData.Prepare(suite.dir) 57 suite.Require().NoError(err) 58 suite.Assert().NotEmpty(metaData.Env["PYTHONIOENCODING"]) 59 60 suite.Len(metaData.TargetedRelocations, 1, "expected one targeted relocation") 61 suite.Equal(camel.TargetedRelocation{ 62 InDir: relBinDir, 63 SearchString: "#!" + filepath.Join("/", relVersionedDir), 64 Replacement: "#!" + filepath.Join("${INSTALLDIR}", relVersionedDir), 65 }, metaData.TargetedRelocations[0], suite.dir) 66 }