Issue #3123 has been reported by Chris Blumentritt.

----------------------------------------
Bug #3123: onlyif and unless do not work when using subshell with in the 
statement
http://projects.reductivelabs.com/issues/3123

Author: Chris Blumentritt
Status: Unreviewed
Priority: Normal
Assigned to: 
Category: exec
Target version: 
Affected version: 0.25.3
Keywords: 
Branch: 


Feel free to change that subject as I don't really know how to explain the 
problem.  I have a situation where I have to diff the output of commands.  This 
can be done by doing something like:

diff <(echo a) <(echo a)

This will return an exit status of 0

diff <(echo a) <(echo b)

This will return an exit status of 1

unless and only if seems to ignore this and always run the command specified in 
the exec statement

Attached is a manifest to reproduce the problem.  Below is a debug trace of the 
out put when running the attached manifest.  I have verified this with 0.25.1 
and 0.25.3 on karmic and 0.25.3 in snow leopard (those are the only versions I 
tried).

tornado:scratch$ puppet --trace --debug exectest.pp 
debug: Creating default schedules
debug: Failed to load library 'shadow' for feature 'libshadow'
debug: Failed to load library 'selinux' for feature 'selinux'
info: Applying configuration version '1264667348'
debug: //Exec[test unless exit 1]: Executing check 'diff -q <(echo a) <(echo b)'
debug: Executing 'diff -q <(echo a) <(echo b)'
debug: //Exec[test unless exit 1]: Changing returns
debug: //Exec[test unless exit 1]: 1 change(s)
debug: //Exec[test unless exit 1]: Executing 'echo foo > /tmp/exec-unless1'
debug: Executing 'echo foo > /tmp/exec-unless1'
notice: //Exec[test unless exit 1]/returns: executed successfully
debug: //Exec[test unless exit 0]: Executing check 'diff -q <(echo a) <(echo a)'
debug: Executing 'diff -q <(echo a) <(echo a)'
debug: //Exec[test unless exit 0]: Changing returns
debug: //Exec[test unless exit 0]: 1 change(s)
debug: //Exec[test unless exit 0]: Executing 'echo foo > /tmp/exec-unless0'
debug: Executing 'echo foo > /tmp/exec-unless0'
notice: //Exec[test unless exit 0]/returns: executed successfully
debug: //Exec[test onlyif exit 0]: Executing check 'diff -q <(echo a) <(echo a)'
debug: Executing 'diff -q <(echo a) <(echo a)'
debug: //Exec[test onlyif exit 0]: Changing returns
debug: //Exec[test onlyif exit 0]: 1 change(s)
debug: //Exec[test onlyif exit 0]: Executing 'echo foo > /tmp/exec-onlyif0'
debug: Executing 'echo foo > /tmp/exec-onlyif0'
notice: //Exec[test onlyif exit 0]/returns: executed successfully
debug: //Exec[test onlyif  exit 1]: Executing check 'diff -q <(echo a) <(echo 
b)'
debug: Executing 'diff -q <(echo a) <(echo b)'
debug: //Exec[test onlyif  exit 1]: Changing returns
debug: //Exec[test onlyif  exit 1]: 1 change(s)
debug: //Exec[test onlyif  exit 1]: Executing 'echo foo > /tmp/exec-onlyif1'
debug: Executing 'echo foo > /tmp/exec-onlyif1'
notice: //Exec[test onlyif  exit 1]/returns: executed successfully
debug: Finishing transaction 2166971880 with 4 changes





-- 
You have received this notification because you have either subscribed to it, 
or are involved in it.
To change your notification preferences, please click here: 
http://reductivelabs.com/redmine/my/account

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Bugs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-bugs?hl=en.

Reply via email to