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
|
||||
})
|
||||
|
||||
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