Adding impl + test for NoSourceControlRule.
git-svn-id: svn+ssh://dev.eclipse.org/svnroot/rt/org.eclipse.jetty/sandbox/trunk@745 7e9141cc-0065-0410-87d8-b60c137991c4
diff --git a/jetty-webapp-verifier-examples/dummy-scm-lib/.gitignore b/jetty-webapp-verifier-examples/dummy-scm-lib/.gitignore
new file mode 100644
index 0000000..8baee4f
--- /dev/null
+++ b/jetty-webapp-verifier-examples/dummy-scm-lib/.gitignore
@@ -0,0 +1,8 @@
+target/
+.classpath
+.project
+.settings
+*.swp
+*.log
+*.patch
+*.diff
diff --git a/jetty-webapp-verifier-examples/dummy-scm-lib/pom.xml b/jetty-webapp-verifier-examples/dummy-scm-lib/pom.xml
new file mode 100644
index 0000000..992cccb
--- /dev/null
+++ b/jetty-webapp-verifier-examples/dummy-scm-lib/pom.xml
@@ -0,0 +1,84 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.eclipse.jetty.tests</groupId>
+ <artifactId>dummy-scm-lib</artifactId>
+ <packaging>pom</packaging>
+ <version>1.0-SNAPSHOT</version>
+ <name>Jetty :: Webapp Verifier :: Dummy SCM Lib</name>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>create-scm-files</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <configuration>
+ <!-- Generating these resources, as they cannot be checked
+ in reliably. duh. ;-) -->
+ <tasks>
+ <property name="outdir" value="${project.build.directory}/generated-scm-resources" />
+ <mkdir dir="${outdir}/CVS" />
+ <touch file="${outdir}/.cvsignore" />
+ <mkdir dir="${outdir}/.svn" />
+ <mkdir dir="${outdir}/_svn" />
+ <mkdir dir="${outdir}/.git" />
+ <touch file="${outdir}/.gitignore" />
+ <mkdir dir="${outdir}/RCS" />
+ <mkdir dir="${outdir}/SCCS" />
+ <touch file="${outdir}/vssver.scc" />
+ <mkdir dir="${outdir}/.arch-ids" />
+ <mkdir dir="${outdir}/.bzr" />
+ <touch file="${outdir}/.MySCMServerInfo" />
+ <mkdir dir="${outdir}/.hg" />
+ <mkdir dir="${outdir}/BitKeeper" />
+ <mkdir dir="${outdir}/ChangeSet" />
+ <mkdir dir="${outdir}/_darcs" />
+ <mkdir dir="${outdir}/.darcs" />
+ <mkdir dir="${outdir}/.darcsrepo" />
+ <touch file="${outdir}/.darcs-temp-mail" />
+ <copy file="${basedir}/src/main/resources/README.txt"
+ todir="${outdir}" />
+
+ <!-- Generating JAR file here as Maven is too smart and
+ won't allow you to create JAR files with SCM content in it.
+ -->
+ <jar destfile="${project.build.directory}/${project.artifactId}-${project.version}.jar"
+ basedir="${outdir}"
+ includes="**/*"
+ defaultexcludes="false"
+ />
+ </tasks>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>attach-scm-lib</id>
+ <phase>package</phase>
+ <goals>
+ <goal>attach-artifact</goal>
+ </goals>
+ <configuration>
+ <artifacts>
+ <artifact>
+ <file>${project.build.directory}/${project.artifactId}-${project.version}.jar</file>
+ <type>jar</type>
+ </artifact>
+ </artifacts>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/jetty-webapp-verifier-examples/dummy-scm-lib/src/main/resources/README.txt b/jetty-webapp-verifier-examples/dummy-scm-lib/src/main/resources/README.txt
new file mode 100644
index 0000000..62c8839
--- /dev/null
+++ b/jetty-webapp-verifier-examples/dummy-scm-lib/src/main/resources/README.txt
@@ -0,0 +1,3 @@
+This dummy lib is a TEST RESOURCE, used by the jetty project at http://www.eclipse.org/jetty/
+
+This JAR file is not for use outside of the /jetty-webapp-verifier/ test cases.
diff --git a/jetty-webapp-verifier-examples/dummy-scm-webapp/.gitignore b/jetty-webapp-verifier-examples/dummy-scm-webapp/.gitignore
new file mode 100644
index 0000000..8baee4f
--- /dev/null
+++ b/jetty-webapp-verifier-examples/dummy-scm-webapp/.gitignore
@@ -0,0 +1,8 @@
+target/
+.classpath
+.project
+.settings
+*.swp
+*.log
+*.patch
+*.diff
diff --git a/jetty-webapp-verifier-examples/dummy-scm-webapp/pom.xml b/jetty-webapp-verifier-examples/dummy-scm-webapp/pom.xml
new file mode 100644
index 0000000..6ebb824
--- /dev/null
+++ b/jetty-webapp-verifier-examples/dummy-scm-webapp/pom.xml
@@ -0,0 +1,116 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.eclipse.jetty.tests</groupId>
+ <artifactId>dummy-scm-webapp</artifactId>
+ <packaging>pom</packaging>
+ <version>1.0-SNAPSHOT</version>
+ <name>Jetty :: Webapp Verifier :: Example Dummy SCM Webapp</name>
+ <dependencies>
+ <dependency>
+ <groupId>org.eclipse.jetty.tests</groupId>
+ <artifactId>dummy-scm-lib</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+ <properties>
+ <war_work_dir>${project.build.directory}/generated-webapp</war_work_dir>
+ </properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>create-scm-files</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <configuration>
+ <tasks>
+ <mkdir dir="${war_work_dir}/CVS" />
+ <touch file="${war_work_dir}/.cvsignore" />
+ <mkdir dir="${war_work_dir}/.svn" />
+ <mkdir dir="${war_work_dir}/_svn" />
+ <mkdir dir="${war_work_dir}/.git" />
+ <touch file="${war_work_dir}/.gitignore" />
+ <mkdir dir="${war_work_dir}/RCS" />
+ <mkdir dir="${war_work_dir}/SCCS" />
+ <touch file="${war_work_dir}/vssver.scc" />
+ <mkdir dir="${war_work_dir}/.arch-ids" />
+ <mkdir dir="${war_work_dir}/.bzr" />
+ <touch file="${war_work_dir}/.MySCMServerInfo" />
+ <mkdir dir="${war_work_dir}/.hg" />
+ <mkdir dir="${war_work_dir}/BitKeeper" />
+ <mkdir dir="${war_work_dir}/ChangeSet" />
+ <mkdir dir="${war_work_dir}/_darcs" />
+ <mkdir dir="${war_work_dir}/.darcs" />
+ <mkdir dir="${war_work_dir}/.darcsrepo" />
+ <touch file="${war_work_dir}/.darcs-temp-mail" />
+ <copy todir="${war_work_dir}">
+ <fileset dir="${basedir}/src/main/webapp" />
+ </copy>
+ <mkdir dir="${war_work_dir}/WEB-INF/lib" />
+ </tasks>
+ </configuration>
+ </execution>
+ <execution>
+ <id>create-war</id>
+ <phase>package</phase>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <configuration>
+ <tasks>
+ <jar destfile="${project.build.directory}/${project.artifactId}-${project.version}.war"
+ basedir="${war_work_dir}"
+ includes="**/*"
+ defaultexcludes="false"
+ />
+ </tasks>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-deps</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>copy-dependencies</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${war_work_dir}/WEB-INF/lib</outputDirectory>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>attach-scm-lib</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>attach-artifact</goal>
+ </goals>
+ <configuration>
+ <artifacts>
+ <artifact>
+ <file>${project.build.directory}/${project.artifactId}-${project.version}.war</file>
+ <type>war</type>
+ </artifact>
+ </artifacts>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/jetty-webapp-verifier-examples/dummy-scm-webapp/src/main/webapp/README.txt b/jetty-webapp-verifier-examples/dummy-scm-webapp/src/main/webapp/README.txt
new file mode 100644
index 0000000..ba2e223
--- /dev/null
+++ b/jetty-webapp-verifier-examples/dummy-scm-webapp/src/main/webapp/README.txt
@@ -0,0 +1,4 @@
+This is a webapp is a TEST RESOURCE, used by the jetty project at http://www.eclipse.org/jetty/
+
+It is neither a valid WAR file, nor contains valid JRuby implementations,
+in either scripting, source or binary form.
diff --git a/jetty-webapp-verifier-examples/dummy-scm-webapp/src/main/webapp/WEB-INF/web.xml b/jetty-webapp-verifier-examples/dummy-scm-webapp/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..9f88c1f
--- /dev/null
+++ b/jetty-webapp-verifier-examples/dummy-scm-webapp/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE web-app PUBLIC
+ "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+ "http://java.sun.com/dtd/web-app_2_3.dtd" >
+
+<web-app>
+ <display-name>Archetype Created Web Application</display-name>
+</web-app>
diff --git a/jetty-webapp-verifier-examples/pom.xml b/jetty-webapp-verifier-examples/pom.xml
index 856c78f..3dc7579 100644
--- a/jetty-webapp-verifier-examples/pom.xml
+++ b/jetty-webapp-verifier-examples/pom.xml
@@ -25,5 +25,7 @@
<module>dummy-java15-lib</module>
<module>dummy-java16-lib</module>
<module>dummy-javaversions-webapp</module>
+ <module>dummy-scm-lib</module>
+ <module>dummy-scm-webapp</module>
</modules>
</project>
diff --git a/jetty-webapp-verifier/src/main/java/org/eclipse/jetty/webapp/verifier/rules/NoSourceControlRule.java b/jetty-webapp-verifier/src/main/java/org/eclipse/jetty/webapp/verifier/rules/NoSourceControlRule.java
index 4e6d0b6..2b07684 100644
--- a/jetty-webapp-verifier/src/main/java/org/eclipse/jetty/webapp/verifier/rules/NoSourceControlRule.java
+++ b/jetty-webapp-verifier/src/main/java/org/eclipse/jetty/webapp/verifier/rules/NoSourceControlRule.java
@@ -16,29 +16,136 @@
package org.eclipse.jetty.webapp.verifier.rules;
import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
-import org.eclipse.jetty.webapp.verifier.AbstractRule;
+import org.eclipse.jetty.webapp.verifier.AbstractArchiveScanningRule;
/**
* Prevent inclusion of Source Control files & directories that might reveal hostnames, userids, and passwords to the
* source control. (CVS, .svn/, .git/)
*/
-public class NoSourceControlRule extends AbstractRule
+public class NoSourceControlRule extends AbstractArchiveScanningRule
{
+ class ScmName
+ {
+ String scm;
+ String name;
+
+ public ScmName(String scm, String name)
+ {
+ this.scm = scm;
+ this.name = name;
+ }
+ }
+
+ private static List<ScmName> scmDirNames = new ArrayList<ScmName>();
+ private static List<ScmName> scmFileNames = new ArrayList<ScmName>();
+
+ public NoSourceControlRule()
+ {
+ super();
+
+ // The order of patterns is most likely to least likely
+
+ scmDirNames.add(new ScmName("Subversion",".svn")); // Standard Unix format
+ scmDirNames.add(new ScmName("Subversion","_svn")); // Alternate Windows format
+ scmDirNames.add(new ScmName("CVS","CVS"));
+ scmFileNames.add(new ScmName("CVS",".cvsignore"));
+ scmDirNames.add(new ScmName("Git",".git"));
+ scmFileNames.add(new ScmName("Git",".gitignore"));
+ scmDirNames.add(new ScmName("RCS","RCS"));
+ scmDirNames.add(new ScmName("SCCS","SCCS"));
+ scmFileNames.add(new ScmName("Visual SourceSafe","vssver.scc"));
+ scmDirNames.add(new ScmName("Arch",".arch-ids"));
+ scmDirNames.add(new ScmName("Bazaar",".bzr"));
+ scmFileNames.add(new ScmName("SurroundSCM",".MySCMServerInfo"));
+ scmDirNames.add(new ScmName("Mercurial",".hg"));
+ scmDirNames.add(new ScmName("BitKeeper","BitKeeper"));
+ scmDirNames.add(new ScmName("BitKeeper","ChangeSet"));
+ scmDirNames.add(new ScmName("Darcs","_darcs"));
+ scmDirNames.add(new ScmName("Darcs",".darcsrepo"));
+ scmFileNames.add(new ScmName("Darcs",".darcs-temp-mail"));
+ }
+
+ @Override
public String getDescription()
{
return "Prevent inclusion of source control files in webapp";
}
+ @Override
public String getName()
{
return "no-source-control";
}
@Override
- public void visitWebappStart(String path, File dir)
+ public void visitDirectoryStart(String path, File dir)
{
- // TODO: implement rule.
- error(path,"Rule [" + getClass().getName() + "] not yet implemented");
+ for (ScmName scmName : scmDirNames)
+ {
+ if (dir.getName().equalsIgnoreCase(scmName.name))
+ {
+ error(path,scmName.scm + " Source Control directories are not allowed");
+ }
+ }
+ }
+
+ @Override
+ public void visitFile(String path, File dir, File file)
+ {
+ for (ScmName scmName : scmFileNames)
+ {
+ if (file.getName().equalsIgnoreCase(scmName.name))
+ {
+ error(path,scmName.scm + " Source Control file are not allowed");
+ }
+ }
+ }
+
+ @Override
+ public void visitArchiveResource(String path, ZipFile zip, ZipEntry entry)
+ {
+ String basename = toBaseName(entry);
+
+ if (entry.isDirectory())
+ {
+ for (ScmName scmName : scmDirNames)
+ {
+ if (basename.equalsIgnoreCase(scmName.name))
+ {
+ error(path,scmName.scm + " Source Control directories are not allowed");
+ }
+ }
+ }
+ else
+ {
+ for (ScmName scmName : scmFileNames)
+ {
+ if (basename.equalsIgnoreCase(scmName.name))
+ {
+ error(path,scmName.scm + " Source Control file are not allowed");
+ }
+ }
+ }
+ }
+
+ private String toBaseName(ZipEntry entry)
+ {
+ String name =entry.getName();
+ if (name.endsWith("/"))
+ {
+ name = name.substring(0,name.length() - 1);
+ }
+
+ int idx = name.lastIndexOf('/');
+ if (idx >= 0)
+ {
+ return name.substring(idx + 1);
+ }
+ return name;
}
}
diff --git a/jetty-webapp-verifier/src/test/java/org/eclipse/jetty/webapp/verifier/rules/NoSourceControlRuleTest.java b/jetty-webapp-verifier/src/test/java/org/eclipse/jetty/webapp/verifier/rules/NoSourceControlRuleTest.java
new file mode 100644
index 0000000..f1716cb
--- /dev/null
+++ b/jetty-webapp-verifier/src/test/java/org/eclipse/jetty/webapp/verifier/rules/NoSourceControlRuleTest.java
@@ -0,0 +1,31 @@
+// ========================================================================
+// Copyright (c) Webtide LLC
+// ------------------------------------------------------------------------
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// and Apache License v2.0 which accompanies this distribution.
+//
+// The Eclipse Public License is available at
+// http://www.eclipse.org/legal/epl-v10.html
+//
+// The Apache License v2.0 is available at
+// http://www.apache.org/licenses/LICENSE-2.0.txt
+//
+// You may elect to redistribute this code under either of these licenses.
+// ========================================================================
+package org.eclipse.jetty.webapp.verifier.rules;
+
+import org.eclipse.jetty.webapp.verifier.RuleAssert;
+
+import junit.framework.TestCase;
+
+/**
+ * NoSourceControlRuleTest
+ */
+public class NoSourceControlRuleTest extends TestCase
+{
+ public void testNoScm() throws Exception
+ {
+ RuleAssert.assertIntegration("no_scm");
+ }
+}
diff --git a/jetty-webapp-verifier/src/test/resources/no_scm.config.xml b/jetty-webapp-verifier/src/test/resources/no_scm.config.xml
new file mode 100644
index 0000000..af006ca
--- /dev/null
+++ b/jetty-webapp-verifier/src/test/resources/no_scm.config.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<Configure id="basicRuleSet"
+ class="org.eclipse.jetty.webapp.verifier.RuleSet">
+ <Set name="rules">
+ <Array type="org.eclipse.jetty.webapp.verifier.Rule">
+ <Item>
+ <New class="org.eclipse.jetty.webapp.verifier.rules.NoSourceControlRule" />
+ </Item>
+ </Array>
+ </Set>
+</Configure>
\ No newline at end of file
diff --git a/jetty-webapp-verifier/src/test/resources/no_scm.expectations.txt b/jetty-webapp-verifier/src/test/resources/no_scm.expectations.txt
new file mode 100644
index 0000000..0b0f2c8
--- /dev/null
+++ b/jetty-webapp-verifier/src/test/resources/no_scm.expectations.txt
@@ -0,0 +1,36 @@
+ERROR|_darcs/|Darcs Source Control directories are not allowed
+ERROR|_svn/|Subversion Source Control directories are not allowed
+ERROR|.arch-ids/|Arch Source Control directories are not allowed
+ERROR|.bzr/|Bazaar Source Control directories are not allowed
+ERROR|.cvsignore|CVS Source Control file are not allowed
+ERROR|.darcsrepo/|Darcs Source Control directories are not allowed
+ERROR|.darcs-temp-mail|Darcs Source Control file are not allowed
+ERROR|.git/|Git Source Control directories are not allowed
+ERROR|.gitignore|Git Source Control file are not allowed
+ERROR|.hg/|Mercurial Source Control directories are not allowed
+ERROR|.MySCMServerInfo|SurroundSCM Source Control file are not allowed
+ERROR|.svn/|Subversion Source Control directories are not allowed
+ERROR|BitKeeper/|BitKeeper Source Control directories are not allowed
+ERROR|ChangeSet/|BitKeeper Source Control directories are not allowed
+ERROR|CVS/|CVS Source Control directories are not allowed
+ERROR|RCS/|RCS Source Control directories are not allowed
+ERROR|SCCS/|SCCS Source Control directories are not allowed
+ERROR|vssver.scc|Visual SourceSafe Source Control file are not allowed
+ERROR|WEB-INF/lib/dummy-scm-lib-1.0-SNAPSHOT.jar!/_darcs/|Darcs Source Control directories are not allowed
+ERROR|WEB-INF/lib/dummy-scm-lib-1.0-SNAPSHOT.jar!/_svn/|Subversion Source Control directories are not allowed
+ERROR|WEB-INF/lib/dummy-scm-lib-1.0-SNAPSHOT.jar!/.arch-ids/|Arch Source Control directories are not allowed
+ERROR|WEB-INF/lib/dummy-scm-lib-1.0-SNAPSHOT.jar!/.bzr/|Bazaar Source Control directories are not allowed
+ERROR|WEB-INF/lib/dummy-scm-lib-1.0-SNAPSHOT.jar!/.cvsignore|CVS Source Control file are not allowed
+ERROR|WEB-INF/lib/dummy-scm-lib-1.0-SNAPSHOT.jar!/.darcsrepo/|Darcs Source Control directories are not allowed
+ERROR|WEB-INF/lib/dummy-scm-lib-1.0-SNAPSHOT.jar!/.darcs-temp-mail|Darcs Source Control file are not allowed
+ERROR|WEB-INF/lib/dummy-scm-lib-1.0-SNAPSHOT.jar!/.git/|Git Source Control directories are not allowed
+ERROR|WEB-INF/lib/dummy-scm-lib-1.0-SNAPSHOT.jar!/.gitignore|Git Source Control file are not allowed
+ERROR|WEB-INF/lib/dummy-scm-lib-1.0-SNAPSHOT.jar!/.hg/|Mercurial Source Control directories are not allowed
+ERROR|WEB-INF/lib/dummy-scm-lib-1.0-SNAPSHOT.jar!/.MySCMServerInfo|SurroundSCM Source Control file are not allowed
+ERROR|WEB-INF/lib/dummy-scm-lib-1.0-SNAPSHOT.jar!/.svn/|Subversion Source Control directories are not allowed
+ERROR|WEB-INF/lib/dummy-scm-lib-1.0-SNAPSHOT.jar!/BitKeeper/|BitKeeper Source Control directories are not allowed
+ERROR|WEB-INF/lib/dummy-scm-lib-1.0-SNAPSHOT.jar!/ChangeSet/|BitKeeper Source Control directories are not allowed
+ERROR|WEB-INF/lib/dummy-scm-lib-1.0-SNAPSHOT.jar!/CVS/|CVS Source Control directories are not allowed
+ERROR|WEB-INF/lib/dummy-scm-lib-1.0-SNAPSHOT.jar!/RCS/|RCS Source Control directories are not allowed
+ERROR|WEB-INF/lib/dummy-scm-lib-1.0-SNAPSHOT.jar!/SCCS/|SCCS Source Control directories are not allowed
+ERROR|WEB-INF/lib/dummy-scm-lib-1.0-SNAPSHOT.jar!/vssver.scc|Visual SourceSafe Source Control file are not allowed
diff --git a/jetty-webapp-verifier/src/test/resources/no_scm.setup.txt b/jetty-webapp-verifier/src/test/resources/no_scm.setup.txt
new file mode 100644
index 0000000..bc01807
--- /dev/null
+++ b/jetty-webapp-verifier/src/test/resources/no_scm.setup.txt
@@ -0,0 +1 @@
+webapps/dummy-scm-webapp.war
\ No newline at end of file
diff --git a/jetty-webapp-verifier/src/test/resources/webapps/dummy-scm-webapp.war b/jetty-webapp-verifier/src/test/resources/webapps/dummy-scm-webapp.war
new file mode 100644
index 0000000..f7622c4
--- /dev/null
+++ b/jetty-webapp-verifier/src/test/resources/webapps/dummy-scm-webapp.war
Binary files differ