-
Notifications
You must be signed in to change notification settings - Fork 3.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #12510 from hashicorp/backport/warn_on_bundled_plu…
…gin_usage/openly-new-boa This pull request was automerged via backport-assistant
- Loading branch information
Showing
14 changed files
with
603 additions
and
98 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,181 @@ | ||
package plugin | ||
|
||
import ( | ||
_ "embed" | ||
"errors" | ||
"fmt" | ||
"os" | ||
"os/exec" | ||
"strings" | ||
"testing" | ||
|
||
"github.com/hashicorp/go-multierror" | ||
amazonacc "github.com/hashicorp/packer-plugin-amazon/builder/ebs/acceptance" | ||
"github.com/hashicorp/packer-plugin-sdk/acctest" | ||
"github.com/hashicorp/packer/hcl2template/addrs" | ||
) | ||
|
||
//go:embed test-fixtures/basic_amazon_bundled.pkr.hcl | ||
var basicAmazonBundledEbsTemplate string | ||
|
||
func TestAccBuildBundledPlugins(t *testing.T) { | ||
plugin := addrs.Plugin{ | ||
Hostname: "github.com", | ||
Namespace: "hashicorp", | ||
Type: "amazon", | ||
} | ||
testCase := &acctest.PluginTestCase{ | ||
Name: "amazon-ebs_bundled_test", | ||
Setup: func() error { | ||
return cleanupPluginInstallation(plugin) | ||
}, | ||
Teardown: func() error { | ||
helper := amazonacc.AMIHelper{ | ||
Region: "us-east-1", | ||
Name: "packer-plugin-bundled-amazon-ebs-test", | ||
} | ||
return helper.CleanUpAmi() | ||
}, | ||
Template: basicAmazonBundledEbsTemplate, | ||
Type: "amazon-ebs", | ||
Init: false, | ||
Check: func(buildCommand *exec.Cmd, logfile string) error { | ||
if buildCommand.ProcessState != nil { | ||
if buildCommand.ProcessState.ExitCode() != 0 { | ||
return fmt.Errorf("Bad exit code. Logfile: %s", logfile) | ||
} | ||
} | ||
|
||
rawLogs, err := os.ReadFile(logfile) | ||
if err != nil { | ||
return fmt.Errorf("failed to read logs: %s", err) | ||
} | ||
|
||
var errs error | ||
|
||
logs := string(rawLogs) | ||
|
||
if !strings.Contains(logs, "Warning: Bundled plugins used") { | ||
errs = multierror.Append(errs, errors.New("expected warning about bundled plugins used, did not find it")) | ||
} | ||
|
||
if !strings.Contains(logs, "Then run 'packer init' to manage installation of the plugins") { | ||
errs = multierror.Append(errs, errors.New("expected suggestion about packer init in logs, did not find it.")) | ||
} | ||
|
||
return errs | ||
}, | ||
} | ||
|
||
acctest.TestPlugin(t, testCase) | ||
} | ||
|
||
//go:embed test-fixtures/basic_amazon_with_required_plugins.pkr.hcl | ||
var basicAmazonRequiredPluginEbsTemplate string | ||
|
||
func TestAccBuildBundledPluginsWithRequiredPlugins(t *testing.T) { | ||
plugin := addrs.Plugin{ | ||
Hostname: "github.com", | ||
Namespace: "hashicorp", | ||
Type: "amazon", | ||
} | ||
testCase := &acctest.PluginTestCase{ | ||
Name: "amazon-ebs_with_required_plugins_test", | ||
Setup: func() error { | ||
return cleanupPluginInstallation(plugin) | ||
}, | ||
Teardown: func() error { | ||
helper := amazonacc.AMIHelper{ | ||
Region: "us-east-1", | ||
Name: "packer-plugin-required-plugin-amazon-ebs-test", | ||
} | ||
return helper.CleanUpAmi() | ||
}, | ||
Template: basicAmazonRequiredPluginEbsTemplate, | ||
Type: "amazon-ebs", | ||
Init: false, | ||
Check: func(buildCommand *exec.Cmd, logfile string) error { | ||
if buildCommand.ProcessState != nil { | ||
if buildCommand.ProcessState.ExitCode() != 1 { | ||
return fmt.Errorf("Bad exit code. Logfile: %s", logfile) | ||
} | ||
} | ||
|
||
rawLogs, err := os.ReadFile(logfile) | ||
if err != nil { | ||
return fmt.Errorf("failed to read logs: %s", err) | ||
} | ||
|
||
var errs error | ||
|
||
logs := string(rawLogs) | ||
|
||
if strings.Contains(logs, "Warning: Bundled plugins used") { | ||
errs = multierror.Append(errs, errors.New("did not expect warning about bundled plugins used")) | ||
} | ||
|
||
if !strings.Contains(logs, "Missing plugins") { | ||
errs = multierror.Append(errs, errors.New("expected error about plugins required and not installed, did not find it")) | ||
} | ||
|
||
return errs | ||
}, | ||
} | ||
|
||
acctest.TestPlugin(t, testCase) | ||
} | ||
|
||
//go:embed test-fixtures/basic_amazon_bundled.json | ||
var basicAmazonBundledEbsTemplateJSON string | ||
|
||
func TestAccBuildBundledPluginsJSON(t *testing.T) { | ||
plugin := addrs.Plugin{ | ||
Hostname: "github.com", | ||
Namespace: "hashicorp", | ||
Type: "amazon", | ||
} | ||
testCase := &acctest.PluginTestCase{ | ||
Name: "amazon-ebs_bundled_test_json", | ||
Setup: func() error { | ||
return cleanupPluginInstallation(plugin) | ||
}, | ||
Teardown: func() error { | ||
helper := amazonacc.AMIHelper{ | ||
Region: "us-east-1", | ||
Name: "packer-plugin-bundled-amazon-ebs-test-json", | ||
} | ||
return helper.CleanUpAmi() | ||
}, | ||
Template: basicAmazonBundledEbsTemplateJSON, | ||
Type: "amazon-ebs", | ||
Init: false, | ||
Check: func(buildCommand *exec.Cmd, logfile string) error { | ||
if buildCommand.ProcessState != nil { | ||
if buildCommand.ProcessState.ExitCode() != 0 { | ||
return fmt.Errorf("Bad exit code. Logfile: %s", logfile) | ||
} | ||
} | ||
|
||
rawLogs, err := os.ReadFile(logfile) | ||
if err != nil { | ||
return fmt.Errorf("failed to read logs: %s", err) | ||
} | ||
|
||
var errs error | ||
|
||
logs := string(rawLogs) | ||
|
||
if !strings.Contains(logs, "Warning: Bundled plugins used") { | ||
errs = multierror.Append(errs, errors.New("expected warning about bundled plugins, did not find it.")) | ||
} | ||
|
||
if !strings.Contains(logs, "plugins with the 'packer plugins install' command") { | ||
errs = multierror.Append(errs, errors.New("expected suggestion about packer plugins install in logs, did not find it.")) | ||
} | ||
|
||
return errs | ||
}, | ||
} | ||
|
||
acctest.TestPlugin(t, testCase) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
{ | ||
"builders": [{ | ||
"type": "amazon-ebs", | ||
"region": "us-east-1", | ||
"instance_type": "m3.medium", | ||
"source_ami": "ami-76b2a71e", | ||
"ssh_username": "ubuntu", | ||
"ami_name": "packer-plugin-bundled-amazon-ebs-test-json" | ||
}] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
source "amazon-ebs" "basic-test" { | ||
region = "us-east-1" | ||
instance_type = "m3.medium" | ||
source_ami = "ami-76b2a71e" | ||
ssh_username = "ubuntu" | ||
ami_name = "packer-plugin-bundled-amazon-ebs-test" | ||
} | ||
|
||
build { | ||
sources = ["source.amazon-ebs.basic-test"] | ||
} |
20 changes: 20 additions & 0 deletions
20
acctest/plugin/test-fixtures/basic_amazon_with_required_plugins.pkr.hcl
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
packer { | ||
required_plugins { | ||
amazon = { | ||
source = "github.com/hashicorp/amazon", | ||
version = "~> 1" | ||
} | ||
} | ||
} | ||
|
||
source "amazon-ebs" "basic-test" { | ||
region = "us-east-1" | ||
instance_type = "m3.medium" | ||
source_ami = "ami-76b2a71e" | ||
ssh_username = "ubuntu" | ||
ami_name = "packer-plugin-bundled-amazon-ebs-test" | ||
} | ||
|
||
build { | ||
sources = ["source.amazon-ebs.basic-test"] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.