Cleanup approval requirement testing

On further inspection, trigger requirements will still be required
for parts of the kind of pipeline construction that we are using in
OpenStack; the idea that they could be completely replaced by
pipeline requirements is incorrect.  To that end, un-deprecate
trigger requirements and cleanup the testing of both of them so that
each requirement is tested (relatively) independently.  A small
amount of requirement composition is also tested, though all possible
combinations (a lot!) are not.

Move this testing into a new file for organizational purposes.

Also, support multiple vote values (eg, "+1" or "+2") when requiring
an approval.

Change-Id: I683c9a574ced0e27ced59e62b8059fef2dfd8b20
diff --git a/tests/fixtures/layout-pipeline-requirements.yaml b/tests/fixtures/layout-pipeline-requirements.yaml
deleted file mode 100644
index 1826d88..0000000
--- a/tests/fixtures/layout-pipeline-requirements.yaml
+++ /dev/null
@@ -1,59 +0,0 @@
-includes:
-  - python-file: custom_functions.py
-
-pipelines:
-  - name: check
-    manager: IndependentPipelineManager
-    require:
-      approval:
-        - email-filter: jenkins@example.com
-          older-than: 48h
-      open: True
-    trigger:
-      gerrit:
-        - event: patchset-created
-        - event: comment-added
-    success:
-      gerrit:
-        verified: 1
-    failure:
-      gerrit:
-        verified: -1
-
-  - name: gate
-    manager: DependentPipelineManager
-    failure-message: Build failed.  For information on how to proceed, see http://wiki.example.org/Test_Failures
-    require:
-      status:
-        - NEW
-      approval:
-        - verified: 1
-          username: jenkins
-          newer-than: 48h
-    trigger:
-      gerrit:
-        - event: comment-added
-          approval:
-            - approved: 1
-        - event: comment-added
-          approval:
-            - verified: 1
-    success:
-      gerrit:
-        verified: 2
-        submit: true
-    failure:
-      gerrit:
-        verified: -2
-    start:
-      gerrit:
-        verified: 0
-    precedence: high
-
-projects:
-  - name: org/project
-    merge-mode: cherry-pick
-    check:
-      - project-check
-    gate:
-      - project-gate
diff --git a/tests/fixtures/layout-require-approval.yaml b/tests/fixtures/layout-require-approval.yaml
deleted file mode 100644
index 18eee99..0000000
--- a/tests/fixtures/layout-require-approval.yaml
+++ /dev/null
@@ -1,58 +0,0 @@
-includes:
-  - python-file: custom_functions.py
-
-pipelines:
-  - name: check
-    manager: IndependentPipelineManager
-    trigger:
-      gerrit:
-        - event: patchset-created
-        - event: comment-added
-          require-approval:
-            - email-filter: jenkins@example.com
-              older-than: 48h
-    success:
-      gerrit:
-        verified: 1
-    failure:
-      gerrit:
-        verified: -1
-
-  - name: gate
-    manager: DependentPipelineManager
-    failure-message: Build failed.  For information on how to proceed, see http://wiki.example.org/Test_Failures
-    trigger:
-      gerrit:
-        - event: comment-added
-          require-approval:
-            - verified: 1
-              username: jenkins
-              newer-than: 48h
-          approval:
-            - approved: 1
-        - event: comment-added
-          require-approval:
-            - verified: 1
-              username: jenkins
-              newer-than: 48h
-          approval:
-            - verified: 1
-    success:
-      gerrit:
-        verified: 2
-        submit: true
-    failure:
-      gerrit:
-        verified: -2
-    start:
-      gerrit:
-        verified: 0
-    precedence: high
-
-projects:
-  - name: org/project
-    merge-mode: cherry-pick
-    check:
-      - project-check
-    gate:
-      - project-gate
diff --git a/tests/fixtures/layout-current-patchset.yaml b/tests/fixtures/layout-requirement-current-patchset.yaml
similarity index 82%
rename from tests/fixtures/layout-current-patchset.yaml
rename to tests/fixtures/layout-requirement-current-patchset.yaml
index dc8f768..405077e 100644
--- a/tests/fixtures/layout-current-patchset.yaml
+++ b/tests/fixtures/layout-requirement-current-patchset.yaml
@@ -1,6 +1,3 @@
-includes:
-  - python-file: custom_functions.py
-
 pipelines:
   - name: check
     manager: IndependentPipelineManager
@@ -19,6 +16,5 @@
 
 projects:
   - name: org/project
-    merge-mode: cherry-pick
     check:
       - project-check
diff --git a/tests/fixtures/layout-requirement-email.yaml b/tests/fixtures/layout-requirement-email.yaml
new file mode 100644
index 0000000..6ed7603
--- /dev/null
+++ b/tests/fixtures/layout-requirement-email.yaml
@@ -0,0 +1,37 @@
+pipelines:
+  - name: pipeline
+    manager: IndependentPipelineManager
+    require:
+      approval:
+        - email-filter: jenkins@example.com
+    trigger:
+      gerrit:
+        - event: comment-added
+    success:
+      gerrit:
+        verified: 1
+    failure:
+      gerrit:
+        verified: -1
+
+  - name: trigger
+    manager: IndependentPipelineManager
+    trigger:
+      gerrit:
+        - event: comment-added
+          require-approval:
+            - email-filter: jenkins@example.com
+    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-newer-than.yaml b/tests/fixtures/layout-requirement-newer-than.yaml
new file mode 100644
index 0000000..b6beb35
--- /dev/null
+++ b/tests/fixtures/layout-requirement-newer-than.yaml
@@ -0,0 +1,39 @@
+pipelines:
+  - name: pipeline
+    manager: IndependentPipelineManager
+    require:
+      approval:
+        - username: jenkins
+          newer-than: 48h
+    trigger:
+      gerrit:
+        - event: comment-added
+    success:
+      gerrit:
+        verified: 1
+    failure:
+      gerrit:
+        verified: -1
+
+  - name: trigger
+    manager: IndependentPipelineManager
+    trigger:
+      gerrit:
+        - event: comment-added
+          require-approval:
+            - username: jenkins
+              newer-than: 48h
+    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-older-than.yaml b/tests/fixtures/layout-requirement-older-than.yaml
new file mode 100644
index 0000000..2edf9df
--- /dev/null
+++ b/tests/fixtures/layout-requirement-older-than.yaml
@@ -0,0 +1,39 @@
+pipelines:
+  - name: pipeline
+    manager: IndependentPipelineManager
+    require:
+      approval:
+        - username: jenkins
+          older-than: 48h
+    trigger:
+      gerrit:
+        - event: comment-added
+    success:
+      gerrit:
+        verified: 1
+    failure:
+      gerrit:
+        verified: -1
+
+  - name: trigger
+    manager: IndependentPipelineManager
+    trigger:
+      gerrit:
+        - event: comment-added
+          require-approval:
+            - username: jenkins
+              older-than: 48h
+    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-current-patchset.yaml b/tests/fixtures/layout-requirement-open.yaml
similarity index 75%
copy from tests/fixtures/layout-current-patchset.yaml
copy to tests/fixtures/layout-requirement-open.yaml
index dc8f768..e62719d 100644
--- a/tests/fixtures/layout-current-patchset.yaml
+++ b/tests/fixtures/layout-requirement-open.yaml
@@ -1,11 +1,8 @@
-includes:
-  - python-file: custom_functions.py
-
 pipelines:
   - name: check
     manager: IndependentPipelineManager
     require:
-      current-patchset: True
+      open: True
     trigger:
       gerrit:
         - event: patchset-created
@@ -19,6 +16,5 @@
 
 projects:
   - name: org/project
-    merge-mode: cherry-pick
     check:
       - project-check
diff --git a/tests/fixtures/layout-current-patchset.yaml b/tests/fixtures/layout-requirement-status.yaml
similarity index 75%
copy from tests/fixtures/layout-current-patchset.yaml
copy to tests/fixtures/layout-requirement-status.yaml
index dc8f768..af33468 100644
--- a/tests/fixtures/layout-current-patchset.yaml
+++ b/tests/fixtures/layout-requirement-status.yaml
@@ -1,11 +1,8 @@
-includes:
-  - python-file: custom_functions.py
-
 pipelines:
   - name: check
     manager: IndependentPipelineManager
     require:
-      current-patchset: True
+      status: NEW
     trigger:
       gerrit:
         - event: patchset-created
@@ -19,6 +16,5 @@
 
 projects:
   - name: org/project
-    merge-mode: cherry-pick
     check:
       - project-check
diff --git a/tests/fixtures/layout-requirement-username.yaml b/tests/fixtures/layout-requirement-username.yaml
new file mode 100644
index 0000000..7a549f0
--- /dev/null
+++ b/tests/fixtures/layout-requirement-username.yaml
@@ -0,0 +1,37 @@
+pipelines:
+  - name: pipeline
+    manager: IndependentPipelineManager
+    require:
+      approval:
+        - 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-approval:
+            - username: jenkins
+    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-vote.yaml b/tests/fixtures/layout-requirement-vote.yaml
new file mode 100644
index 0000000..7ccadff
--- /dev/null
+++ b/tests/fixtures/layout-requirement-vote.yaml
@@ -0,0 +1,39 @@
+pipelines:
+  - name: pipeline
+    manager: IndependentPipelineManager
+    require:
+      approval:
+        - username: jenkins
+          verified: 1
+    trigger:
+      gerrit:
+        - event: comment-added
+    success:
+      gerrit:
+        verified: 1
+    failure:
+      gerrit:
+        verified: -1
+
+  - name: trigger
+    manager: IndependentPipelineManager
+    trigger:
+      gerrit:
+        - event: comment-added
+          require-approval:
+            - username: jenkins
+              verified: 1
+    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-vote1.yaml b/tests/fixtures/layout-requirement-vote1.yaml
new file mode 100644
index 0000000..7ccadff
--- /dev/null
+++ b/tests/fixtures/layout-requirement-vote1.yaml
@@ -0,0 +1,39 @@
+pipelines:
+  - name: pipeline
+    manager: IndependentPipelineManager
+    require:
+      approval:
+        - username: jenkins
+          verified: 1
+    trigger:
+      gerrit:
+        - event: comment-added
+    success:
+      gerrit:
+        verified: 1
+    failure:
+      gerrit:
+        verified: -1
+
+  - name: trigger
+    manager: IndependentPipelineManager
+    trigger:
+      gerrit:
+        - event: comment-added
+          require-approval:
+            - username: jenkins
+              verified: 1
+    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-vote2.yaml b/tests/fixtures/layout-requirement-vote2.yaml
new file mode 100644
index 0000000..33d84d1
--- /dev/null
+++ b/tests/fixtures/layout-requirement-vote2.yaml
@@ -0,0 +1,39 @@
+pipelines:
+  - name: pipeline
+    manager: IndependentPipelineManager
+    require:
+      approval:
+        - username: jenkins
+          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-approval:
+            - username: jenkins
+              verified: [1, 2]
+    success:
+      gerrit:
+        verified: 1
+    failure:
+      gerrit:
+        verified: -1
+
+projects:
+  - name: org/project1
+    pipeline:
+      - project1-pipeline
+  - name: org/project2
+    trigger:
+      - project2-trigger