databricks-cli/libs/python/detect_test.go

47 lines
1.0 KiB
Go

package python
import (
"os"
"path/filepath"
"runtime"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestDetectVEnvExecutable(t *testing.T) {
dir := t.TempDir()
interpreterPath := interpreterPath(dir)
err := os.Mkdir(filepath.Dir(interpreterPath), 0755)
require.NoError(t, err)
err = os.WriteFile(interpreterPath, []byte(""), 0755)
require.NoError(t, err)
err = os.WriteFile(filepath.Join(dir, "pyvenv.cfg"), []byte(""), 0755)
require.NoError(t, err)
executable, err := DetectVEnvExecutable(dir)
assert.NoError(t, err)
assert.Equal(t, interpreterPath, executable)
}
func TestDetectVEnvExecutable_badLayout(t *testing.T) {
dir := t.TempDir()
_, err := DetectVEnvExecutable(dir)
assert.Errorf(t, err, "can't find %q, check if virtualenv is created", interpreterPath(dir))
}
func interpreterPath(venvPath string) string {
if runtime.GOOS == "windows" {
return filepath.Join(venvPath, "Scripts", "python3.exe")
} else {
return filepath.Join(venvPath, "bin", "python3")
}
}