X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/8da2f73faeeecd81f52949451fe07a674ba47df6..37d9f94b06ff367a3514b58ec6f0e4d4d0116030:/lib/config/cmd_test.go diff --git a/lib/config/cmd_test.go b/lib/config/cmd_test.go index bb8d7dca10..a5cc28b80c 100644 --- a/lib/config/cmd_test.go +++ b/lib/config/cmd_test.go @@ -34,7 +34,7 @@ func (s *CommandSuite) TestDump_BadArg(c *check.C) { var stderr bytes.Buffer code := DumpCommand.RunCommand("arvados config-dump", []string{"-badarg"}, bytes.NewBuffer(nil), bytes.NewBuffer(nil), &stderr) c.Check(code, check.Equals, 2) - c.Check(stderr.String(), check.Matches, `(?ms)flag provided but not defined: -badarg\nUsage:\n.*`) + c.Check(stderr.String(), check.Equals, "error parsing command line arguments: flag provided but not defined: -badarg (try -help)\n") } func (s *CommandSuite) TestDump_EmptyInput(c *check.C) { @@ -134,6 +134,18 @@ Clusters: c.Check(stderr.String(), check.Matches, `(?ms).*unexpected object in config entry: Clusters.z1234.PostgreSQL.ConnectionPool"\n.*`) } +func (s *CommandSuite) TestCheck_DuplicateWarnings(c *check.C) { + var stdout, stderr bytes.Buffer + in := ` +Clusters: + z1234: {} +` + code := CheckCommand.RunCommand("arvados config-check", []string{"-config", "-"}, bytes.NewBufferString(in), &stdout, &stderr) + c.Check(code, check.Equals, 1) + c.Check(stderr.String(), check.Matches, `(?ms).*SystemRootToken.*`) + c.Check(stderr.String(), check.Not(check.Matches), `(?ms).*SystemRootToken.*SystemRootToken.*`) +} + func (s *CommandSuite) TestDump_Formatting(c *check.C) { var stdout, stderr bytes.Buffer in := ` @@ -168,3 +180,54 @@ Clusters: c.Check(stdout.String(), check.Matches, `(?ms).*\n *ManagementToken: secret\n.*`) c.Check(stdout.String(), check.Not(check.Matches), `(?ms).*UnknownKey.*`) } + +func (s *CommandSuite) TestDump_KeyOrder(c *check.C) { + in := ` +Clusters: + z1234: + Login: + Test: + Users: + a: {} + d: {} + c: {} + b: {} + e: {} +` + for trial := 0; trial < 20; trial++ { + var stdout, stderr bytes.Buffer + code := DumpCommand.RunCommand("arvados config-dump", []string{"-config", "-"}, bytes.NewBufferString(in), &stdout, &stderr) + c.Assert(code, check.Equals, 0) + if !c.Check(stdout.String(), check.Matches, `(?ms).*a:.*b:.*c:.*d:.*e:.*`) { + c.Logf("config-dump did not use lexical key order on trial %d", trial) + c.Log("stdout:\n", stdout.String()) + c.Log("stderr:\n", stderr.String()) + c.FailNow() + } + } +} + +func (s *CommandSuite) TestCheck_KeyOrder(c *check.C) { + in := ` +Clusters: + z1234: + ManagementToken: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + SystemRootToken: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + Collections: + BlobSigningKey: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + InstanceTypes: + a32a: {} + a48a: {} + a4a: {} +` + for trial := 0; trial < 20; trial++ { + var stdout, stderr bytes.Buffer + code := CheckCommand.RunCommand("arvados config-check", []string{"-config=-", "-strict=true"}, bytes.NewBufferString(in), &stdout, &stderr) + if !c.Check(code, check.Equals, 0) || stdout.String() != "" || stderr.String() != "" { + c.Logf("config-check returned error or non-empty output on trial %d", trial) + c.Log("stdout:\n", stdout.String()) + c.Log("stderr:\n", stderr.String()) + c.FailNow() + } + } +}