mirror of https://github.com/databricks/cli.git
47 lines
1.0 KiB
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")
|
||
|
}
|
||
|
}
|