feat(cli): provide parameter values via command line (#8898)

This commit is contained in:
Marcin Tojek
2023-08-09 13:00:25 +02:00
committed by GitHub
parent 1730d35467
commit 0d382d1e05
19 changed files with 684 additions and 249 deletions
+51 -5
View File
@@ -159,7 +159,7 @@ func TestUpdateWithRichParameters(t *testing.T) {
matches := []string{
firstParameterDescription, firstParameterValue,
fmt.Sprintf("Parameter %q is not mutable, so can't be customized after workspace creation.", immutableParameterName), "",
fmt.Sprintf("Parameter %q is not mutable, and cannot be customized after workspace creation.", immutableParameterName), "",
secondParameterDescription, secondParameterValue,
}
for i := 0; i < len(matches); i += 2 {
@@ -236,6 +236,55 @@ func TestUpdateWithRichParameters(t *testing.T) {
Value: ephemeralParameterValue,
})
})
t.Run("BuildOptionFlags", func(t *testing.T) {
t.Parallel()
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
user := coderdtest.CreateFirstUser(t, client)
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, echoResponses)
coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
const workspaceName = "my-workspace"
inv, root := clitest.New(t, "create", workspaceName, "--template", template.Name, "-y",
"--parameter", fmt.Sprintf("%s=%s", firstParameterName, firstParameterValue),
"--parameter", fmt.Sprintf("%s=%s", immutableParameterName, immutableParameterValue),
"--parameter", fmt.Sprintf("%s=%s", secondParameterName, secondParameterValue))
clitest.SetupConfig(t, client, root)
err := inv.Run()
assert.NoError(t, err)
inv, root = clitest.New(t, "update", workspaceName,
"--build-option", fmt.Sprintf("%s=%s", ephemeralParameterName, ephemeralParameterValue))
clitest.SetupConfig(t, client, root)
doneChan := make(chan struct{})
pty := ptytest.New(t).Attach(inv)
go func() {
defer close(doneChan)
err := inv.Run()
assert.NoError(t, err)
}()
pty.ExpectMatch("Planning workspace")
<-doneChan
// Verify if build option is set
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitShort)
defer cancel()
workspace, err := client.WorkspaceByOwnerAndName(ctx, user.UserID.String(), workspaceName, codersdk.WorkspaceOptions{})
require.NoError(t, err)
actualParameters, err := client.WorkspaceBuildParameters(ctx, workspace.LatestBuild.ID)
require.NoError(t, err)
require.Contains(t, actualParameters, codersdk.WorkspaceBuildParameter{
Name: ephemeralParameterName,
Value: ephemeralParameterValue,
})
})
}
func TestUpdateValidateRichParameters(t *testing.T) {
@@ -545,14 +594,11 @@ func TestUpdateValidateRichParameters(t *testing.T) {
}()
matches := []string{
"added_parameter", "",
`Enter a value (default: "foobar")`, "abc",
"Planning workspace...", "",
}
for i := 0; i < len(matches); i += 2 {
match := matches[i]
value := matches[i+1]
pty.ExpectMatch(match)
pty.WriteLine(value)
}
<-doneChan
})