Fix command.RunCustom(...) correctly (#18904)
* Revert "Remove t.Parallel() due to initialization race (#18751)" This reverts commit ebcd65310221aff1dfcb94a571d70e38944006df. We're going to fix this properly, running initCommands exactly once. Signed-off-by: Alexander Scheel <alex.scheel@hashicorp.com> * Prevent parallel testing racing in initCommands(...) When running initCommands(...) from multiple tests, they can potentially race, causing a panic. Test callers needing to set formatting information must use RunCustom(...) instead of directly invoking the test backend directly. When using t.Parallel(...) in these top-level tests, we thus could race. This removes the Commands global variable, making it a local variable instead as nothing else appears to use it. We'll update Enterprise to add in the Enterprise-specific commands to the existing list. Signed-off-by: Alexander Scheel <alex.scheel@hashicorp.com> --------- Signed-off-by: Alexander Scheel <alex.scheel@hashicorp.com>
This commit is contained in:
parent
119e2274fc
commit
9352e30d50
|
@ -219,13 +219,10 @@ var (
|
||||||
"kubernetes": ksr.NewServiceRegistration,
|
"kubernetes": ksr.NewServiceRegistration,
|
||||||
}
|
}
|
||||||
|
|
||||||
initCommandsEnt = func(ui, serverCmdUi cli.Ui, runOpts *RunOptions) {}
|
initCommandsEnt = func(ui, serverCmdUi cli.Ui, runOpts *RunOptions, commands map[string]cli.CommandFactory) {}
|
||||||
)
|
)
|
||||||
|
|
||||||
// Commands is the mapping of all the available commands.
|
func initCommands(ui, serverCmdUi cli.Ui, runOpts *RunOptions) map[string]cli.CommandFactory {
|
||||||
var Commands map[string]cli.CommandFactory
|
|
||||||
|
|
||||||
func initCommands(ui, serverCmdUi cli.Ui, runOpts *RunOptions) {
|
|
||||||
loginHandlers := map[string]LoginHandler{
|
loginHandlers := map[string]LoginHandler{
|
||||||
"alicloud": &credAliCloud.CLIHandler{},
|
"alicloud": &credAliCloud.CLIHandler{},
|
||||||
"aws": &credAws.CLIHandler{},
|
"aws": &credAws.CLIHandler{},
|
||||||
|
@ -258,7 +255,7 @@ func initCommands(ui, serverCmdUi cli.Ui, runOpts *RunOptions) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Commands = map[string]cli.CommandFactory{
|
commands := map[string]cli.CommandFactory{
|
||||||
"agent": func() (cli.Command, error) {
|
"agent": func() (cli.Command, error) {
|
||||||
return &AgentCommand{
|
return &AgentCommand{
|
||||||
BaseCommand: &BaseCommand{
|
BaseCommand: &BaseCommand{
|
||||||
|
@ -841,7 +838,8 @@ func initCommands(ui, serverCmdUi cli.Ui, runOpts *RunOptions) {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
initCommandsEnt(ui, serverCmdUi, runOpts)
|
initCommandsEnt(ui, serverCmdUi, runOpts, commands)
|
||||||
|
return commands
|
||||||
}
|
}
|
||||||
|
|
||||||
// MakeShutdownCh returns a channel that can be used for shutdown
|
// MakeShutdownCh returns a channel that can be used for shutdown
|
||||||
|
|
|
@ -217,14 +217,14 @@ func RunCustom(args []string, runOpts *RunOptions) int {
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
initCommands(ui, serverCmdUi, runOpts)
|
commands := initCommands(ui, serverCmdUi, runOpts)
|
||||||
|
|
||||||
hiddenCommands := []string{"version"}
|
hiddenCommands := []string{"version"}
|
||||||
|
|
||||||
cli := &cli.CLI{
|
cli := &cli.CLI{
|
||||||
Name: "vault",
|
Name: "vault",
|
||||||
Args: args,
|
Args: args,
|
||||||
Commands: Commands,
|
Commands: commands,
|
||||||
HelpFunc: groupedHelpFunc(
|
HelpFunc: groupedHelpFunc(
|
||||||
cli.BasicHelpFunc("vault"),
|
cli.BasicHelpFunc("vault"),
|
||||||
),
|
),
|
||||||
|
|
|
@ -16,6 +16,8 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestPKIHC_AllGood(t *testing.T) {
|
func TestPKIHC_AllGood(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
client, closer := testVaultServer(t)
|
client, closer := testVaultServer(t)
|
||||||
defer closer()
|
defer closer()
|
||||||
|
|
||||||
|
@ -70,6 +72,8 @@ func TestPKIHC_AllGood(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPKIHC_AllBad(t *testing.T) {
|
func TestPKIHC_AllBad(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
client, closer := testVaultServer(t)
|
client, closer := testVaultServer(t)
|
||||||
defer closer()
|
defer closer()
|
||||||
|
|
||||||
|
@ -130,6 +134,8 @@ func TestPKIHC_AllBad(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPKIHC_OnlyIssuer(t *testing.T) {
|
func TestPKIHC_OnlyIssuer(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
client, closer := testVaultServer(t)
|
client, closer := testVaultServer(t)
|
||||||
defer closer()
|
defer closer()
|
||||||
|
|
||||||
|
@ -152,6 +158,8 @@ func TestPKIHC_OnlyIssuer(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPKIHC_NoMount(t *testing.T) {
|
func TestPKIHC_NoMount(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
client, closer := testVaultServer(t)
|
client, closer := testVaultServer(t)
|
||||||
defer closer()
|
defer closer()
|
||||||
|
|
||||||
|
@ -166,6 +174,8 @@ func TestPKIHC_NoMount(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPKIHC_ExpectedEmptyMount(t *testing.T) {
|
func TestPKIHC_ExpectedEmptyMount(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
client, closer := testVaultServer(t)
|
client, closer := testVaultServer(t)
|
||||||
defer closer()
|
defer closer()
|
||||||
|
|
||||||
|
@ -186,6 +196,8 @@ func TestPKIHC_ExpectedEmptyMount(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPKIHC_NoPerm(t *testing.T) {
|
func TestPKIHC_NoPerm(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
client, closer := testVaultServer(t)
|
client, closer := testVaultServer(t)
|
||||||
defer closer()
|
defer closer()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue