From 6782d655774caccab0c6009dcff33165c574becf Mon Sep 17 00:00:00 2001 From: James Shubin Date: Tue, 16 Apr 2024 14:30:02 -0400 Subject: [PATCH] test: shell, lang: core: embedded: provisioner: Check it compiles Add a test to guarantee we continue to keep compiling, in case something in the language changes. --- lang/core/embedded/provisioner/provisioner.go | 10 ++++++++++ test/shell/embedded-provisioner.sh | 19 +++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100755 test/shell/embedded-provisioner.sh diff --git a/lang/core/embedded/provisioner/provisioner.go b/lang/core/embedded/provisioner/provisioner.go index b194e269..51acb4ce 100644 --- a/lang/core/embedded/provisioner/provisioner.go +++ b/lang/core/embedded/provisioner/provisioner.go @@ -166,6 +166,10 @@ type localArgs struct { // to the user to make sure they exist and don't conflict with each // other or the base installation packages. Packages []string `arg:"--packages" help:"list of additional distro packages to install (comma separated)" func:"cli_packages"` + + // OnlyUnify tells the compiler to stop after type unification. This is + // used for testing. + OnlyUnify bool `arg:"--only-unify" help:"stop after type unification"` } // provisioner is our cli parser translator and general frontend object. @@ -384,6 +388,12 @@ func (obj *provisioner) Customize(a interface{}) (*cli.RunArgs, error) { // Make any changes here that we want to... runArgs.RunLang.SkipUnify = true // speed things up for known good code + if obj.localArgs.OnlyUnify { + obj.init.Logf("stopping after type unification...") + runArgs.RunLang.OnlyUnify = true + runArgs.RunLang.SkipUnify = false // can't skip if we only unify + } + name := simplesolver.Name // TODO: Remove these optimizations when the solver is faster overall. runArgs.RunLang.UnifySolver = &name diff --git a/test/shell/embedded-provisioner.sh b/test/shell/embedded-provisioner.sh new file mode 100755 index 00000000..f061cbd4 --- /dev/null +++ b/test/shell/embedded-provisioner.sh @@ -0,0 +1,19 @@ +#!/bin/bash -e + +. "$(dirname "$0")/../util.sh" + +# misc bash functions, eg: repeat "#" 42 +function repeat() { + for ((i=0; i<$2; ++i)); do echo -n "$1"; done + echo +} + +set -x + +# run unification with a dummy password +$TIMEOUT "$MGMT" provisioner --only-unify --password $(repeat "#" 106) & +pid=$! +wait $pid # get exit status +e=$? + +exit $e