Merge pull request #25811 from hashicorp/terraform-version-order
terraform version: fix output order
This commit is contained in:
commit
6486b857d6
|
@ -53,6 +53,7 @@ Options:
|
||||||
|
|
||||||
func (c *VersionCommand) Run(args []string) int {
|
func (c *VersionCommand) Run(args []string) int {
|
||||||
var outdated bool
|
var outdated bool
|
||||||
|
var latest string
|
||||||
var versionString bytes.Buffer
|
var versionString bytes.Buffer
|
||||||
args = c.Meta.process(args)
|
args = c.Meta.process(args)
|
||||||
var jsonOutput bool
|
var jsonOutput bool
|
||||||
|
@ -113,13 +114,7 @@ func (c *VersionCommand) Run(args []string) int {
|
||||||
}
|
}
|
||||||
if info.Outdated {
|
if info.Outdated {
|
||||||
outdated = true
|
outdated = true
|
||||||
if !jsonOutput {
|
latest = info.Latest
|
||||||
c.Ui.Output(fmt.Sprintf(
|
|
||||||
"\nYour version of Terraform is out of date! The latest version\n"+
|
|
||||||
"is %s. You can update by downloading from https://www.terraform.io/downloads.html",
|
|
||||||
info.Latest))
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,6 +154,12 @@ func (c *VersionCommand) Run(args []string) int {
|
||||||
c.Ui.Output(str)
|
c.Ui.Output(str)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if outdated {
|
||||||
|
c.Ui.Output(fmt.Sprintf(
|
||||||
|
"\nYour version of Terraform is out of date! The latest version\n"+
|
||||||
|
"is %s. You can update by downloading from https://www.terraform.io/downloads.html",
|
||||||
|
latest))
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -85,6 +85,29 @@ func TestVersion_flags(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestVersion_outdated(t *testing.T) {
|
||||||
|
ui := new(cli.MockUi)
|
||||||
|
m := Meta{
|
||||||
|
Ui: ui,
|
||||||
|
}
|
||||||
|
|
||||||
|
c := &VersionCommand{
|
||||||
|
Meta: m,
|
||||||
|
Version: "4.5.6",
|
||||||
|
CheckFunc: mockVersionCheckFunc(true, "4.5.7"),
|
||||||
|
}
|
||||||
|
|
||||||
|
if code := c.Run([]string{}); code != 0 {
|
||||||
|
t.Fatalf("bad: \n%s", ui.ErrorWriter.String())
|
||||||
|
}
|
||||||
|
|
||||||
|
actual := strings.TrimSpace(ui.OutputWriter.String())
|
||||||
|
expected := "Terraform v4.5.6\n\nYour version of Terraform is out of date! The latest version\nis 4.5.7. You can update by downloading from https://www.terraform.io/downloads.html"
|
||||||
|
if actual != expected {
|
||||||
|
t.Fatalf("wrong output\ngot: %#v\nwant: %#v", actual, expected)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestVersion_json(t *testing.T) {
|
func TestVersion_json(t *testing.T) {
|
||||||
fixtureDir := "testdata/providers-schema/basic"
|
fixtureDir := "testdata/providers-schema/basic"
|
||||||
td := tempDir(t)
|
td := tempDir(t)
|
||||||
|
@ -150,3 +173,36 @@ func TestVersion_json(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestVersion_jsonoutdated(t *testing.T) {
|
||||||
|
ui := new(cli.MockUi)
|
||||||
|
m := Meta{
|
||||||
|
Ui: ui,
|
||||||
|
}
|
||||||
|
|
||||||
|
c := &VersionCommand{
|
||||||
|
Meta: m,
|
||||||
|
Version: "4.5.6",
|
||||||
|
CheckFunc: mockVersionCheckFunc(true, "4.5.7"),
|
||||||
|
}
|
||||||
|
|
||||||
|
if code := c.Run([]string{"-json"}); code != 0 {
|
||||||
|
t.Fatalf("bad: \n%s", ui.ErrorWriter.String())
|
||||||
|
}
|
||||||
|
|
||||||
|
actual := strings.TrimSpace(ui.OutputWriter.String())
|
||||||
|
expected := "{\n \"terraform_version\": \"4.5.6\",\n \"terraform_revision\": \"\",\n \"provider_selections\": {},\n \"terraform_outdated\": true\n}"
|
||||||
|
if actual != expected {
|
||||||
|
t.Fatalf("wrong output\ngot: %#v\nwant: %#v", actual, expected)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func mockVersionCheckFunc(outdated bool, latest string) VersionCheckFunc {
|
||||||
|
return func() (VersionCheckInfo, error) {
|
||||||
|
return VersionCheckInfo{
|
||||||
|
Outdated: outdated,
|
||||||
|
Latest: latest,
|
||||||
|
// Alerts is not used by version command
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue