forked from hashicorp/packer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinstall_test.go
104 lines (85 loc) · 3.87 KB
/
install_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package packer_test
func (ts *PackerTestSuite) TestInstallPluginWithMetadata() {
tempPluginDir, cleanup := ts.MakePluginDir()
defer cleanup()
ts.Run("install plugin with metadata in version", func() {
ts.PackerCommand().UsePluginDir(tempPluginDir).
SetArgs("plugins", "install", "--path", BuildSimplePlugin("1.0.0+metadata", ts.T()), "github.com/hashicorp/tester").
Assert(MustSucceed(), Grep("Successfully installed plugin", grepStdout))
})
ts.Run("metadata plugin installed must not have metadata in its path", func() {
ts.PackerCommand().UsePluginDir(tempPluginDir).
SetArgs("plugins", "installed").
Assert(MustSucceed(), Grep("packer-plugin-tester_v1.0.0[^+]", grepStdout))
})
ts.Run("plugin with metadata should work with validate", func() {
ts.PackerCommand().UsePluginDir(tempPluginDir).
SetArgs("validate", "./templates/simple.pkr.hcl").
Assert(MustSucceed(), Grep("packer-plugin-tester_v1.0.0[^+][^\\n]+plugin:", grepStderr))
})
ts.Run("plugin with metadata should work with build", func() {
ts.PackerCommand().UsePluginDir(tempPluginDir).
SetArgs("build", "./templates/simple.pkr.hcl").
Assert(MustSucceed(), Grep("packer-plugin-tester_v1.0.0[^+][^\\n]+plugin:", grepStderr))
})
}
func (ts *PackerTestSuite) TestInstallPluginWithPath() {
tempPluginDir, cleanup := ts.MakePluginDir()
defer cleanup()
ts.Run("install plugin with pre-release only", func() {
ts.PackerCommand().UsePluginDir(tempPluginDir).
SetArgs("plugins", "install", "--path", BuildSimplePlugin("1.0.0-dev", ts.T()), "github.com/hashicorp/tester").
Assert(MustSucceed(), Grep("Successfully installed plugin", grepStdout))
})
ts.Run("install same plugin with pre-release + metadata", func() {
ts.PackerCommand().UsePluginDir(tempPluginDir).
SetArgs("plugins", "install", "--path", BuildSimplePlugin("1.0.0-dev+metadata", ts.T()), "github.com/hashicorp/tester").
Assert(MustSucceed(), Grep("Successfully installed plugin", grepStdout))
})
ts.Run("list plugins, should only report one plugin", func() {
ts.PackerCommand().UsePluginDir(tempPluginDir).
SetArgs("plugins", "installed").
Assert(MustSucceed(),
Grep("plugin-tester_v1.0.0-dev[^+]", grepStdout),
Grep("plugin-tester_v1.0.0-dev\\+", grepStdout, grepInvert),
LineCountCheck(1))
})
}
func (ts *PackerTestSuite) TestInstallPluginPrerelease() {
pluginPath := BuildSimplePlugin("1.0.1-alpha1", ts.T())
pluginDir, cleanup := ts.MakePluginDir()
defer cleanup()
ts.Run("try install plugin with alpha1 prerelease - should fail", func() {
ts.PackerCommand().UsePluginDir(pluginDir).
SetArgs("plugins", "install", "--path", pluginPath, "github.com/hashicorp/tester").
Assert(MustFail(), Grep("Packer can only install plugin releases with this command", grepStdout))
})
}
func (ts *PackerTestSuite) TestRemoteInstallWithPluginsInstall() {
ts.SkipNoAcc()
pluginPath, cleanup := ts.MakePluginDir()
defer cleanup()
ts.Run("install latest version of a remote plugin with packer plugins install", func() {
ts.PackerCommand().UsePluginDir(pluginPath).
SetArgs("plugins", "install", "github.com/hashicorp/hashicups").
Assert(MustSucceed())
})
}
func (ts *PackerTestSuite) TestRemoteInstallOfPreReleasePlugin() {
ts.SkipNoAcc()
pluginPath, cleanup := ts.MakePluginDir()
defer cleanup()
ts.Run("try to init with a pre-release constraint - should fail", func() {
ts.PackerCommand().UsePluginDir(pluginPath).
SetArgs("init", "templates/pre-release_constraint.pkr.hcl").
Assert(MustFail(),
Grep("Invalid version constraint", grepStdout),
Grep("Unsupported prerelease for constraint", grepStdout))
})
ts.Run("try to plugins install with a pre-release version - should fail", func() {
ts.PackerCommand().UsePluginDir(pluginPath).
SetArgs("plugin", "install", "github.com/hashicorp/hashicups", "1.0.2-dev").
Assert(MustFail(),
Grep("Unsupported prerelease for constraint", grepStdout))
})
}