Please sign in to comment.
[FIXED JENKINS-37828] Properly reject parallel.
More notably, reject it when it's not the only step in a block. In the JSON representation, we don't even use the term parallel - we just have multiple branches. In the groovy parsing, we look for parallel as the only step in a stage and treat it differently (resulting in multiple branches). So any time we see parallel as a step by the time we get to validation, well, it's wrong. So, yeah.
- Loading branch information
Showing with 102 additions and 53 deletions.
- +5 −1 src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/ast/ModelASTStep.groovy
- +52 −51 src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/validator/ModelValidator.groovy
- +8 −1 src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/ValidatorTest.java
- +37 −0 src/test/resources/errors/rejectParallelMixedInSteps.groovy
|@@ -0,0 +1,37 @@|
|* The MIT License|
|* Copyright (c) 2016, CloudBees, Inc.|
|* Permission is hereby granted, free of charge, to any person obtaining a copy|
|* of this software and associated documentation files (the "Software"), to deal|
|* in the Software without restriction, including without limitation the rights|
|* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell|
|* copies of the Software, and to permit persons to whom the Software is|
|* furnished to do so, subject to the following conditions:|
|* The above copyright notice and this permission notice shall be included in|
|* all copies or substantial portions of the Software.|
|* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR|
|* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,|
|* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE|
|* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER|
|* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,|
|* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN|
|* THE SOFTWARE.|
|parallel([a: "echo '1'",|
|b: "echo '2'"])|