summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Heon <matthew.heon@gmail.com>2018-08-21 09:23:28 -0400
committerAtomic Bot <atomic-devel@projectatomic.io>2018-08-22 11:48:43 +0000
commitb4420e22fc838fd2bd9712d476656ed6e891d4c8 (patch)
treeb016d1b1c00506d715e3c6238dad5239b11f5f21
parent149481a57184becf3e9be329d253602654414118 (diff)
downloadpodman-b4420e22fc838fd2bd9712d476656ed6e891d4c8.tar.gz
podman-b4420e22fc838fd2bd9712d476656ed6e891d4c8.tar.bz2
podman-b4420e22fc838fd2bd9712d476656ed6e891d4c8.zip
Fix a bug with hook ALWAYS matching with a process
When a non-nil process was used and a hook was set to match always, this would not actually match. Fix this. Fixes: #1308 Signed-off-by: Matthew Heon <matthew.heon@gmail.com> Closes: #1311 Approved by: rhatdan
-rw-r--r--pkg/hooks/1.0.0/when.go2
-rw-r--r--pkg/hooks/1.0.0/when_test.go22
2 files changed, 15 insertions, 9 deletions
diff --git a/pkg/hooks/1.0.0/when.go b/pkg/hooks/1.0.0/when.go
index a4870d0fa..a65af048e 100644
--- a/pkg/hooks/1.0.0/when.go
+++ b/pkg/hooks/1.0.0/when.go
@@ -74,7 +74,7 @@ func (when *When) Match(config *rspec.Spec, annotations map[string]string, hasBi
}
}
- if config.Process != nil {
+ if config.Process != nil && len(when.Commands) > 0 {
if len(config.Process.Args) == 0 {
return false, errors.New("process.args must have at least one entry")
}
diff --git a/pkg/hooks/1.0.0/when_test.go b/pkg/hooks/1.0.0/when_test.go
index 61e725c8c..7187b297b 100644
--- a/pkg/hooks/1.0.0/when_test.go
+++ b/pkg/hooks/1.0.0/when_test.go
@@ -24,16 +24,22 @@ func TestNoMatch(t *testing.T) {
func TestAlways(t *testing.T) {
config := &rspec.Spec{}
+ processStruct := &rspec.Process{
+ Args: []string{"/bin/sh", "a", "b"},
+ }
for _, always := range []bool{true, false} {
for _, or := range []bool{true, false} {
- t.Run(fmt.Sprintf("always %t, or %t", always, or), func(t *testing.T) {
- when := When{Always: &always, Or: or}
- match, err := when.Match(config, map[string]string{}, false)
- if err != nil {
- t.Fatal(err)
- }
- assert.Equal(t, always, match)
- })
+ for _, process := range []*rspec.Process{processStruct, nil} {
+ t.Run(fmt.Sprintf("always %t, or %t, has process %t", always, or, (process != nil)), func(t *testing.T) {
+ config.Process = process
+ when := When{Always: &always, Or: or}
+ match, err := when.Match(config, map[string]string{}, false)
+ if err != nil {
+ t.Fatal(err)
+ }
+ assert.Equal(t, always, match)
+ })
+ }
}
}
}