Improve integration testing framework, and check that lines are absent

git-svn-id: https://svn.apache.org/repos/asf/creadur/whisker/trunk@1408053 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/apache-whisker-plugin4maven/src/it/example-copyright-notices/verify.groovy b/apache-whisker-plugin4maven/src/it/example-copyright-notices/verify.groovy
index 6098a08..c913c6f 100644
--- a/apache-whisker-plugin4maven/src/it/example-copyright-notices/verify.groovy
+++ b/apache-whisker-plugin4maven/src/it/example-copyright-notices/verify.groovy
@@ -37,10 +37,14 @@
      license.expectThat(aLineContainsMIT())
      license.expectThat(aLineContainsResource("mit.txt"))
      license.expectThat(aLineContainsAL2())
+     license.expectThat(noLineContains("Copyright (c) 9595 The Example Project"))
+     license.expectThat(noLineContains("This product includes software developed at"))
+     license.expectThat(noLineContains("The Example Foundation (http://example.org/)."))
      //license.expectThat(aLineContainsResource("apache.txt"))
      notice = noticeIn(basedir)
      notice.expectThat(aLineContains("Copyright (c) 9595 The Example Project"))
      notice.expectThat(aLineContains("This product includes software developed at"))
      notice.expectThat(aLineContains("The Example Foundation (http://example.org/)."))
+     notice.expectThat(noLineContains("Copyright (c) 2525 The Example Project"))
      return aggregate(license.failures(), notice.failures())
 }
\ No newline at end of file
diff --git a/apache-whisker-plugin4maven/src/test/java/org/apache/creadur/whisker/it/Helpers.java b/apache-whisker-plugin4maven/src/test/java/org/apache/creadur/whisker/it/Helpers.java
index 4e05f32..824aeac 100644
--- a/apache-whisker-plugin4maven/src/test/java/org/apache/creadur/whisker/it/Helpers.java
+++ b/apache-whisker-plugin4maven/src/test/java/org/apache/creadur/whisker/it/Helpers.java
@@ -72,6 +72,10 @@
                 "COMMON DEVELOPMENT AND DISTRIBUTION LICENSE Version 1.0 (CDDL-1.0)");
     }
 
+    public static Check noLineContains(String value) {
+        return new NoLineContainsCheck(value);
+    }
+
     public static Check aLineContains(String value) {
         return new AnyLineContainsCheck(value);
     }
diff --git a/apache-whisker-plugin4maven/src/test/java/org/apache/creadur/whisker/it/NoLineContainsCheck.java b/apache-whisker-plugin4maven/src/test/java/org/apache/creadur/whisker/it/NoLineContainsCheck.java
new file mode 100644
index 0000000..1a75baa
--- /dev/null
+++ b/apache-whisker-plugin4maven/src/test/java/org/apache/creadur/whisker/it/NoLineContainsCheck.java
@@ -0,0 +1,51 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.creadur.whisker.it;
+
+import static org.apache.creadur.whisker.it.Not.*;
+
+public class NoLineContainsCheck implements Check {
+
+    final String value;
+
+    Latch latch = Latch.UP;
+
+    public static final String WARNING = "Text contains incorrect phrase: ";
+
+    public NoLineContainsCheck(String value) {
+        super();
+        this.value = value;
+    }
+
+    public void check(String line) {
+        if (isNotNull(line) && line.contains(value)) {
+            latch = latch.push();
+        }
+    }
+
+    public boolean hasPassed() {
+        return latch == Latch.UP;
+    }
+
+    public void report(Results result) {
+        if (not(hasPassed())) {
+           result.fail(WARNING + value);
+        }
+    }
+}
diff --git a/apache-whisker-plugin4maven/src/test/java/org/apache/creadur/whisker/it/TestNoLineContainsCheck.java b/apache-whisker-plugin4maven/src/test/java/org/apache/creadur/whisker/it/TestNoLineContainsCheck.java
new file mode 100644
index 0000000..87c552d
--- /dev/null
+++ b/apache-whisker-plugin4maven/src/test/java/org/apache/creadur/whisker/it/TestNoLineContainsCheck.java
@@ -0,0 +1,67 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.creadur.whisker.it;
+
+import junit.framework.TestCase;
+
+public class TestNoLineContainsCheck extends TestCase {
+
+    private static final String CHECKED_FOR_VALUE = "some value";
+
+    NoLineContainsCheck subject;
+    Results results;
+
+    public void setUp() {
+        subject = new NoLineContainsCheck(CHECKED_FOR_VALUE);
+        results = new Results();
+    }
+
+    public void testNullLine() {
+        subject.check(null);
+        assertTrue(subject.hasPassed());
+        subject.report(results);
+        assertFalse(results.hasFailed());
+        assertNull(results.collate());
+    }
+
+    public void testDifferentLine() {
+        subject.check("something different");
+        assertTrue(subject.hasPassed());
+        subject.report(results);
+        assertFalse(results.hasFailed());
+        assertNull(results.collate());
+    }
+
+    public void testSameLine() {
+        subject.check(CHECKED_FOR_VALUE);
+        assertFalse(subject.hasPassed());
+        subject.report(results);
+        assertTrue(results.hasFailed());
+        assertTrue(results.collate().contains(NoLineContainsCheck.WARNING + CHECKED_FOR_VALUE));
+    }
+
+    public void testLineContainingText() {
+        subject.check("prefix " + CHECKED_FOR_VALUE + " suffix");
+        assertFalse(subject.hasPassed());
+        subject.report(results);
+        assertTrue(results.hasFailed());
+        assertTrue(results.collate().contains(NoLineContainsCheck.WARNING + CHECKED_FOR_VALUE));
+    }
+
+}