Add support for negative requirements
This change adds support for false matching of requirements. To make
this useful you can now require all approvals match a requirement or
only one (ie any).
Therefore depreciate require-approvals, replacing with
require-approvals-any and a new require-approvals-all.
Change-Id: I458e677315ccb90d64cd0c0e734951141324a9c3
diff --git a/tests/fixtures/layout-requirement-all.yaml b/tests/fixtures/layout-requirement-all.yaml
new file mode 100644
index 0000000..968739d
--- /dev/null
+++ b/tests/fixtures/layout-requirement-all.yaml
@@ -0,0 +1,41 @@
+pipelines:
+ - name: pipeline
+ manager: IndependentPipelineManager
+ require:
+ all-approvals:
+ - username: jenkins
+ verified: [1, 2]
+ - verified: "![-1, -2]"
+ trigger:
+ gerrit:
+ - event: comment-added
+ success:
+ gerrit:
+ verified: 1
+ failure:
+ gerrit:
+ verified: -1
+
+ - name: trigger
+ manager: IndependentPipelineManager
+ trigger:
+ gerrit:
+ - event: comment-added
+ require-all-approvals:
+ - username: jenkins
+ verified: [1, 2]
+ - verified: "![-1, -2]"
+ success:
+ gerrit:
+ verified: 1
+ failure:
+ gerrit:
+ verified: -1
+
+projects:
+ - name: org/project1
+ pipeline:
+ - project1-pipeline
+ - name: org/project2
+ trigger:
+ - project2-trigger
diff --git a/tests/fixtures/layout-requirement-any.yaml b/tests/fixtures/layout-requirement-any.yaml
new file mode 100644
index 0000000..6275d8d
--- /dev/null
+++ b/tests/fixtures/layout-requirement-any.yaml
@@ -0,0 +1,43 @@
+pipelines:
+ - name: pipeline
+ manager: IndependentPipelineManager
+ require:
+ any-approval:
+ - username: jenkins
+ verified: [1, 2]
+ - username: core-reviewer
+ code-review: "![-1, -2]"
+ trigger:
+ gerrit:
+ - event: comment-added
+ success:
+ gerrit:
+ verified: 1
+ failure:
+ gerrit:
+ verified: -1
+
+ - name: trigger
+ manager: IndependentPipelineManager
+ trigger:
+ gerrit:
+ - event: comment-added
+ require-any-approval:
+ - username: jenkins
+ verified: [1, 2]
+ - username: core-reviewer
+ code-review: "![-1, -2]"
+ success:
+ gerrit:
+ verified: 1
+ failure:
+ gerrit:
+ verified: -1
+
+projects:
+ - name: org/project1
+ pipeline:
+ - project1-pipeline
+ - name: org/project2
+ trigger:
+ - project2-trigger
diff --git a/tests/fixtures/layout-requirement-email.yaml b/tests/fixtures/layout-requirement-email.yaml
index 4bfb733..dadcd6c 100644
--- a/tests/fixtures/layout-requirement-email.yaml
+++ b/tests/fixtures/layout-requirement-email.yaml
@@ -2,7 +2,7 @@
- name: pipeline
manager: IndependentPipelineManager
require:
- approval:
+ any-approval:
- email: jenkins@example.com
trigger:
gerrit:
@@ -19,7 +19,7 @@
trigger:
gerrit:
- event: comment-added
- require-approval:
+ require-any-approval:
- email: jenkins@example.com
success:
gerrit:
diff --git a/tests/fixtures/layout-requirement-negative-username.yaml b/tests/fixtures/layout-requirement-negative-username.yaml
new file mode 100644
index 0000000..f542b86
--- /dev/null
+++ b/tests/fixtures/layout-requirement-negative-username.yaml
@@ -0,0 +1,37 @@
+pipelines:
+ - name: pipeline
+ manager: IndependentPipelineManager
+ require:
+ all-approvals:
+ - username: '!jenkins'
+ trigger:
+ gerrit:
+ - event: comment-added
+ success:
+ gerrit:
+ verified: 1
+ failure:
+ gerrit:
+ verified: -1
+
+ - name: trigger
+ manager: IndependentPipelineManager
+ trigger:
+ gerrit:
+ - event: comment-added
+ require-all-approvals:
+ - username: '!jenkins'
+ success:
+ gerrit:
+ verified: 1
+ failure:
+ gerrit:
+ verified: -1
+
+projects:
+ - name: org/project1
+ pipeline:
+ - project1-pipeline
+ - name: org/project2
+ trigger:
+ - project2-trigger
\ No newline at end of file
diff --git a/tests/fixtures/layout-requirement-newer-than.yaml b/tests/fixtures/layout-requirement-newer-than.yaml
index b6beb35..f723c79 100644
--- a/tests/fixtures/layout-requirement-newer-than.yaml
+++ b/tests/fixtures/layout-requirement-newer-than.yaml
@@ -2,7 +2,7 @@
- name: pipeline
manager: IndependentPipelineManager
require:
- approval:
+ any-approval:
- username: jenkins
newer-than: 48h
trigger:
@@ -20,7 +20,7 @@
trigger:
gerrit:
- event: comment-added
- require-approval:
+ require-any-approval:
- username: jenkins
newer-than: 48h
success:
diff --git a/tests/fixtures/layout-requirement-older-than.yaml b/tests/fixtures/layout-requirement-older-than.yaml
index 2edf9df..0e011cc 100644
--- a/tests/fixtures/layout-requirement-older-than.yaml
+++ b/tests/fixtures/layout-requirement-older-than.yaml
@@ -2,7 +2,7 @@
- name: pipeline
manager: IndependentPipelineManager
require:
- approval:
+ any-approval:
- username: jenkins
older-than: 48h
trigger:
@@ -20,7 +20,7 @@
trigger:
gerrit:
- event: comment-added
- require-approval:
+ require-any-approval:
- username: jenkins
older-than: 48h
success:
diff --git a/tests/fixtures/layout-requirement-username.yaml b/tests/fixtures/layout-requirement-username.yaml
index 7a549f0..8520179 100644
--- a/tests/fixtures/layout-requirement-username.yaml
+++ b/tests/fixtures/layout-requirement-username.yaml
@@ -2,7 +2,7 @@
- name: pipeline
manager: IndependentPipelineManager
require:
- approval:
+ any-approval:
- username: jenkins
trigger:
gerrit:
@@ -19,7 +19,7 @@
trigger:
gerrit:
- event: comment-added
- require-approval:
+ require-any-approval:
- username: jenkins
success:
gerrit:
diff --git a/tests/fixtures/layout-requirement-vote.yaml b/tests/fixtures/layout-requirement-vote.yaml
index 7ccadff..6736e98 100644
--- a/tests/fixtures/layout-requirement-vote.yaml
+++ b/tests/fixtures/layout-requirement-vote.yaml
@@ -2,7 +2,7 @@
- name: pipeline
manager: IndependentPipelineManager
require:
- approval:
+ any-approval:
- username: jenkins
verified: 1
trigger:
@@ -20,7 +20,7 @@
trigger:
gerrit:
- event: comment-added
- require-approval:
+ require-any-approval:
- username: jenkins
verified: 1
success:
diff --git a/tests/fixtures/layout-requirement-vote1.yaml b/tests/fixtures/layout-requirement-vote1.yaml
index 7ccadff..6736e98 100644
--- a/tests/fixtures/layout-requirement-vote1.yaml
+++ b/tests/fixtures/layout-requirement-vote1.yaml
@@ -2,7 +2,7 @@
- name: pipeline
manager: IndependentPipelineManager
require:
- approval:
+ any-approval:
- username: jenkins
verified: 1
trigger:
@@ -20,7 +20,7 @@
trigger:
gerrit:
- event: comment-added
- require-approval:
+ require-any-approval:
- username: jenkins
verified: 1
success:
diff --git a/tests/fixtures/layout-requirement-vote2.yaml b/tests/fixtures/layout-requirement-vote2.yaml
index 33d84d1..a6cd6a3 100644
--- a/tests/fixtures/layout-requirement-vote2.yaml
+++ b/tests/fixtures/layout-requirement-vote2.yaml
@@ -2,7 +2,7 @@
- name: pipeline
manager: IndependentPipelineManager
require:
- approval:
+ any-approval:
- username: jenkins
verified: [1, 2]
trigger:
@@ -20,7 +20,7 @@
trigger:
gerrit:
- event: comment-added
- require-approval:
+ require-any-approval:
- username: jenkins
verified: [1, 2]
success: