Skip to content

Commit

Permalink
Add ShortestPath.feature to acceptance-spec-suite
Browse files Browse the repository at this point in the history
o Drops use old JSON parser from parser combinators
o Drops old GraphArchive code
o Make sure resources companion class works when accessing feature files via the local filesystem (instead of a jar)
o Extract common code from spec suites
o Move acceptance feature spec files below src/main/resources/cypher
  • Loading branch information
boggle committed Jun 17, 2016
1 parent 8d31d9c commit 18683d9
Show file tree
Hide file tree
Showing 19 changed files with 936 additions and 209 deletions.
23 changes: 23 additions & 0 deletions community/cypher/acceptance-spec-suite/pom.xml
Expand Up @@ -67,6 +67,7 @@
<artifactId>scalastyle-maven-plugin</artifactId>
</plugin>
</plugins>

</build>

<dependencies>
Expand All @@ -87,6 +88,12 @@
<version>${scala.version}</version>
</dependency>

<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scalap</artifactId>
<version>${scala.version}</version>
</dependency>

<!-- scala test dependencies -->

<dependency>
Expand Down Expand Up @@ -152,6 +159,7 @@
</dependency>

<!-- neo4j-cypher -->

<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-cypher-compiler-3.1</artifactId>
Expand Down Expand Up @@ -214,6 +222,21 @@
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-cypher-spec-suite-tools</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-cypher-spec-suite-tools</artifactId>
<version>${project.version}</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>

<!-- other -->

<dependency>
Expand Down
@@ -0,0 +1,30 @@
/*
* Copyright (c) 2002-2016 "Neo Technology,"
* Network Engine for Objects in Lund AB [http://neotechnology.com]
*
* This file is part of Neo4j.
*
* Neo4j is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package cypher;

import org.junit.runners.model.RunnerBuilder;

public class AcceptanceSpecSuiteResources extends SpecSuiteResources
{
public AcceptanceSpecSuiteResources( Class<?> klass, RunnerBuilder builder ) throws Throwable
{
super( klass, download( klass, builder ) );
}
}
@@ -0,0 +1,98 @@
/*
* Copyright (c) 2002-2016 "Neo Technology,"
* Network Engine for Objects in Lund AB [http://neotechnology.com]
*
* This file is part of Neo4j.
*
* Neo4j is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package cypher;

import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;
import org.opencypher.tools.tck.TCKCucumberTemplate;

@RunWith( AcceptanceSpecSuiteResources.class )
public class AcceptanceSpecSuiteTest
{

// These two constants are only used to make testing and debugging easier.
// If you want to run only a single feature, put the name of the feature file in `FEATURE_TO_RUN` (including .feature)
// If you want to run only a single scenario, put (part of) its name in the `SCENARIO_NAME_REQUIRED` constant
// Do not forget to clear these strings to empty strings before you commit!!
public static final String FEATURE_TO_RUN = "";
public static final String SCENARIO_NAME_REQUIRED = "";

@SuppressWarnings( "unused" )
public static final boolean REPLACE_EXISTING = false;

@RunWith( Cucumber.class )
@CucumberOptions(
plugin = {
DB_CONFIG + "rule.json",
HTML_REPORT + "rule",
JSON_REPORT + "rule"
},
glue = { GLUE_PATH },
features = { FEATURE_PATH + FEATURE_TO_RUN },
strict = true
)
public static class Rule
{
}

@RunWith( Cucumber.class )
@CucumberOptions(
plugin = {
DB_CONFIG + "cost.json",
HTML_REPORT + "cost",
JSON_REPORT + "cost"
},
glue = { GLUE_PATH },
features = { FEATURE_PATH + FEATURE_TO_RUN },
strict = true
)
public static class Cost
{
}

@RunWith( Cucumber.class )
@CucumberOptions(
plugin = {
DB_CONFIG + "cost-compiled.json",
HTML_REPORT + "cost-compiled",
JSON_REPORT + "cost-compiled"
},
glue = { GLUE_PATH },
features = { FEATURE_PATH + FEATURE_TO_RUN },
strict = true
)
public static class CostCompiled
{
}

// constants for TCK configuration

public static final String SUITE_NAME = "acceptance-spec-suite";

@SuppressWarnings( "unused" )
public static final Class<?> RESOURCE_CLASS = AcceptanceSpecSuiteTest.class;

private static final String DB_CONFIG = "cypher.cucumber.db.DatabaseConfigProvider:/db-config/";
private static final String GLUE_PATH = "classpath:cypher/feature/steps";
private static final String FEATURE_PATH = "target/" + SUITE_NAME + "/features/";
private static final String HTML_REPORT = "html:target/" + SUITE_NAME + "/";
private static final String JSON_REPORT = "cypher.feature.reporting.CypherResultReporter:target/" + SUITE_NAME + "/";
}
@@ -0,0 +1,44 @@
/*
* Copyright (c) 2002-2016 "Neo Technology,"
* Network Engine for Objects in Lund AB [http://neotechnology.com]
*
* This file is part of Neo4j.
*
* Neo4j is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package cypher;

import org.junit.Test;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.isEmptyString;
import static org.junit.Assert.assertFalse;

public class AcceptanceSpecSuiteTestConstantsTest
{
@Test
public void runsAllFeatures() {
assertThat( AcceptanceSpecSuiteTest.FEATURE_TO_RUN, isEmptyString());
}

@Test
public void runsAllScenarios() {
assertThat( AcceptanceSpecSuiteTest.SCENARIO_NAME_REQUIRED, isEmptyString());
}

@Test
public void doesNotReplaceExistingByDefault() {
assertFalse( AcceptanceSpecSuiteTest.REPLACE_EXISTING );
}
}

0 comments on commit 18683d9

Please sign in to comment.