mirror of https://github.com/databricks/cli.git
Add acceptance test for 'experimental.scripts' (#2240)
This commit is contained in:
parent
67d1413db5
commit
be908ee1a1
|
@ -0,0 +1,11 @@
|
||||||
|
bundle:
|
||||||
|
name: scripts
|
||||||
|
|
||||||
|
experimental:
|
||||||
|
scripts:
|
||||||
|
preinit: "python3 ./myscript.py $EXITCODE preinit"
|
||||||
|
postinit: "python3 ./myscript.py 0 postinit"
|
||||||
|
prebuild: "python3 ./myscript.py 0 prebuild"
|
||||||
|
postbuild: "python3 ./myscript.py 0 postbuild"
|
||||||
|
predeploy: "python3 ./myscript.py 0 predeploy"
|
||||||
|
postdeploy: "python3 ./myscript.py 0 postdeploy"
|
|
@ -0,0 +1,8 @@
|
||||||
|
import sys
|
||||||
|
|
||||||
|
info = " ".join(sys.argv[1:])
|
||||||
|
sys.stderr.write(f"from myscript.py {info}: hello stderr!\n")
|
||||||
|
sys.stdout.write(f"from myscript.py {info}: hello stdout!\n")
|
||||||
|
|
||||||
|
exitcode = int(sys.argv[1])
|
||||||
|
sys.exit(exitcode)
|
|
@ -0,0 +1,52 @@
|
||||||
|
|
||||||
|
>>> EXITCODE=0 errcode $CLI bundle validate
|
||||||
|
Executing 'preinit' script
|
||||||
|
from myscript.py 0 preinit: hello stdout!
|
||||||
|
from myscript.py 0 preinit: hello stderr!
|
||||||
|
Executing 'postinit' script
|
||||||
|
from myscript.py 0 postinit: hello stdout!
|
||||||
|
from myscript.py 0 postinit: hello stderr!
|
||||||
|
Name: scripts
|
||||||
|
Target: default
|
||||||
|
Workspace:
|
||||||
|
User: $USERNAME
|
||||||
|
Path: /Workspace/Users/$USERNAME/.bundle/scripts/default
|
||||||
|
|
||||||
|
Validation OK!
|
||||||
|
|
||||||
|
>>> EXITCODE=1 errcode $CLI bundle validate
|
||||||
|
Executing 'preinit' script
|
||||||
|
from myscript.py 1 preinit: hello stdout!
|
||||||
|
from myscript.py 1 preinit: hello stderr!
|
||||||
|
Error: failed to execute script: exit status 1
|
||||||
|
|
||||||
|
Name: scripts
|
||||||
|
|
||||||
|
Found 1 error
|
||||||
|
|
||||||
|
Exit code: 1
|
||||||
|
|
||||||
|
>>> EXITCODE=0 errcode $CLI bundle deploy
|
||||||
|
Executing 'preinit' script
|
||||||
|
from myscript.py 0 preinit: hello stdout!
|
||||||
|
from myscript.py 0 preinit: hello stderr!
|
||||||
|
Executing 'postinit' script
|
||||||
|
from myscript.py 0 postinit: hello stdout!
|
||||||
|
from myscript.py 0 postinit: hello stderr!
|
||||||
|
Executing 'prebuild' script
|
||||||
|
from myscript.py 0 prebuild: hello stdout!
|
||||||
|
from myscript.py 0 prebuild: hello stderr!
|
||||||
|
Executing 'postbuild' script
|
||||||
|
from myscript.py 0 postbuild: hello stdout!
|
||||||
|
from myscript.py 0 postbuild: hello stderr!
|
||||||
|
Executing 'predeploy' script
|
||||||
|
from myscript.py 0 predeploy: hello stdout!
|
||||||
|
from myscript.py 0 predeploy: hello stderr!
|
||||||
|
Error: unable to deploy to /Workspace/Users/$USERNAME/.bundle/scripts/default/state as $USERNAME.
|
||||||
|
Please make sure the current user or one of their groups is listed under the permissions of this bundle.
|
||||||
|
For assistance, contact the owners of this project.
|
||||||
|
They may need to redeploy the bundle to apply the new permissions.
|
||||||
|
Please refer to https://docs.databricks.com/dev-tools/bundles/permissions.html for more on managing permissions.
|
||||||
|
|
||||||
|
|
||||||
|
Exit code: 1
|
|
@ -0,0 +1,3 @@
|
||||||
|
trace EXITCODE=0 errcode $CLI bundle validate
|
||||||
|
trace EXITCODE=1 errcode $CLI bundle validate
|
||||||
|
trace EXITCODE=0 errcode $CLI bundle deploy
|
|
@ -146,4 +146,8 @@ func AddHandlers(server *TestServer) {
|
||||||
},
|
},
|
||||||
}, nil
|
}, nil
|
||||||
})
|
})
|
||||||
|
|
||||||
|
server.Handle("POST /api/2.0/workspace/mkdirs", func(r *http.Request) (any, error) {
|
||||||
|
return "{}", nil
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,51 +0,0 @@
|
||||||
package scripts
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bufio"
|
|
||||||
"context"
|
|
||||||
"strings"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/databricks/cli/bundle"
|
|
||||||
"github.com/databricks/cli/bundle/config"
|
|
||||||
"github.com/databricks/cli/libs/exec"
|
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestExecutesHook(t *testing.T) {
|
|
||||||
b := &bundle.Bundle{
|
|
||||||
Config: config.Root{
|
|
||||||
Experimental: &config.Experimental{
|
|
||||||
Scripts: map[config.ScriptHook]config.Command{
|
|
||||||
config.ScriptPreBuild: "echo 'Hello'",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
executor, err := exec.NewCommandExecutor(b.BundleRootPath)
|
|
||||||
require.NoError(t, err)
|
|
||||||
_, out, err := executeHook(context.Background(), executor, b, config.ScriptPreBuild)
|
|
||||||
require.NoError(t, err)
|
|
||||||
|
|
||||||
reader := bufio.NewReader(out)
|
|
||||||
line, err := reader.ReadString('\n')
|
|
||||||
|
|
||||||
require.NoError(t, err)
|
|
||||||
require.Equal(t, "Hello", strings.TrimSpace(line))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestExecuteMutator(t *testing.T) {
|
|
||||||
b := &bundle.Bundle{
|
|
||||||
Config: config.Root{
|
|
||||||
Experimental: &config.Experimental{
|
|
||||||
Scripts: map[config.ScriptHook]config.Command{
|
|
||||||
config.ScriptPreBuild: "echo 'Hello'",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
diags := bundle.Apply(context.Background(), b, Execute(config.ScriptPreInit))
|
|
||||||
require.NoError(t, diags.Error())
|
|
||||||
}
|
|
Loading…
Reference in New Issue