-
Bug
-
Resolution: Unresolved
-
Minor
-
Jenkins 2.9, Docker container, Oracle OpenJDK 1.8.0_91-8u91-b14-1~bpo8+1-b14 64-Bit Server VM, Linux 4.4.0-47-generic
A Jenkins pipeline script combining two String values with a logical AND (&& operator) does not behave as expected:
'' && '' -> false 'a' && 'b' -> 'b' 'a' != '' && 'b != '' -> true
So when combining two non empty values the result is not of type boolean but the second value of type String.
The following script demonstrates this behavior:
node { def doit = { String s1, String s2 -> def p = { v -> "'$v' (${v.class})" } echo "s1 = ${p s1}, s2 = ${p s2}" echo "s1 && s2 = ${p s1 && s2}" echo "s1 != '' && s2 != '' = ${p s1 != '' && s2 != ''}" } doit '', '' doit 'foo', 'bar' }
Console of an example run in my environment: