SuccessConsole Output

Started by an SCM change
Building in workspace /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace
 > /usr/local/bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > /usr/local/bin/git config remote.origin.url https://github.com/locationtech/geogig.git # timeout=10
Fetching upstream changes from https://github.com/locationtech/geogig.git
 > /usr/local/bin/git --version # timeout=10
Setting http proxy: proxy.eclipse.org:9898
 > /usr/local/bin/git fetch --tags --progress https://github.com/locationtech/geogig.git +refs/heads/*:refs/remotes/origin/*
 > /usr/local/bin/git rev-parse origin/1.1.x^{commit} # timeout=10
Checking out Revision ee2e446ad3bfc14f96b3a1019276b9fd353beb0c (origin/1.1.x)
 > /usr/local/bin/git config core.sparsecheckout # timeout=10
 > /usr/local/bin/git checkout -f ee2e446ad3bfc14f96b3a1019276b9fd353beb0c
 > /usr/local/bin/git rev-list ad66812021da3b0c713e6052599e57f1482dc002 # timeout=10
Parsing POMs
Established TCP socket on 37350
[parent] $ /shared/common/jdk1.8.0_x64-latest/bin/java -cp /home/hudson/genie.geogig/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven33-agent-1.8.1.jar:/shared/common/apache-maven-latest/boot/plexus-classworlds-2.5.2.jar:/shared/common/apache-maven-latest/conf/logging jenkins.maven3.agent.Maven33Main /shared/common/apache-maven-latest /home/hudson/genie.geogig/.jenkins/war/WEB-INF/lib/remoting-3.7.jar /home/hudson/genie.geogig/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven33-interceptor-1.8.1.jar /home/hudson/genie.geogig/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.8.1.jar 37350
<===[JENKINS REMOTING CAPACITY]===>channel started
Executing Maven:  -B -f /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/parent/pom.xml -Dmaven.repo.local=/home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository clean install -Pexperimental -DskipTests=false -Dcucumber.options=--monochrome --plugin json:target/cucumber.json -Djava.io.tmpdir=/opt/public/hipp/ramdisk/geogig
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO] 
[INFO] GeoGig
[INFO] GeoGig Core API
[INFO] GeoGig Core
[INFO] GeoGig DataStore Implementation
[INFO] Storage backends
[INFO] RocksDB storage backend
[INFO] GeoGig Command Line Interface
[INFO] PostgreSQL Storage Backend
[INFO] GeoTools Extension
[INFO] Web modules
[INFO] GeoGig Web API
[INFO] GeoGig WebApp
[INFO] GeoGig Web API Automated Functional Tests
[INFO] GeoGig Query Language Extension
[INFO] Basic GUI tools
[INFO] GeoGig CLI App
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building GeoGig 1.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ geogig ---
[INFO] Deleting /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/parent/target
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig ---
[INFO] 
[INFO] --- maven-jar-plugin:2.4:test-jar (default) @ geogig ---
[WARNING] JAR will be empty - no content was marked for inclusion!
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/parent/target/geogig-1.1-SNAPSHOT-tests.jar
[INFO] 
[INFO] >>> maven-source-plugin:2.2.1:jar (attach-sources) > generate-sources @ geogig >>>
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig ---
[WARNING] Failed to getClass for org.apache.maven.plugin.source.SourceJarMojo
[INFO] 
[INFO] <<< maven-source-plugin:2.2.1:jar (attach-sources) < generate-sources @ geogig <<<
[INFO] 
[INFO] --- maven-source-plugin:2.2.1:jar (attach-sources) @ geogig ---
[INFO] 
[INFO] >>> maven-source-plugin:2.2.1:test-jar (attach-sources) > generate-sources @ geogig >>>
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig ---
[WARNING] Failed to getClass for org.apache.maven.plugin.source.TestSourceJarMojo
[INFO] 
[INFO] <<< maven-source-plugin:2.2.1:test-jar (attach-sources) < generate-sources @ geogig <<<
[INFO] 
[INFO] --- maven-source-plugin:2.2.1:test-jar (attach-sources) @ geogig ---
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ geogig ---
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/parent/pom.xml to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig/1.1-SNAPSHOT/geogig-1.1-SNAPSHOT.pom
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/parent/target/geogig-1.1-SNAPSHOT-tests.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig/1.1-SNAPSHOT/geogig-1.1-SNAPSHOT-tests.jar
[JENKINS] Archiving disabled
Started calculate disk usage of build
Finished Calculation of disk usage of build in 0 seconds
Started calculate disk usage of workspace
Finished Calculation of disk usage of workspace in 0 seconds
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building GeoGig Core API 1.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ geogig-api ---
[INFO] Deleting /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/api/target
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig-api ---
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ geogig-api ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ geogig-api ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 55 source files to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/api/target/classes
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ geogig-api ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/api/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ geogig-api ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 29 source files to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/api/target/test-classes
[WARNING] /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/api/src/test/java/org/locationtech/geogig/model/FieldTypeTest.java: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/api/src/test/java/org/locationtech/geogig/model/FieldTypeTest.java uses or overrides a deprecated API.
[WARNING] /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/api/src/test/java/org/locationtech/geogig/model/FieldTypeTest.java: Recompile with -Xlint:deprecation for details.
[INFO] 
[INFO] --- maven-surefire-plugin:2.17:test (default-test) @ geogig-api ---
[INFO] Surefire report directory: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/api/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running org.locationtech.geogig.model.FieldTypeTest
Running org.locationtech.geogig.model.SymRefTest
Running org.locationtech.geogig.model.HashObjectFunnelsTest
Running org.locationtech.geogig.model.BucketTest
Running org.locationtech.geogig.model.RevObjectTest
Running org.locationtech.geogig.model.RefTest
Running org.locationtech.geogig.model.NodeRefTest
Running org.locationtech.geogig.model.RevTreeTest
Running org.locationtech.geogig.model.Float32BoundsTest
Running org.locationtech.geogig.model.ObjectIdTest
Running org.locationtech.geogig.model.CanonicalNodeOrderTest
Running org.locationtech.geogig.model.NodeTest
Running org.locationtech.geogig.repository.DiffEntryTest
Running org.locationtech.geogig.repository.DiffObjectCountTest
Running org.locationtech.geogig.repository.HintsTest
Running org.locationtech.geogig.repository.ConflictTest
Running org.locationtech.geogig.repository.FeatureInfoTest
Running org.locationtech.geogig.repository.AbstractGeoGigOpTest
Running org.locationtech.geogig.repository.RemoteTest
Running org.locationtech.geogig.storage.StorageTypeTest
Running org.locationtech.geogig.repository.ProgressListenerTest
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.177 sec - in org.locationtech.geogig.model.ObjectIdTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.257 sec - in org.locationtech.geogig.model.BucketTest
Running org.locationtech.geogig.storage.ConfigExceptionTest
Running org.locationtech.geogig.storage.AutoCloseableIteratorTest
Running org.locationtech.geogig.storage.VersionedFormatTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec - in org.locationtech.geogig.storage.VersionedFormatTest
Running org.locationtech.geogig.storage.GraphDatabaseTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.277 sec - in org.locationtech.geogig.model.SymRefTest
Running org.locationtech.geogig.storage.PluginDefaultsTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.011 sec - in org.locationtech.geogig.storage.GraphDatabaseTest
Running org.locationtech.geogig.storage.BulkOpListenerTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.008 sec - in org.locationtech.geogig.storage.BulkOpListenerTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.029 sec - in org.locationtech.geogig.storage.PluginDefaultsTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.243 sec - in org.locationtech.geogig.repository.DiffObjectCountTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.199 sec - in org.locationtech.geogig.storage.StorageTypeTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.332 sec - in org.locationtech.geogig.model.Float32BoundsTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.113 sec - in org.locationtech.geogig.storage.ConfigExceptionTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.274 sec - in org.locationtech.geogig.repository.ProgressListenerTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.386 sec - in org.locationtech.geogig.repository.HintsTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.532 sec - in org.locationtech.geogig.model.FieldTypeTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.484 sec - in org.locationtech.geogig.model.RevObjectTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.381 sec - in org.locationtech.geogig.repository.FeatureInfoTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.387 sec - in org.locationtech.geogig.repository.ConflictTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.409 sec - in org.locationtech.geogig.repository.DiffEntryTest
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.536 sec - in org.locationtech.geogig.model.RefTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.493 sec - in org.locationtech.geogig.model.CanonicalNodeOrderTest
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.528 sec - in org.locationtech.geogig.model.NodeTest
Tests run: 23, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.617 sec - in org.locationtech.geogig.model.NodeRefTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.364 sec - in org.locationtech.geogig.storage.AutoCloseableIteratorTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.618 sec - in org.locationtech.geogig.model.RevTreeTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.584 sec - in org.locationtech.geogig.repository.AbstractGeoGigOpTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.797 sec - in org.locationtech.geogig.model.HashObjectFunnelsTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.686 sec - in org.locationtech.geogig.repository.RemoteTest

Results :

Tests run: 141, Failures: 0, Errors: 0, Skipped: 0

[JENKINS] Recording test results
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ geogig-api ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/api/target/geogig-api-1.1-SNAPSHOT.jar
[INFO] 
[INFO] --- maven-jar-plugin:2.4:test-jar (default) @ geogig-api ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/api/target/geogig-api-1.1-SNAPSHOT-tests.jar
[INFO] 
[INFO] >>> maven-source-plugin:2.2.1:jar (attach-sources) > generate-sources @ geogig-api >>>
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig-api ---
[WARNING] Failed to getClass for org.apache.maven.plugin.source.SourceJarMojo
[INFO] 
[INFO] <<< maven-source-plugin:2.2.1:jar (attach-sources) < generate-sources @ geogig-api <<<
[INFO] 
[INFO] --- maven-source-plugin:2.2.1:jar (attach-sources) @ geogig-api ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/api/target/geogig-api-1.1-SNAPSHOT-sources.jar
[INFO] 
[INFO] >>> maven-source-plugin:2.2.1:test-jar (attach-sources) > generate-sources @ geogig-api >>>
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig-api ---
[WARNING] Failed to getClass for org.apache.maven.plugin.source.TestSourceJarMojo
[INFO] 
[INFO] <<< maven-source-plugin:2.2.1:test-jar (attach-sources) < generate-sources @ geogig-api <<<
[INFO] 
[INFO] --- maven-source-plugin:2.2.1:test-jar (attach-sources) @ geogig-api ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/api/target/geogig-api-1.1-SNAPSHOT-test-sources.jar
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ geogig-api ---
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/api/target/geogig-api-1.1-SNAPSHOT.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-api/1.1-SNAPSHOT/geogig-api-1.1-SNAPSHOT.jar
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/api/pom.xml to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-api/1.1-SNAPSHOT/geogig-api-1.1-SNAPSHOT.pom
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/api/target/geogig-api-1.1-SNAPSHOT-tests.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-api/1.1-SNAPSHOT/geogig-api-1.1-SNAPSHOT-tests.jar
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/api/target/geogig-api-1.1-SNAPSHOT-sources.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-api/1.1-SNAPSHOT/geogig-api-1.1-SNAPSHOT-sources.jar
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/api/target/geogig-api-1.1-SNAPSHOT-test-sources.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-api/1.1-SNAPSHOT/geogig-api-1.1-SNAPSHOT-test-sources.jar
[JENKINS] Archiving disabled
Started calculate disk usage of build
Finished Calculation of disk usage of build in 0 seconds
Started calculate disk usage of workspace
Finished Calculation of disk usage of workspace in 0 seconds
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building GeoGig Core 1.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ geogig-core ---
[INFO] Deleting /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/core/target
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig-core ---
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ geogig-core ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 5 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ geogig-core ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 336 source files to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/core/target/classes
[WARNING] /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/core/src/main/java/org/locationtech/geogig/storage/datastream/v2_3/DataStreamValueSerializerV2_3.java: Some input files use or override a deprecated API.
[WARNING] /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/core/src/main/java/org/locationtech/geogig/storage/datastream/v2_3/DataStreamValueSerializerV2_3.java: Recompile with -Xlint:deprecation for details.
[WARNING] /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/core/src/main/java/org/locationtech/geogig/model/internal/NodeId.java: Some input files use unchecked or unsafe operations.
[WARNING] /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/core/src/main/java/org/locationtech/geogig/model/internal/NodeId.java: Recompile with -Xlint:unchecked for details.
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ geogig-core ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 3 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ geogig-core ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 187 source files to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/core/target/test-classes
[WARNING] /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/core/src/test/java/org/locationtech/geogig/test/integration/HooksTest.java: Some input files use or override a deprecated API.
[WARNING] /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/core/src/test/java/org/locationtech/geogig/test/integration/HooksTest.java: Recompile with -Xlint:deprecation for details.
[WARNING] /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/core/src/test/java/org/locationtech/geogig/data/retrieve/BulkFeatureRetrieverTest.java: Some input files use unchecked or unsafe operations.
[WARNING] /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/core/src/test/java/org/locationtech/geogig/data/retrieve/BulkFeatureRetrieverTest.java: Recompile with -Xlint:unchecked for details.
[INFO] 
[INFO] --- maven-surefire-plugin:2.17:test (default-test) @ geogig-core ---
[INFO] Surefire report directory: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/core/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running org.locationtech.geogig.storage.cache.CacheManagerTest
Running org.locationtech.geogig.storage.cache.KeyTest
Running org.locationtech.geogig.storage.cache.SharedCacheTest
Running org.locationtech.geogig.storage.cache.ObjectCacheTest
Running org.locationtech.geogig.storage.datastream.v2_3.RevTreeFormatTest
Running org.locationtech.geogig.storage.datastream.v2_3.StringTableTest
Running org.locationtech.geogig.storage.datastream.v2_3.RevTreeFormatPrefTest
Running org.locationtech.geogig.storage.datastream.v2_3.TailTest
Running org.locationtech.geogig.storage.datastream.v2_3.DataStreamSerializationFactoryV2_3Test
Running org.locationtech.geogig.storage.datastream.v2_3.NodeSetTest
Running org.locationtech.geogig.storage.datastream.Float32BoundsSerializationTest
Running org.locationtech.geogig.storage.datastream.DataStreamSerializationFactoryV1Test
Running org.locationtech.geogig.storage.datastream.LZFSerializationFactoryTest
Running org.locationtech.geogig.storage.datastream.LZ4SerializationFactoryTest
Running org.locationtech.geogig.storage.datastream.FormatCommonV2_1Test
Running org.locationtech.geogig.storage.datastream.DataStreamSerializationFactoryV2_2Test
Running org.locationtech.geogig.storage.datastream.DataStreamSerializationFactoryV2_1Test
Running org.locationtech.geogig.storage.datastream.DataStreamSerializationFactoryV2Test
Running org.locationtech.geogig.storage.datastream.VarintTest
Running org.locationtech.geogig.storage.datastream.FloatPackedCoordinateSequenceTest
Running org.locationtech.geogig.storage.memory.HeapBlobStoreTest
Running org.locationtech.geogig.storage.memory.HeapRefDatabaseTest
Running org.locationtech.geogig.storage.memory.HeapConflictsDatabaseConformanceTest
Running org.locationtech.geogig.storage.memory.HeapIndexDatabaseConformanceTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.323 sec - in org.locationtech.geogig.storage.datastream.v2_3.TailTest
Running org.locationtech.geogig.storage.memory.HeapObjectStoreConformanceTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.417 sec - in org.locationtech.geogig.storage.cache.KeyTest
Running org.locationtech.geogig.storage.memory.HeapGraphDatabaseTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.416 sec - in org.locationtech.geogig.storage.datastream.v2_3.StringTableTest
Running org.locationtech.geogig.storage.impl.INIBlobTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.294 sec - in org.locationtech.geogig.storage.datastream.FloatPackedCoordinateSequenceTest
Running org.locationtech.geogig.storage.impl.PersistedIterableTest
[main] INFO org.locationtech.geogig.test.performance.EnablePerformanceTestRule - org.locationtech.geogig.storage.datastream.v2_3.RevTreeFormatPrefTest ignored, run with -Dgeogig.runPerformanceTests=true to enable it.
[main] INFO org.locationtech.geogig.test.performance.EnablePerformanceTestRule - org.locationtech.geogig.storage.datastream.v2_3.RevTreeFormatPrefTest ignored, run with -Dgeogig.runPerformanceTests=true to enable it.
[main] INFO org.locationtech.geogig.test.performance.EnablePerformanceTestRule - org.locationtech.geogig.storage.datastream.v2_3.RevTreeFormatPrefTest ignored, run with -Dgeogig.runPerformanceTests=true to enable it.
[main] INFO org.locationtech.geogig.test.performance.EnablePerformanceTestRule - org.locationtech.geogig.storage.datastream.v2_3.RevTreeFormatPrefTest ignored, run with -Dgeogig.runPerformanceTests=true to enable it.
[main] INFO org.locationtech.geogig.test.performance.EnablePerformanceTestRule - org.locationtech.geogig.storage.datastream.v2_3.RevTreeFormatPrefTest ignored, run with -Dgeogig.runPerformanceTests=true to enable it.
[main] INFO org.locationtech.geogig.test.performance.EnablePerformanceTestRule - org.locationtech.geogig.storage.datastream.v2_3.RevTreeFormatPrefTest ignored, run with -Dgeogig.runPerformanceTests=true to enable it.
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.486 sec - in org.locationtech.geogig.storage.datastream.v2_3.RevTreeFormatPrefTest
Running org.locationtech.geogig.storage.fs.FileRefDatabaseTest
[main] INFO org.locationtech.geogig.storage.cache.CacheManager - Registered GeoGig cache manager MBean as org.geogig:type=shared-cache
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.522 sec - in org.locationtech.geogig.storage.datastream.Float32BoundsSerializationTest
Running org.locationtech.geogig.storage.fs.FileConflictsDatabaseConformanceTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.472 sec - in org.locationtech.geogig.storage.datastream.VarintTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.46 sec - in org.locationtech.geogig.storage.memory.HeapBlobStoreTest
Running org.locationtech.geogig.storage.fs.FileBlobStoreTest
Running org.locationtech.geogig.storage.fs.IniFileConfigDatabaseTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.218 sec - in org.locationtech.geogig.storage.impl.PersistedIterableTest
Running org.locationtech.geogig.storage.text.TextSerializationFactoryTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.282 sec - in org.locationtech.geogig.storage.fs.FileBlobStoreTest
Running org.locationtech.geogig.test.integration.CleanOpTest
Tests run: 13, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.624 sec - in org.locationtech.geogig.storage.memory.HeapGraphDatabaseTest
Running org.locationtech.geogig.test.integration.HooksTest
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.608 sec - in org.locationtech.geogig.storage.fs.FileRefDatabaseTest
Running org.locationtech.geogig.test.integration.ConfigOpTest
[main] INFO org.locationtech.geogig.storage.cache.CacheManager - Configuring GeoGig shared object cache maximum size to the default of 2,500 bytes as given by the default 0.250000 percent of available heap. Use the GEOGIG_CACHE_MAX_SIZE System property or environmentvariable to set a different maximum size at runtime
[main] INFO org.locationtech.geogig.storage.cache.CacheManager - Configuring GeoGig shared object cache maximum size to 1,025 bytes as given by the System property GEOGIG_CACHE_MAX_SIZE=1025
[main] WARN org.locationtech.geogig.storage.cache.CacheManager - cache size is too big: 1025, maximum allowed: 921
[main] INFO org.locationtech.geogig.storage.cache.CacheManager - Configuring GeoGig shared object cache maximum size to the default of 256 bytes as given by the default 0.250000 percent of available heap. Use the GEOGIG_CACHE_MAX_SIZE System property or environmentvariable to set a different maximum size at runtime
[main] INFO org.locationtech.geogig.storage.cache.CacheManager - Configuring GeoGig shared object cache maximum size to the default of 119,406,592 bytes as given by the default 0.250000 percent of available heap. Use the GEOGIG_CACHE_MAX_SIZE System property or environmentvariable to set a different maximum size at runtime
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.256 sec - in org.locationtech.geogig.storage.datastream.FormatCommonV2_1Test
Running org.locationtech.geogig.test.integration.CheckoutOpTest
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.239 sec - in org.locationtech.geogig.storage.memory.HeapRefDatabaseTest
Running org.locationtech.geogig.test.integration.ReportMergeConflictsOpTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.584 sec - in org.locationtech.geogig.storage.cache.ObjectCacheTest
Running org.locationtech.geogig.test.integration.repository.IndexTest
Tests run: 23, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.309 sec - in org.locationtech.geogig.storage.fs.IniFileConfigDatabaseTest
Running org.locationtech.geogig.test.integration.repository.WorkingTreeTest
Tests run: 14, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.82 sec - in org.locationtech.geogig.storage.memory.HeapConflictsDatabaseConformanceTest
Running org.locationtech.geogig.test.integration.RemoveOpTest
[main] INFO org.locationtech.geogig.storage.cache.CacheManager - Configuring GeoGig shared object cache maximum size to 1,048,576 bytes as given by the System property GEOGIG_CACHE_MAX_SIZE=1M
[main] INFO org.locationtech.geogig.storage.cache.CacheManager - Configuring GeoGig shared object cache maximum size to 102,400 bytes as given by the System property GEOGIG_CACHE_MAX_SIZE=100K
[main] INFO org.locationtech.geogig.storage.cache.CacheManager - Configuring GeoGig shared object cache maximum size to 5,000 bytes as given by the System property GEOGIG_CACHE_MAX_SIZE=0.5
[main] WARN org.locationtech.geogig.storage.cache.CacheManager - Unable to parse System property GEOGIG_CACHE_MAX_SIZE=-1G. Falling back to default value
java.lang.IllegalArgumentException: Value must be a positive number or zero
	at com.google.common.base.Preconditions.checkArgument(Preconditions.java:122)
	at org.locationtech.geogig.storage.cache.CacheManager.parseCacheSizeArgument(CacheManager.java:257)
	at org.locationtech.geogig.storage.cache.CacheManagerTest.assertDefaultMaxSizeDefaultValue(CacheManagerTest.java:188)
	at org.locationtech.geogig.storage.cache.CacheManagerTest.resolveDefaultMaxSizeSystemPropertyInvalidValue(CacheManagerTest.java:207)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
[main] INFO org.locationtech.geogig.storage.cache.CacheManager - Configuring GeoGig shared object cache maximum size to the default of 2,500 bytes as given by the default 0.250000 percent of available heap. Use the GEOGIG_CACHE_MAX_SIZE System property or environmentvariable to set a different maximum size at runtime
[main] WARN org.locationtech.geogig.storage.cache.CacheManager - Unable to parse System property GEOGIG_CACHE_MAX_SIZE=. Falling back to default value
java.lang.IllegalArgumentException: Invalid format (), expected <float>[B|K|M|G]
	at org.locationtech.geogig.storage.cache.CacheManager.parseCacheSizeArgument(CacheManager.java:269)
	at org.locationtech.geogig.storage.cache.CacheManagerTest.getDefaultSizeMB(CacheManagerTest.java:270)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
[main] WARN org.locationtech.geogig.storage.cache.CacheManager - Unable to parse environment variable GEOGIG_CACHE_MAX_SIZE=
java.lang.IllegalArgumentException: Invalid format (), expected <float>[B|K|M|G]
	at org.locationtech.geogig.storage.cache.CacheManager.parseCacheSizeArgument(CacheManager.java:269)
	at org.locationtech.geogig.storage.cache.CacheManagerTest.getDefaultSizeMB(CacheManagerTest.java:270)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
[main] INFO org.locationtech.geogig.storage.cache.CacheManager - Configuring GeoGig shared object cache maximum size to the default of 2,621,440 bytes as given by the default 0.250000 percent of available heap. Use the GEOGIG_CACHE_MAX_SIZE System property or environmentvariable to set a different maximum size at runtime
[main] WARN org.locationtech.geogig.storage.cache.CacheManager - Unable to parse System property GEOGIG_CACHE_MAX_SIZE=-1G. Falling back to environment variable
java.lang.IllegalArgumentException: Value must be a positive number or zero
	at com.google.common.base.Preconditions.checkArgument(Preconditions.java:122)
	at org.locationtech.geogig.storage.cache.CacheManager.parseCacheSizeArgument(CacheManager.java:257)
	at org.locationtech.geogig.storage.cache.CacheManagerTest.resolveDefaultMaxSizeInvalidSysPropFallsBackToEnvVariable(CacheManagerTest.java:235)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
[main] INFO org.locationtech.geogig.storage.cache.CacheManager - Configuring GeoGig shared object cache maximum size to 1,024 bytes as given by the environment variable GEOGIG_CACHE_MAX_SIZE=1024
[main] WARN org.locationtech.geogig.storage.cache.CacheManager - Unable to parse System property GEOGIG_CACHE_MAX_SIZE=. Falling back to environment variable
java.lang.IllegalArgumentException: Invalid format (), expected <float>[B|K|M|G]
	at org.locationtech.geogig.storage.cache.CacheManager.parseCacheSizeArgument(CacheManager.java:269)
	at org.locationtech.geogig.storage.cache.CacheManagerTest.resolveDefaultMaxSizeEnvironmantVariable(CacheManagerTest.java:214)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
[main] INFO org.locationtech.geogig.storage.cache.CacheManager - Configuring GeoGig shared object cache maximum size to 1,048,576 bytes as given by the environment variable GEOGIG_CACHE_MAX_SIZE=1M
[main] WARN org.locationtech.geogig.storage.cache.CacheManager - Unable to parse System property GEOGIG_CACHE_MAX_SIZE=. Falling back to environment variable
java.lang.IllegalArgumentException: Invalid format (), expected <float>[B|K|M|G]
	at org.locationtech.geogig.storage.cache.CacheManager.parseCacheSizeArgument(CacheManager.java:269)
	at org.locationtech.geogig.storage.cache.CacheManagerTest.resolveDefaultMaxSizeEnvironmantVariable(CacheManagerTest.java:217)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
[main] INFO org.locationtech.geogig.storage.cache.CacheManager - Configuring GeoGig shared object cache maximum size to 102,400 bytes as given by the environment variable GEOGIG_CACHE_MAX_SIZE=100K
[main] WARN org.locationtech.geogig.storage.cache.CacheManager - Unable to parse System property GEOGIG_CACHE_MAX_SIZE=. Falling back to environment variable
java.lang.IllegalArgumentException: Invalid format (), expected <float>[B|K|M|G]
	at org.locationtech.geogig.storage.cache.CacheManager.parseCacheSizeArgument(CacheManager.java:269)
	at org.locationtech.geogig.storage.cache.CacheManagerTest.resolveDefaultMaxSizeEnvironmantVariable(CacheManagerTest.java:223)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
[main] INFO org.locationtech.geogig.storage.cache.CacheManager - Configuring GeoGig shared object cache maximum size to 5,000 bytes as given by the environment variable GEOGIG_CACHE_MAX_SIZE=0.5
[main] WARN org.locationtech.geogig.storage.cache.CacheManager - Unable to parse System property GEOGIG_CACHE_MAX_SIZE=. Falling back to environment variable
java.lang.IllegalArgumentException: Invalid format (), expected <float>[B|K|M|G]
	at org.locationtech.geogig.storage.cache.CacheManager.parseCacheSizeArgument(CacheManager.java:269)
	at org.locationtech.geogig.storage.cache.CacheManagerTest.assertDefaultMaxSizeDefaultValue(CacheManagerTest.java:188)
	at org.locationtech.geogig.storage.cache.CacheManagerTest.resolveDefaultMaxSizeEnvironmantVariableInvalidValue(CacheManagerTest.java:229)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
[main] WARN org.locationtech.geogig.storage.cache.CacheManager - Unable to parse environment variable GEOGIG_CACHE_MAX_SIZE=-1G
java.lang.IllegalArgumentException: Value must be a positive number or zero
	at com.google.common.base.Preconditions.checkArgument(Preconditions.java:122)
	at org.locationtech.geogig.storage.cache.CacheManager.parseCacheSizeArgument(CacheManager.java:257)
	at org.locationtech.geogig.storage.cache.CacheManagerTest.assertDefaultMaxSizeDefaultValue(CacheManagerTest.java:188)
	at org.locationtech.geogig.storage.cache.CacheManagerTest.resolveDefaultMaxSizeEnvironmantVariableInvalidValue(CacheManagerTest.java:229)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
[main] INFO org.locationtech.geogig.storage.cache.CacheManager - Configuring GeoGig shared object cache maximum size to the default of 2,500 bytes as given by the default 0.250000 percent of available heap. Use the GEOGIG_CACHE_MAX_SIZE System property or environmentvariable to set a different maximum size at runtime
[main] INFO org.locationtech.geogig.storage.cache.CacheManager - Configuring GeoGig shared object cache maximum size to the default of 119,406,592 bytes as given by the default 0.250000 percent of available heap. Use the GEOGIG_CACHE_MAX_SIZE System property or environmentvariable to set a different maximum size at runtime
[main] WARN org.locationtech.geogig.storage.cache.CacheManager - Unable to parse System property GEOGIG_CACHE_MAX_SIZE=0.91. Falling back to environment variable
java.lang.IllegalArgumentException: percent must be between zero and 90% (0.9)
	at com.google.common.base.Preconditions.checkArgument(Preconditions.java:122)
	at org.locationtech.geogig.storage.cache.CacheManager.getCacheSizePercent(CacheManager.java:203)
	at org.locationtech.geogig.storage.cache.CacheManagerTest.assertDefaultMaxSizeDefaultValue(CacheManagerTest.java:188)
	at org.locationtech.geogig.storage.cache.CacheManagerTest.resolveDefaultMaxSizeInvalidSysPropAndEnvVarFallsBackToDefaultPercent(CacheManagerTest.java:242)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
[main] WARN org.locationtech.geogig.storage.cache.CacheManager - Unable to parse environment variable GEOGIG_CACHE_MAX_SIZE=alsoInvalid
java.lang.IllegalArgumentException: Invalid format (ALSOINVALID), expected <float>[B|K|M|G]
	at org.locationtech.geogig.storage.cache.CacheManager.parseCacheSizeArgument(CacheManager.java:269)
	at org.locationtech.geogig.storage.cache.CacheManagerTest.assertDefaultMaxSizeDefaultValue(CacheManagerTest.java:188)
	at org.locationtech.geogig.storage.cache.CacheManagerTest.resolveDefaultMaxSizeInvalidSysPropAndEnvVarFallsBackToDefaultPercent(CacheManagerTest.java:242)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
[main] INFO org.locationtech.geogig.storage.cache.CacheManager - Configuring GeoGig shared object cache maximum size to the default of 2,500 bytes as given by the default 0.250000 percent of available heap. Use the GEOGIG_CACHE_MAX_SIZE System property or environmentvariable to set a different maximum size at runtime
Tests run: 31, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.741 sec - in org.locationtech.geogig.storage.cache.CacheManagerTest
Running org.locationtech.geogig.test.integration.RevParseIntegrationTest
Tests run: 24, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.085 sec - in org.locationtech.geogig.storage.memory.HeapObjectStoreConformanceTest
Running org.locationtech.geogig.test.integration.ApplyPatchOpTest
Tests run: 39, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.617 sec - in org.locationtech.geogig.storage.memory.HeapIndexDatabaseConformanceTest
Running org.locationtech.geogig.test.integration.BranchRenameOpTest
Tests run: 21, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.879 sec - in org.locationtech.geogig.storage.datastream.DataStreamSerializationFactoryV1Test
Running org.locationtech.geogig.test.integration.RemoteRemoveOpTest
Tests run: 21, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.193 sec - in org.locationtech.geogig.storage.datastream.LZ4SerializationFactoryTest
Running org.locationtech.geogig.test.integration.LogOpTest
Tests run: 21, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.163 sec - in org.locationtech.geogig.storage.datastream.DataStreamSerializationFactoryV2Test
Running org.locationtech.geogig.test.integration.GeogigTransactionTest
Tests run: 21, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.404 sec - in org.locationtech.geogig.storage.datastream.DataStreamSerializationFactoryV2_2Test
Tests run: 21, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.462 sec - in org.locationtech.geogig.storage.datastream.LZFSerializationFactoryTest
Running org.locationtech.geogig.test.integration.RevertOpTest
Running org.locationtech.geogig.test.integration.PushOpTest
Tests run: 21, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.508 sec - in org.locationtech.geogig.storage.datastream.v2_3.DataStreamSerializationFactoryV2_3Test
Running org.locationtech.geogig.test.integration.BranchListOpTest
Tests run: 21, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.437 sec - in org.locationtech.geogig.storage.datastream.DataStreamSerializationFactoryV2_1Test
Running org.locationtech.geogig.test.integration.BranchCreateOpTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.932 sec - in org.locationtech.geogig.storage.datastream.v2_3.NodeSetTest
Running org.locationtech.geogig.test.integration.RebaseOpTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.802 sec - in org.locationtech.geogig.storage.impl.INIBlobTest
Running org.locationtech.geogig.test.integration.TagTest
Tests run: 22, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.614 sec - in org.locationtech.geogig.storage.text.TextSerializationFactoryTest
Running org.locationtech.geogig.test.integration.MergeOpTest
testMergeNoCommits
Tests run: 14, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.52 sec - in org.locationtech.geogig.storage.fs.FileConflictsDatabaseConformanceTest
Running org.locationtech.geogig.test.integration.CloneOpTest
testOctopusMerge
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.483 sec - in org.locationtech.geogig.test.integration.RemoteRemoveOpTest
Running org.locationtech.geogig.test.integration.FetchOpTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.484 sec - in org.locationtech.geogig.test.integration.TagTest
Running org.locationtech.geogig.test.integration.FindCommonAncestorTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.165 sec - in org.locationtech.geogig.test.integration.CleanOpTest
Running org.locationtech.geogig.test.integration.AddOpTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.401 sec - in org.locationtech.geogig.storage.datastream.v2_3.RevTreeFormatTest
Running org.locationtech.geogig.test.integration.ReportCommitConflictsOpTest
[main] INFO org.locationtech.geogig.hooks.Scripting - Running jvm script /opt/public/hipp/ramdisk/geogig/junit7753032460410155535/repo1338438469/.geogig/hooks/pre_commit.js
Tests run: 21, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.505 sec - in org.locationtech.geogig.test.integration.ConfigOpTest
Running org.locationtech.geogig.test.integration.BlameOpTest
[main] INFO org.locationtech.geogig.hooks.Scripting - Running jvm script /opt/public/hipp/ramdisk/geogig/junit7753032460410155535/repo1338438469/.geogig/hooks/pre_commit.js
[main] INFO org.locationtech.geogig.hooks.Scripting - Running jvm script /opt/public/hipp/ramdisk/geogig/junit4961399916342648201/repo968685087/.geogig/hooks/post_commit.js
testMergeTwice
[main] WARN org.locationtech.geogig.hooks.CommandHookChain - Post-command hook org.locationtech.geogig.hooks.JVMScriptHook@c00fff0 for command org.locationtech.geogig.porcelain.CommitOp threw an exception that will not be propagated
java.lang.NullPointerException
	at org.locationtech.geogig.hooks.Scripting.runJVMScript(Scripting.java:93)
	at org.locationtech.geogig.hooks.JVMScriptHook.post(JVMScriptHook.java:52)
	at org.locationtech.geogig.hooks.CommandHookChain.runPostHooks(CommandHookChain.java:65)
	at org.locationtech.geogig.hooks.CommandHooksDecorator$HooksListener.postCall(CommandHooksDecorator.java:60)
	at org.locationtech.geogig.repository.AbstractGeoGigOp.notifyPost(AbstractGeoGigOp.java:179)
	at org.locationtech.geogig.repository.AbstractGeoGigOp.call(AbstractGeoGigOp.java:155)
	at org.locationtech.geogig.test.integration.HooksTest.testFailingPostPostProcessHook(HooksTest.java:148)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:48)
	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.165 sec - in org.locationtech.geogig.test.integration.RevParseIntegrationTest
Running org.locationtech.geogig.test.integration.PullOpTest
[main] WARN org.locationtech.geogig.hooks.CommandHookChain - Post-command hook org.locationtech.geogig.test.integration.HooksTest$ClasspathHookTest@e3cee7b for command org.locationtech.geogig.porcelain.AddOp threw an exception that will not be propagated
java.lang.RuntimeException: expected
	at org.locationtech.geogig.test.integration.HooksTest$ClasspathHookTest.post(HooksTest.java:266)
	at org.locationtech.geogig.hooks.CommandHookChain.runPostHooks(CommandHookChain.java:65)
	at org.locationtech.geogig.hooks.CommandHooksDecorator$HooksListener.postCall(CommandHooksDecorator.java:60)
	at org.locationtech.geogig.repository.AbstractGeoGigOp.notifyPost(AbstractGeoGigOp.java:179)
	at org.locationtech.geogig.repository.AbstractGeoGigOp.call(AbstractGeoGigOp.java:155)
	at org.locationtech.geogig.test.integration.RepositoryTestCase.insertAndAdd(RepositoryTestCase.java:377)
	at org.locationtech.geogig.test.integration.RepositoryTestCase.insertAndAdd(RepositoryTestCase.java:365)
	at org.locationtech.geogig.test.integration.HooksTest.testClasspathHookPostFail(HooksTest.java:191)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:48)
	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.647 sec - in org.locationtech.geogig.test.integration.BranchCreateOpTest
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/master -> a3ad4dd3b550a1215e3001faf8071e3448956105] to refs/remotes/origin/NewRemoteBranch(NewRemoteBranch)
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/Branch1 -> 43a3e480cf2de155a4a8a7b4a9030df9a23ab671] to refs/remotes/origin/NewRemoteBranch2(NewRemoteBranch2)
Running org.locationtech.geogig.test.integration.CheckSparsePathTest
[main] INFO org.locationtech.geogig.hooks.Scripting - Running shell script /opt/public/hipp/ramdisk/geogig/junit2708841963733635017/repo1731715057/.geogig/hooks/pre_commit.bat
[main] INFO org.locationtech.geogig.hooks.Scripting - Running shell script /opt/public/hipp/ramdisk/geogig/junit2708841963733635017/repo1731715057/.geogig/hooks/pre_commit.bat
testNoFastForwardSpecifyAuthor
[main] INFO org.locationtech.geogig.hooks.Scripting - Running jvm script /opt/public/hipp/ramdisk/geogig/junit543585026848574148/repo1786237809/.geogig/hooks/pre_commit.js
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 9.812 sec - in org.locationtech.geogig.test.integration.HooksTest
Running org.locationtech.geogig.test.integration.CreatePatchOpTest
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 9.294 sec - in org.locationtech.geogig.test.integration.repository.IndexTest
Running org.locationtech.geogig.test.integration.SquashOpTest
testBothBranchesSameGeometryChange
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 11.239 sec - in org.locationtech.geogig.storage.cache.SharedCacheTest
Running org.locationtech.geogig.test.integration.SparseCloneTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.528 sec - in org.locationtech.geogig.test.integration.BlameOpTest
Running org.locationtech.geogig.test.integration.DiffOpTest
testMergeFastForwardSecondCase
Tests run: 15, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.955 sec - in org.locationtech.geogig.test.integration.RevertOpTest
Running org.locationtech.geogig.test.integration.CleanRefsOpTest
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/master -> a3ad4dd3b550a1215e3001faf8071e3448956105] to refs/remotes/origin/NewRemoteBranch(NewRemoteBranch)
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.09 sec - in org.locationtech.geogig.test.integration.CleanRefsOpTest
Running org.locationtech.geogig.test.integration.LsTreeOpTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.832 sec - in org.locationtech.geogig.test.integration.BranchRenameOpTest
testOctopusMergeWithAutomerge
Running org.locationtech.geogig.test.integration.GeogigAPITest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.811 sec - in org.locationtech.geogig.test.integration.BranchListOpTest
Running org.locationtech.geogig.test.integration.BranchDeleteOpTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.757 sec - in org.locationtech.geogig.test.integration.GeogigAPITest
Running org.locationtech.geogig.test.integration.CherryPickOpTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.745 sec - in org.locationtech.geogig.test.integration.CreatePatchOpTest
Running org.locationtech.geogig.test.integration.RemoteListOpTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.314 sec - in org.locationtech.geogig.test.integration.CheckSparsePathTest
Running org.locationtech.geogig.test.integration.CommitOpTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.215 sec - in org.locationtech.geogig.test.integration.RemoteListOpTest
Running org.locationtech.geogig.test.integration.ConflictsReadWriteOpTest
testConflictingMergeInterceptor
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.201 sec - in org.locationtech.geogig.test.integration.FindCommonAncestorTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.139 sec - in org.locationtech.geogig.test.integration.ConflictsReadWriteOpTest
Running org.locationtech.geogig.test.integration.RebuildGraphOpTest
Running org.locationtech.geogig.test.integration.RemoteAddOpTest
Tests run: 20, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 11.01 sec - in org.locationtech.geogig.test.integration.repository.WorkingTreeTest
Running org.locationtech.geogig.test.integration.StatusOpTest
Tests run: 18, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.56 sec - in org.locationtech.geogig.test.integration.ApplyPatchOpTest
Running org.locationtech.geogig.test.integration.ResetOpTest
Tests run: 17, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.944 sec - in org.locationtech.geogig.test.integration.LogOpTest
Running org.locationtech.geogig.test.performance.LogOpPerformanceTest
[main] INFO org.locationtech.geogig.test.performance.EnablePerformanceTestRule - org.locationtech.geogig.test.performance.LogOpPerformanceTest ignored, run with -Dgeogig.runPerformanceTests=true to enable it.
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.018 sec - in org.locationtech.geogig.test.performance.LogOpPerformanceTest
Running org.locationtech.geogig.test.performance.HeapGraphDatabaseStressTest
[main] INFO org.locationtech.geogig.test.performance.EnablePerformanceTestRule - org.locationtech.geogig.test.performance.HeapGraphDatabaseStressTest ignored, run with -Dgeogig.runPerformanceTests=true to enable it.
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.019 sec - in org.locationtech.geogig.test.performance.HeapGraphDatabaseStressTest
Running org.locationtech.geogig.test.performance.RevTreeBuilderPerformanceTest
[main] INFO org.locationtech.geogig.test.performance.EnablePerformanceTestRule - org.locationtech.geogig.test.performance.RevTreeBuilderPerformanceTest ignored, run with -Dgeogig.runPerformanceTests=true to enable it.
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.055 sec - in org.locationtech.geogig.test.performance.RevTreeBuilderPerformanceTest
Running org.locationtech.geogig.model.impl.RevPersonTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec - in org.locationtech.geogig.model.impl.RevPersonTest
Running org.locationtech.geogig.model.impl.RevFeatureTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.046 sec - in org.locationtech.geogig.test.integration.BranchDeleteOpTest
Running org.locationtech.geogig.model.impl.RevFeatureTypeTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.061 sec - in org.locationtech.geogig.model.impl.RevFeatureTest
Running org.locationtech.geogig.model.impl.RevCommitImplTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec - in org.locationtech.geogig.model.impl.RevCommitImplTest
Running org.locationtech.geogig.model.impl.QuadTreeBuilderExpandCollapseTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec - in org.locationtech.geogig.model.impl.QuadTreeBuilderExpandCollapseTest
Running org.locationtech.geogig.model.impl.LegacyTreeBuilderTest
testMerge
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.258 sec - in org.locationtech.geogig.model.impl.RevFeatureTypeTest
Running org.locationtech.geogig.model.impl.CanonicalTreeBuilderTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.901 sec - in org.locationtech.geogig.test.integration.StatusOpTest
Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.97 sec - in org.locationtech.geogig.test.integration.RemoteAddOpTest
Running org.locationtech.geogig.model.impl.CommitBuilderTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.026 sec - in org.locationtech.geogig.model.impl.CommitBuilderTest
Running org.locationtech.geogig.model.internal.CanonicalClusteringStrategyHeapStorageTest
Tests run: 15, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.663 sec - in org.locationtech.geogig.test.integration.GeogigTransactionTest
Running org.locationtech.geogig.model.internal.CanonicalClusteringStrategyRocksdbStorageTest
testConflictingOctopusMerge
Running org.locationtech.geogig.model.internal.QuadTreeClusteringStrategyTest
Tests run: 10, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 12.034 sec - in org.locationtech.geogig.test.integration.RemoveOpTest
Tests run: 12, Failures: 0, Errors: 0, Skipped: 12, Time elapsed: 0.042 sec - in org.locationtech.geogig.model.internal.QuadTreeClusteringStrategyTest
Running org.locationtech.geogig.model.internal.QuadTreeClusteringStrategy_putTest
Running org.locationtech.geogig.model.internal.DAGNodeTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.253 sec - in org.locationtech.geogig.test.integration.RebuildGraphOpTest
Running org.locationtech.geogig.model.internal.QuadTreeClusteringStrategy_computeIdTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.07 sec - in org.locationtech.geogig.model.internal.QuadTreeClusteringStrategy_computeIdTest
Running org.locationtech.geogig.model.internal.NodeIdTest
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/master -> a3ad4dd3b550a1215e3001faf8071e3448956105] to refs/remotes/origin/master(null)
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.05 sec - in org.locationtech.geogig.model.internal.NodeIdTest
Running org.locationtech.geogig.model.internal.QuadrantTest
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.042 sec - in org.locationtech.geogig.model.internal.QuadrantTest
Running org.locationtech.geogig.data.retrieve.IteratorBackedFeatureReaderTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec - in org.locationtech.geogig.data.retrieve.IteratorBackedFeatureReaderTest
Running org.locationtech.geogig.data.retrieve.BulkFeatureRetrieverTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 2.013 sec - in org.locationtech.geogig.test.integration.CherryPickOpTest
Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.317 sec - in org.locationtech.geogig.test.integration.AddOpTest
Running org.locationtech.geogig.data.retrieve.BulkGeoGigFeatureRetrieverTest
Running org.locationtech.geogig.data.retrieve.MultiFeatureTypeBuilderTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.536 sec - in org.locationtech.geogig.data.retrieve.BulkFeatureRetrieverTest
Running org.locationtech.geogig.data.retrieve.BackgroundingIteratorTest
DAG[id:[], orig:EMPTY, status: CHANGED, size: 129, children: 0, buckets: 1)[children: {}, buckets: [[2]]]
 DAG[id:[2], orig:EMPTY, status: CHANGED, size: 129, children: 0, buckets: 2)[children: {}, buckets: [[2, 0], [2, 3]]]
  DAG[id:[2, 0], orig:EMPTY, status: CHANGED, size: 90, children: 90, buckets: 0)[children: {node # 2=NodeId[node # 2, Env[2.0 : 2.0, 1.0 : 1.0]], node # 1=NodeId[node # 1, Env[1.0 : 1.0, 1.0 : 1.0]], node # 18=NodeId[node # 18, Env[18.0 : 18.0, 1.0 : 1.0]], node # 19=NodeId[node # 19, Env[19.0 : 19.0, 1.0 : 1.0]], node # 16=NodeId[node # 16, Env[16.0 : 16.0, 1.0 : 1.0]], node # 17=NodeId[node # 17, Env[17.0 : 17.0, 1.0 : 1.0]], node # 9=NodeId[node # 9, Env[9.0 : 9.0, 1.0 : 1.0]], node # 8=NodeId[node # 8, Env[8.0 : 8.0, 1.0 : 1.0]], node # 7=NodeId[node # 7, Env[7.0 : 7.0, 1.0 : 1.0]], node # 6=NodeId[node # 6, Env[6.0 : 6.0, 1.0 : 1.0]], node # 5=NodeId[node # 5, Env[5.0 : 5.0, 1.0 : 1.0]], node # 4=NodeId[node # 4, Env[4.0 : 4.0, 1.0 : 1.0]], node # 3=NodeId[node # 3, Env[3.0 : 3.0, 1.0 : 1.0]], node # 61=NodeId[node # 61, Env[61.0 : 61.0, 1.0 : 1.0]], node # 62=NodeId[node # 62, Env[62.0 : 62.0, 1.0 : 1.0]], node # 60=NodeId[node # 60, Env[60.0 : 60.0, 1.0 : 1.0]], node # 69=NodeId[node # 69, Env[69.0 : 69.0, 1.0 : 1.0]], node # 25=NodeId[node # 25, Env[25.0 : 25.0, 1.0 : 1.0]], node # 26=NodeId[node # 26, Env[26.0 : 26.0, 1.0 : 1.0]], node # 67=NodeId[node # 67, Env[67.0 : 67.0, 1.0 : 1.0]], node # 23=NodeId[node # 23, Env[23.0 : 23.0, 1.0 : 1.0]], node # 68=NodeId[node # 68, Env[68.0 : 68.0, 1.0 : 1.0]], node # 24=NodeId[node # 24, Env[24.0 : 24.0, 1.0 : 1.0]], node # 65=NodeId[node # 65, Env[65.0 : 65.0, 1.0 : 1.0]], node # 21=NodeId[node # 21, Env[21.0 : 21.0, 1.0 : 1.0]], node # 66=NodeId[node # 66, Env[66.0 : 66.0, 1.0 : 1.0]], node # 22=NodeId[node # 22, Env[22.0 : 22.0, 1.0 : 1.0]], node # 63=NodeId[node # 63, Env[63.0 : 63.0, 1.0 : 1.0]], node # 64=NodeId[node # 64, Env[64.0 : 64.0, 1.0 : 1.0]], node # 20=NodeId[node # 20, Env[20.0 : 20.0, 1.0 : 1.0]], node # 49=NodeId[node # 49, Env[49.0 : 49.0, 1.0 : 1.0]], node # 50=NodeId[node # 50, Env[50.0 : 50.0, 1.0 : 1.0]], node # 51=NodeId[node # 51, Env[51.0 : 51.0, 1.0 : 1.0]], node # 90=NodeId[node # 90, Env[90.0 : 90.0, 1.0 : 1.0]], node # 58=NodeId[node # 58, Env[58.0 : 58.0, 1.0 : 1.0]], node # 14=NodeId[node # 14, Env[14.0 : 14.0, 1.0 : 1.0]], node # 59=NodeId[node # 59, Env[59.0 : 59.0, 1.0 : 1.0]], node # 15=NodeId[node # 15, Env[15.0 : 15.0, 1.0 : 1.0]], node # 56=NodeId[node # 56, Env[56.0 : 56.0, 1.0 : 1.0]], node # 12=NodeId[node # 12, Env[12.0 : 12.0, 1.0 : 1.0]], node # 57=NodeId[node # 57, Env[57.0 : 57.0, 1.0 : 1.0]], node # 13=NodeId[node # 13, Env[13.0 : 13.0, 1.0 : 1.0]], node # 54=NodeId[node # 54, Env[54.0 : 54.0, 1.0 : 1.0]], node # 10=NodeId[node # 10, Env[10.0 : 10.0, 1.0 : 1.0]], node # 55=NodeId[node # 55, Env[55.0 : 55.0, 1.0 : 1.0]], node # 11=NodeId[node # 11, Env[11.0 : 11.0, 1.0 : 1.0]], node # 52=NodeId[node # 52, Env[52.0 : 52.0, 1.0 : 1.0]], node # 53=NodeId[node # 53, Env[53.0 : 53.0, 1.0 : 1.0]], node # 38=NodeId[node # 38, Env[38.0 : 38.0, 1.0 : 1.0]], node # 39=NodeId[node # 39, Env[39.0 : 39.0, 1.0 : 1.0]], node # 83=NodeId[node # 83, Env[83.0 : 83.0, 1.0 : 1.0]], node # 84=NodeId[node # 84, Env[84.0 : 84.0, 1.0 : 1.0]], node # 40=NodeId[node # 40, Env[40.0 : 40.0, 1.0 : 1.0]], node # 81=NodeId[node # 81, Env[81.0 : 81.0, 1.0 : 1.0]], node # 82=NodeId[node # 82, Env[82.0 : 82.0, 1.0 : 1.0]], node # 80=NodeId[node # 80, Env[80.0 : 80.0, 1.0 : 1.0]], node # 47=NodeId[node # 47, Env[47.0 : 47.0, 1.0 : 1.0]], node # 48=NodeId[node # 48, Env[48.0 : 48.0, 1.0 : 1.0]], node # 89=NodeId[node # 89, Env[89.0 : 89.0, 1.0 : 1.0]], node # 45=NodeId[node # 45, Env[45.0 : 45.0, 1.0 : 1.0]], node # 46=NodeId[node # 46, Env[46.0 : 46.0, 1.0 : 1.0]], node # 87=NodeId[node # 87, Env[87.0 : 87.0, 1.0 : 1.0]], node # 43=NodeId[node # 43, Env[43.0 : 43.0, 1.0 : 1.0]], node # 88=NodeId[node # 88, Env[88.0 : 88.0, 1.0 : 1.0]], node # 44=NodeId[node # 44, Env[44.0 : 44.0, 1.0 : 1.0]], node # 85=NodeId[node # 85, Env[85.0 : 85.0, 1.0 : 1.0]], node # 41=NodeId[node # 41, Env[41.0 : 41.0, 1.0 : 1.0]], node # 86=NodeId[node # 86, Env[86.0 : 86.0, 1.0 : 1.0]], node # 42=NodeId[node # 42, Env[42.0 : 42.0, 1.0 : 1.0]], node # 29=NodeId[node # 29, Env[29.0 : 29.0, 1.0 : 1.0]], node # 27=NodeId[node # 27, Env[27.0 : 27.0, 1.0 : 1.0]], node # 28=NodeId[node # 28, Env[28.0 : 28.0, 1.0 : 1.0]], node # 72=NodeId[node # 72, Env[72.0 : 72.0, 1.0 : 1.0]], node # 73=NodeId[node # 73, Env[73.0 : 73.0, 1.0 : 1.0]], node # 70=NodeId[node # 70, Env[70.0 : 70.0, 1.0 : 1.0]], node # 71=NodeId[node # 71, Env[71.0 : 71.0, 1.0 : 1.0]], node # 36=NodeId[node # 36, Env[36.0 : 36.0, 1.0 : 1.0]], node # 37=NodeId[node # 37, Env[37.0 : 37.0, 1.0 : 1.0]], node # 78=NodeId[node # 78, Env[78.0 : 78.0, 1.0 : 1.0]], node # 34=NodeId[node # 34, Env[34.0 : 34.0, 1.0 : 1.0]], node # 79=NodeId[node # 79, Env[79.0 : 79.0, 1.0 : 1.0]], node # 35=NodeId[node # 35, Env[35.0 : 35.0, 1.0 : 1.0]], node # 76=NodeId[node # 76, Env[76.0 : 76.0, 1.0 : 1.0]], node # 32=NodeId[node # 32, Env[32.0 : 32.0, 1.0 : 1.0]], node # 77=NodeId[node # 77, Env[77.0 : 77.0, 1.0 : 1.0]], node # 33=NodeId[node # 33, Env[33.0 : 33.0, 1.0 : 1.0]], node # 74=NodeId[node # 74, Env[74.0 : 74.0, 1.0 : 1.0]], node # 30=NodeId[node # 30, Env[30.0 : 30.0, 1.0 : 1.0]], node # 75=NodeId[node # 75, Env[75.0 : 75.0, 1.0 : 1.0]], node # 31=NodeId[node # 31, Env[31.0 : 31.0, 1.0 : 1.0]]}, buckets: []]
  DAG[id:[2, 3], orig:EMPTY, status: CHANGED, size: 39, children: 39, buckets: 0)[children: {node # 107=NodeId[node # 107, Env[107.0 : 107.0, 1.0 : 1.0]], node # 129=NodeId[node # 129, Env[129.0 : 129.0, 1.0 : 1.0]], node # 106=NodeId[node # 106, Env[106.0 : 106.0, 1.0 : 1.0]], node # 128=NodeId[node # 128, Env[128.0 : 128.0, 1.0 : 1.0]], node # 109=NodeId[node # 109, Env[109.0 : 109.0, 1.0 : 1.0]], node # 108=NodeId[node # 108, Env[108.0 : 108.0, 1.0 : 1.0]], node # 103=NodeId[node # 103, Env[103.0 : 103.0, 1.0 : 1.0]], node # 125=NodeId[node # 125, Env[125.0 : 125.0, 1.0 : 1.0]], node # 102=NodeId[node # 102, Env[102.0 : 102.0, 1.0 : 1.0]], node # 124=NodeId[node # 124, Env[124.0 : 124.0, 1.0 : 1.0]], node # 105=NodeId[node # 105, Env[105.0 : 105.0, 1.0 : 1.0]], node # 127=NodeId[node # 127, Env[127.0 : 127.0, 1.0 : 1.0]], node # 104=NodeId[node # 104, Env[104.0 : 104.0, 1.0 : 1.0]], node # 126=NodeId[node # 126, Env[126.0 : 126.0, 1.0 : 1.0]], node # 121=NodeId[node # 121, Env[121.0 : 121.0, 1.0 : 1.0]], node # 120=NodeId[node # 120, Env[120.0 : 120.0, 1.0 : 1.0]], node # 101=NodeId[node # 101, Env[101.0 : 101.0, 1.0 : 1.0]], node # 123=NodeId[node # 123, Env[123.0 : 123.0, 1.0 : 1.0]], node # 100=NodeId[node # 100, Env[100.0 : 100.0, 1.0 : 1.0]], node # 122=NodeId[node # 122, Env[122.0 : 122.0, 1.0 : 1.0]], node # 118=NodeId[node # 118, Env[118.0 : 118.0, 1.0 : 1.0]], node # 117=NodeId[node # 117, Env[117.0 : 117.0, 1.0 : 1.0]], node # 119=NodeId[node # 119, Env[119.0 : 119.0, 1.0 : 1.0]], node # 114=NodeId[node # 114, Env[114.0 : 114.0, 1.0 : 1.0]], node # 113=NodeId[node # 113, Env[113.0 : 113.0, 1.0 : 1.0]], node # 116=NodeId[node # 116, Env[116.0 : 116.0, 1.0 : 1.0]], node # 115=NodeId[node # 115, Env[115.0 : 115.0, 1.0 : 1.0]], node # 110=NodeId[node # 110, Env[110.0 : 110.0, 1.0 : 1.0]], node # 112=NodeId[node # 112, Env[112.0 : 112.0, 1.0 : 1.0]], node # 111=NodeId[node # 111, Env[111.0 : 111.0, 1.0 : 1.0]], node # 94=NodeId[node # 94, Env[94.0 : 94.0, 1.0 : 1.0]], node # 95=NodeId[node # 95, Env[95.0 : 95.0, 1.0 : 1.0]], node # 92=NodeId[node # 92, Env[92.0 : 92.0, 1.0 : 1.0]], node # 93=NodeId[node # 93, Env[93.0 : 93.0, 1.0 : 1.0]], node # 91=NodeId[node # 91, Env[91.0 : 91.0, 1.0 : 1.0]], node # 98=NodeId[node # 98, Env[98.0 : 98.0, 1.0 : 1.0]], node # 99=NodeId[node # 99, Env[99.0 : 99.0, 1.0 : 1.0]], node # 96=NodeId[node # 96, Env[96.0 : 96.0, 1.0 : 1.0]], node # 97=NodeId[node # 97, Env[97.0 : 97.0, 1.0 : 1.0]]}, buckets: []]
testFastForwardOnly
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.669 sec - in org.locationtech.geogig.data.retrieve.MultiFeatureTypeBuilderTest
Running org.locationtech.geogig.data.EPSGBoundsCalcTest
testSpecifyAuthor
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.839 sec - in org.locationtech.geogig.data.retrieve.BulkGeoGigFeatureRetrieverTest
Running org.locationtech.geogig.data.EPSGBoundsXYTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.068 sec - in org.locationtech.geogig.data.EPSGBoundsXYTest
Running org.locationtech.geogig.data.MapToStringConverterFactoryTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.098 sec - in org.locationtech.geogig.data.MapToStringConverterFactoryTest
Running org.locationtech.geogig.data.PrimitiveArrayToStringConverterFactoryTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.034 sec - in org.locationtech.geogig.data.PrimitiveArrayToStringConverterFactoryTest
Running org.locationtech.geogig.data.EPSGBoundsYXTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec - in org.locationtech.geogig.data.EPSGBoundsYXTest
Running org.locationtech.geogig.data.FeatureBuilderTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.077 sec - in org.locationtech.geogig.data.FeatureBuilderTest
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/master -> a3ad4dd3b550a1215e3001faf8071e3448956105] to refs/remotes/origin/master(null)
Running org.locationtech.geogig.plumbing.ResolveRepositoryNameTest
Tests run: 13, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 14.293 sec - in org.locationtech.geogig.test.integration.ReportMergeConflictsOpTest
Running org.locationtech.geogig.plumbing.merge.MergeFeaturesOpTest
testOursAndTheirs
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/Branch1 -> e4d10fce0f71850b8e201763343ebde1c71aa5f6] to refs/remotes/origin/Branch1(null)
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.157 sec - in org.locationtech.geogig.plumbing.ResolveRepositoryNameTest
Running org.locationtech.geogig.plumbing.merge.MergeStatusBuilderDiffEntrySerializerTest
testNoCommitMerge
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.198 sec - in org.locationtech.geogig.plumbing.merge.MergeFeaturesOpTest
Running org.locationtech.geogig.plumbing.index.BuildIndexOpTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.245 sec - in org.locationtech.geogig.plumbing.merge.MergeStatusBuilderDiffEntrySerializerTest
Running org.locationtech.geogig.plumbing.index.BuildFullHistoryIndexOpTest
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.368 sec - in org.locationtech.geogig.data.retrieve.BackgroundingIteratorTest
Running org.locationtech.geogig.plumbing.diff.DepthTreeIteratorTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.369 sec - in org.locationtech.geogig.model.internal.QuadTreeClusteringStrategy_putTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.383 sec - in org.locationtech.geogig.model.internal.DAGNodeTest
Running org.locationtech.geogig.plumbing.diff.PostOrderDiffWalkTest
testMergeFastForward
Running org.locationtech.geogig.plumbing.diff.MutableTreeTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.078 sec - in org.locationtech.geogig.plumbing.diff.MutableTreeTest
Running org.locationtech.geogig.plumbing.diff.TreeDifferenceTest
Tests run: 21, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.361 sec - in org.locationtech.geogig.test.integration.DiffOpTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.176 sec - in org.locationtech.geogig.plumbing.diff.TreeDifferenceTest
Running org.locationtech.geogig.plumbing.diff.GeometryDiffTest
Running org.locationtech.geogig.plumbing.diff.PreOrderDiffWalkTest
testOctopusMergeSameFeatureChanges
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/Branch1 -> b9ffcf8d172b8905500e906f2218c55b58cf2c44] to refs/remotes/origin/Branch1(Branch1)
Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.823 sec - in org.locationtech.geogig.test.integration.ReportCommitConflictsOpTest
Running org.locationtech.geogig.plumbing.diff.PatchSerializationTest
Tests run: 14, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.436 sec - in org.locationtech.geogig.plumbing.diff.GeometryDiffTest
Running org.locationtech.geogig.plumbing.diff.DiffCountConsumerTest
Tests run: 14, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.447 sec - in org.locationtech.geogig.test.integration.SquashOpTest
Running org.locationtech.geogig.plumbing.diff.AttributeDiffTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.052 sec - in org.locationtech.geogig.plumbing.diff.AttributeDiffTest
Running org.locationtech.geogig.plumbing.RevParseTest
Tests run: 21, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 16.027 sec - in org.locationtech.geogig.test.integration.CheckoutOpTest
Running org.locationtech.geogig.plumbing.DiffTreeTest
Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 11.541 sec - in org.locationtech.geogig.test.integration.RebaseOpTest
Running org.locationtech.geogig.plumbing.HashObjectTest
testMergeNullCommit
testMergeMultiple
Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.214 sec - in org.locationtech.geogig.test.integration.LsTreeOpTest
Running org.locationtech.geogig.plumbing.ResolveFeatureTypeTest
Removed 32,600 nodes in 1.327 s
testMergeConflictingPolygon
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.209 sec - in org.locationtech.geogig.plumbing.diff.PatchSerializationTest
Running org.locationtech.geogig.plumbing.ParseTimestampTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.728 sec - in org.locationtech.geogig.plumbing.ResolveFeatureTypeTest
Running org.locationtech.geogig.plumbing.RefParseTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.353 sec - in org.locationtech.geogig.plumbing.ParseTimestampTest
Running org.locationtech.geogig.plumbing.WriteTree2Test
testMergeConflictingBranchesTheirs
Added 7,000 nodes in 94.96 ms
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.708 sec - in org.locationtech.geogig.plumbing.HashObjectTest
Running org.locationtech.geogig.plumbing.UpdateRefTest
Tests run: 13, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.28 sec - in org.locationtech.geogig.test.integration.ResetOpTest
Running org.locationtech.geogig.plumbing.DescribeFeatureTypeTest
testMergeWithFeatureMerge
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.357 sec - in org.locationtech.geogig.plumbing.DescribeFeatureTypeTest
Running org.locationtech.geogig.plumbing.ResolveGeogigURITest
left : Tree[c932cbd11ec75bcc145e2a362a3199bb85eb3abc; size=7; subtrees=2, buckets=0, features=0]
	[TreeNode[buildings -> a400000000000000000000000000000000000000], TreeNode[roads -> ff488999ad51848c7850ffd4d12568a3125172b0]]
	[]
right: Tree[8996d6e4437a8d8ea41ffc1f32cfaab9bf9de384; size=5; subtrees=1, buckets=0, features=0]
	[TreeNode[roads -> 72e2f547f3adc30edd55733abb885e8e6de1f1a4]]
	[]
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/Branch1 -> b9ffcf8d172b8905500e906f2218c55b58cf2c44] to refs/remotes/origin/Branch1(Branch1)
testMergeNoCommitMessage
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.447 sec - in org.locationtech.geogig.plumbing.diff.PostOrderDiffWalkTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.673 sec - in org.locationtech.geogig.plumbing.UpdateRefTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.463 sec - in org.locationtech.geogig.plumbing.RefParseTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.57 sec - in org.locationtech.geogig.plumbing.ResolveGeogigURITest
Running org.locationtech.geogig.plumbing.DiffBoundsTest
Running org.locationtech.geogig.plumbing.CatObjectTest
Running org.locationtech.geogig.plumbing.UpdateSymRefTest
Running org.locationtech.geogig.plumbing.UpdateTreeTest
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit2759316445291562372/mockWorkingDir/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit7448789443282186994/mockWorkingDir/.geogig/
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.338 sec - in org.locationtech.geogig.plumbing.UpdateSymRefTest
Running org.locationtech.geogig.plumbing.CheckRefFormatTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.463 sec - in org.locationtech.geogig.plumbing.CatObjectTest
Running org.locationtech.geogig.plumbing.DiffFeatureTest
Tests run: 26, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.364 sec - in org.locationtech.geogig.test.integration.CommitOpTest
Running org.locationtech.geogig.plumbing.WalkGraphOpTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.195 sec - in org.locationtech.geogig.plumbing.CheckRefFormatTest
Running org.locationtech.geogig.porcelain.index.UpdateIndexesOpTest
Added 5,000 nodes in 141.6 ms
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.676 sec - in org.locationtech.geogig.plumbing.UpdateTreeTest
Running org.locationtech.geogig.porcelain.index.UpdateIndexOpTest
Added 1,024 nodes in 2.152 ms
Removed 400 nodes in 1.723 ms

Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 11.748 sec - in org.locationtech.geogig.test.integration.PullOpTest
Running org.locationtech.geogig.porcelain.index.DropIndexOpTest
Exception caught executing task: 
java.lang.IllegalStateException: java.lang.IllegalStateException: Object NodeRef[Points/Points.1 -> a47ca38e5c3e92c94dec9e8ea597c642003ec878] not found.
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:593)
	at java.util.concurrent.ForkJoinTask.reportException(ForkJoinTask.java:677)
	at java.util.concurrent.ForkJoinTask.join(ForkJoinTask.java:720)
	at java.util.concurrent.ForkJoinPool.invoke(ForkJoinPool.java:2616)
	at org.locationtech.geogig.plumbing.diff.PreOrderDiffWalk.walk(PreOrderDiffWalk.java:322)
	at org.locationtech.geogig.plumbing.WalkGraphOp._call(WalkGraphOp.java:160)
	at org.locationtech.geogig.plumbing.WalkGraphOp._call(WalkGraphOp.java:32)
	at org.locationtech.geogig.repository.AbstractGeoGigOp.call(AbstractGeoGigOp.java:154)
	at org.locationtech.geogig.plumbing.WalkGraphOpTest.testObjectDoesNotExist(WalkGraphOpTest.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
	at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:48)
	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
Caused by: java.lang.IllegalStateException: Object NodeRef[Points/Points.1 -> a47ca38e5c3e92c94dec9e8ea597c642003ec878] not found.
	at org.locationtech.geogig.plumbing.WalkGraphOp$1.checkExists(WalkGraphOp.java:155)
	at org.locationtech.geogig.plumbing.WalkGraphOp$1.feature(WalkGraphOp.java:128)
	at org.locationtech.geogig.plumbing.diff.PreOrderDiffWalk$CancellableConsumer.feature(PreOrderDiffWalk.java:1303)
	at org.locationtech.geogig.plumbing.diff.PreOrderDiffWalk$WalkAction.node(PreOrderDiffWalk.java:627)
	at org.locationtech.geogig.plumbing.diff.PreOrderDiffWalk$TraverseLeafLeaf.compute(PreOrderDiffWalk.java:830)
	at org.locationtech.geogig.plumbing.diff.PreOrderDiffWalk$TraverseTreeContents.compute(PreOrderDiffWalk.java:736)
	at org.locationtech.geogig.plumbing.diff.PreOrderDiffWalk$TraverseTree.compute(PreOrderDiffWalk.java:692)
	at java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:189)
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
	at java.util.concurrent.ForkJoinTask.doInvoke(ForkJoinTask.java:401)
	at java.util.concurrent.ForkJoinTask.invokeAll(ForkJoinTask.java:843)
	at org.locationtech.geogig.plumbing.diff.PreOrderDiffWalk$TraverseLeafLeaf.compute(PreOrderDiffWalk.java:837)
	at org.locationtech.geogig.plumbing.diff.PreOrderDiffWalk$TraverseTreeContents.compute(PreOrderDiffWalk.java:736)
	at org.locationtech.geogig.plumbing.diff.PreOrderDiffWalk$TraverseTree.compute(PreOrderDiffWalk.java:692)
	at java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:189)
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
sp	StringProp1_1 -> StringProp1_1a
pp	0 point(s) deleted, 0 new point(s) added, 1 point(s) moved
ip	1000 -> 1001

Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.121 sec - in org.locationtech.geogig.plumbing.DiffFeatureTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.064 sec - in org.locationtech.geogig.plumbing.WalkGraphOpTest
Running org.locationtech.geogig.porcelain.index.CreateIndexOpTest
testMergeTwoBranchesWithNewFeatureType
Running org.locationtech.geogig.porcelain.InitOpTest
Added 10,000 nodes in 205.5 ms
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.193 sec - in org.locationtech.geogig.model.internal.CanonicalClusteringStrategyHeapStorageTest
Running org.locationtech.geogig.repository.impl.SpatialOpsTest
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/master -> a3ad4dd3b550a1215e3001faf8071e3448956105] to refs/remotes/origin/master(null)
testCancelScenario1
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/master -> d13557ae0d974dbbc25eb1e98414ea3a2455cc3c] to refs/remotes/origin/refs/heads/master(refs/heads/master)
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.883 sec - in org.locationtech.geogig.porcelain.InitOpTest
Running org.locationtech.geogig.repository.impl.RepositoryResolverTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.047 sec - in org.locationtech.geogig.repository.impl.RepositoryResolverTest
Running org.locationtech.geogig.repository.impl.DepthSearchTest
Tests run: 15, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.337 sec - in org.locationtech.geogig.plumbing.WriteTree2Test
Running org.locationtech.geogig.repository.impl.RevFeatureBuilderTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.225 sec - in org.locationtech.geogig.repository.impl.DepthSearchTest
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/master -> a3ad4dd3b550a1215e3001faf8071e3448956105] to refs/remotes/origin/master(null)
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 10.41 sec - in org.locationtech.geogig.model.impl.LegacyTreeBuilderTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.873 sec - in org.locationtech.geogig.repository.impl.RevFeatureBuilderTest
testCancelScenario2
Removed 32,600 nodes in 5.906 s
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 18.619 sec - in org.locationtech.geogig.test.integration.PushOpTest
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.064 sec - in org.locationtech.geogig.plumbing.diff.DiffCountConsumerTest
testCancelScenario3
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit181603803436188769/mockWorkingDir/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit5915186481884993003/mockWorkingDir/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit5998886868343677386/mockWorkingDir/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit3216414142945104587/mockWorkingDir/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit8398752681067526810/mockWorkingDir/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit2939728953849248284/mockWorkingDir/.geogig/
testCancelScenario4
testNoFastForward
Added 7,000 nodes in 642.1 ms
testMergeConflictingBranches
Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.378 sec - in org.locationtech.geogig.plumbing.RevParseTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 18.8 sec - in org.locationtech.geogig.test.integration.CloneOpTest
testMergeConflictingBranchesOurs
Tests run: 15, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 19.133 sec - in org.locationtech.geogig.test.integration.FetchOpTest
Tests run: 30, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 20.685 sec - in org.locationtech.geogig.test.integration.MergeOpTest
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit6545035590446882965/mockWorkingDir/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit2054519937798976111/mockWorkingDir/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit3647434145500735867/mockWorkingDir/.geogig/
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 10.554 sec - in org.locationtech.geogig.plumbing.DiffTreeTest
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 14.339 sec - in org.locationtech.geogig.model.impl.CanonicalTreeBuilderTest
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/master -> b2e392a358773a01efe3ec48a3580362a7fc83d0] to refs/remotes/origin/refs/heads/master(refs/heads/master)
Added 5,000 nodes in 161.9 ms
Added 1,024 nodes in 14.21 ms
Removed 400 nodes in 4.185 ms
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.97 sec - in org.locationtech.geogig.porcelain.index.DropIndexOpTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 9.415 sec - in org.locationtech.geogig.plumbing.DiffBoundsTest
Added 10,000 nodes in 211.8 ms
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 16.504 sec - in org.locationtech.geogig.model.internal.CanonicalClusteringStrategyRocksdbStorageTest
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 15.63 sec - in org.locationtech.geogig.plumbing.index.BuildIndexOpTest
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 10.854 sec - in org.locationtech.geogig.porcelain.index.CreateIndexOpTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 16.863 sec - in org.locationtech.geogig.plumbing.index.BuildFullHistoryIndexOpTest
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/master -> 32b4e258bf8026e45ba1c2ace4a1f36e15b862a1] to refs/remotes/origin/master(null)
Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 22.26 sec - in org.locationtech.geogig.test.integration.SparseCloneTest
Tests run: 16, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 13.266 sec - in org.locationtech.geogig.porcelain.index.UpdateIndexOpTest
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 15.324 sec - in org.locationtech.geogig.porcelain.index.UpdateIndexesOpTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 14.552 sec - in org.locationtech.geogig.repository.impl.SpatialOpsTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 22.428 sec - in org.locationtech.geogig.data.EPSGBoundsCalcTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 21.965 sec - in org.locationtech.geogig.plumbing.diff.DepthTreeIteratorTest
PreOrderDiffWalkTest: walked 524,288 vs 262144 trees in 298.1 ms
PreOrderDiffWalkTest: walked 1,024 vs 512 trees in 11.83 ms
PreOrderDiffWalkTest: walked 16,384 vs 512 trees in 76.35 ms
Tests run: 24, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 24.936 sec - in org.locationtech.geogig.plumbing.diff.PreOrderDiffWalkTest

Results :

Tests run: 1288, Failures: 0, Errors: 0, Skipped: 16

[JENKINS] Recording test results
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ geogig-core ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/core/target/geogig-core-1.1-SNAPSHOT.jar
[INFO] 
[INFO] --- maven-jar-plugin:2.4:test-jar (default) @ geogig-core ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/core/target/geogig-core-1.1-SNAPSHOT-tests.jar
[INFO] 
[INFO] >>> maven-source-plugin:2.2.1:jar (attach-sources) > generate-sources @ geogig-core >>>
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig-core ---
[WARNING] Failed to getClass for org.apache.maven.plugin.source.SourceJarMojo
[INFO] 
[INFO] <<< maven-source-plugin:2.2.1:jar (attach-sources) < generate-sources @ geogig-core <<<
[INFO] 
[INFO] --- maven-source-plugin:2.2.1:jar (attach-sources) @ geogig-core ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/core/target/geogig-core-1.1-SNAPSHOT-sources.jar
[INFO] 
[INFO] >>> maven-source-plugin:2.2.1:test-jar (attach-sources) > generate-sources @ geogig-core >>>
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig-core ---
[WARNING] Failed to getClass for org.apache.maven.plugin.source.TestSourceJarMojo
[INFO] 
[INFO] <<< maven-source-plugin:2.2.1:test-jar (attach-sources) < generate-sources @ geogig-core <<<
[INFO] 
[INFO] --- maven-source-plugin:2.2.1:test-jar (attach-sources) @ geogig-core ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/core/target/geogig-core-1.1-SNAPSHOT-test-sources.jar
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ geogig-core ---
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/core/target/geogig-core-1.1-SNAPSHOT.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-core/1.1-SNAPSHOT/geogig-core-1.1-SNAPSHOT.jar
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/core/pom.xml to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-core/1.1-SNAPSHOT/geogig-core-1.1-SNAPSHOT.pom
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/core/target/geogig-core-1.1-SNAPSHOT-tests.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-core/1.1-SNAPSHOT/geogig-core-1.1-SNAPSHOT-tests.jar
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/core/target/geogig-core-1.1-SNAPSHOT-sources.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-core/1.1-SNAPSHOT/geogig-core-1.1-SNAPSHOT-sources.jar
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/core/target/geogig-core-1.1-SNAPSHOT-test-sources.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-core/1.1-SNAPSHOT/geogig-core-1.1-SNAPSHOT-test-sources.jar
[JENKINS] Archiving disabled
Started calculate disk usage of build
Finished Calculation of disk usage of build in 0 seconds
Started calculate disk usage of workspace
Finished Calculation of disk usage of workspace in 0 seconds
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building GeoGig DataStore Implementation 1.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ geogig-datastore ---
[INFO] Deleting /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/datastore/target
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig-datastore ---
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ geogig-datastore ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 3 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ geogig-datastore ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 18 source files to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/datastore/target/classes
[WARNING] /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/datastore/src/main/java/org/locationtech/geogig/geotools/data/GeogigFeatureSource.java: Some input files use unchecked or unsafe operations.
[WARNING] /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/datastore/src/main/java/org/locationtech/geogig/geotools/data/GeogigFeatureSource.java: Recompile with -Xlint:unchecked for details.
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ geogig-datastore ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ geogig-datastore ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 15 source files to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/datastore/target/test-classes
[WARNING] /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/datastore/src/test/java/org/locationtech/geogig/geotools/data/reader/FeatureReaderBuilderTest.java: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/datastore/src/test/java/org/locationtech/geogig/geotools/data/reader/FeatureReaderBuilderTest.java uses unchecked or unsafe operations.
[WARNING] /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/datastore/src/test/java/org/locationtech/geogig/geotools/data/reader/FeatureReaderBuilderTest.java: Recompile with -Xlint:unchecked for details.
[INFO] 
[INFO] --- maven-surefire-plugin:2.17:test (default-test) @ geogig-datastore ---
[INFO] Surefire report directory: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/datastore/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running org.locationtech.geogig.geotools.data.GeoGigFeatureStoreTest
Running org.locationtech.geogig.geotools.data.reader.ExtraDataPropertyAccessorFactoryTest
Running org.locationtech.geogig.geotools.data.reader.PrePostFilterSplitterTest
Running org.locationtech.geogig.geotools.data.reader.PreFilterTest
Running org.locationtech.geogig.geotools.data.reader.MaterializedIndexFeatureIteratorTest
Running org.locationtech.geogig.geotools.data.functional.RunDataStoreDimensionTest
Running org.locationtech.geogig.geotools.data.reader.FeatureReaderBuilderTest
Running org.locationtech.geogig.geotools.data.GeoGigFeatureStoreIndexedTest
Running org.locationtech.geogig.geotools.data.functional.RunDataStoreFunctionalTest
Running org.locationtech.geogig.geotools.data.GeoGigDataStoreTest
Running org.locationtech.geogig.geotools.data.GeoGigDataStoreFactoryTest
Running org.locationtech.geogig.geotools.data.GeoGigFeatureSourceTest
Running org.locationtech.geogig.geotools.data.stresstest.DataStoreConcurrencyTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.869 sec - in org.locationtech.geogig.geotools.data.reader.ExtraDataPropertyAccessorFactoryTest
Feature: GeoGig DataStore Layer Dimension validation
  The GeoGig DataStore is the integration point between GeoServer/OGC services
  and GeoGig repositories. These scenarios are meant to ensure data/feature
  integrity when layers utilize time/elevation dimensions.
Feature: GeoGig DataStore Feature read/write validation
  The GeoGig DataStore is the integration point between GeoServer/OGC services
  and GeoGig repositories. These scenarios are meant to ensure data/feature
  integrity via interactions with the DataStore.
Tests run: 30, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.919 sec - in org.locationtech.geogig.geotools.data.reader.PreFilterTest
Tests run: 37, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.266 sec - in org.locationtech.geogig.geotools.data.reader.PrePostFilterSplitterTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.348 sec - in org.locationtech.geogig.geotools.data.reader.MaterializedIndexFeatureIteratorTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.707 sec - in org.locationtech.geogig.geotools.data.GeoGigDataStoreFactoryTest
2017-07-06T09:05:30.321-0400  WARNING  Feature Collection contains a heterogeneous mix of features
2017-07-06T09:05:31.207-0400  WARNING  Feature Collection contains a heterogeneous mix of features
2017-07-06T09:05:31.396-0400  WARNING  Feature Collection contains a heterogeneous mix of features

  Scenario: Ensure Point Features with Time dimensions can be retrieved from a DataStore            # features/dimension/Dimesnion.feature:6
    Given I am working with the "pointTime" layer                                                   # FunctionalStepDefinitions.i_am_working_with_the_layer(String)
    And I have a datastore named "dataStore1" backed by a GeoGig repo                               # FunctionalStepDefinitions.i_have_a_datastore_backed_by_a_GeoGig_repo(String)
    And datastore "dataStore1" has 200 features per thread inserted using 4 threads                 # FunctionalStepDefinitions.datastore_has_features_inserted(String,int,int)
    Then I should be able to retrieve data from "dataStore1" using 1 threads and 1 reads per thread # FunctionalStepDefinitions.datastore_should_have_some_data(String,int,int)
    And features in "dataStore1" should contain a Time attribute                                    # FunctionalStepDefinitions.features_should_contain_time_attribute(String)
Tests run: 16, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.124 sec - in org.locationtech.geogig.geotools.data.reader.FeatureReaderBuilderTest
Tests run: 15, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.97 sec - in org.locationtech.geogig.geotools.data.GeoGigDataStoreTest
Tests run: 13, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.054 sec - in org.locationtech.geogig.geotools.data.GeoGigFeatureStoreTest

  Scenario: Ensure Point Features with Time dimensions can be retrieved from a DataStore with indexes # features/dimension/Dimesnion.feature:13
    Given I am working with the "pointTime" layer                                                     # FunctionalStepDefinitions.i_am_working_with_the_layer(String)
    And I have a datastore named "dataStore1" backed by a GeoGig repo                                 # FunctionalStepDefinitions.i_have_a_datastore_backed_by_a_GeoGig_repo(String)
    And datastore "dataStore1" has 200 features per thread inserted using 4 threads                   # FunctionalStepDefinitions.datastore_has_features_inserted(String,int,int)
    When I create a spatial index on "dataStore1" with extra attributes "dp"                          # FunctionalStepDefinitions.i_create_a_spatial_index_with_extra_Attributes(String,String)
    Then I should be able to retrieve data from "dataStore1" using 1 threads and 1 reads per thread   # FunctionalStepDefinitions.datastore_should_have_some_data(String,int,int)
    And features in "dataStore1" should contain a Time attribute                                      # FunctionalStepDefinitions.features_should_contain_time_attribute(String)

  Scenario: Ensure Point Features with NULL Time dimension values can be retrieved from a DataStore with indexes # features/dimension/Dimesnion.feature:21
    Given I am working with the "pointTime" layer                                                                # FunctionalStepDefinitions.i_am_working_with_the_layer(String)
    And I have a datastore named "dataStore1" backed by a GeoGig repo                                            # FunctionalStepDefinitions.i_have_a_datastore_backed_by_a_GeoGig_repo(String)
    And datastore "dataStore1" has 200 features per thread inserted using 4 threads                              # FunctionalStepDefinitions.datastore_has_features_inserted(String,int,int)
    When I create a spatial index on "dataStore1" with extra attributes "dp"                                     # FunctionalStepDefinitions.i_create_a_spatial_index_with_extra_Attributes(String,String)
    And I edit a time dimension attribute value in "dataStore1" to be NULL                                       # FunctionalStepDefinitions.i_edit_a_time_dimension_attribute_value_to_be_null(String)
    Then I should be able to retrieve data from "dataStore1" using 1 threads and 1 reads per thread              # FunctionalStepDefinitions.datastore_should_have_some_data(String,int,int)
    And the edited feature in "dataStore1" should contain a NULL Time attribute                                  # FunctionalStepDefinitions.edited_feature_should_contain_null_time_attribute(String)

3 Scenarios (3 passed)
18 Steps (18 passed)
0m7.505s

Tests run: 21, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.486 sec - in org.locationtech.geogig.geotools.data.functional.RunDataStoreDimensionTest
2017-07-06T09:05:34.613-0400  WARNING  Feature Collection contains a heterogeneous mix of features

  Scenario: Ensure Point Features can be retrieved from a DataStore                                  # features/index/FeatureReader.feature:6
    Given I am working with the "point" layer                                                        # FunctionalStepDefinitions.i_am_working_with_the_layer(String)
    And I have a datastore named "dataStore1" backed by a GeoGig repo                                # FunctionalStepDefinitions.i_have_a_datastore_backed_by_a_GeoGig_repo(String)
    And datastore "dataStore1" has 200 features per thread inserted using 4 threads                  # FunctionalStepDefinitions.datastore_has_features_inserted(String,int,int)
    Then I should be able to retrieve data from "dataStore1" using 4 threads and 40 reads per thread # FunctionalStepDefinitions.datastore_should_have_some_data(String,int,int)
Tests run: 17, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.786 sec - in org.locationtech.geogig.geotools.data.GeoGigFeatureSourceTest
2017-07-06T09:05:34.947-0400  WARNING  Feature Collection contains a heterogeneous mix of features
2017-07-06T09:05:35.196-0400  WARNING  Feature Collection contains a heterogeneous mix of features
Tests run: 17, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 9.817 sec - in org.locationtech.geogig.geotools.data.GeoGigFeatureStoreIndexedTest

  Scenario: Ensure Polygon Features can be retrieved from a DataStore                                # features/index/FeatureReader.feature:12
    Given I am working with the "polygon" layer                                                      # FunctionalStepDefinitions.i_am_working_with_the_layer(String)
    And I have a datastore named "dataStore1" backed by a GeoGig repo                                # FunctionalStepDefinitions.i_have_a_datastore_backed_by_a_GeoGig_repo(String)
    And datastore "dataStore1" has 200 features per thread inserted using 4 threads                  # FunctionalStepDefinitions.datastore_has_features_inserted(String,int,int)
    Then I should be able to retrieve data from "dataStore1" using 4 threads and 40 reads per thread # FunctionalStepDefinitions.datastore_should_have_some_data(String,int,int)

  Scenario: Ensure Point Features can be retrieved from a DataStore with an indexed repo             # features/index/FeatureReader.feature:18
    Given I am working with the "point" layer                                                        # FunctionalStepDefinitions.i_am_working_with_the_layer(String)
    And I have a datastore named "dataStore1" backed by a GeoGig repo                                # FunctionalStepDefinitions.i_have_a_datastore_backed_by_a_GeoGig_repo(String)
    And datastore "dataStore1" has 200 features per thread inserted using 4 threads                  # FunctionalStepDefinitions.datastore_has_features_inserted(String,int,int)
    Then I should be able to retrieve data from "dataStore1" using 4 threads and 40 reads per thread # FunctionalStepDefinitions.datastore_should_have_some_data(String,int,int)
    When I create a spatial index on "dataStore1"                                                    # FunctionalStepDefinitions.i_create_a_spatial_index_on(String)
    Then I should be able to retrieve data from "dataStore1" using 4 threads and 40 reads per thread # FunctionalStepDefinitions.datastore_should_have_some_data(String,int,int)
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 13.523 sec - in org.locationtech.geogig.geotools.data.stresstest.DataStoreConcurrencyTest

  Scenario: Ensure Polygon Features can be retrieved from a DataStore with an indexed repo           # features/index/FeatureReader.feature:26
    Given I am working with the "polygon" layer                                                      # FunctionalStepDefinitions.i_am_working_with_the_layer(String)
    And I have a datastore named "dataStore1" backed by a GeoGig repo                                # FunctionalStepDefinitions.i_have_a_datastore_backed_by_a_GeoGig_repo(String)
    And datastore "dataStore1" has 200 features per thread inserted using 4 threads                  # FunctionalStepDefinitions.datastore_has_features_inserted(String,int,int)
    Then I should be able to retrieve data from "dataStore1" using 4 threads and 40 reads per thread # FunctionalStepDefinitions.datastore_should_have_some_data(String,int,int)
    When I create a spatial index on "dataStore1"                                                    # FunctionalStepDefinitions.i_create_a_spatial_index_on(String)
    Then I should be able to retrieve data from "dataStore1" using 4 threads and 40 reads per thread # FunctionalStepDefinitions.datastore_should_have_some_data(String,int,int)

  Scenario: Ensure indexed Point Features match non-indexed Features                                 # features/index/FeatureReader.feature:34
    Given I am working with the "point" layer                                                        # FunctionalStepDefinitions.i_am_working_with_the_layer(String)
    And I have a datastore named "dataStore1" backed by a GeoGig repo                                # FunctionalStepDefinitions.i_have_a_datastore_backed_by_a_GeoGig_repo(String)
    And datastore "dataStore1" has 200 features per thread inserted using 4 threads                  # FunctionalStepDefinitions.datastore_has_features_inserted(String,int,int)
    And I have a datastore named "dataStore2" backed by a GeoGig repo                                # FunctionalStepDefinitions.i_have_a_datastore_backed_by_a_GeoGig_repo(String)
    And datastore "dataStore2" has the same data as "dataStore1"                                     # FunctionalStepDefinitions.datastore_has_same_data(String,String)
    When I create a spatial index on "dataStore1"                                                    # FunctionalStepDefinitions.i_create_a_spatial_index_on(String)
    Then I should be able to retrieve data from "dataStore1" using 4 threads and 40 reads per thread # FunctionalStepDefinitions.datastore_should_have_some_data(String,int,int)
    And datastore "dataStore1" and datastore "dataStore2" both have the same features                # FunctionalStepDefinitions.datastores_have_the_same_features(String,String)

  Scenario: Ensure indexed Polygon Features match non-indexed Features                               # features/index/FeatureReader.feature:44
    Given I am working with the "polygon" layer                                                      # FunctionalStepDefinitions.i_am_working_with_the_layer(String)
    And I have a datastore named "dataStore1" backed by a GeoGig repo                                # FunctionalStepDefinitions.i_have_a_datastore_backed_by_a_GeoGig_repo(String)
    And datastore "dataStore1" has 200 features per thread inserted using 4 threads                  # FunctionalStepDefinitions.datastore_has_features_inserted(String,int,int)
    And I have a datastore named "dataStore2" backed by a GeoGig repo                                # FunctionalStepDefinitions.i_have_a_datastore_backed_by_a_GeoGig_repo(String)
    And datastore "dataStore2" has the same data as "dataStore1"                                     # FunctionalStepDefinitions.datastore_has_same_data(String,String)
    When I create a spatial index on "dataStore1"                                                    # FunctionalStepDefinitions.i_create_a_spatial_index_on(String)
    Then I should be able to retrieve data from "dataStore1" using 4 threads and 40 reads per thread # FunctionalStepDefinitions.datastore_should_have_some_data(String,int,int)
    And datastore "dataStore1" and datastore "dataStore2" both have the same features                # FunctionalStepDefinitions.datastores_have_the_same_features(String,String)

  Scenario: Ensure Point Features can be retrieved from a DataStore after editing   # features/index/FeatureReader.feature:54
    Given I am working with the "point" layer                                       # FunctionalStepDefinitions.i_am_working_with_the_layer(String)
    And I have a datastore named "dataStore1" backed by a GeoGig repo               # FunctionalStepDefinitions.i_have_a_datastore_backed_by_a_GeoGig_repo(String)
    And datastore "dataStore1" has 200 features per thread inserted using 4 threads # FunctionalStepDefinitions.datastore_has_features_inserted(String,int,int)
    When I make an edit to "dataStore1"                                             # FunctionalStepDefinitions.i_make_an_edit_to(String)
    Then datastore "dataStore1" has the edited feature                              # FunctionalStepDefinitions.datastore_has_the_edited_feature(String)

  Scenario: Ensure Polygon Features can be retrieved from a DataStore after editing # features/index/FeatureReader.feature:61
    Given I am working with the "polygon" layer                                     # FunctionalStepDefinitions.i_am_working_with_the_layer(String)
    And I have a datastore named "dataStore1" backed by a GeoGig repo               # FunctionalStepDefinitions.i_have_a_datastore_backed_by_a_GeoGig_repo(String)
    And datastore "dataStore1" has 200 features per thread inserted using 4 threads # FunctionalStepDefinitions.datastore_has_features_inserted(String,int,int)
    When I make an edit to "dataStore1"                                             # FunctionalStepDefinitions.i_make_an_edit_to(String)
    Then datastore "dataStore1" has the edited feature                              # FunctionalStepDefinitions.datastore_has_the_edited_feature(String)

  Scenario: Ensure Point Features can be retrieved from a DataStore after editing with index         # features/index/FeatureReader.feature:68
    Given I am working with the "point" layer                                                        # FunctionalStepDefinitions.i_am_working_with_the_layer(String)
    And I have a datastore named "dataStore1" backed by a GeoGig repo                                # FunctionalStepDefinitions.i_have_a_datastore_backed_by_a_GeoGig_repo(String)
    And datastore "dataStore1" has 200 features per thread inserted using 4 threads                  # FunctionalStepDefinitions.datastore_has_features_inserted(String,int,int)
    When I create a spatial index on "dataStore1"                                                    # FunctionalStepDefinitions.i_create_a_spatial_index_on(String)
    Then I should be able to retrieve data from "dataStore1" using 4 threads and 40 reads per thread # FunctionalStepDefinitions.datastore_should_have_some_data(String,int,int)
    When I make an edit to "dataStore1"                                                              # FunctionalStepDefinitions.i_make_an_edit_to(String)
    Then datastore "dataStore1" has the edited feature                                               # FunctionalStepDefinitions.datastore_has_the_edited_feature(String)

  Scenario: Ensure Polygon Features can be retrieved from a DataStore after editing with index       # features/index/FeatureReader.feature:77
    Given I am working with the "polygon" layer                                                      # FunctionalStepDefinitions.i_am_working_with_the_layer(String)
    And I have a datastore named "dataStore1" backed by a GeoGig repo                                # FunctionalStepDefinitions.i_have_a_datastore_backed_by_a_GeoGig_repo(String)
    And datastore "dataStore1" has 200 features per thread inserted using 4 threads                  # FunctionalStepDefinitions.datastore_has_features_inserted(String,int,int)
    When I create a spatial index on "dataStore1"                                                    # FunctionalStepDefinitions.i_create_a_spatial_index_on(String)
    Then I should be able to retrieve data from "dataStore1" using 4 threads and 40 reads per thread # FunctionalStepDefinitions.datastore_should_have_some_data(String,int,int)
    When I make an edit to "dataStore1"                                                              # FunctionalStepDefinitions.i_make_an_edit_to(String)
    Then datastore "dataStore1" has the edited feature                                               # FunctionalStepDefinitions.datastore_has_the_edited_feature(String)

  Scenario: Ensure edited indexed Point Features match edited non-indexed Features     # features/index/FeatureReader.feature:86
    Given I am working with the "point" layer                                          # FunctionalStepDefinitions.i_am_working_with_the_layer(String)
    And I have a datastore named "dataStore1" backed by a GeoGig repo                  # FunctionalStepDefinitions.i_have_a_datastore_backed_by_a_GeoGig_repo(String)
    And datastore "dataStore1" has 200 features per thread inserted using 4 threads    # FunctionalStepDefinitions.datastore_has_features_inserted(String,int,int)
    And I have a datastore named "dataStore2" backed by a GeoGig repo                  # FunctionalStepDefinitions.i_have_a_datastore_backed_by_a_GeoGig_repo(String)
    And datastore "dataStore2" has the same data as "dataStore1"                       # FunctionalStepDefinitions.datastore_has_same_data(String,String)
    When I create a spatial index on "dataStore1"                                      # FunctionalStepDefinitions.i_create_a_spatial_index_on(String)
    And I make an edit to "dataStore1"                                                 # FunctionalStepDefinitions.i_make_an_edit_to(String)
    And I make the same edit to "dataStore2"                                           # FunctionalStepDefinitions.i_make_the_same_edit(String)
    Then datastore "dataStore1" and datastore "dataStore2" both have the same features # FunctionalStepDefinitions.datastores_have_the_same_features(String,String)

  Scenario: Ensure edited indexed Polygon Features match edited non-indexed Features   # features/index/FeatureReader.feature:97
    Given I am working with the "polygon" layer                                        # FunctionalStepDefinitions.i_am_working_with_the_layer(String)
    And I have a datastore named "dataStore1" backed by a GeoGig repo                  # FunctionalStepDefinitions.i_have_a_datastore_backed_by_a_GeoGig_repo(String)
    And datastore "dataStore1" has 200 features per thread inserted using 4 threads    # FunctionalStepDefinitions.datastore_has_features_inserted(String,int,int)
    And I have a datastore named "dataStore2" backed by a GeoGig repo                  # FunctionalStepDefinitions.i_have_a_datastore_backed_by_a_GeoGig_repo(String)
    And datastore "dataStore2" has the same data as "dataStore1"                       # FunctionalStepDefinitions.datastore_has_same_data(String,String)
    When I create a spatial index on "dataStore1"                                      # FunctionalStepDefinitions.i_create_a_spatial_index_on(String)
    And I make an edit to "dataStore1"                                                 # FunctionalStepDefinitions.i_make_an_edit_to(String)
    And I make the same edit to "dataStore2"                                           # FunctionalStepDefinitions.i_make_the_same_edit(String)
    Then datastore "dataStore1" and datastore "dataStore2" both have the same features # FunctionalStepDefinitions.datastores_have_the_same_features(String,String)

  Scenario: Ensure Point Features can be edited concurrently                                         # features/index/FeatureReader.feature:108
    Given I am working with the "point" layer                                                        # FunctionalStepDefinitions.i_am_working_with_the_layer(String)
    And I have a datastore named "dataStore1" backed by a GeoGig repo                                # FunctionalStepDefinitions.i_have_a_datastore_backed_by_a_GeoGig_repo(String)
    And datastore "dataStore1" has 200 features per thread inserted using 4 threads                  # FunctionalStepDefinitions.datastore_has_features_inserted(String,int,int)
    When I create a spatial index on "dataStore1"                                                    # FunctionalStepDefinitions.i_create_a_spatial_index_on(String)
    Then I should be able to retrieve data from "dataStore1" using 4 threads and 40 reads per thread # FunctionalStepDefinitions.datastore_should_have_some_data(String,int,int)
    When I make 20 edits to "dataStore1" using 4 edit threads                                        # FunctionalStepDefinitions.i_make_concurrent_edits(int,String,int)
    Then datastore "dataStore1" has the edited features                                              # FunctionalStepDefinitions.datastore_has_the_edited_features(String)

  Scenario: Ensure Polygon Features can be edited concurrently                                       # features/index/FeatureReader.feature:117
    Given I am working with the "polygon" layer                                                      # FunctionalStepDefinitions.i_am_working_with_the_layer(String)
    And I have a datastore named "dataStore1" backed by a GeoGig repo                                # FunctionalStepDefinitions.i_have_a_datastore_backed_by_a_GeoGig_repo(String)
    And datastore "dataStore1" has 200 features per thread inserted using 4 threads                  # FunctionalStepDefinitions.datastore_has_features_inserted(String,int,int)
    When I create a spatial index on "dataStore1"                                                    # FunctionalStepDefinitions.i_create_a_spatial_index_on(String)
    Then I should be able to retrieve data from "dataStore1" using 4 threads and 40 reads per thread # FunctionalStepDefinitions.datastore_should_have_some_data(String,int,int)
    When I make 20 edits to "dataStore1" using 4 edit threads                                        # FunctionalStepDefinitions.i_make_concurrent_edits(int,String,int)
    Then datastore "dataStore1" has the edited features                                              # FunctionalStepDefinitions.datastore_has_the_edited_features(String)

  Scenario: Ensure Point Features can be edited concurrently with concurrent reads                              # features/index/FeatureReader.feature:126
    Given I am working with the "point" layer                                                                   # FunctionalStepDefinitions.i_am_working_with_the_layer(String)
    And I have a datastore named "dataStore1" backed by a GeoGig repo                                           # FunctionalStepDefinitions.i_have_a_datastore_backed_by_a_GeoGig_repo(String)
    And datastore "dataStore1" has 200 features per thread inserted using 4 threads                             # FunctionalStepDefinitions.datastore_has_features_inserted(String,int,int)
    When I create a spatial index on "dataStore1"                                                               # FunctionalStepDefinitions.i_create_a_spatial_index_on(String)
    And I make 20 edits to "dataStore1" using 4 edit threads while using 20 read threads and 8 reads per thread # FunctionalStepDefinitions.i_make_concurrent_edits_and_reads(int,String,int,int,int)
    Then datastore "dataStore1" has the edited features                                                         # FunctionalStepDefinitions.datastore_has_the_edited_features(String)

  Scenario: Ensure Polygon Features can be edited concurrently with concurrent reads                            # features/index/FeatureReader.feature:134
    Given I am working with the "polygon" layer                                                                 # FunctionalStepDefinitions.i_am_working_with_the_layer(String)
    And I have a datastore named "dataStore1" backed by a GeoGig repo                                           # FunctionalStepDefinitions.i_have_a_datastore_backed_by_a_GeoGig_repo(String)
    And datastore "dataStore1" has 200 features per thread inserted using 4 threads                             # FunctionalStepDefinitions.datastore_has_features_inserted(String,int,int)
    When I create a spatial index on "dataStore1"                                                               # FunctionalStepDefinitions.i_create_a_spatial_index_on(String)
    And I make 20 edits to "dataStore1" using 4 edit threads while using 20 read threads and 8 reads per thread # FunctionalStepDefinitions.i_make_concurrent_edits_and_reads(int,String,int,int,int)
    Then datastore "dataStore1" has the edited features                                                         # FunctionalStepDefinitions.datastore_has_the_edited_features(String)

16 Scenarios (16 passed)
104 Steps (104 passed)
1m39.275s

Tests run: 120, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 100.479 sec - in org.locationtech.geogig.geotools.data.functional.RunDataStoreFunctionalTest

Results :

Tests run: 307, Failures: 0, Errors: 0, Skipped: 0

[JENKINS] Recording test results
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ geogig-datastore ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/datastore/target/geogig-datastore-1.1-SNAPSHOT.jar
[INFO] 
[INFO] --- maven-jar-plugin:2.4:test-jar (default) @ geogig-datastore ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/datastore/target/geogig-datastore-1.1-SNAPSHOT-tests.jar
[INFO] 
[INFO] >>> maven-source-plugin:2.2.1:jar (attach-sources) > generate-sources @ geogig-datastore >>>
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig-datastore ---
[WARNING] Failed to getClass for org.apache.maven.plugin.source.SourceJarMojo
[INFO] 
[INFO] <<< maven-source-plugin:2.2.1:jar (attach-sources) < generate-sources @ geogig-datastore <<<
[INFO] 
[INFO] --- maven-source-plugin:2.2.1:jar (attach-sources) @ geogig-datastore ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/datastore/target/geogig-datastore-1.1-SNAPSHOT-sources.jar
[INFO] 
[INFO] >>> maven-source-plugin:2.2.1:test-jar (attach-sources) > generate-sources @ geogig-datastore >>>
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig-datastore ---
[WARNING] Failed to getClass for org.apache.maven.plugin.source.TestSourceJarMojo
[INFO] 
[INFO] <<< maven-source-plugin:2.2.1:test-jar (attach-sources) < generate-sources @ geogig-datastore <<<
[INFO] 
[INFO] --- maven-source-plugin:2.2.1:test-jar (attach-sources) @ geogig-datastore ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/datastore/target/geogig-datastore-1.1-SNAPSHOT-test-sources.jar
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ geogig-datastore ---
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/datastore/target/geogig-datastore-1.1-SNAPSHOT.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-datastore/1.1-SNAPSHOT/geogig-datastore-1.1-SNAPSHOT.jar
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/datastore/pom.xml to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-datastore/1.1-SNAPSHOT/geogig-datastore-1.1-SNAPSHOT.pom
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/datastore/target/geogig-datastore-1.1-SNAPSHOT-tests.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-datastore/1.1-SNAPSHOT/geogig-datastore-1.1-SNAPSHOT-tests.jar
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/datastore/target/geogig-datastore-1.1-SNAPSHOT-sources.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-datastore/1.1-SNAPSHOT/geogig-datastore-1.1-SNAPSHOT-sources.jar
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/datastore/target/geogig-datastore-1.1-SNAPSHOT-test-sources.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-datastore/1.1-SNAPSHOT/geogig-datastore-1.1-SNAPSHOT-test-sources.jar
[JENKINS] Archiving disabled
Started calculate disk usage of build
Finished Calculation of disk usage of build in 0 seconds
Started calculate disk usage of workspace
Finished Calculation of disk usage of workspace in 0 seconds
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building Storage backends 1.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ storage ---
[INFO] Deleting /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/target
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ storage ---
[INFO] 
[INFO] --- maven-jar-plugin:2.4:test-jar (default) @ storage ---
[WARNING] JAR will be empty - no content was marked for inclusion!
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/target/storage-1.1-SNAPSHOT-tests.jar
[INFO] 
[INFO] >>> maven-source-plugin:2.2.1:jar (attach-sources) > generate-sources @ storage >>>
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ storage ---
[WARNING] Failed to getClass for org.apache.maven.plugin.source.SourceJarMojo
[INFO] 
[INFO] <<< maven-source-plugin:2.2.1:jar (attach-sources) < generate-sources @ storage <<<
[INFO] 
[INFO] --- maven-source-plugin:2.2.1:jar (attach-sources) @ storage ---
[INFO] 
[INFO] >>> maven-source-plugin:2.2.1:test-jar (attach-sources) > generate-sources @ storage >>>
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ storage ---
[WARNING] Failed to getClass for org.apache.maven.plugin.source.TestSourceJarMojo
[INFO] 
[INFO] <<< maven-source-plugin:2.2.1:test-jar (attach-sources) < generate-sources @ storage <<<
[INFO] 
[INFO] --- maven-source-plugin:2.2.1:test-jar (attach-sources) @ storage ---
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ storage ---
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/pom.xml to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/storage/1.1-SNAPSHOT/storage-1.1-SNAPSHOT.pom
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/target/storage-1.1-SNAPSHOT-tests.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/storage/1.1-SNAPSHOT/storage-1.1-SNAPSHOT-tests.jar
[JENKINS] Archiving disabled
Started calculate disk usage of build
Finished Calculation of disk usage of build in 0 seconds
Started calculate disk usage of workspace
Finished Calculation of disk usage of workspace in 0 seconds
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building RocksDB storage backend 1.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ geogig-rocksdb ---
[INFO] Deleting /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/rocksdb/target
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig-rocksdb ---
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ geogig-rocksdb ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 3 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ geogig-rocksdb ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 10 source files to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/rocksdb/target/classes
[WARNING] /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/rocksdb/src/main/java/org/locationtech/geogig/rocksdb/RocksdbObjectStore.java: Some input files use or override a deprecated API.
[WARNING] /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/rocksdb/src/main/java/org/locationtech/geogig/rocksdb/RocksdbObjectStore.java: Recompile with -Xlint:deprecation for details.
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ geogig-rocksdb ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/rocksdb/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ geogig-rocksdb ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 10 source files to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/rocksdb/target/test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.17:test (default-test) @ geogig-rocksdb ---
[INFO] Surefire report directory: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/rocksdb/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running org.locationtech.geogig.rocksdb.RocksdbBlobStoreTest
Running org.locationtech.geogig.rocksdb.RocksdbConflictsDatabaseConformanceTest
Running org.locationtech.geogig.rocksdb.RocksdbIndexDatabaseConformanceTest
Running org.locationtech.geogig.rocksdb.performance.RocksdbObjectStoreStressTest
Running org.locationtech.geogig.rocksdb.performance.RevTreeBuilderRocksObjectsPerformanceTest
Running org.locationtech.geogig.rocksdb.RocksdbObjectStoreConformanceTest
Running org.locationtech.geogig.rocksdb.RocksdbGraphDatabaseConformanceTest
Running org.locationtech.geogig.rocksdb.RocksdbObjectDatabaseTest
Running org.locationtech.geogig.rocksdb.RocksdbStorageProviderTest
Running org.locationtech.geogig.rocksdb.DBOptionsTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.101 sec - in org.locationtech.geogig.rocksdb.DBOptionsTest
[main] INFO org.locationtech.geogig.test.performance.EnablePerformanceTestRule - org.locationtech.geogig.rocksdb.performance.RocksdbObjectStoreStressTest ignored, run with -Dgeogig.runPerformanceTests=true to enable it.
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.188 sec - in org.locationtech.geogig.rocksdb.performance.RocksdbObjectStoreStressTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.167 sec - in org.locationtech.geogig.rocksdb.RocksdbStorageProviderTest
[main] INFO org.locationtech.geogig.test.performance.EnablePerformanceTestRule - org.locationtech.geogig.rocksdb.performance.RevTreeBuilderRocksObjectsPerformanceTest ignored, run with -Dgeogig.runPerformanceTests=true to enable it.
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.232 sec - in org.locationtech.geogig.rocksdb.performance.RevTreeBuilderRocksObjectsPerformanceTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.419 sec - in org.locationtech.geogig.rocksdb.RocksdbBlobStoreTest
Tests run: 14, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.587 sec - in org.locationtech.geogig.rocksdb.RocksdbGraphDatabaseConformanceTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.647 sec - in org.locationtech.geogig.rocksdb.RocksdbObjectDatabaseTest
Tests run: 16, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.782 sec - in org.locationtech.geogig.rocksdb.RocksdbConflictsDatabaseConformanceTest
Tests run: 24, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.487 sec - in org.locationtech.geogig.rocksdb.RocksdbObjectStoreConformanceTest
Tests run: 39, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.642 sec - in org.locationtech.geogig.rocksdb.RocksdbIndexDatabaseConformanceTest

Results :

Tests run: 110, Failures: 0, Errors: 0, Skipped: 0

[JENKINS] Recording test results
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ geogig-rocksdb ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/rocksdb/target/geogig-rocksdb-1.1-SNAPSHOT.jar
[INFO] 
[INFO] --- maven-jar-plugin:2.4:test-jar (default) @ geogig-rocksdb ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/rocksdb/target/geogig-rocksdb-1.1-SNAPSHOT-tests.jar
[INFO] 
[INFO] >>> maven-source-plugin:2.2.1:jar (attach-sources) > generate-sources @ geogig-rocksdb >>>
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig-rocksdb ---
[WARNING] Failed to getClass for org.apache.maven.plugin.source.SourceJarMojo
[INFO] 
[INFO] <<< maven-source-plugin:2.2.1:jar (attach-sources) < generate-sources @ geogig-rocksdb <<<
[INFO] 
[INFO] --- maven-source-plugin:2.2.1:jar (attach-sources) @ geogig-rocksdb ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/rocksdb/target/geogig-rocksdb-1.1-SNAPSHOT-sources.jar
[INFO] 
[INFO] >>> maven-source-plugin:2.2.1:test-jar (attach-sources) > generate-sources @ geogig-rocksdb >>>
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig-rocksdb ---
[WARNING] Failed to getClass for org.apache.maven.plugin.source.TestSourceJarMojo
[INFO] 
[INFO] <<< maven-source-plugin:2.2.1:test-jar (attach-sources) < generate-sources @ geogig-rocksdb <<<
[INFO] 
[INFO] --- maven-source-plugin:2.2.1:test-jar (attach-sources) @ geogig-rocksdb ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/rocksdb/target/geogig-rocksdb-1.1-SNAPSHOT-test-sources.jar
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ geogig-rocksdb ---
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/rocksdb/target/geogig-rocksdb-1.1-SNAPSHOT.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-rocksdb/1.1-SNAPSHOT/geogig-rocksdb-1.1-SNAPSHOT.jar
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/rocksdb/pom.xml to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-rocksdb/1.1-SNAPSHOT/geogig-rocksdb-1.1-SNAPSHOT.pom
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/rocksdb/target/geogig-rocksdb-1.1-SNAPSHOT-tests.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-rocksdb/1.1-SNAPSHOT/geogig-rocksdb-1.1-SNAPSHOT-tests.jar
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/rocksdb/target/geogig-rocksdb-1.1-SNAPSHOT-sources.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-rocksdb/1.1-SNAPSHOT/geogig-rocksdb-1.1-SNAPSHOT-sources.jar
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/rocksdb/target/geogig-rocksdb-1.1-SNAPSHOT-test-sources.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-rocksdb/1.1-SNAPSHOT/geogig-rocksdb-1.1-SNAPSHOT-test-sources.jar
[JENKINS] Archiving disabled
Started calculate disk usage of build
Finished Calculation of disk usage of build in 0 seconds
Started calculate disk usage of workspace
Finished Calculation of disk usage of workspace in 0 seconds
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building GeoGig Command Line Interface 1.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ geogig-cli ---
[INFO] Deleting /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/cli/target
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig-cli ---
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ geogig-cli ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 3 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ geogig-cli ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 72 source files to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/cli/target/classes
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ geogig-cli ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 50 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ geogig-cli ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 13 source files to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/cli/target/test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.17:test (default-test) @ geogig-cli ---
[INFO] Surefire report directory: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/cli/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running org.locationtech.geogig.cli.test.functional.RunPlumbingFunctionalTest
Running org.locationtech.geogig.cli.test.functional.RunRemoteFunctionalTest
Running org.locationtech.geogig.cli.test.functional.RunHooksFunctionalTest
Running org.locationtech.geogig.cli.test.functional.RunIndexFunctionalTest
Running org.locationtech.geogig.cli.test.functional.RunPorcelainFunctionalTest
Running org.locationtech.geogig.cli.test.functional.RunGenralFunctionalTest
Running org.locationtech.geogig.cli.test.ArgumentTokenizerTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.188 sec - in org.locationtech.geogig.cli.test.ArgumentTokenizerTest
Feature: "hooks" functionality
    In order to control how geogig commands are executed
    As a Geogig User
    I want to set hooks in my repo
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Set a pre-commit hook and perform a wrong commit': Using URIBuilder DefaultTestRepoURIBuilder
Feature: "cat" command
    In order to know the content of a given element
    As a Geogig User
    I want to display its content
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show the content of a tree.': Using URIBuilder DefaultTestRepoURIBuilder
Feature: General features of CLI
    In order to use the CLI
    As a Geogig User
    I want to use some basic functionality
Feature: Automatic index updating
    In order to keep an index up to date with the canonical tree
    As a Geogig User
    Whenever I make changes to a repository, the index should be automatically updated
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Use command alias': Using URIBuilder DefaultTestRepoURIBuilder
Feature: "clone" command
    In order to build on the work in an existing repository
    As a Geogig User
    I want to clone that repository to my local machine
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Committing a modified indexed feature updates the indexes': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to clone without specifying a repository': Using URIBuilder DefaultTestRepoURIBuilder
Feature: "add" command
    In order to prepare for making a commit to the geogig repository
    As a Geogig User
    I want to stage my changes to the working tree
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to add a conflicted feature': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to clone into the current directory': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to clone without specifying a repository            # Clone.feature:6
    Given I am in an empty directory                                # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "clone"                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "You must specify a repository to clone." # DefaultStepDefinitions.it_should_answer_exactly(String)
    And it should exit with non-zero exit code                      # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show command candidate when command is mistyped': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Use command alias                           # General.feature:6
    Given I have a repository                           # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                         # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                         # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                          # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "config alias.ci commit"     # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "ci -m message"               # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "3 features added" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Merging updates the index': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Committing a modified indexed feature updates the indexes            # AutomaticIndexUpdating.feature:6
    Given I have a repository                                                    # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                                  # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit -m noIndex"                                   # DefaultStepDefinitions.I_run_the_command_X(String)
    And the response should contain "1 features added"                           # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "Updated index"                          # DefaultStepDefinitions.the_response_should_not_contain(String)
    When I run the command "index create --tree Points"                          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"                # DefaultStepDefinitions.the_response_should_contain(String)
    And I have staged "points1_modified"                                         # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit -m withIndex"                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Updated index"                             # DefaultStepDefinitions.the_response_should_contain(String)
    And the repository's "HEAD:Points" index should have the following features: # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show command candidates when command is mistyped': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.hooks.Scripting - Running jvm script /opt/public/hipp/ramdisk/geogig/junit4217591478740606496/data/localrepo/.geogig/hooks/pre_commit.js

  Scenario: Show command candidate when command is mistyped # General.feature:15
    Given I have a repository                               # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "brunch"                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Did you mean this?"   # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "branch"                # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code              # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show the content of a feature.': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to clone with too many parameters': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show the content of a tree.                                   # Cat.feature:6
    Given I have a repository                                                    # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                       # DefaultStepDefinitions.I_stage_6_features()
    When I run the command "commit -m TestCommit"                                # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "cat HEAD:Points"                                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points.1"                                  # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Points.2"                                   # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Points.3"                                   # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD:Points}" # DefaultStepDefinitions.checkResponseTextContains(String)

  Scenario: Show command candidates when command is mistyped      # General.feature:22
    Given I have a repository                                     # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "confit"                               # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Did you mean one of these?" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "config"                      # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "commit"                      # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                    # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
Feature: "help" command
    In order to know how to use geogig
    As a Geogig User
    I want to see the description of a command
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show general help, containing only porcelain commands': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to clone into the current directory                           # Clone.feature:12
    Given I am in an empty directory                                          # DefaultStepDefinitions.I_am_in_an_empty_directory()
    And there is a remote repository                                          # DefaultStepDefinitions.there_is_a_remote_repository()
    When I run the command "clone ${remoterepo} ."                            # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "Cannot clone into your current working directory." # DefaultStepDefinitions.it_should_answer_exactly(String)
    And it should exit with non-zero exit code                                # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Set a pre-commit hook and perform a valid commit': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to clone a remote repository': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Set a pre-commit hook and perform a wrong commit                       # Hooks.feature:6
    Given I have a repository                                                      # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                         # DefaultStepDefinitions.I_stage_6_features()
    And I set up a hook                                                            # DefaultStepDefinitions.I_set_up_a_hook()
    When I run the command "commit -m Test"                                        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should exit with non-zero exit code                                    # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
    And the response should contain "Commit messages must have at least 5 letters" # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Try to clone with too many parameters             # Clone.feature:19
    Given I am in an empty directory                          # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "clone repository directory extra" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "Too many arguments provided."      # DefaultStepDefinitions.it_should_answer_exactly(String)
    And it should exit with non-zero exit code                # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to add features to the index': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show general help, containing only porcelain commands # Help.feature:6
    Given I have a repository                                     # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "help"                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "commit"                     # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "cat-object"              # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain "ls-tree"                 # DefaultStepDefinitions.the_response_should_not_contain(String)

4 Scenarios (4 passed)
23 Steps (23 passed)
0m6.562s

Tests run: 27, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.326 sec - in org.locationtech.geogig.cli.test.functional.RunGenralFunctionalTest

  Scenario: Try to add a conflicted feature                                     # Add.feature:6
    Given I have a repository                                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have conflicting branches                                             # DefaultStepDefinitions.I_have_conflicting_branches()
    And I run the command "merge branch1"                                       # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "add Points/Points.1"                                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "1 features and 1 trees staged for commit" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with zero exit code                                      # DefaultStepDefinitions.it_should_exit_with_zero_exit_code()
    When I run the command "conflicts"                                          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "No elements need merging"                 # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to add a specific feature type to the index': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to add features to the index                                    # Add.feature:16
    Given I have a repository                                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have unstaged "points1"                                               # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "points2"                                               # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "lines1"                                                # DefaultStepDefinitions.I_have_unstaged(String)
    When I run the command "add"                                                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "3 features and 2 trees staged for commit" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show the content of a feature that does not exist': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.hooks.Scripting - Running jvm script /opt/public/hipp/ramdisk/geogig/junit7479896149710361131/data/localrepo/.geogig/hooks/pre_commit.js

  Scenario: Try to show the content of a feature.                                         # Cat.feature:16
    Given I have a repository                                                             # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                                # DefaultStepDefinitions.I_stage_6_features()
    When I run the command "commit -m TestCommit"                                         # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "cat HEAD:Points/Points.1"                                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "1000"                                               # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "POINT (1 1)"                                         # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "StringProp1_1"                                       # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD:Points/Points.1}" # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Rebasing a branch generates indexes for each rebased commit': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to add a using too many parameters': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Merging updates the index                                            # AutomaticIndexUpdating.feature:21
    Given I have a repository                                                    # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                                  # DefaultStepDefinitions.I_have_several_branches()
    And I run the command "index create --tree Points"                           # DefaultStepDefinitions.I_run_the_command_X(String)
    And the repository's "HEAD:Points" index should have the following features: # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    When I run the command "merge branch1 -m MergeMessage"                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "2 features added"                          # DefaultStepDefinitions.the_response_should_contain(String)
    And the repository's "HEAD:Points" index should have the following features: # DefaultStepDefinitions.verifyIndexContents(String,DataTable)

  Scenario: Set a pre-commit hook and perform a valid commit                           # Hooks.feature:14
    Given I have a repository                                                          # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                             # DefaultStepDefinitions.I_stage_6_features()
    And I set up a hook                                                                # DefaultStepDefinitions.I_set_up_a_hook()
    When I run the command "commit -m LongerMessage "                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should exit with zero exit code                                            # DefaultStepDefinitions.it_should_exit_with_zero_exit_code()
    And the response should not contain "Commit messages must have at least 5 letters" # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain "6 features added"                                 # DefaultStepDefinitions.the_response_should_contain(String)

2 Scenarios (2 passed)
13 Steps (13 passed)
0m7.801s

Tests run: 15, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.446 sec - in org.locationtech.geogig.cli.test.functional.RunHooksFunctionalTest

  Scenario: Try to add a specific feature type to the index                     # Add.feature:24
    Given I have a repository                                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have unstaged "points1"                                               # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "points2"                                               # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "lines1"                                                # DefaultStepDefinitions.I_have_unstaged(String)
    When I run the command "add Points"                                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "2 features and 1 trees staged for commit" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show the content of a feature in the working tree.': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show the content of a feature that does not exist        # Cat.feature:26
    Given I have a repository                                               # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "cat WORK_HEAD:Points/Points.1"                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should exit with non-zero exit code                             # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
    And the response should contain "refspec did not resolve to any object" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to add a specific feature to the index': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to add a using too many parameters                            # Add.feature:32
    Given I have a repository                                                 # DefaultStepDefinitions.I_have_a_repository()
    And I have unstaged "points1"                                             # DefaultStepDefinitions.I_have_unstaged(String)
    When I run the command "add Points Lines"                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Only a single path is supported so far" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                                # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to clone a remote repository with blank spaces': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to clone a remote repository                                     # Clone.feature:25
    Given I am in an empty directory                                             # DefaultStepDefinitions.I_am_in_an_empty_directory()
    And there is a remote repository                                             # DefaultStepDefinitions.there_is_a_remote_repository()
    When I run the command "clone ${remoterepo} ${repoURI}"                      # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Cloning into '${repoURI}'..."              # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Done."                                      # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "log"                                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Commit5"                                   # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit4"                                    # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|master}"      # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should not contain "Commit3"                                # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain "Commit2"                                # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain variable "{@ObjectId|localrepo|branch1}" # DefaultStepDefinitions.checkResponseTextDoesNotContain(String)
    And the response should contain "Commit1"                                    # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show the content of HEAD.': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to add an empty feature type': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show the content of a feature in the working tree.                          # Cat.feature:32
    Given I have a repository                                                                  # DefaultStepDefinitions.I_have_a_repository()
    And I have 6 unstaged features                                                             # DefaultStepDefinitions.I_have_6_unstaged_features()
    When I run the command "cat WORK_HEAD:Points/Points.1"                                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "1000"                                                    # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "POINT (1 1)"                                              # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "StringProp1_1"                                            # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|WORK_HEAD:Points/Points.1}" # DefaultStepDefinitions.checkResponseTextContains(String)

  Scenario: Try to add a specific feature to the index                          # Add.feature:39
    Given I have a repository                                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have unstaged "points1"                                               # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "points2"                                               # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "lines1"                                                # DefaultStepDefinitions.I_have_unstaged(String)
    When I run the command "add Points/Points.1"                                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "1 features and 1 trees staged for commit" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to add an empty feature type to an unclean index': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Cherry-picking a commit updates the index': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to add an empty feature type                                    # Add.feature:47
    Given I have a repository                                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have unstaged an empty feature type                                   # DefaultStepDefinitions.I_have_unstaged_an_empty_feature_type()
    When I run the command "add"                                                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "0 features and 1 trees staged for commit" # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Rebasing a branch generates indexes for each rebased commit            # AutomaticIndexUpdating.feature:36
    Given I have a repository                                                      # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                                    # DefaultStepDefinitions.I_have_several_branches()
    And I run the command "index create --tree Points"                             # DefaultStepDefinitions.I_run_the_command_X(String)
    And the repository's "HEAD:Points" index should have the following features:   # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    When I run the command "rebase master branch1"                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the repository's "HEAD:Points" index should have the following features:  # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    And the repository's "HEAD~1:Points" index should have the following features: # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to add from an empty directory': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to add an empty feature type to an unclean index                # Add.feature:53
    Given I have a repository                                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have unstaged "lines1"                                                # DefaultStepDefinitions.I_have_unstaged(String)
    And I run the command "add"                                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    And I have unstaged an empty feature type                                   # DefaultStepDefinitions.I_have_unstaged_an_empty_feature_type()
    When I run the command "add"                                                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "1 features and 2 trees staged for commit" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try show the binary content of HEAD': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to add when no changes have been made': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to clone a remote repository that does not exist': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show the content of HEAD.              # Cat.feature:41
    Given I have a repository                             # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                # DefaultStepDefinitions.I_stage_6_features()
    When I run the command "commit -m TestCommit"         # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "cat HEAD"                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "COMMIT"             # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "JohnDoe@example.com" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "TestCommit"          # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Try to add from an empty directory                       # Add.feature:61
    Given I am in an empty directory                                 # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "add"                                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should start with "Not in a geogig repository" # DefaultStepDefinitions.the_response_should_start_with(String)
    And it should exit with non-zero exit code                       # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()

  #annotate with FileSystemReposOnly because other URI providers don't allow spaces
  @FileSystemReposOnly
  Scenario: Try to clone a remote repository with blank spaces              # Clone.feature:42
    Given I am in an empty directory                                        # DefaultStepDefinitions.I_am_in_an_empty_directory()
    And there is a remote repository with blank spaces                      # DefaultStepDefinitions.there_is_a_remote_repository_with_blank_spaces()
    When I run the command "clone "remote repo" localrepo"                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Cloning into 'localrepo'..."          # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Done."                                 # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "log"                                            # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Commit5"                              # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit4"                               # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "Commit3"                           # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain "Commit2"                           # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain "Commit1"                               # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD~2}" # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to make a shallow clone of a remote repository': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to just stage a modified feature with add update': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to add when no changes have been made       # Add.feature:67
    Given I have a repository                               # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "add"                            # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "No unstaged elements" # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Try to clone a remote repository that does not exist                  # Clone.feature:56
    Given I am in an empty directory                                              # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "clone nonexistentrepo ${localrepo}"                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "nonexistentrepo is not a geogig repository" # DefaultStepDefinitions.the_response_should_contain(String)
    And the repository at "${localrepo}" shall not exist                          # DefaultStepDefinitions.the_repository_at_shall_not_exist(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Creating a branch updates the index': Using URIBuilder DefaultTestRepoURIBuilder
commitHMO���zJ���|W9John DoeJohnDoe@example.com]5"�$FJohn DoeJohnDoe@example.com]5"�$F
TestCommit
  Scenario: Cherry-picking a commit updates the index                             # AutomaticIndexUpdating.feature:54
    Given I have a repository                                                     # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                                   # DefaultStepDefinitions.I_have_several_branches()
    And I run the command "index create --tree Points"                            # DefaultStepDefinitions.I_run_the_command_X(String)
    And the repository's "HEAD:Points" index should have the following features:  # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    When I run the command "cherry-pick branch1"                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the repository's "HEAD:Points" index should have the following features: # DefaultStepDefinitions.verifyIndexContents(String,DataTable)

  Scenario: Try show the binary content of HEAD   # Cat.feature:50
    Given I have a repository                     # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                        # DefaultStepDefinitions.I_stage_6_features()
    When I run the command "commit -m TestCommit" # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "cat --binary HEAD"    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain 1 lines      # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
Feature: "diff-tree" command
    In order to know changes made in a repository
    As a Geogig User
    I want to see the existing differences between trees
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show diff between working tree and index': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to just stage a modified feature with add update                # Add.feature:72
    Given I have a repository                                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                                 # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                                 # DefaultStepDefinitions.I_have_staged(String)
    And I have unstaged "points1_modified"                                      # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "lines1"                                                # DefaultStepDefinitions.I_have_unstaged(String)
    When I run the command "add --update"                                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "2 features and 1 trees staged for commit" # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "status"                                             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Changes to be committed"                  # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "3 total"                                   # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Changes not staged for commit"             # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "2 total"                                   # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "apply" command
    In order to apply changes stored in a patch file
    As a Geogig User
    I want to apply a patch to the repository
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Check if a correct patch can be applied': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Check if a wrong patch can be applied': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Check if a correct patch can be applied                 # Apply.feature:6
    Given I have a repository                                       # DefaultStepDefinitions.I_have_a_repository()
    And I have 6 unstaged features                                  # DefaultStepDefinitions.I_have_6_unstaged_features()
    And I have a patch file                                         # DefaultStepDefinitions.I_have_a_patch_file()
    When I run the command "apply --check ${currentdir}/test.patch" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Patch can be applied"         # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Creating a branch updates the index                                       # AutomaticIndexUpdating.feature:67
    Given I have a repository                                                         # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                        # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "index create --tree Points"                                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the repository's "HEAD:Points" index should have the following features:     # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    And the repository's "HEAD~3" should not have an index                            # DefaultStepDefinitions.noIndexAtCommit(String)
    When I run the command "branch newBranch HEAD~3"                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the repository's "HEAD~3:Points" index should have the following features:   # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    And the repository's "newBranch:Points" index should have the following features: # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
Feature: "index create" command
    In order to improve query performance on a feature tree
    As a Geogig User
    I want to create an index on an attribute of the feature tree
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create an index': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to clone a remote repository with a branch specified': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show diff between working tree and index, omitting index refspec': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to make a shallow clone of a remote repository                    # Clone.feature:62
    Given I am in an empty directory                                              # DefaultStepDefinitions.I_am_in_an_empty_directory()
    And there is a remote repository                                              # DefaultStepDefinitions.there_is_a_remote_repository()
    When I run the command "clone --depth 2 ${remoterepo} ${repoURI}"             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Cloning into '${repoURI}'..."               # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Done."                                       # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "log"                                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Commit5"                                    # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit4"                                     # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|master~1}"     # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should not contain "Commit3"                                 # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain "Commit2"                                 # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain "Commit1"                                 # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain variable "{@ObjectId|remoterepo|branch1}" # DefaultStepDefinitions.checkResponseTextDoesNotContain(String)

  Scenario: Show diff between working tree and index        # DiffTree.feature:6
    Given I have a repository                               # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                  # DefaultStepDefinitions.I_stage_6_features()
    And I modify a feature                                  # DefaultStepDefinitions.I_modify_a_feature()
    When I run the command "diff-tree WORK_HEAD STAGE_HEAD" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points/Points.1"      # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain 1 lines                 # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Check if a patch can be applied twice': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Check if a wrong patch can be applied                   # Apply.feature:13
    Given I have a repository                                       # DefaultStepDefinitions.I_have_a_repository()
    And I have 6 unstaged features                                  # DefaultStepDefinitions.I_have_6_unstaged_features()
    And I modify a feature                                          # DefaultStepDefinitions.I_modify_a_feature()
    And I have a patch file                                         # DefaultStepDefinitions.I_have_a_patch_file()
    When I run the command "apply --check ${currentdir}/test.patch" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Patch cannot be applied"      # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create an index with extra attributes': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to create an index                                                     # CreateIndex.feature:6
    Given I have a repository                                                          # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                         # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree Points"                                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"                      # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Size: 3"                                          # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "Size: 2"                                      # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain the index ID for tree "Points"                     # DefaultStepDefinitions.the_response_contains_indexID(String)
    And the repository's "HEAD:Points" index bounds should be "-90,-180,90,180"        # DefaultStepDefinitions.verifyIndexBounds(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "sp" # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "ip" # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should have the following features:       # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    And the repository's "HEAD~1:Points" should not have an index                      # DefaultStepDefinitions.noIndexAtCommit(String)
    And the repository's "HEAD~2:Points" should not have an index                      # DefaultStepDefinitions.noIndexAtCommit(String)
    And the repository's "HEAD~3:Points" should not have an index                      # DefaultStepDefinitions.noIndexAtCommit(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Apply a correct patch': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Check if a patch can be applied twice                  # Apply.feature:21
    Given I have a repository                                      # DefaultStepDefinitions.I_have_a_repository()
    And I have 6 unstaged features                                 # DefaultStepDefinitions.I_have_6_unstaged_features()
    And I have a patch file                                        # DefaultStepDefinitions.I_have_a_patch_file()
    When I run the command "apply ${currentdir}/test.patch"        # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "apply --check ${currentdir}/test.patch" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Patch can be applied"        # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show diff between working tree and index, omitting both refspecs': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show diff between working tree and index, omitting index refspec                   # DiffTree.feature:14
    Given I have a repository                                                                  # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                                     # DefaultStepDefinitions.I_stage_6_features()
    And I modify a feature                                                                     # DefaultStepDefinitions.I_modify_a_feature()
    When I run the command "diff-tree WORK_HEAD"                                               # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points/Points.1"                                         # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain 1 lines                                                    # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
    And the response should contain variable "{@ObjectId|localrepo|WORK_HEAD:Points/Points.1}" # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to do a sparse clone of a remote repository with no branch specified': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to clone a remote repository with a branch specified             # Clone.feature:77
    Given I am in an empty directory                                             # DefaultStepDefinitions.I_am_in_an_empty_directory()
    And there is a remote repository                                             # DefaultStepDefinitions.there_is_a_remote_repository()
    When I run the command "clone -b branch1 ${remoterepo} ${repoURI}"           # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Cloning into '${repoURI}'..."              # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Done."                                      # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "log"                                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should not contain "Commit5"                               # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain "Commit4"                                # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain variable "{@ObjectId|remoterepo|master}" # DefaultStepDefinitions.checkResponseTextDoesNotContain(String)
    And the response should contain "Commit3"                                    # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit2"                                    # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit1"                                    # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|branch1}"     # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should contain variable "{@ObjectId|localrepo|branch1~1}"   # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to apply a wrong patch': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Apply a correct patch                                # Apply.feature:29
    Given I have a repository                                    # DefaultStepDefinitions.I_have_a_repository()
    And I have 6 unstaged features                               # DefaultStepDefinitions.I_have_6_unstaged_features()
    And I have a patch file                                      # DefaultStepDefinitions.I_have_a_patch_file()
    When I run the command "apply ${currentdir}/test.patch"      # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Patch applied succesfully" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create an index with user-specified bounds': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to create an index with extra attributes                               # CreateIndex.feature:26
    Given I have a repository                                                          # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                         # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree Points --extra-attributes sp"          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"                      # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Size: 3"                                          # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "Size: 2"                                      # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain the index ID for tree "Points"                     # DefaultStepDefinitions.the_response_contains_indexID(String)
    And the repository's "HEAD:Points" index bounds should be "-90,-180,90,180"        # DefaultStepDefinitions.verifyIndexBounds(String,String)
    And the repository's "HEAD:Points" index should track the extra attribute "sp"     # DefaultStepDefinitions.verifyIndexExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "ip" # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should have the following features:       # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    And the repository's "HEAD~1:Points" should not have an index                      # DefaultStepDefinitions.noIndexAtCommit(String)
    And the repository's "HEAD~2:Points" should not have an index                      # DefaultStepDefinitions.noIndexAtCommit(String)
    And the repository's "HEAD~3:Points" should not have an index                      # DefaultStepDefinitions.noIndexAtCommit(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show diff tree stats between working tree and index': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show diff between working tree and index, omitting both refspecs # DiffTree.feature:23
    Given I have a repository                                                # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                   # DefaultStepDefinitions.I_stage_6_features()
    And I modify a featuregit                                                # DefaultStepDefinitions.I_modify_a_feature()
    When I run the command "diff-tree"                                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points/Points.1"                       # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain 1 lines                                  # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to partially apply a wrong patch': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to apply a wrong patch                                # Apply.feature:36
    Given I have a repository                                         # DefaultStepDefinitions.I_have_a_repository()
    And I have 6 unstaged features                                    # DefaultStepDefinitions.I_have_6_unstaged_features()
    And I modify a feature                                            # DefaultStepDefinitions.I_modify_a_feature()
    And I have a patch file                                           # DefaultStepDefinitions.I_have_a_patch_file()
    When I run the command "apply ${currentdir}/test.patch"           # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Error: Patch cannot be applied" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Points/Points.1"                 # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                        # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to clone a remote repository that has already been cloned': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to do a sparse clone of a remote repository with no branch specified             # Clone.feature:93
    Given I am in an empty directory                                                             # DefaultStepDefinitions.I_am_in_an_empty_directory()
    And there is a remote repository                                                             # DefaultStepDefinitions.there_is_a_remote_repository()
    When I run the command "clone --filter someFilter ${remoterepo} ${repoURI}"                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Sparse Clone: You must explicitly specify a remote branch" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create an index with too few bounds parameters': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to create an index with user-specified bounds                          # CreateIndex.feature:46
    Given I have a repository                                                          # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                         # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree Points --bounds -45,-45,45,45"         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"                      # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Size: 3"                                          # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "Size: 2"                                      # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain the index ID for tree "Points"                     # DefaultStepDefinitions.the_response_contains_indexID(String)
    And the repository's "HEAD:Points" index bounds should be "-45,-45,45,45"          # DefaultStepDefinitions.verifyIndexBounds(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "sp" # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "ip" # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should have the following features:       # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    And the repository's "HEAD~1:Points" should not have an index                      # DefaultStepDefinitions.noIndexAtCommit(String)
    And the repository's "HEAD~2:Points" should not have an index                      # DefaultStepDefinitions.noIndexAtCommit(String)
    And the repository's "HEAD~3:Points" should not have an index                      # DefaultStepDefinitions.noIndexAtCommit(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to apply an inexistent patch': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to partially apply a wrong patch                     # Apply.feature:46
    Given I have a repository                                        # DefaultStepDefinitions.I_have_a_repository()
    And I have 6 unstaged features                                   # DefaultStepDefinitions.I_have_6_unstaged_features()
    And I modify a feature                                           # DefaultStepDefinitions.I_modify_a_feature()
    And I have a patch file                                          # DefaultStepDefinitions.I_have_a_patch_file()
    When I run the command "apply --reject ${currentdir}/test.patch" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Patch applied only partially"  # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "0 changes were applied"         # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "1 changes were rejected"        # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                       # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show diff using too many commit refspecs': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show diff tree stats between working tree and index # DiffTree.feature:31
    Given I have a repository                                   # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                      # DefaultStepDefinitions.I_stage_6_features()
    And I modify a feature                                      # DefaultStepDefinitions.I_modify_a_feature()
    When I run the command "diff-tree --tree-stats"             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points 0 0 1"             # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'List the content of a patch': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to apply an inexistent patch                      # Apply.feature:57
    Given I have a repository                                     # DefaultStepDefinitions.I_have_a_repository()
    And I have 6 unstaged features                                # DefaultStepDefinitions.I_have_6_unstaged_features()
    When I run the command "apply ${currentdir}/test.patch"       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Patch file cannot be found" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                    # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create an index with invalid bounds parameters': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to create an index with too few bounds parameters                                                   # CreateIndex.feature:66
    Given I have a repository                                                                                       # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                                                      # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree Points --bounds -45,-45,45"                                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Invalid bbox parameter: '-45,-45,45'. Expected format: <minx,miny,maxx,maxy>" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Apply a reversed patch that cannot be applied': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to clone a remote repository with a single argument': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: List the content of a patch                               # Apply.feature:64
    Given I have a repository                                         # DefaultStepDefinitions.I_have_a_repository()
    And I have 6 unstaged features                                    # DefaultStepDefinitions.I_have_6_unstaged_features()
    And I have a patch file                                           # DefaultStepDefinitions.I_have_a_patch_file()
    When I run the command "apply --summary ${currentdir}/test.patch" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points/Points.1"                # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show diff using a wrong  refspec': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to clone a remote repository that has already been cloned    # Clone.feature:99
    Given I am in an empty directory                                         # DefaultStepDefinitions.I_am_in_an_empty_directory()
    And there is a remote repository                                         # DefaultStepDefinitions.there_is_a_remote_repository()
    When I run the command "clone ${remoterepo} ${repoURI}"                  # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "clone ${remoterepo} ${repoURI}"                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Destination repository already exists" # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Show diff using too many commit refspecs                  # DiffTree.feature:38
    Given I have a repository                                         # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                            # DefaultStepDefinitions.I_stage_6_features()
    And I modify a feature                                            # DefaultStepDefinitions.I_modify_a_feature()
    When I run the command "diff-tree refspec1 refspec2 refspec3"     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Tree refspecs list is too long" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                        # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Apply a path and then the reverse version of that patch': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create an index on a nonexistent tree': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Apply a reversed patch that cannot be applied             # Apply.feature:71
    Given I have a repository                                         # DefaultStepDefinitions.I_have_a_repository()
    And I have unstaged "points1_modified"                            # DefaultStepDefinitions.I_have_unstaged(String)
    And I have a patch file                                           # DefaultStepDefinitions.I_have_a_patch_file()
    When I run the command "apply --reverse ${currentdir}/test.patch" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Conflicting"                    # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                        # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()

  Scenario: Try to create an index with invalid bounds parameters                                                     # CreateIndex.feature:72
    Given I have a repository                                                                                         # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                                                        # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree Points --bounds -45,-45,45,A"                                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Invalid bbox parameter: '-45,-45,45,A'. Expected format: <minx,miny,maxx,maxy>" # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Apply a path and then the reverse version of that patch  # Apply.feature:79
    Given I have a repository                                        # DefaultStepDefinitions.I_have_a_repository()
    And I have 6 unstaged features                                   # DefaultStepDefinitions.I_have_6_unstaged_features()
    And I have a patch file                                          # DefaultStepDefinitions.I_have_a_patch_file()
    When I run the command "apply ${currentdir}/test.patch"          # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "apply --reverse ${currentdir}/test.patch" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Patch applied succesfully"     # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "blame" command
    In order to know the history of a single feature
    As a Geogig User
    I want to see who edited each attribute of a feature
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to run blame with a valid path': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show diff between working tree and index, describing the modified element': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show diff using a wrong  refspec                                   # DiffTree.feature:46
    Given I have a repository                                                  # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                     # DefaultStepDefinitions.I_stage_6_features()
    And I modify a feature                                                     # DefaultStepDefinitions.I_modify_a_feature()
    When I run the command "diff-tree wrong:refspec"                           # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "wrong:refspec did not resolve to a tree" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                                 # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] ERROR org.locationtech.geogig.cli.GeogigCLI - Remote repository has no HEAD.
java.lang.IllegalStateException: Remote repository has no HEAD.
	at com.google.common.base.Preconditions.checkState(Preconditions.java:173)
	at org.locationtech.geogig.remote.LocalRemoteRepo.headRef(LocalRemoteRepo.java:121)
	at org.locationtech.geogig.porcelain.FetchOp._call(FetchOp.java:290)
	at org.locationtech.geogig.porcelain.FetchOp._call(FetchOp.java:48)
	at org.locationtech.geogig.repository.AbstractGeoGigOp.call(AbstractGeoGigOp.java:154)
	at org.locationtech.geogig.porcelain.CloneOp._call(CloneOp.java:163)
	at org.locationtech.geogig.porcelain.CloneOp._call(CloneOp.java:39)
	at org.locationtech.geogig.repository.AbstractGeoGigOp.call(AbstractGeoGigOp.java:154)
	at org.locationtech.geogig.cli.porcelain.Clone.runInternal(Clone.java:164)
	at org.locationtech.geogig.cli.AbstractCommand.run(AbstractCommand.java:68)
	at org.locationtech.geogig.cli.GeogigCLI.executeInternal(GeogigCLI.java:532)
	at org.locationtech.geogig.cli.GeogigCLI.execute(GeogigCLI.java:368)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:159)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:153)
	at org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions.I_run_the_command_X(DefaultStepDefinitions.java:214)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at cucumber.runtime.Utils$1.call(Utils.java:37)
	at cucumber.runtime.Timeout.timeout(Timeout.java:13)
	at cucumber.runtime.Utils.invoke(Utils.java:31)
	at cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:38)
	at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37)
	at cucumber.runtime.Runtime.runStep(Runtime.java:299)
	at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44)
	at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39)
	at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:44)
	at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:91)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:93)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:37)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.api.junit.Cucumber.run(Cucumber.java:98)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create an index on a nonexistent attribute': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to clone a remote repository with a single argument  # Clone.feature:106
    Given I am in an empty directory                                 # DefaultStepDefinitions.I_am_in_an_empty_directory()
    And there is a remote repository                                 # DefaultStepDefinitions.there_is_a_remote_repository()
    When I run the command "clone fakeRepo"                          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Remote repository has no HEAD" # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "fetch" command
    In order to get changes from a remote repository
    As a Geogig User
    I want to fetch new objects and branches to my local machine
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to fetch from an empty directory': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to create an index on a nonexistent tree                     # CreateIndex.feature:78
    Given I have a repository                                                # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                               # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree nonexistent"                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Can't find feature tree 'nonexistent'" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to fetch from origin': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to fetch from an empty directory                     # Fetch.feature:6
    Given I am in an empty directory                                 # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "fetch origin"                            # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should start with "Not in a geogig repository" # DefaultStepDefinitions.the_response_should_start_with(String)
    And it should exit with non-zero exit code                       # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to run blame with a valid path in porcelain mode': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to run blame with a valid path     # Blame.feature:6
    Given I have a repository                      # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                     # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "blame Points/Points.1" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain 3 lines       # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show diff between working tree and index, with a change in the feature type': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create an index on a non-geometry attribute': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show diff between working tree and index, describing the modified element # DiffTree.feature:54
    Given I have a repository                                                         # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                            # DefaultStepDefinitions.I_stage_6_features()
    And I modify a feature                                                            # DefaultStepDefinitions.I_modify_a_feature()
    When I run the command "diff-tree WORK_HEAD STAGE_HEAD --describe"                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain 10 lines                                         # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
    And the response should contain "Points/Points.1"                                 # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Try to create an index on a nonexistent attribute                   # CreateIndex.feature:84
    Given I have a repository                                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                  # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree Points --attribute nonexistent" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "property nonexistent does not exist"      # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to run blame with the --no-values switch': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to run blame with a valid path in porcelain mode # Blame.feature:12
    Given I have a repository                                    # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                   # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "blame --porcelain Points/Points.1"   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain 3 lines                     # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
    And the response should contain "1001"                       # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to fetch the full history for a shallow clone': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create an index with the full history': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show diff between working tree and index, using a path filter': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to fetch from origin                 # Fetch.feature:12
    Given I have a repository with a remote          # DefaultStepDefinitions.I_have_a_repository_with_a_remote()
    When I run the command "fetch origin"            # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "branch --all"             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "origin/master" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "origin/branch1" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "origin/HEAD"    # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Try to create an index on a non-geometry attribute                 # CreateIndex.feature:90
    Given I have a repository                                                  # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                 # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree Points --attribute sp"         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "property sp is not a geometry attribute" # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Show diff between working tree and index, with a change in the feature type         # DiffTree.feature:62
    Given I have a repository                                                                   # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                                      # DefaultStepDefinitions.I_stage_6_features()
    And I a featuretype is modified                                                             # DefaultStepDefinitions.I_modify_a_feature_type()
    When I run the command "diff-tree WORK_HEAD:Points STAGE_HEAD:Points"                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain 3 lines                                                    # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
    And the response should contain "Points.1"                                                  # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Points.2"                                                  # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Points.3"                                                  # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|WORK_HEAD:Points/Points.1}"  # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should contain variable "{@ObjectId|localrepo|STAGE_HEAD:Points/Points.1}" # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to run blame with a wrong path': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to run blame with the --no-values switch       # Blame.feature:19
    Given I have a repository                                  # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                 # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "blame --no-values Points/Points.1" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain 3 lines                   # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
    And the response should not contain "1001"                 # DefaultStepDefinitions.the_response_should_not_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a diff with --describe and --tree-stats': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show diff between working tree and index, using a path filter                       # DiffTree.feature:74
    Given I have a repository                                                                   # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                                      # DefaultStepDefinitions.I_stage_6_features()
    And I modify a feature                                                                      # DefaultStepDefinitions.I_modify_a_feature()
    When I run the command "diff-tree WORK_HEAD:Points STAGE_HEAD:Points --path Points.1"       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points.1"                                                 # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "Points/Points.1"                                       # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain 1 lines                                                     # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
    And the response should contain variable "{@ObjectId|localrepo|WORK_HEAD:Points/Points.1}"  # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should contain variable "{@ObjectId|localrepo|STAGE_HEAD:Points/Points.1}" # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create an index with the full history and extra attributes': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to create an index with the full history                                  # CreateIndex.feature:96
    Given I have a repository                                                             # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                                           # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "index create --tree Points --index-history"                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"                         # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Size: 3"                                             # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Size: 2"                                             # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain the index ID for tree "Points"                        # DefaultStepDefinitions.the_response_contains_indexID(String)
    And the repository's "HEAD:Points" index bounds should be "-90,-180,90,180"           # DefaultStepDefinitions.verifyIndexBounds(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "sp"    # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "ip"    # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should have the following features:          # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    And the repository's "HEAD~1:Points" index should not track the extra attribute "sp"  # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD~1:Points" index should not track the extra attribute "ip"  # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD~1:Points" index should have the following features:        # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    And the repository's "branch2:Points" index should not track the extra attribute "sp" # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "branch2:Points" index should not track the extra attribute "ip" # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "branch2:Points" index should have the following features:       # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    And the repository's "branch1:Points" index should not track the extra attribute "sp" # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "branch1:Points" index should not track the extra attribute "ip" # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "branch1:Points" index should have the following features:       # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to run blame with more than one path': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to deepen the history of a shallow clone': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to run blame with a wrong path                          # Blame.feature:26
    Given I have a repository                                           # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                          # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "blame wrongpath"                            # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "The supplied path does not exist" # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Try to fetch the full history for a shallow clone                     # Fetch.feature:20
    Given I am in an empty directory                                              # DefaultStepDefinitions.I_am_in_an_empty_directory()
    And there is a remote repository                                              # DefaultStepDefinitions.there_is_a_remote_repository()
    When I run the command "clone --depth 1 ${remoterepo} ${localrepo}"           # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "log"                                                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should not contain "Commit4"                                # DefaultStepDefinitions.the_response_should_not_contain(String)
    When I run the command "fetch --fulldepth"                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "log"                                                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Commit5"                                    # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit4"                                     # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|remoterepo|master}"      # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should not contain "Commit3"                                 # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain "Commit2"                                 # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain variable "{@ObjectId|remoterepo|branch1}" # DefaultStepDefinitions.checkResponseTextDoesNotContain(String)
    And the response should contain "Commit1"                                     # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show diff between working tree and index, describing a removed element': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show a diff with --describe and --tree-stats                              # DiffTree.feature:85
    Given I have a repository                                                                # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                                   # DefaultStepDefinitions.I_stage_6_features()
    And I modify a feature                                                                   # DefaultStepDefinitions.I_modify_a_feature()
    When I run the command "diff-tree WORK_HEAD STAGE_HEAD --describe --tree-stats"          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Cannot use --describe and --tree-stats simultaneously" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to run blame with no arguments': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to run blame with more than one path              # Blame.feature:32
    Given I have a repository                                     # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                    # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "blame Point/Points.1 Points/Points.2" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Only one path allowed"      # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create an index without specifying a tree': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to create an index with the full history and extra attributes                    # CreateIndex.feature:130
    Given I have a repository                                                                    # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                                                  # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "index create --tree Points --extra-attributes sp,ip --index-history" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"                                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Size: 3"                                                    # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Size: 2"                                                    # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain the index ID for tree "Points"                               # DefaultStepDefinitions.the_response_contains_indexID(String)
    And the repository's "HEAD:Points" index bounds should be "-90,-180,90,180"                  # DefaultStepDefinitions.verifyIndexBounds(String,String)
    And the repository's "HEAD:Points" index should track the extra attribute "sp"               # DefaultStepDefinitions.verifyIndexExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should track the extra attribute "ip"               # DefaultStepDefinitions.verifyIndexExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should have the following features:                 # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    And the repository's "HEAD~1:Points" index should track the extra attribute "sp"             # DefaultStepDefinitions.verifyIndexExtraAttributes(String,String)
    And the repository's "HEAD~1:Points" index should track the extra attribute "ip"             # DefaultStepDefinitions.verifyIndexExtraAttributes(String,String)
    And the repository's "HEAD~1:Points" index should have the following features:               # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    And the repository's "branch2:Points" index should track the extra attribute "sp"            # DefaultStepDefinitions.verifyIndexExtraAttributes(String,String)
    And the repository's "branch2:Points" index should track the extra attribute "ip"            # DefaultStepDefinitions.verifyIndexExtraAttributes(String,String)
    And the repository's "branch2:Points" index should have the following features:              # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    And the repository's "branch1:Points" index should track the extra attribute "sp"            # DefaultStepDefinitions.verifyIndexExtraAttributes(String,String)
    And the repository's "branch1:Points" index should track the extra attribute "ip"            # DefaultStepDefinitions.verifyIndexExtraAttributes(String,String)
    And the repository's "branch1:Points" index should have the following features:              # DefaultStepDefinitions.verifyIndexContents(String,DataTable)

  Scenario: Show diff between working tree and index, describing a removed element # DiffTree.feature:92
    Given I have a repository                                                      # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                         # DefaultStepDefinitions.I_stage_6_features()
    And I remove a feature                                                         # DefaultStepDefinitions.I_remove_a_feature()
    When I run the command "diff-tree WORK_HEAD STAGE_HEAD --describe"             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points/Points.1"                             # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain 7 lines                                        # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
Feature: "apply" command
    In order to modify feature
    As a Geogig User
    I want to insert a feature according to a definition in a file
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Insert from a file': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to fetch from origin without specifying a remote': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to deepen the history of a shallow clone                           # Fetch.feature:36
    Given I am in an empty directory                                               # DefaultStepDefinitions.I_am_in_an_empty_directory()
    And there is a remote repository                                               # DefaultStepDefinitions.there_is_a_remote_repository()
    When I run the command "clone --depth 1 ${remoterepo} ${localrepo}"            # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "log"                                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should not contain "Commit4"                                 # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain variable "{@ObjectId|remoterepo|master~1}" # DefaultStepDefinitions.checkResponseTextDoesNotContain(String)
    When I run the command "fetch --depth 2"                                       # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "log"                                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Commit5"                                     # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit4"                                      # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|remoterepo|master~1}"     # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should not contain "Commit1"                                  # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain variable "{@ObjectId|remoterepo|master~2}" # DefaultStepDefinitions.checkResponseTextDoesNotContain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to run blame with a feature type': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to run blame with no arguments                  # Blame.feature:38
    Given I have a repository                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                  # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "blame"                              # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "A path must be specified" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create a full history index on an empty repository': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to create an index without specifying a tree            # CreateIndex.feature:164
    Given I have a repository                                           # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                          # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree"                        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Expected a value after parameter" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create a full history index on a repository with a single commit': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to create a full history index on an empty repository # CreateIndex.feature:170
    Given I have a repository                                         # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "index create --tree Points"               # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Can't find feature tree"        # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to reset from an empty directory': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to insert a feature passing a wrong file': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to run blame with a feature type                                       # Blame.feature:44
    Given I have a repository                                                          # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                         # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "blame Points"                                              # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "The supplied path does not resolve to a feature" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create an index with an incorrect extra attribute': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Insert from a file                                          # Insert.feature:6
    Given I have a repository                                           # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                              # DefaultStepDefinitions.I_stage_6_features()
    And I have an insert file                                           # DefaultStepDefinitions.I_have_an_insert_file()
    When I run the command "insert -f ${currentdir}/insert"             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "1 features successfully inserted" # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Try to reset from an empty directory                  # Blame.feature:50
    Given I am in an empty directory                              # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "blame"                                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Not in a geogig repository" # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "branch" command
    In order to work separately from the main history
    As a Geogig User
    I want to be able to create, delete and list branches
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create a branch while not in a repository': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to create a full history index on a repository with a single commit    # CreateIndex.feature:175
    Given I have a repository                                                          # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                                        # DefaultStepDefinitions.I_have_staged(String)
    And I run the command "commit -m "point1 added"                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "index create --tree Points --index-history"                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index updated"                                   # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Size: 1"                                          # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain the index ID for tree "Points"                     # DefaultStepDefinitions.the_response_contains_indexID(String)
    And the repository's "HEAD:Points" index bounds should be "-90,-180,90,180"        # DefaultStepDefinitions.verifyIndexBounds(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "sp" # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "ip" # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should have the following features:       # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to delete a branch while not in a repository': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to create a branch while not in a repository      # Branch.feature:6
    Given I am in an empty directory                              # DefaultStepDefinitions.I_am_in_an_empty_directory()
    And I run the command "branch newBranch"                      # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Not in a geogig repository" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to fetch from an invalid remote': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to list branches while not in a geogig repository': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to fetch from origin without specifying a remote # Fetch.feature:51
    Given I have a repository with a remote                      # DefaultStepDefinitions.I_have_a_repository_with_a_remote()
    When I run the command "fetch"                               # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "branch --all"                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "origin/master"             # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "origin/branch1"             # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "origin/HEAD"                # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Try to delete a branch while not in a repository      # Branch.feature:11
    Given I am in an empty directory                              # DefaultStepDefinitions.I_am_in_an_empty_directory()
    And I run the command "branch --delete newBranch"             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Not in a geogig repository" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                    # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create a branch without having made any commits': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to fetch from origin with pruning': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to list branches while not in a geogig repository # Branch.feature:17
    Given I am in an empty directory                              # DefaultStepDefinitions.I_am_in_an_empty_directory()
    And I run the command "branch"                                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Not in a geogig repository" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                    # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()

  Scenario: Try to fetch from an invalid remote           # Fetch.feature:59
    Given I have a repository                             # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "fetch origin"                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "Remote could not be resolved." # DefaultStepDefinitions.it_should_answer_exactly(String)
    And it should exit with non-zero exit code            # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create an index on a tree with an empty extra-attribute param': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to insert a feature in a tree that does not exist in the repo': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create a branch with a non-existent start point': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to insert a feature passing a wrong file           # Insert.feature:13
    Given I have a repository                                      # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                         # DefaultStepDefinitions.I_stage_6_features()
    And I have an insert file                                      # DefaultStepDefinitions.I_have_an_insert_file()
    When I run the command "insert -f wrong.file"                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Insert file cannot be found" # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Try to create an index with an incorrect extra attribute                     # CreateIndex.feature:190
    Given I have a repository                                                            # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                           # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree Points --extra-attributes invalidAttrib" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "FeatureType Points does not define attribute"      # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Try to create a branch without having made any commits               # Branch.feature:23
    Given I have a repository                                                    # DefaultStepDefinitions.I_have_a_repository()
    And I run the command "branch newBranch"                                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "no commits yet, branch cannot be created." # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                                   # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()

  Scenario: Try to insert a feature in a tree that does not exist in the repo # Insert.feature:20
    Given I have a repository                                                 # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "lines1"                                                # DefaultStepDefinitions.I_have_staged(String)
    And I have an insert file                                                 # DefaultStepDefinitions.I_have_an_insert_file()
    When I run the command "insert -f ${currentdir}/insert"                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "The parent tree does not exist: Points" # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "ls-tree" command
    In order to know what is in a repository
    As a Geogig User
    I want to list the feature in the working tree
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show a list of features in the root tree recursively': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create a branch off of master': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to create an index on a tree with an empty extra-attribute param # CreateIndex.feature:196
    Given I have a repository                                                    # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                   # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree Points --extra-attributes"       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Expected a value after parameter"          # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "index drop" command
    In order to remove an unnecessary index
    As a Geogig User
    I want to drop an index from the repository
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to drop an index': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to create a branch with a non-existent start point                         # Branch.feature:29
    Given I have a repository                                                              # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                             # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "branch newBranch nonexistent"                                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "nonexistent does not resolve to a repository object" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show a list of features in the root tree recursively including trees': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show a list of features in the root tree recursively # LsTree.feature:6
    Given I have a repository                                    # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                  # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                  # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                   # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "ls-tree -r"                          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points/Points.1"           # DefaultStepDefinitions.the_response_should_contain(String)
    Then the response should contain "Lines/Lines.1"             # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to fetch a tag': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to fetch from origin with pruning        # Fetch.feature:65
    Given I have a repository with a remote              # DefaultStepDefinitions.I_have_a_repository_with_a_remote()
    And I have a remote ref called "branch2"             # DefaultStepDefinitions.i_have_a_remote_ref_called(String)
    When I run the command "branch --all"                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "origin/branch2"    # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "fetch --prune"               # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "branch --all"                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "origin/master"     # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "origin/branch1"     # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "origin/branch2" # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain "origin/HEAD"        # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show a list of features in the root tree non-recursively': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to checkout a branch as soon as it is created': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show a list of features in the root tree recursively including trees # LsTree.feature:15
    Given I have a repository                                                    # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                                  # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                                  # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                                   # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "ls-tree -r -t -v"                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points/Points.1"                           # DefaultStepDefinitions.the_response_should_contain(String)
    Then the response should contain "Lines/Lines.1"                             # DefaultStepDefinitions.the_response_should_contain(String)
    Then the response should contain "tree"                                      # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Try to create a branch off of master                           # Branch.feature:35
    Given I have a repository                                              # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                             # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "branch newBranch master"                        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Created branch refs/heads/newBranch" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to drop a nonexistent index': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to drop an index                                                       # DropIndex.feature:6
    Given I have a repository                                                          # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                         # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree Points"                                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"                      # DefaultStepDefinitions.the_response_should_contain(String)
    And the repository's "HEAD:Points" index bounds should be "-90,-180,90,180"        # DefaultStepDefinitions.verifyIndexBounds(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "sp" # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "ip" # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should have the following features:       # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    When I run the command "index drop --tree Points"                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index successfully dropped."                     # DefaultStepDefinitions.the_response_should_contain(String)
    And the repository's "HEAD:Points" should not have an index                        # DefaultStepDefinitions.noIndexAtCommit(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show a verbose list of trees in the root tree non-recursively': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show a list of features in the root tree non-recursively # LsTree.feature:25
    Given I have a repository                                        # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                      # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                      # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                       # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "ls-tree"                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should not contain "tree"                      # DefaultStepDefinitions.the_response_should_not_contain(String)
    Then the response should not contain "Points/Points.1"           # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain "Points"                         # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Lines"                          # DefaultStepDefinitions.the_response_should_contain(String)
    Then the response should not contain "Points/Points.1"           # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain variable "{@PointsTypeID}"   # DefaultStepDefinitions.checkResponseTextDoesNotContain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create a branch off of master while not on master': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to drop the index without specifying a tree': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to fetch from unchanged remote': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to checkout a branch as soon as it is created # Branch.feature:41
    Given I have a repository                                 # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "branch -c newBranch"               # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "branch"                           # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "* newBranch"            # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Try to drop a nonexistent index                                  # DropIndex.feature:23
    Given I have a repository                                                # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                               # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index drop --tree nonexistent"                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Can't find feature tree 'nonexistent'" # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Try to fetch a tag                                  # Fetch.feature:77
    Given I am in an empty directory                            # DefaultStepDefinitions.I_am_in_an_empty_directory()
    And there is a remote repository with a tag named "example" # DefaultStepDefinitions.there_is_a_remote_repository_with_a_tag_named(String)
    When I run the command "clone ${remoterepo} ${localrepo}"   # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "tag"                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "example"                  # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show a verbose list of features in the root tree recursively, not including children': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show a verbose list of trees in the root tree non-recursively # LsTree.feature:38
    Given I have a repository                                             # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                           # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                           # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                            # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "ls-tree -t -v"                                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "tree"                               # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Points 1.0;2.0;1.0;2.0 2"            # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Lines 1.0;2.0;1.0;2.0 1 0"           # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "Points/Points.1"                 # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain "Lines/Lines.1"                   # DefaultStepDefinitions.the_response_should_not_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create a branch with the same name as an existing branch': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to create a branch off of master while not on master               # Branch.feature:48
    Given I have a repository                                                      # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                                    # DefaultStepDefinitions.I_have_staged(String)
    And I run the command "commit -m Commit1"                                      # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "branch -c newBranch"                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    And I have staged "lines1"                                                     # DefaultStepDefinitions.I_have_staged(String)
    And I run the command "commit -m Commit2"                                      # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "branch -c newestBranch master"                         # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "log"                                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Commit1"                                     # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|master}"        # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should not contain "Commit2"                                  # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain variable "{@ObjectId|localrepo|newBranch}" # DefaultStepDefinitions.checkResponseTextDoesNotContain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show a verbose list of features in a path': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to drop the index for a non-existent attribute': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show a verbose list of features in the root tree recursively, not including children # LsTree.feature:50
    Given I have a repository                                                                    # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                                                  # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                                                  # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                                                   # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "ls-tree -d -v"                                                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "tree"                                                      # DefaultStepDefinitions.the_response_should_contain(String)
    Then the response should not contain "Points/Points.1"                                       # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain "Points 1.0"                                                 # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Lines 1.0"                                                  # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: I try to drop the index without specifying a tree                   # DropIndex.feature:29
    Given I have a repository                                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                  # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree Points --extra-attributes ip"   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"               # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "index drop"                                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "The following option is required: --tree" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show a list of features using STAGE_HEAD as non-recursively, including trees': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to fetch from unchanged remote               # Fetch.feature:84
    Given I am in an empty directory                         # DefaultStepDefinitions.I_am_in_an_empty_directory()
    And there is a remote repository                         # DefaultStepDefinitions.there_is_a_remote_repository()
    And I run the command "clone ${remoterepo} ${localrepo}" # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "fetch origin"                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Already up to date"    # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "pull" command
    In order to integrate changes from a remote repository to my working branch
    As a Geogig User
    I want to pull all new commits from that repository
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to pull from an empty directory': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show a verbose list of features in a path          # LsTree.feature:61
    Given I have a repository                                  # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                 # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "ls-tree -v Points"                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should not contain "tree"                # DefaultStepDefinitions.the_response_should_not_contain(String)
    Then the response should contain "Points.1"                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@PointsTypeID}" # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to pull from origin': Using URIBuilder DefaultTestRepoURIBuilder
[main] ERROR org.locationtech.geogig.cli.GeogigCLI - A matching index could not be found.
java.lang.IllegalStateException: A matching index could not be found.
	at com.google.common.base.Preconditions.checkState(Preconditions.java:173)
	at org.locationtech.geogig.porcelain.index.DropIndexOp._call(DropIndexOp.java:62)
	at org.locationtech.geogig.porcelain.index.DropIndexOp._call(DropIndexOp.java:25)
	at org.locationtech.geogig.repository.AbstractGeoGigOp.call(AbstractGeoGigOp.java:154)
	at org.locationtech.geogig.cli.porcelain.index.DropIndex.runInternal(DropIndex.java:47)
	at org.locationtech.geogig.cli.AbstractCommand.run(AbstractCommand.java:68)
	at org.locationtech.geogig.cli.GeogigCLI.executeInternal(GeogigCLI.java:532)
	at org.locationtech.geogig.cli.GeogigCLI.execute(GeogigCLI.java:368)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:159)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:153)
	at org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions.I_run_the_command_X(DefaultStepDefinitions.java:214)
	at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at cucumber.runtime.Utils$1.call(Utils.java:37)
	at cucumber.runtime.Timeout.timeout(Timeout.java:13)
	at cucumber.runtime.Utils.invoke(Utils.java:31)
	at cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:38)
	at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37)
	at cucumber.runtime.Runtime.runStep(Runtime.java:299)
	at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44)
	at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39)
	at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:44)
	at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:91)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:93)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:37)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.api.junit.Cucumber.run(Cucumber.java:98)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to list local branches': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to pull from an empty directory                      # Pull.feature:6
    Given I am in an empty directory                                 # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "pull origin"                             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should start with "Not in a geogig repository" # DefaultStepDefinitions.the_response_should_start_with(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to drop an index in an empty repository': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to create a branch with the same name as an existing branch     # Branch.feature:62
    Given I have a repository                                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                                 # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "branch branch1"                                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "A branch named 'branch1' already exists." # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                                  # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()

  Scenario: I try to drop the index for a non-existent attribute              # DropIndex.feature:37
    Given I have a repository                                                 # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree Points --extra-attributes ip" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"             # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "index drop --tree Points --attribute fakeAttrib"  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "A matching index could not be found."   # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show a list of trees using HEAD as origin, recursively': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to drop an index in an empty repository               # DropIndex.feature:45
    Given I have a repository                                           # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "index drop --tree Points"                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Can't find feature tree 'Points'" # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "index list" command
    In order to see what indexes are available on the repository
    As a Geogig User
    I want to list all of the indexes
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to list indexes': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show a list of features using STAGE_HEAD as non-recursively, including trees # LsTree.feature:71
    Given I have a repository                                                            # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                                          # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                                          # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                                           # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "ls-tree STAGE_HEAD -t -v"                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "tree"                                              # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Points 1.0;2.0;1.0;2.0 2"                           # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Lines 1.0;2.0;1.0;2.0 1 0"                          # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "Points/Points.1"                                # DefaultStepDefinitions.the_response_should_not_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show a verbose list of features using HEAD as origin, recursively': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show a list of trees using HEAD as origin, recursively # LsTree.feature:82
    Given I have a repository                                      # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                    # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                    # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                     # DefaultStepDefinitions.I_have_staged(String)
    And I run the command "commit -m Test"                         # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "ls-tree HEAD -t"                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points"                      # DefaultStepDefinitions.the_response_should_contain(String)
    Then the response should contain "Lines"                       # DefaultStepDefinitions.the_response_should_contain(String)
    Then the response should not contain "Points/Points.1"         # DefaultStepDefinitions.the_response_should_not_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to list local branches with verbose option': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to list local branches          # Branch.feature:69
    Given I have a repository                   # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                 # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "branch"             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "* master" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "branch1"   # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "branch2"   # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to list indexes in a specific feature type tree': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to list indexes                                              # ListIndexes.feature:6
    Given I have a repository                                                # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                               # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "index create --tree Points --extra-attributes ip" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"            # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "index create --tree Lines --extra-attributes sp" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"            # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "index list"                                      # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Lines"                                 # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "[sp]"                                   # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain index info ID for tree "Lines"           # DefaultStepDefinitions.the_response_contains_indexInfoID(String)
    And the response should contain "Points"                                 # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "[ip]"                                   # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain index info ID for tree "Points"          # DefaultStepDefinitions.the_response_contains_indexInfoID(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to pull from origin after first pull': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to pull from origin                                               # Pull.feature:11
    Given I have a repository with a remote                                       # DefaultStepDefinitions.I_have_a_repository_with_a_remote()
    When I run the command "pull origin --rebase"                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "branch --all"                                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "origin/master"                              # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "origin/branch1"                              # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "origin/HEAD"                                 # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "log"                                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Commit5"                                    # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit4"                                     # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|remoterepo|master~1}"    # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should not contain "Commit3"                                 # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain "Commit2"                                 # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain "Commit1"                                     # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain variable "{@ObjectId|remoterepo|branch1}" # DefaultStepDefinitions.checkResponseTextDoesNotContain(String)
    And the response should contain "Commit1"                                     # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show a list of features in a path, using HEAD as origin': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show a verbose list of features using HEAD as origin, recursively # LsTree.feature:93
    Given I have a repository                                                 # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                               # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                               # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                                # DefaultStepDefinitions.I_have_staged(String)
    And I run the command "commit -m Test"                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "ls-tree HEAD -r -v"                               # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points/Points.1"                        # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@PointsTypeID}"                # DefaultStepDefinitions.checkResponseTextContains(String)
    Then the response should contain "Lines/Lines.1"                          # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@LinesTypeID}"                 # DefaultStepDefinitions.checkResponseTextContains(String)
    Then the response should not contain "tree"                               # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain 3 lines                                   # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to list remote branches only': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to list local branches with verbose option # Branch.feature:77
    Given I have a repository                              # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                            # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "branch -v"                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "* master"            # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit5"              # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "branch1"              # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit4"              # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "branch2"              # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit3"              # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to list the indexes without specifying a tree': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show a list from an empty directory': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to list indexes in a specific feature type tree              # ListIndexes.feature:22
    Given I have a repository                                                # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                               # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "index create --tree Points --extra-attributes ip" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"            # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "index create --tree Lines --extra-attributes sp" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"            # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "index list --tree Points"                        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should not contain "Lines"                             # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain "[sp]"                               # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain "Points"                                 # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "[ip]"                                   # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain index info ID for tree "Points"          # DefaultStepDefinitions.the_response_contains_indexInfoID(String)

  Scenario: Show a list of features in a path, using HEAD as origin # LsTree.feature:107
    Given I have a repository                                       # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                     # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                     # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                      # DefaultStepDefinitions.I_have_staged(String)
    And I run the command "commit -m Test"                          # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "ls-tree HEAD:Points"                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points.1"                     # DefaultStepDefinitions.the_response_should_contain(String)
    Then the response should not contain "Lines.1"                  # DefaultStepDefinitions.the_response_should_not_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Run ls-tree on an empty repository': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show a list from an empty directory                      # LsTree.feature:117
    Given I am in an empty directory                                 # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "ls-tree"                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should start with "Not in a geogig repository" # DefaultStepDefinitions.the_response_should_start_with(String)
    And it should exit with non-zero exit code                       # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()

  Scenario: Run ls-tree on an empty repository # LsTree.feature:123
    Given I have a repository                  # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "ls-tree -r"        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer ""                   # DefaultStepDefinitions.it_should_answer_exactly(String)
Feature: "merge-base" command
    In order to know the common parent of 2 commits
    As a Geogig User
    I want to see the common ancestor of 2 commits before a merge
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to view the common parent of 2 commits': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to pull a certain depth from origin': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to list the indexes, specifying a non-existent tree': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to pull from origin after first pull              # Pull.feature:28
    Given I have a repository with a remote                       # DefaultStepDefinitions.I_have_a_repository_with_a_remote()
    When I run the command "pull origin"                          # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "branch --all"                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "origin/master"              # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "pull origin"                          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "master already up to date." # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: I try to list the indexes without specifying a tree                # ListIndexes.feature:36
    Given I have a repository                                                  # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                 # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "index create --tree Points --extra-attributes ip"   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"              # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "index list --tree"                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Expected a value after parameter --tree" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to list all branches': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to list remote branches only         # Branch.feature:88
    Given I have a repository with a remote          # DefaultStepDefinitions.I_have_a_repository_with_a_remote()
    And I run the command "pull origin --rebase"     # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "branch -r"               # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "origin/master" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "origin/branch1" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "origin/HEAD"    # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "* master"   # DefaultStepDefinitions.the_response_should_not_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to list the indexes when there are none': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to list the indexes, specifying a non-existent tree        # ListIndexes.feature:44
    Given I have a repository                                                # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                               # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "index create --tree Points --extra-attributes ip" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"            # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "index list --tree fakeTree"                      # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain ""                                      # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to view the common parent with too many arguments': Using URIBuilder DefaultTestRepoURIBuilder
[main] ERROR org.locationtech.geogig.cli.GeogigCLI - Depth operations can only be used on a shallow clone.
org.locationtech.geogig.cli.CommandFailedException: Depth operations can only be used on a shallow clone.
	at org.locationtech.geogig.cli.porcelain.Pull.runInternal(Pull.java:81)
	at org.locationtech.geogig.cli.AbstractCommand.run(AbstractCommand.java:68)
	at org.locationtech.geogig.cli.GeogigCLI.executeInternal(GeogigCLI.java:532)
	at org.locationtech.geogig.cli.GeogigCLI.execute(GeogigCLI.java:368)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:159)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:153)
	at org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions.I_run_the_command_X(DefaultStepDefinitions.java:214)
	at sun.reflect.GeneratedMethodAccessor52.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at cucumber.runtime.Utils$1.call(Utils.java:37)
	at cucumber.runtime.Timeout.timeout(Timeout.java:13)
	at cucumber.runtime.Utils.invoke(Utils.java:31)
	at cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:38)
	at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37)
	at cucumber.runtime.Runtime.runStep(Runtime.java:299)
	at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44)
	at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39)
	at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:44)
	at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:91)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:93)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:37)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.api.junit.Cucumber.run(Cucumber.java:98)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)

  Scenario: I try to view the common parent of 2 commits  # MergeBase.feature:6
    Given I have a repository                             # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                           # DefaultStepDefinitions.I_have_several_branches()
    And I run the command "merge branch1 -m MergeMessage" # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "merge-base HEAD HEAD~2"       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain 1 lines              # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
    And it should exit with zero exit code                # DefaultStepDefinitions.it_should_exit_with_zero_exit_code()

  Scenario: Try to pull a certain depth from origin                                          # Pull.feature:36
    Given I have a repository with a remote                                                  # DefaultStepDefinitions.I_have_a_repository_with_a_remote()
    When I run the command "pull origin --depth 3"                                           # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Depth operations can only be used on a shallow clone." # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "push" command
    In order to share my changes with a remote repository
    As a Geogig User
    I want to push my commits to that remote
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to push from an empty directory': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to push with no changes': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to push from an empty directory                      # Push.feature:6
    Given I am in an empty directory                                 # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "push origin"                             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should start with "Not in a geogig repository" # DefaultStepDefinitions.the_response_should_start_with(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to list the indexes in an empty repository': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to list the indexes when there are none # ListIndexes.feature:52
    Given I have a repository                             # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                            # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index list"                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain ""                   # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to delete a branch': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to list the indexes in an empty repository # ListIndexes.feature:58
    Given I have a repository                                # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "index list"                      # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain ""                      # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "index rebuild" command
    In order to improve query performance on old commits
    As a Geogig User
    I want to build indexes on all commits in the history of a feature tree
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to rebuild an index': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to list all branches                 # Branch.feature:97
    Given I have a repository with a remote          # DefaultStepDefinitions.I_have_a_repository_with_a_remote()
    And I run the command "pull origin --rebase"     # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "branch --all"            # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "origin/master" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "origin/branch1" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "origin/HEAD"    # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "* master"       # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to view the parent using a bad left commit reference': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to view the common parent with too many arguments           # MergeBase.feature:14
    Given I have a repository                                                 # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                               # DefaultStepDefinitions.I_have_several_branches()
    And I run the command "merge branch1 -m MergeMessage"                     # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "merge-base commit1 commit2 commit3"               # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Two commit references must be provided" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to push to origin': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to push with no changes                 # Push.feature:11
    Given I clone a remote repository                   # DefaultStepDefinitions.i_clone_a_remote_repository()
    When I run the command "push"                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Nothing to push." # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to delete a branch without specifying a name': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to delete a branch                               # Branch.feature:106
    Given I have a repository                                    # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                  # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "branch --delete branch1"             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Deleted branch 'branch1'." # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to rebuild a nonexistent index': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to rebuild an index                                                       # RebuildIndex.feature:6
    Given I have a repository                                                             # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                                           # DefaultStepDefinitions.I_have_several_branches()
    And I run the command "index create --tree Points"                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"                         # DefaultStepDefinitions.the_response_should_contain(String)
    And the repository's "HEAD:Points" index should not track the extra attribute "sp"    # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "ip"    # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should have the following features:          # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    And the repository's "branch2:Points" should not have an index                        # DefaultStepDefinitions.noIndexAtCommit(String)
    And the repository's "branch1:Points" should not have an index                        # DefaultStepDefinitions.noIndexAtCommit(String)
    When I run the command "index rebuild --tree Points"                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "3 trees were rebuilt."                              # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Size: 3"                                             # DefaultStepDefinitions.the_response_should_contain(String)
    And the repository's "HEAD:Points" index should not track the extra attribute "sp"    # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "ip"    # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should have the following features:          # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    And the repository's "HEAD~1:Points" index should not track the extra attribute "sp"  # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD~1:Points" index should not track the extra attribute "ip"  # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD~1:Points" index should have the following features:        # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    And the repository's "branch2:Points" index should not track the extra attribute "sp" # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "branch2:Points" index should not track the extra attribute "ip" # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "branch2:Points" index should have the following features:       # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    And the repository's "branch1:Points" index should not track the extra attribute "sp" # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "branch1:Points" index should not track the extra attribute "ip" # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "branch1:Points" index should have the following features:       # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to view the parent using a bad right commit reference': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to view the parent using a bad left commit reference          # MergeBase.feature:21
    Given I have a repository                                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                                 # DefaultStepDefinitions.I_have_several_branches()
    And I run the command "merge branch1 -m MergeMessage"                       # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "merge-base badCommit HEAD"                          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "badCommit does not resolve to any object" # DefaultStepDefinitions.the_response_should_contain(String)
[main] ERROR org.locationtech.geogig.cli.GeogigCLI - A matching index could not be found.
java.lang.IllegalStateException: A matching index could not be found.
	at com.google.common.base.Preconditions.checkState(Preconditions.java:173)
	at org.locationtech.geogig.plumbing.index.BuildFullHistoryIndexOp._call(BuildFullHistoryIndexOp.java:78)
	at org.locationtech.geogig.plumbing.index.BuildFullHistoryIndexOp._call(BuildFullHistoryIndexOp.java:40)
	at org.locationtech.geogig.repository.AbstractGeoGigOp.call(AbstractGeoGigOp.java:154)
	at org.locationtech.geogig.cli.porcelain.index.RebuildIndex.runInternal(RebuildIndex.java:47)
	at org.locationtech.geogig.cli.AbstractCommand.run(AbstractCommand.java:68)
	at org.locationtech.geogig.cli.GeogigCLI.executeInternal(GeogigCLI.java:532)
	at org.locationtech.geogig.cli.GeogigCLI.execute(GeogigCLI.java:368)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:159)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:153)
	at org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions.I_run_the_command_X(DefaultStepDefinitions.java:214)
	at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at cucumber.runtime.Utils$1.call(Utils.java:37)
	at cucumber.runtime.Timeout.timeout(Timeout.java:13)
	at cucumber.runtime.Utils.invoke(Utils.java:31)
	at cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:38)
	at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37)
	at cucumber.runtime.Runtime.runStep(Runtime.java:299)
	at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44)
	at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39)
	at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:44)
	at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:91)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:93)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:37)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.api.junit.Cucumber.run(Cucumber.java:98)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to delete multiple branches': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I rebuild the index for an attribute on a tree': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to delete a branch without specifying a name          # Branch.feature:112
    Given I have a repository                                         # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                       # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "branch --delete"                          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "no name specified for deletion" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                        # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()

  Scenario: Try to rebuild a nonexistent index                              # RebuildIndex.feature:46
    Given I have a repository                                               # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                              # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "index rebuild --tree Points"                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "A matching index could not be found." # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/master -> 8dafa380dafb8792defd1b89dcc2a8329047a84e] to refs/remotes/origin/master(null)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to push a symbolic reference': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to push to origin                                                # Push.feature:16
    Given I clone a remote repository                                            # DefaultStepDefinitions.i_clone_a_remote_repository()
    When I modify and add a feature                                              # DefaultStepDefinitions.I_modify_and_add_a_feature()
    And I run the command "commit -m Commit6"                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Committed, counting objects"               # DefaultStepDefinitions.the_response_should_contain(String)
    And I run the command "push"                                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should start with "Uploading objects to refs/heads/master" # DefaultStepDefinitions.the_response_should_start_with(String)

  Scenario: I try to view the parent using a bad right commit reference         # MergeBase.feature:28
    Given I have a repository                                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                                 # DefaultStepDefinitions.I_have_several_branches()
    And I run the command "merge branch1 -m MergeMessage"                       # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "merge-base HEAD badCommit"                          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "badCommit does not resolve to any object" # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "rebuild-graph" command
    In order to fix a geogig repository
    As a Geogig User
    I want to rebuild the graph
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to rebuild the graph': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to delete the branch you are on': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to delete multiple branches                     # Branch.feature:119
    Given I have a repository                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                 # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "branch --delete branch1 branch2"    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Deleted branch 'branch1'" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Deleted branch 'branch2'"  # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "branch"                             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "* master"                 # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "branch1"               # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain "branch2"               # DefaultStepDefinitions.the_response_should_not_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to rebuild the index for a non-existent attribute on a tree': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I rebuild the index for an attribute on a tree                                # RebuildIndex.feature:52
    Given I have a repository                                                             # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                                           # DefaultStepDefinitions.I_have_several_branches()
    And I run the command "index create --tree Points --extra-attributes sp"              # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"                         # DefaultStepDefinitions.the_response_should_contain(String)
    And the repository's "HEAD:Points" index should track the extra attribute "sp"        # DefaultStepDefinitions.verifyIndexExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "ip"    # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should have the following features:          # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    And the repository's "branch2:Points" should not have an index                        # DefaultStepDefinitions.noIndexAtCommit(String)
    And the repository's "branch1:Points" should not have an index                        # DefaultStepDefinitions.noIndexAtCommit(String)
    When I run the command "index rebuild --tree Points -a pp"                            # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "3 trees were rebuilt."                              # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Size: 3"                                             # DefaultStepDefinitions.the_response_should_contain(String)
    And the repository's "HEAD:Points" index should track the extra attribute "sp"        # DefaultStepDefinitions.verifyIndexExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "ip"    # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should have the following features:          # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    And the repository's "HEAD~1:Points" index should track the extra attribute "sp"      # DefaultStepDefinitions.verifyIndexExtraAttributes(String,String)
    And the repository's "HEAD~1:Points" index should not track the extra attribute "ip"  # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD~1:Points" index should have the following features:        # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    And the repository's "branch2:Points" index should track the extra attribute "sp"     # DefaultStepDefinitions.verifyIndexExtraAttributes(String,String)
    And the repository's "branch2:Points" index should not track the extra attribute "ip" # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "branch2:Points" index should have the following features:       # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    And the repository's "branch1:Points" index should track the extra attribute "sp"     # DefaultStepDefinitions.verifyIndexExtraAttributes(String,String)
    And the repository's "branch1:Points" index should not track the extra attribute "ip" # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "branch1:Points" index should have the following features:       # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to rebuild the graph with quiet argument': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to rebuild the graph                                                                                        # RebuildGraph.feature:6
    Given I have a repository                                                                                                 # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                                                                # DefaultStepDefinitions.I_have_several_commits()
    And the repository has a truncated graph database                                                                         # DefaultStepDefinitions.the_repository_has_a_truncated_graph_database()
    When I run the command "rebuild-graph"                                                                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "The following graph elements (commits) were incomplete or missing and have been fixed:" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain 4 lines                                                                                   # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to push when the remote has changes': Using URIBuilder DefaultTestRepoURIBuilder
[main] ERROR org.locationtech.geogig.cli.GeogigCLI - A matching index could not be found.
java.lang.IllegalStateException: A matching index could not be found.
	at com.google.common.base.Preconditions.checkState(Preconditions.java:173)
	at org.locationtech.geogig.plumbing.index.BuildFullHistoryIndexOp._call(BuildFullHistoryIndexOp.java:78)
	at org.locationtech.geogig.plumbing.index.BuildFullHistoryIndexOp._call(BuildFullHistoryIndexOp.java:40)
	at org.locationtech.geogig.repository.AbstractGeoGigOp.call(AbstractGeoGigOp.java:154)
	at org.locationtech.geogig.cli.porcelain.index.RebuildIndex.runInternal(RebuildIndex.java:47)
	at org.locationtech.geogig.cli.AbstractCommand.run(AbstractCommand.java:68)
	at org.locationtech.geogig.cli.GeogigCLI.executeInternal(GeogigCLI.java:532)
	at org.locationtech.geogig.cli.GeogigCLI.execute(GeogigCLI.java:368)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:159)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:153)
	at org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions.I_run_the_command_X(DefaultStepDefinitions.java:214)
	at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at cucumber.runtime.Utils$1.call(Utils.java:37)
	at cucumber.runtime.Timeout.timeout(Timeout.java:13)
	at cucumber.runtime.Utils.invoke(Utils.java:31)
	at cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:38)
	at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37)
	at cucumber.runtime.Runtime.runStep(Runtime.java:299)
	at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44)
	at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39)
	at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:44)
	at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:91)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:93)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:37)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.api.junit.Cucumber.run(Cucumber.java:98)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)

  Scenario: Try to push a symbolic reference                                 # Push.feature:24
    Given I clone a remote repository                                        # DefaultStepDefinitions.i_clone_a_remote_repository()
    When I modify and add a feature                                          # DefaultStepDefinitions.I_modify_and_add_a_feature()
    And I run the command "commit -m Commit6"                                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Committed, counting objects"           # DefaultStepDefinitions.the_response_should_contain(String)
    And I run the command "push origin HEAD"                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "Push failed: Cannot push to a symbolic reference" # DefaultStepDefinitions.it_should_answer_exactly(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to rebuild the index for an attribute on a non-existent tree': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to rebuild the index for a non-existent attribute on a tree # RebuildIndex.feature:92
    Given I have a repository                                                 # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "index create --tree Points"                        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"             # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "index rebuild --tree Points -a fakeAttrib"        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "A matching index could not be found."   # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to rename a branch': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to delete the branch you are on                            # Branch.feature:130
    Given I have a repository                                              # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                            # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "checkout branch1"                              # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "branch --delete branch1"                        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Cannot delete the branch you are on" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                             # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to rebuild the graph when it is not broken': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to rebuild the graph with quiet argument                    # RebuildGraph.feature:14
    Given I have a repository                                                 # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                # DefaultStepDefinitions.I_have_several_commits()
    And the repository has a truncated graph database                         # DefaultStepDefinitions.the_repository_has_a_truncated_graph_database()
    When I run the command "rebuild-graph --quiet"                            # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "3 graph elements (commits) were fixed." # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to rebuild the index for a non-existent attribute and tree': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to rebuild the index for an attribute on a non-existent tree # RebuildIndex.feature:100
    Given I have a repository                                                  # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                 # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "index create --tree Points"                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"              # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "index rebuild --tree wrongTree -a pp"              # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Can't find feature tree"                 # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: I try to rebuild the graph when it is not broken                   # RebuildGraph.feature:21
    Given I have a repository                                                  # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                 # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "rebuild-graph"                                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "No missing or incomplete graph elements" # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "rev-list" command
    In order to know the history of commits on a repository
    As a Geogig User
    I want to see a list of commits
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show only a range of commits.': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to rename a branch that you are on': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to rename a branch                                                      # Branch.feature:138
    Given I have a repository                                                           # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                                         # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "branch --rename branch1 superAwesomeBranch"                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "renamed branch 'branch1' to 'superAwesomeBranch'" # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "branch -v"                                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "* master"                                         # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "superAwesomeBranch"                                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit4"                                           # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "branch1"                                       # DefaultStepDefinitions.the_response_should_not_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to rebuild the index without specifying the tree param': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to push when the remote has changes                                   # Push.feature:32
    Given I clone a remote repository                                                 # DefaultStepDefinitions.i_clone_a_remote_repository()
    And the remote repository has changes                                             # DefaultStepDefinitions.the_remote_repository_has_changes()
    And I modify and add a feature                                                    # DefaultStepDefinitions.I_modify_and_add_a_feature()
    When I run the command "commit -m modified"                                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "1 changed"                                      # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "push"                                                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Push failed: The remote repository has changes" # DefaultStepDefinitions.the_response_should_contain(String)

29 Scenarios (29 passed)
201 Steps (201 passed)
0m31.955s

Tests run: 230, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 33.03 sec - in org.locationtech.geogig.cli.test.functional.RunRemoteFunctionalTest

  Scenario: I try to rebuild the index for a non-existent attribute and tree # RebuildIndex.feature:108
    Given I have a repository                                                # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                               # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "index create --tree Points"                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"            # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "index rebuild --tree fakeTree -a fakeAttrib"     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Can't find feature tree"               # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a range of commits and provide additional commits.': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show only a range of commits.    # RevList.feature:6
    Given I have a repository                       # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                      # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "rev-list HEAD~3..HEAD~1" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should not contain " Commit4" # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain "Commit1"   # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain "Commit2"       # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit3"       # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to rename a branch that you are on to a name that already exists': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to rebuild the index on an empty repository': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to rename a branch that you are on                                      # Branch.feature:149
    Given I have a repository                                                           # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                                         # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "checkout branch1"                                           # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "branch --rename superAwesomeBranch"                          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "renamed branch 'branch1' to 'superAwesomeBranch'" # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "branch -v"                                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "master"                                           # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "* superAwesomeBranch"                              # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit3"                                           # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "branch1"                                       # DefaultStepDefinitions.the_response_should_not_contain(String)

  Scenario: I try to rebuild the index without specifying the tree param        # RebuildIndex.feature:116
    Given I have a repository                                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                  # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "index create --tree Points"                          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"               # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "index rebuild"                                      # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "The following option is required: --tree" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a log of a repository with a single commit.': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to rebuild the index on an empty repository  # RebuildIndex.feature:124
    Given I have a repository                                  # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "index rebuild --tree Points"       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Can't find feature tree" # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "index update" command
    In order to modify the extra attributes stored on index trees
    As a Geogig User
    I want to update an index to change the extra attributes
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to update an index': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show a range of commits and provide additional commits.                        # RevList.feature:15
    Given I have a repository                                                                     # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                                    # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "rev-list HEAD~3..HEAD~1 HEAD~2"                                        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Only one value accepted when using <since>..<until> syntax" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a log of a repository with several commits.': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show a log of a repository with a single commit.         # RevList.feature:21
    Given I have a repository                                               # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                             # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                             # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                              # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit -m TestCommit"                           # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "3 features added"                     # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "rev-list HEAD"                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "TestCommit"                           # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|master}" # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to rename a branch without being in a repository': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to rename a branch that you are on to a name that already exists                                      # Branch.feature:161
    Given I have a repository                                                                                         # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                                                                       # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "checkout branch1"                                                                         # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "branch --rename branch2"                                                                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Cannot rename branch to 'branch2' because a branch by that name already exists" # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "branch --rename --force branch2"                                                          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "renamed branch 'branch1' to 'branch2'"                                          # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "branch -v"                                                                                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "master"                                                                         # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "* branch2"                                                                       # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit3"                                                                         # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "branch1"                                                                     # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain "Commit4"                                                                     # DefaultStepDefinitions.the_response_should_not_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to rename a branch without specifying a name': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to update a nonexistent index': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to update an index                                                     # UpdateIndex.feature:6
    Given I have a repository                                                          # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                         # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree Points"                                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"                      # DefaultStepDefinitions.the_response_should_contain(String)
    And the repository's "HEAD:Points" index bounds should be "-90,-180,90,180"        # DefaultStepDefinitions.verifyIndexBounds(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "sp" # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "ip" # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should have the following features:       # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    When I run the command "index update --tree Points --extra-attributes sp"          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index updated successfully"                      # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Size: 3"                                          # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain the index ID for tree "Points"                     # DefaultStepDefinitions.the_response_contains_indexID(String)
    And the repository's "HEAD:Points" index bounds should be "-90,-180,90,180"        # DefaultStepDefinitions.verifyIndexBounds(String,String)
    And the repository's "HEAD:Points" index should track the extra attribute "sp"     # DefaultStepDefinitions.verifyIndexExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "ip" # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should have the following features:       # DefaultStepDefinitions.verifyIndexContents(String,DataTable)

  Scenario: Try to rename a branch without being in a repository  # Branch.feature:176
    Given I am in an empty directory                              # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "branch --rename branch2"              # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Not in a geogig repository" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a log of the commits that have changed the points feature': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show a log of a repository with several commits. # RevList.feature:32
    Given I have a repository                                       # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                      # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "rev-list HEAD"                           # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Commit1"                      # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit2"                       # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit3"                       # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit4"                       # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to update an index with the full history': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to update a nonexistent index                                # UpdateIndex.feature:32
    Given I have a repository                                                # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                               # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index update --tree nonexistent"                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Can't find feature tree 'nonexistent'" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to rename a branch to the same name': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to rename a branch without specifying a name                # Branch.feature:181
    Given I have a repository                                               # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                             # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "branch --rename"                                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "You must specify a branch to rename." # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                              # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show only the last two commits.': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show a log of the commits that have changed the points feature # RevList.feature:41
    Given I have a repository                                                     # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                    # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "rev-list HEAD --path Points"                           # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Commit1"                                    # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit2"                                     # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit4"                                     # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|master~3}"     # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should not contain "Commit3"                                 # DefaultStepDefinitions.the_response_should_not_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to add attributes to an index': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to update an index with the full history                                      # UpdateIndex.feature:38
    Given I have a repository                                                                 # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                                               # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "index create --tree Points"                                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"                             # DefaultStepDefinitions.the_response_should_contain(String)
    And the repository's "HEAD:Points" index bounds should be "-90,-180,90,180"               # DefaultStepDefinitions.verifyIndexBounds(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "sp"        # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "ip"        # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should have the following features:              # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    And the repository's "branch1:Points" should not have an index                            # DefaultStepDefinitions.noIndexAtCommit(String)
    And the repository's "branch2:Points" should not have an index                            # DefaultStepDefinitions.noIndexAtCommit(String)
    When I run the command "index update --tree Points --extra-attributes sp --index-history" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index updated successfully"                             # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Size: 3"                                                 # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Size: 2"                                                 # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain the index ID for tree "Points"                            # DefaultStepDefinitions.the_response_contains_indexID(String)
    And the repository's "HEAD:Points" index bounds should be "-90,-180,90,180"               # DefaultStepDefinitions.verifyIndexBounds(String,String)
    And the repository's "HEAD:Points" index should track the extra attribute "sp"            # DefaultStepDefinitions.verifyIndexExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "ip"        # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should have the following features:              # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    And the repository's "HEAD~1:Points" index should track the extra attribute "sp"          # DefaultStepDefinitions.verifyIndexExtraAttributes(String,String)
    And the repository's "HEAD~1:Points" index should not track the extra attribute "ip"      # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD~1:Points" index should have the following features:            # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    And the repository's "branch2:Points" index should track the extra attribute "sp"         # DefaultStepDefinitions.verifyIndexExtraAttributes(String,String)
    And the repository's "branch2:Points" index should not track the extra attribute "ip"     # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "branch2:Points" index should have the following features:           # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    And the repository's "branch1:Points" index should track the extra attribute "sp"         # DefaultStepDefinitions.verifyIndexExtraAttributes(String,String)
    And the repository's "branch1:Points" index should not track the extra attribute "ip"     # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "branch1:Points" index should have the following features:           # DefaultStepDefinitions.verifyIndexContents(String,DataTable)

  Scenario: Try to rename a branch to the same name          # Branch.feature:188
    Given I have a repository                                # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                              # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "branch --rename branch1 branch1" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Done"                  # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "checkout" command
  In order to view an alternate version of the data
  As a Geogig User
  I want to be able to checkout out branches
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Create a new branch and check it out': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to get commits list without starting commit': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show only the last two commits.                            # RevList.feature:51
    Given I have a repository                                                 # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "rev-list HEAD -n 2"                                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should not contain " Commit1"                           # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain "Commit2"                             # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain "Commit3"                                 # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|master~2}" # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should contain "Commit4"                                 # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to replace attributes of an index': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to add attributes to an index                                          # UpdateIndex.feature:82
    Given I have a repository                                                          # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                         # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree Points --extra-attributes ip"          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"                      # DefaultStepDefinitions.the_response_should_contain(String)
    And the repository's "HEAD:Points" index bounds should be "-90,-180,90,180"        # DefaultStepDefinitions.verifyIndexBounds(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "sp" # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should track the extra attribute "ip"     # DefaultStepDefinitions.verifyIndexExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should have the following features:       # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    When I run the command "index update --tree Points --extra-attributes sp --add"    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index updated successfully"                      # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Size: 3"                                          # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain the index ID for tree "Points"                     # DefaultStepDefinitions.the_response_contains_indexID(String)
    And the repository's "HEAD:Points" index bounds should be "-90,-180,90,180"        # DefaultStepDefinitions.verifyIndexBounds(String,String)
    And the repository's "HEAD:Points" index should track the extra attribute "sp"     # DefaultStepDefinitions.verifyIndexExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should track the extra attribute "ip"     # DefaultStepDefinitions.verifyIndexExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should have the following features:       # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to checkout something while not in a repository': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Create a new branch and check it out                           # Checkout.feature:6
    Given I have a repository                                              # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                             # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "branch newBranch"                              # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Created branch refs/heads/newBranch" # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "checkout newBranch"                            # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "status"                                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "# On branch newBranch"               # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show the log, skipping the last 2 commits': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to checkout without specifying a path': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to get commits list without starting commit        # RevList.feature:61
    Given I have a repository                                      # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                     # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "rev-list"                               # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "No starting commit provided" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                     # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()

  Scenario: Try to checkout something while not in a repository   # Checkout.feature:15
    Given I am in an empty directory                              # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "checkout noBranch"                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Not in a geogig repository" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                    # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to checkout multiple things at once': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to checkout without specifying a path               # Checkout.feature:21
    Given I have a repository                                       # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "checkout"                               # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "no branch or paths specified" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                      # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to update the bounds of an index': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to replace attributes of an index                                         # UpdateIndex.feature:108
    Given I have a repository                                                             # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                            # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree Points --extra-attributes ip"             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"                         # DefaultStepDefinitions.the_response_should_contain(String)
    And the repository's "HEAD:Points" index bounds should be "-90,-180,90,180"           # DefaultStepDefinitions.verifyIndexBounds(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "sp"    # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should track the extra attribute "ip"        # DefaultStepDefinitions.verifyIndexExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should have the following features:          # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    When I run the command "index update --tree Points --extra-attributes sp --overwrite" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index updated successfully"                         # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Size: 3"                                             # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain the index ID for tree "Points"                        # DefaultStepDefinitions.the_response_contains_indexID(String)
    And the repository's "HEAD:Points" index bounds should be "-90,-180,90,180"           # DefaultStepDefinitions.verifyIndexBounds(String,String)
    And the repository's "HEAD:Points" index should track the extra attribute "sp"        # DefaultStepDefinitions.verifyIndexExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "ip"    # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should have the following features:          # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to checkout a branch that doesn't exist': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to checkout multiple things at once       # Checkout.feature:27
    Given I have a repository                             # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "branch newBranch"             # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "branch noBranch"               # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "checkout noBranch newBranch"   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "too many arguments" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code            # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show the list of commits, with the changes introduced by each one': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show the log, skipping the last 2 commits                    # RevList.feature:68
    Given I have a repository                                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                  # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "rev-list HEAD --skip 2"                              # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Commit1"                                  # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit2"                                   # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|master~3}"   # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should not contain "Commit3"                               # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain "Commit4"                               # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain variable "{@ObjectId|localrepo|master}" # DefaultStepDefinitions.checkResponseTextDoesNotContain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to make a change but don't commit and then checkout a different branch without forcing': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to checkout a branch that doesn't exist                   # Checkout.feature:35
    Given I have a repository                                             # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "checkout noBranch"                            # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "'noBranch' not found in repository" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                            # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to update the bounds of an index with incorrect bounds parameter': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to update the bounds of an index                                                     # UpdateIndex.feature:134
    Given I have a repository                                                                        # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                                       # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree Points --extra-attributes sp --bounds -45,-45,45,45" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"                                    # DefaultStepDefinitions.the_response_should_contain(String)
    And the repository's "HEAD:Points" index bounds should be "-45,-45,45,45"                        # DefaultStepDefinitions.verifyIndexBounds(String,String)
    And the repository's "HEAD:Points" index should track the extra attribute "sp"                   # DefaultStepDefinitions.verifyIndexExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "ip"               # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should have the following features:                     # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    When I run the command "index update --tree Points --bounds -20,-45,20,45"                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index updated successfully"                                    # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Size: 3"                                                        # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain the index ID for tree "Points"                                   # DefaultStepDefinitions.the_response_contains_indexID(String)
    And the repository's "HEAD:Points" index bounds should be "-20,-45,20,45"                        # DefaultStepDefinitions.verifyIndexBounds(String,String)
    And the repository's "HEAD:Points" index should track the extra attribute "sp"                   # DefaultStepDefinitions.verifyIndexExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "ip"               # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should have the following features:                     # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to make a change but don't commit and then checkout a different branch with forcing': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to make a change but don't commit and then checkout a different branch without forcing                          # Checkout.feature:41
    Given I have a repository                                                                                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                                                                                 # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit -m Commit1"                                                                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "branch newBranch"                                                                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Created branch refs/heads/newBranch"                                                      # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "checkout newBranch"                                                                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    And I have unstaged "points2"                                                                                               # DefaultStepDefinitions.I_have_unstaged(String)
    And I run the command "checkout master"                                                                                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Working tree and index are not clean. To overwrite local changes, use the --force option" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                                                                                  # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a log from an empty directory': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show the list of commits, with the changes introduced by each one # RevList.feature:79
    Given I have a repository                                                        # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                       # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "rev-list HEAD --changed"                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Commit1"                                       # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit2"                                        # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit3"                                        # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit4"                                        # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Points.1"                                       # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Points.2"                                       # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Lines.1"                                        # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Try to show a log from an empty directory                # RevList.feature:91
    Given I am in an empty directory                                 # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "rev-list HEAD"                           # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should start with "Not in a geogig repository" # DefaultStepDefinitions.the_response_should_start_with(String)
    And it should exit with non-zero exit code                       # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
Feature: "rev-parse" command
    As a Geogig User
    I want to determine if I am in a repository
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to print out the repository location"': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to make a change to a feature and revert back to an old version using path filtering': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I check if I am in a repository': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to make a change but don't commit and then checkout a different branch with forcing # Checkout.feature:53
    Given I have a repository                                                                       # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                                                     # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit -m Commit1"                                                      # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "branch newBranch"                                                        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Created branch refs/heads/newBranch"                          # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "checkout newBranch"                                                     # DefaultStepDefinitions.I_run_the_command_X(String)
    And I have unstaged "points2"                                                                   # DefaultStepDefinitions.I_have_unstaged(String)
    And I run the command "checkout -f master"                                                      # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "status"                                                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should not contain "# Changes not staged for commit:"                         # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain "# On branch master"                                            # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to change existing attributes without specifying add or overwrite': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to print out the repository location"     # RevParse.feature:5
    Given I have a repository                               # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "rev-parse --resolve-geogig-uri" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "localrepo"            # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Try to update the bounds of an index with incorrect bounds parameter                                    # UpdateIndex.feature:160
    Given I have a repository                                                                                       # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                                                      # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree Points --extra-attributes sp --bounds -45,-45,45,45"                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"                                                   # DefaultStepDefinitions.the_response_should_contain(String)
    And the repository's "HEAD:Points" index bounds should be "-45,-45,45,45"                                       # DefaultStepDefinitions.verifyIndexBounds(String,String)
    And the repository's "HEAD:Points" index should track the extra attribute "sp"                                  # DefaultStepDefinitions.verifyIndexExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "ip"                              # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should have the following features:                                    # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    When I run the command "index update --tree Points --bounds -20,-45,20"                                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Invalid bbox parameter: '-20,-45,20'. Expected format: <minx,miny,maxx,maxy>" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to check if I'm in a repository when in an empty directory': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I check if I am in a repository                  # RevParse.feature:10
    Given I have a repository                                # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "rev-parse --is-inside-work-tree" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "true"                  # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to print the repository location when in an empty directory': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to get rid of changes that I have made with path filtering with multiple paths': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to check if I'm in a repository when in an empty directory # RevParse.feature:15
    Given I am in an empty directory                                         # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "rev-parse --is-inside-work-tree"                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Not in a geogig repository"            # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Try to make a change to a feature and revert back to an old version using path filtering # Checkout.feature:66
    Given I have a repository                                                                        # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                                                      # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit -m Commit1"                                                       # DefaultStepDefinitions.I_run_the_command_X(String)
    And I modify a feature                                                                           # DefaultStepDefinitions.I_modify_a_feature()
    And I run the command "checkout -p Points/Points.1"                                              # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "status"                                                                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "nothing to commit"                                             # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to use a refspec with another argument': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to print the repository location when in an empty directory # RevParse.feature:20
    Given I am in an empty directory                                          # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "rev-parse --resolve-geogig-uri"                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Not in a geogig repository"             # DefaultStepDefinitions.the_response_should_contain(String)
[main] ERROR org.locationtech.geogig.cli.GeogigCLI - Extra attributes already exist on index, specify add or overwrite to update.
java.lang.IllegalStateException: Extra attributes already exist on index, specify add or overwrite to update.
	at com.google.common.base.Preconditions.checkState(Preconditions.java:173)
	at org.locationtech.geogig.porcelain.index.UpdateIndexOp._call(UpdateIndexOp.java:178)
	at org.locationtech.geogig.porcelain.index.UpdateIndexOp._call(UpdateIndexOp.java:41)
	at org.locationtech.geogig.repository.AbstractGeoGigOp.call(AbstractGeoGigOp.java:154)
	at org.locationtech.geogig.cli.porcelain.index.UpdateIndex.runInternal(UpdateIndex.java:77)
	at org.locationtech.geogig.cli.AbstractCommand.run(AbstractCommand.java:68)
	at org.locationtech.geogig.cli.GeogigCLI.executeInternal(GeogigCLI.java:532)
	at org.locationtech.geogig.cli.GeogigCLI.execute(GeogigCLI.java:368)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:159)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:153)
	at org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions.I_run_the_command_X(DefaultStepDefinitions.java:214)
	at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at cucumber.runtime.Utils$1.call(Utils.java:37)
	at cucumber.runtime.Timeout.timeout(Timeout.java:13)
	at cucumber.runtime.Utils.invoke(Utils.java:31)
	at cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:38)
	at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37)
	at cucumber.runtime.Runtime.runStep(Runtime.java:299)
	at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44)
	at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39)
	at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:44)
	at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:91)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:93)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:37)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.api.junit.Cucumber.run(Cucumber.java:98)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to update the index without specifying a tree': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to change existing attributes without specifying add or overwrite                                   # UpdateIndex.feature:176
    Given I have a repository                                                                                       # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                                                      # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree Points --extra-attributes ip"                                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"                                                   # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "index update --tree Points --extra-attributes sp"                                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Extra attributes already exist on index, specify add or overwrite to update." # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to bring a feature from a different branch into this branch': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to get rid of changes that I have made with path filtering with multiple paths # Checkout.feature:75
    Given I have a repository                                                                  # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                                                # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit -m Commit1"                                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    And I have staged "lines1"                                                                 # DefaultStepDefinitions.I_have_staged(String)
    And I run the command "commit -m Commit2"                                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    And I modify a feature                                                                     # DefaultStepDefinitions.I_modify_a_feature()
    And I have unstaged "lines2"                                                               # DefaultStepDefinitions.I_have_unstaged(String)
    And I run the command "checkout -p Lines Points/Points.1"                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "status"                                                             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "nothing to commit"                                       # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to use a refspec with a bad ref': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to use a refspec with another argument                         # RevParse.feature:25
    Given I have a repository                                                    # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                       # DefaultStepDefinitions.I_stage_6_features()
    When I run the command "rev-parse STAGE_HEAD/Points.1 --is-inside-work-tree" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "if refSpec is given"                       # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to update the index for a non-existent attribute': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to update the index without specifying a tree                 # UpdateIndex.feature:184
    Given I have a repository                                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                  # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree Points --extra-attributes ip"   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"               # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "index update --extra-attributes sp"                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "The following option is required: --tree" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to resolve the geogig uri when not in a repository': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to revert using both --ours and --theirs': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to use a refspec with a bad ref                # RevParse.feature:31
    Given I have a repository                                    # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                   # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "rev-parse bad_ref"                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "fatal: ambiguous argument" # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Try to bring a feature from a different branch into this branch # Checkout.feature:87
    Given I have a repository                                               # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                             # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit -m Commit1"                              # DefaultStepDefinitions.I_run_the_command_X(String)
    And I have staged "points2"                                             # DefaultStepDefinitions.I_have_staged(String)
    And I run the command "commit -m Commit2"                               # DefaultStepDefinitions.I_run_the_command_X(String)
    And I have staged "points3"                                             # DefaultStepDefinitions.I_have_staged(String)
    And I run the command "commit -m Commit3"                               # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "branch -c newBranch"                             # DefaultStepDefinitions.I_run_the_command_X(String)
    And I have staged "lines1"                                              # DefaultStepDefinitions.I_have_staged(String)
    And I run the command "commit -m Commit4"                               # DefaultStepDefinitions.I_run_the_command_X(String)
    And I have staged "lines2"                                              # DefaultStepDefinitions.I_have_staged(String)
    And I run the command "commit -m Commit5"                               # DefaultStepDefinitions.I_run_the_command_X(String)
    And I have staged "lines3"                                              # DefaultStepDefinitions.I_have_staged(String)
    And I run the command "commit -m Commit6"                               # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "checkout master"                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "checkout newBranch -p Lines/Lines.1"             # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "status"                                          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Lines/Lines.1"                        # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "added"                                 # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "# Changes not staged for commit:"      # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: I try to resolve the geogig uri when not in a repository # RevParse.feature:37
    Given I am in an empty directory                                 # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "rev-parse"                               # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Not in a geogig repository"    # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "show-ref" command
    In order to know the branches in a geogig repository
    As a Geogig User
    I want list all references
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'List all references': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to revert a feature where the version you want doesn't exist': Using URIBuilder DefaultTestRepoURIBuilder
[main] ERROR org.locationtech.geogig.cli.GeogigCLI - A matching index could not be found.
java.lang.IllegalStateException: A matching index could not be found.
	at com.google.common.base.Preconditions.checkState(Preconditions.java:173)
	at org.locationtech.geogig.porcelain.index.UpdateIndexOp._call(UpdateIndexOp.java:150)
	at org.locationtech.geogig.porcelain.index.UpdateIndexOp._call(UpdateIndexOp.java:41)
	at org.locationtech.geogig.repository.AbstractGeoGigOp.call(AbstractGeoGigOp.java:154)
	at org.locationtech.geogig.cli.porcelain.index.UpdateIndex.runInternal(UpdateIndex.java:77)
	at org.locationtech.geogig.cli.AbstractCommand.run(AbstractCommand.java:68)
	at org.locationtech.geogig.cli.GeogigCLI.executeInternal(GeogigCLI.java:532)
	at org.locationtech.geogig.cli.GeogigCLI.execute(GeogigCLI.java:368)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:159)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:153)
	at org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions.I_run_the_command_X(DefaultStepDefinitions.java:214)
	at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at cucumber.runtime.Utils$1.call(Utils.java:37)
	at cucumber.runtime.Timeout.timeout(Timeout.java:13)
	at cucumber.runtime.Utils.invoke(Utils.java:31)
	at cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:38)
	at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37)
	at cucumber.runtime.Runtime.runStep(Runtime.java:299)
	at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44)
	at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39)
	at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:44)
	at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:91)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:93)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:37)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.api.junit.Cucumber.run(Cucumber.java:98)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to update the index leaving the extra-attribute param empty': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to revert using both --ours and --theirs                   # Checkout.feature:109
    Given I have a repository                                              # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "checkout -p Points/Points.1 --ours --theirs"   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Cannot use both --ours and --theirs" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                             # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()

  Scenario: I try to update the index for a non-existent attribute             # UpdateIndex.feature:192
    Given I have a repository                                                  # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                 # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree Points --extra-attributes ip"  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"              # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "index update --tree Points --attribute fakeAttrib" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "A matching index could not be found."    # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to revert an unmerged feature': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to revert a feature where the version you want doesn't exist                # Checkout.feature:115
    Given I have a repository                                                               # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points2"                                                             # DefaultStepDefinitions.I_have_staged(String)
    When I modify a feature                                                                 # DefaultStepDefinitions.I_modify_a_feature()
    And I run the command "checkout -p Points/Points.1"                                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "'Points/Points.1' didn't match a feature in the tree" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                                              # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to update the index for a non-existent extra-attribute': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to update the index leaving the extra-attribute param empty              # UpdateIndex.feature:200
    Given I have a repository                                                              # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                             # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree Points --extra-attributes ip"              # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"                          # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "index update --tree Points --extra-attributes"                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Expected a value after parameter --extra-attributes" # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: List all references                                              # ShowRef.feature:6
    Given I have a repository                                                # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                              # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "show-ref"                                        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain 3 lines                                 # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
    And the response should contain "master"                                 # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "branch1"                                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "branch2"                                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|master}"  # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should contain variable "{@ObjectId|localrepo|branch1}" # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should contain variable "{@ObjectId|localrepo|branch2}" # DefaultStepDefinitions.checkResponseTextContains(String)
Feature: "verify-patch" command
    In order to ensure I have a valid patch
    As a Geogig User
    I want to verify the patch
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to verify a patch without specifying a file': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to verify multiple files': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to verify a patch without specifying a file  # VerifyPatch.feature:6
    Given I have a repository                                  # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "verify-patch"                      # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "No patch file specified" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to verify a patch with a bad file path': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to revert a feature to the --theirs version and fix the conflict': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to verify multiple files                                 # VerifyPatch.feature:11
    Given I have a repository                                              # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "verify-patch file1 file2"                      # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Only one single patch file accepted" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to overwrite a non-existent extra-attribute': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to revert an unmerged feature                           # Checkout.feature:123
    Given I have a repository                                           # DefaultStepDefinitions.I_have_a_repository()
    And I have a merge conflict state                                   # DefaultStepDefinitions.I_have_a_merge_conflict_state()
    When I run the command "checkout -p Points/Points.1"                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "path Points/Points.1 is unmerged" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                          # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()

  Scenario: I try to update the index for a non-existent extra-attribute                         # UpdateIndex.feature:208
    Given I have a repository                                                                    # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                                   # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree Points --extra-attributes ip"                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"                                # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "index update --tree Points --extra-attributes fakeAttrib"            # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "FeatureType Points does not define attribute 'fakeAttrib'" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I have a patch file that contains rejects': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to verify a patch with a bad file path          # VerifyPatch.feature:16
    Given I have a repository                                     # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "verify-patch file1"                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Patch file cannot be found" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I have a patch file that is valid': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I have a patch file that contains rejects              # VerifyPatch.feature:21
    Given I have a repository                                      # DefaultStepDefinitions.I_have_a_repository()
    And I have a patch file                                        # DefaultStepDefinitions.I_have_a_patch_file()
    When I run the command "verify-patch ${currentdir}/test.patch" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Patch cannot be applied"     # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain 10 lines                       # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to update the index for the full history when there is only one commit': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to overwrite a non-existent extra-attribute                                     # UpdateIndex.feature:216
    Given I have a repository                                                                     # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                                    # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree Points --extra-attributes ip"                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"                                 # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "index update --tree Points --extra-attributes fakeAttrib --overwrite" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "FeatureType Points does not define attribute 'fakeAttrib'"  # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to checkout a remote branch': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to update the index without updating anything': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I have a patch file that is valid                      # VerifyPatch.feature:28
    Given I have a repository                                      # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                         # DefaultStepDefinitions.I_stage_6_features()
    And I have a patch file                                        # DefaultStepDefinitions.I_have_a_patch_file()
    When I run the command "verify-patch ${currentdir}/test.patch" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Patch can be applied"        # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "walk-graph" command
    In order to walk through objects in the history tree
    As a Geogig User
    I want to see the object information of each object in the tree
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to walk the graph with no arguments': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to update the index for the full history when there is only one commit # UpdateIndex.feature:224
    Given I have a repository                                                            # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                                          # DefaultStepDefinitions.I_have_staged(String)
    And I run the command "commit -m "point1 added"                                      # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "index create --tree Points --extra-attributes ip"            # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"                        # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "index update --tree Points --index-history --overwrite"      # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index updated successfully"                        # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Size: 1"                                            # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain the index ID for tree "Points"                       # DefaultStepDefinitions.the_response_contains_indexID(String)
    And the repository's "HEAD:Points" index bounds should be "-90,-180,90,180"          # DefaultStepDefinitions.verifyIndexBounds(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "sp"   # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should not track the extra attribute "ip"   # DefaultStepDefinitions.verifyIndexNotExtraAttributes(String,String)
    And the repository's "HEAD:Points" index should have the following features:         # DefaultStepDefinitions.verifyIndexContents(String,DataTable)

  Scenario: Try to revert a feature to the --theirs version and fix the conflict # Checkout.feature:130
    Given I have a repository                                                    # DefaultStepDefinitions.I_have_a_repository()
    And I have a merge conflict state                                            # DefaultStepDefinitions.I_have_a_merge_conflict_state()
    When I run the command "checkout -p Points/Points.1 --theirs"                # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "add"                                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "commit -m Commit"                                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Committed"                                 # DefaultStepDefinitions.the_response_should_contain(String)
[main] ERROR org.locationtech.geogig.cli.GeogigCLI - Nothing to update...
java.lang.IllegalStateException: Nothing to update...
	at com.google.common.base.Preconditions.checkState(Preconditions.java:173)
	at org.locationtech.geogig.porcelain.index.UpdateIndexOp._call(UpdateIndexOp.java:200)
	at org.locationtech.geogig.porcelain.index.UpdateIndexOp._call(UpdateIndexOp.java:41)
	at org.locationtech.geogig.repository.AbstractGeoGigOp.call(AbstractGeoGigOp.java:154)
	at org.locationtech.geogig.cli.porcelain.index.UpdateIndex.runInternal(UpdateIndex.java:77)
	at org.locationtech.geogig.cli.AbstractCommand.run(AbstractCommand.java:68)
	at org.locationtech.geogig.cli.GeogigCLI.executeInternal(GeogigCLI.java:532)
	at org.locationtech.geogig.cli.GeogigCLI.execute(GeogigCLI.java:368)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:159)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:153)
	at org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions.I_run_the_command_X(DefaultStepDefinitions.java:214)
	at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at cucumber.runtime.Utils$1.call(Utils.java:37)
	at cucumber.runtime.Timeout.timeout(Timeout.java:13)
	at cucumber.runtime.Utils.invoke(Utils.java:31)
	at cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:38)
	at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37)
	at cucumber.runtime.Runtime.runStep(Runtime.java:299)
	at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44)
	at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39)
	at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:44)
	at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:91)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:93)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:37)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.api.junit.Cucumber.run(Cucumber.java:98)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to update the index with the same extra attribute': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to walk the graph with bad arguments': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to update the index without updating anything               # UpdateIndex.feature:241
    Given I have a repository                                                 # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree Points --extra-attributes ip" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"             # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "index update --tree Points"                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Nothing to update..."                   # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: I try to walk the graph with no arguments         # WalkGraph.feature:6
    Given I have a repository                                 # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "walk-graph"                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Reference not provided" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to checkout a specific commit': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to checkout a remote branch                                                                     # Checkout.feature:138
    Given I have a repository with a remote                                                                     # DefaultStepDefinitions.I_have_a_repository_with_a_remote()
    When I run the command "pull origin"                                                                        # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "checkout branch1"                                                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Branch 'branch1' was set up to track remote branch 'branch1' from origin" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Switched to a new branch 'branch1'"                                        # DefaultStepDefinitions.the_response_should_contain(String)
[main] ERROR org.locationtech.geogig.cli.GeogigCLI - Nothing to update...
java.lang.IllegalStateException: Nothing to update...
	at com.google.common.base.Preconditions.checkState(Preconditions.java:173)
	at org.locationtech.geogig.porcelain.index.UpdateIndexOp._call(UpdateIndexOp.java:200)
	at org.locationtech.geogig.porcelain.index.UpdateIndexOp._call(UpdateIndexOp.java:41)
	at org.locationtech.geogig.repository.AbstractGeoGigOp.call(AbstractGeoGigOp.java:154)
	at org.locationtech.geogig.cli.porcelain.index.UpdateIndex.runInternal(UpdateIndex.java:77)
	at org.locationtech.geogig.cli.AbstractCommand.run(AbstractCommand.java:68)
	at org.locationtech.geogig.cli.GeogigCLI.executeInternal(GeogigCLI.java:532)
	at org.locationtech.geogig.cli.GeogigCLI.execute(GeogigCLI.java:368)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:159)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:153)
	at org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions.I_run_the_command_X(DefaultStepDefinitions.java:214)
	at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at cucumber.runtime.Utils$1.call(Utils.java:37)
	at cucumber.runtime.Timeout.timeout(Timeout.java:13)
	at cucumber.runtime.Utils.invoke(Utils.java:31)
	at cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:38)
	at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37)
	at cucumber.runtime.Runtime.runStep(Runtime.java:299)
	at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44)
	at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39)
	at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:44)
	at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:91)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:93)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:37)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.api.junit.Cucumber.run(Cucumber.java:98)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to update the index by adding the same extra attribute': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to walk the graph': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to update the index with the same extra attribute                       # UpdateIndex.feature:249
    Given I have a repository                                                             # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                            # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree Points --extra-attributes ip"             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"                         # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "index update --tree Points --extra-attributes ip --overwrite" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Nothing to update..."                               # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: I try to walk the graph with bad arguments         # WalkGraph.feature:12
    Given I have a repository                                  # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                 # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "walk-graph garbage"                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Can't resolve reference" # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Try to checkout a specific commit                           # Checkout.feature:145
    Given I have a repository                                           # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                          # DefaultStepDefinitions.I_have_several_commits()
    When I create a detached branch                                     # DefaultStepDefinitions.I_create_a_detached_branch()
    Then the response should contain "You are in 'detached HEAD' state" # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "cherry-pick" command
    In order to select specific changes to bring to the current branch
    As a Geogig User
    I want to cherry pick several commits from other branches
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to cherry pick several commits': Using URIBuilder DefaultTestRepoURIBuilder
[main] ERROR org.locationtech.geogig.cli.GeogigCLI - Nothing to update...
java.lang.IllegalStateException: Nothing to update...
	at com.google.common.base.Preconditions.checkState(Preconditions.java:173)
	at org.locationtech.geogig.porcelain.index.UpdateIndexOp._call(UpdateIndexOp.java:200)
	at org.locationtech.geogig.porcelain.index.UpdateIndexOp._call(UpdateIndexOp.java:41)
	at org.locationtech.geogig.repository.AbstractGeoGigOp.call(AbstractGeoGigOp.java:154)
	at org.locationtech.geogig.cli.porcelain.index.UpdateIndex.runInternal(UpdateIndex.java:77)
	at org.locationtech.geogig.cli.AbstractCommand.run(AbstractCommand.java:68)
	at org.locationtech.geogig.cli.GeogigCLI.executeInternal(GeogigCLI.java:532)
	at org.locationtech.geogig.cli.GeogigCLI.execute(GeogigCLI.java:368)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:159)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:153)
	at org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions.I_run_the_command_X(DefaultStepDefinitions.java:214)
	at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at cucumber.runtime.Utils$1.call(Utils.java:37)
	at cucumber.runtime.Timeout.timeout(Timeout.java:13)
	at cucumber.runtime.Utils.invoke(Utils.java:31)
	at cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:38)
	at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37)
	at cucumber.runtime.Runtime.runStep(Runtime.java:299)
	at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44)
	at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39)
	at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:44)
	at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:91)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:93)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:37)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.api.junit.Cucumber.run(Cucumber.java:98)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to update the index in an empty repository': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to walk the graph with verbose enabled': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to update the index by adding the same extra attribute            # UpdateIndex.feature:257
    Given I have a repository                                                       # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                      # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree Points --extra-attributes sp,ip"    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"                   # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "index update --tree Points --extra-attributes ip --add" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Nothing to update..."                         # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: I try to walk the graph               # WalkGraph.feature:18
    Given I have a repository                     # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                    # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "walk-graph master"    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "TREE"       # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "FEATURETYPE" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "FEATURE"     # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "Points"  # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain 12 lines      # DefaultStepDefinitions.the_response_should_contain_x_lines(int)

  Scenario: I try to update the index in an empty repository            # UpdateIndex.feature:265
    Given I have a repository                                           # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "index update --tree Points"                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Can't find feature tree 'Points'" # DefaultStepDefinitions.the_response_should_contain(String)

57 Scenarios (57 passed)
496 Steps (496 passed)
0m43.572s

Tests run: 553, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 44.828 sec - in org.locationtech.geogig.cli.test.functional.RunIndexFunctionalTest
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to cherry pick a single commit': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to walk the graph with verbose enabled # WalkGraph.feature:28
    Given I have a repository                            # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                           # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "walk-graph -v master"        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "TREE"              # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "FEATURETYPE"        # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "FEATURE"            # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Points"             # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Lines"              # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain 12 lines             # DefaultStepDefinitions.the_response_should_contain_x_lines(int)

66 Scenarios (66 passed)
408 Steps (408 passed)
0m44.126s


  Scenario: Try to cherry pick several commits                     # CherryPick.feature:6
    Given I have a repository                                      # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                    # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "cherry-pick branch1 branch2"           # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Too many commits specified." # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                     # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
Tests run: 474, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 45.25 sec - in org.locationtech.geogig.cli.test.functional.RunPlumbingFunctionalTest
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to cherry pick a nonexistent branch': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to cherry pick a single commit                              # CherryPick.feature:13
    Given I have a repository                                               # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                             # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "cherry-pick branch1"                            # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "log"                                             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Commit3"                              # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD}"   # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should not contain "Commit2"                           # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain "Commit4"                           # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain "Commit5"                               # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD~1}" # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should contain "Commit1"                               # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD~2}" # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to cherry pick without specifying any commits': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to cherry pick a nonexistent branch     # CherryPick.feature:27
    Given I have a repository                           # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                         # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "cherry-pick nonexistent"    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Commit not found" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code          # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to cherry pick from an empty directory': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to cherry pick without specifying any commits # CherryPick.feature:34
    Given I have a repository                                 # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                               # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "cherry-pick"                      # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "No commits specified."             # DefaultStepDefinitions.it_should_answer_exactly(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to cherry pick a commit that causes conflict': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to cherry pick from an empty directory               # CherryPick.feature:40
    Given I am in an empty directory                                 # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "cherry-pick branch1"                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should start with "Not in a geogig repository" # DefaultStepDefinitions.the_response_should_start_with(String)
    And it should exit with non-zero exit code                       # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()

  Scenario: Try to cherry pick a commit that causes conflict                 # CherryPick.feature:46
    Given I have a repository                                                # DefaultStepDefinitions.I_have_a_repository()
    And I have conflicting branches                                          # DefaultStepDefinitions.I_have_conflicting_branches()
    When I run the command "cherry-pick branch1"                             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "CONFLICT: conflict in Points/Points.1" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                               # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
Feature: "clean" command
    In order to remove unwanted changes
    As a Geogig User
    I want to remove all untracked features
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to remove all the untracked features': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to remove all the untracked features in a tree': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to remove all the untracked features       # Clean.feature:6
    Given I have a repository                              # DefaultStepDefinitions.I_have_a_repository()
    And I have unstaged "points1"                          # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "points2"                          # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "lines1"                           # DefaultStepDefinitions.I_have_unstaged(String)
    When I run the command "clean"                         # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "status"                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should not contain "Points/Points.1" # DefaultStepDefinitions.the_response_should_not_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to remove all the untracked features in a tree that does not exist': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to remove all the untracked features in a tree      # Clean.feature:15
    Given I have a repository                                       # DefaultStepDefinitions.I_have_a_repository()
    And I have unstaged "points1"                                   # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "points2"                                   # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "lines1"                                    # DefaultStepDefinitions.I_have_unstaged(String)
    When I run the command "clean Points"                           # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "status"                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should not contain "Removing Points/Points.1" # DefaultStepDefinitions.the_response_should_not_contain(String)
    Then the response should contain "Lines/Lines.1"                # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to remove all the untracked features in a path that is not a tree': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to remove all the untracked features in a tree that does not exist # Clean.feature:25
    Given I have a repository                                                      # DefaultStepDefinitions.I_have_a_repository()
    And I have unstaged "points1"                                                  # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "points2"                                                  # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "lines1"                                                   # DefaultStepDefinitions.I_have_unstaged(String)
    When I run the command "clean fakeTree"                                        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "did not match any tree"                      # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                                     # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to know which untracked features would be removed in a non-existent tree': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to remove all the untracked features in a path that is not a tree # Clean.feature:34
    Given I have a repository                                                     # DefaultStepDefinitions.I_have_a_repository()
    And I have unstaged "points1"                                                 # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "points2"                                                 # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "lines1"                                                  # DefaultStepDefinitions.I_have_unstaged(String)
    When I run the command "clean Points/Points.1"                                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "did not resolve to a tree"                  # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                                    # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to know which untracked features would be removed': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to know which untracked features would be removed in a non-existent tree # Clean.feature:43
    Given I have a repository                                                            # DefaultStepDefinitions.I_have_a_repository()
    And I have unstaged "points1"                                                        # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "points2"                                                        # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "lines1"                                                         # DefaultStepDefinitions.I_have_unstaged(String)
    When I run the command "clean -n fake/tree"                                          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "pathspec 'fake/tree' did not match any tree"       # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Try to know which untracked features would be removed   # Clean.feature:51
    Given I have a repository                                       # DefaultStepDefinitions.I_have_a_repository()
    And I have unstaged "points1"                                   # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "points2"                                   # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "lines1"                                    # DefaultStepDefinitions.I_have_unstaged(String)
    When I run the command "clean -n"                               # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Would remove Points/Points.1" # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "commit" command
    In order to finalize a set of changes that have been staged
    As a Geogig User
    I want to create a commit and add it to the repository
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to commit with timestamp': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to commit with timestamp in millisecs': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to commit with timestamp                                  # Commit.feature:7
    Given I have a repository                                             # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                           # DefaultStepDefinitions.I_have_staged(String)
    And I run the command "commit -t 2010-04-22T19:53:23Z -m msg"         # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "log --utc"                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "2010-04-22"                         # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD}" # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to commit current staged features': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to commit with timestamp in millisecs                     # Commit.feature:15
    Given I have a repository                                             # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                           # DefaultStepDefinitions.I_have_staged(String)
    And I run the command "commit -t 1000000000 -m msg"                   # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "log"                                          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "1970-01"                            # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD}" # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to commit current staged features using a message with blank spaces': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to commit current staged features                         # Commit.feature:23
    Given I have a repository                                             # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                           # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                           # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                            # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit -m Test"                               # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "3 features added"                   # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD}" # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to perform multiple commits': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to commit current staged features using a message with blank spaces # Commit.feature:32
    Given I have a repository                                                       # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                                     # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                                     # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                                      # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit -m "A message with spaces""                      # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "3 features added"                             # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "A message with spaces"                         # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD}"           # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to commit without providing a message': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to perform multiple commits                               # Commit.feature:42
    Given I have a repository                                             # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                           # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                           # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                            # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit -m Test"                               # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "3 features added"                   # DefaultStepDefinitions.the_response_should_contain(String)
    When I modify and add a feature                                       # DefaultStepDefinitions.I_modify_and_add_a_feature()
    And I run the command "commit -m Test2"                               # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "1 changed"                          # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD}" # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to commit using a previous commit': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to commit without providing a message  # Commit.feature:54
    Given I have a repository                          # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                        # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                        # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                         # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit"                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "No commit message provided" # DefaultStepDefinitions.it_should_answer_exactly(String)
    And it should exit with non-zero exit code         # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to commit from an empty directory': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to commit using a previous commit                     # Commit.feature:63
    Given I have a repository                                         # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                        # DefaultStepDefinitions.I_have_several_commits()
    And I have staged "points1"                                       # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit -c HEAD~1"                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should not contain "No commit message provided" # DefaultStepDefinitions.the_response_should_not_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to commit when no changes have been made': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to commit from an empty directory                    # Commit.feature:70
    Given I am in an empty directory                                 # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "commit -m Test"                          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should start with "Not in a geogig repository" # DefaultStepDefinitions.the_response_should_start_with(String)
    And it should exit with non-zero exit code                       # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to commit when there is a merge conflict': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to commit when no changes have been made    # Commit.feature:76
    Given I have a repository                               # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "commit -m Test"                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should start with "Nothing to commit" # DefaultStepDefinitions.the_response_should_start_with(String)
    And it should exit with non-zero exit code              # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to amend last commit': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to commit when there is a merge conflict                                          # Commit.feature:82
    Given I have a repository                                                                     # DefaultStepDefinitions.I_have_a_repository()
    And I have a merge conflict state                                                             # DefaultStepDefinitions.I_have_a_merge_conflict_state()
    When I run the command "commit -m Message"                                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Cannot run operation while merge or rebase conflicts exist" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                                                    # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to amend last commit, when no previous commit has been made': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to amend last commit                                      # Commit.feature:89
    Given I have a repository                                             # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                           # DefaultStepDefinitions.I_have_staged(String)
    And I run the command "commit -m Test"                                # DefaultStepDefinitions.I_run_the_command_X(String)
    And I have staged "points2"                                           # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit --amend"                               # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "2 features added"                   # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD}" # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to commit without message while solving a merge conflict': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to amend last commit, when no previous commit has been made # Commit.feature:99
    Given I have a repository                                               # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                             # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit --amend"                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Cannot amend"                         # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to commit only points': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to commit without message while solving a merge conflict # Commit.feature:105
    Given I have a repository                                            # DefaultStepDefinitions.I_have_a_repository()
    And I have a merge conflict state                                    # DefaultStepDefinitions.I_have_a_merge_conflict_state()
    When I run the command "checkout -p Points/Points.1 --theirs"        # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "add"                                          # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "commit"                                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Merge branch refs/heads/branch1"   # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Conflicts:"                         # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Points/Points.1"                    # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Try to commit only points                                     # Commit.feature:115
    Given I have a repository                                             # DefaultStepDefinitions.I_have_a_repository()
    And I have unstaged "points1"                                         # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "points2"                                         # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "lines1"                                          # DefaultStepDefinitions.I_have_unstaged(String)
    And I have staged "lines2"                                            # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit -m Test Points"                        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "2 features added"                   # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD}" # DefaultStepDefinitions.checkResponseTextContains(String)
Feature: "config" command
    In order to configure geogig
    As a Geogig User
    I want to get and set global settings as well as repository settings on a directory of my choice
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to set a config value in the current empty directory': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to get a local config value in the current empty directory': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to set a config value in the current empty directory # Config.feature:6
    Given I am in an empty directory                                 # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "config testing.key value"                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "The config location is invalid"           # DefaultStepDefinitions.it_should_answer_exactly(String)
    And it should exit with non-zero exit code                       # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to list local variables in the current empty directory': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to get a local config value in the current empty directory # Config.feature:12
    Given I am in an empty directory                                       # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "config --get --local testing.key"              # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "the config location is invalid"                 # DefaultStepDefinitions.it_should_answer_exactly(String)
    And it should exit with non-zero exit code                             # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to get a config value in the current empty directory': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to list local variables in the current empty directory # Config.feature:18
    Given I am in an empty directory                                   # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "config --list --local"                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "the config location is invalid"             # DefaultStepDefinitions.it_should_answer_exactly(String)
    And it should exit with non-zero exit code                         # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to set and get a global config value in the current empty directory': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to get a config value in the current empty directory # Config.feature:24
    Given I am in an empty directory                                 # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "config --get testing.key"                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer ""                                         # DefaultStepDefinitions.it_should_answer_exactly(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to set and get a config value in the current repository': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to set and get a global config value in the current empty directory # Config.feature:29
    Given I am in an empty directory                                                # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "config --global testing.global true"                    # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "config --global --get testing.global"                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "true"                                                    # DefaultStepDefinitions.it_should_answer_exactly(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to set and get a multi-word config value in the current repository': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to set and get a config value in the current repository # Config.feature:35
    Given I have a repository                                           # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "config testing.local true"                  # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "config --get testing.local"                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "true"                                        # DefaultStepDefinitions.it_should_answer_exactly(String)
    When I run the command "config --local --get testing.local"         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "true"                                        # DefaultStepDefinitions.it_should_answer_exactly(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to get a config value that doesn't exist': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to set and get a multi-word config value in the current repository # Config.feature:43
    Given I have a repository                                                      # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "config testing.local test word"                        # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "config --get testing.local"                             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "test word"                                              # DefaultStepDefinitions.it_should_answer_exactly(String)
    When I run the command "config --local --get testing.local"                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "test word"                                              # DefaultStepDefinitions.it_should_answer_exactly(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to get a config value without specifying key': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to get a config value that doesn't exist        # Config.feature:51
    Given I have a repository                                   # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "config --global --get doesnt.exist" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer ""                                    # DefaultStepDefinitions.it_should_answer_exactly(String)
    When I run the command "config --get doesnt.exist"          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer ""                                    # DefaultStepDefinitions.it_should_answer_exactly(String)
    When I run the command "config --local --get doesnt.exist"  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer ""                                    # DefaultStepDefinitions.it_should_answer_exactly(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to get a config value using malformed key': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to get a config value without specifying key # Config.feature:60
    Given I have a repository                                # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "config --global --get"           # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "No section or name was provided"  # DefaultStepDefinitions.it_should_answer_exactly(String)
    When I run the command "config --get"                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "No section or name was provided"  # DefaultStepDefinitions.it_should_answer_exactly(String)
    When I run the command "config --local --get"            # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "No section or name was provided"  # DefaultStepDefinitions.it_should_answer_exactly(String)
    And it should exit with non-zero exit code               # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to get a config value using the alternate syntax': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to get a config value using malformed key # Config.feature:70
    Given I have a repository                             # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "config --global --get test"   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "The section or key is invalid" # DefaultStepDefinitions.it_should_answer_exactly(String)
    When I run the command "config --get test"            # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "The section or key is invalid" # DefaultStepDefinitions.it_should_answer_exactly(String)
    When I run the command "config --local --get test"    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "The section or key is invalid" # DefaultStepDefinitions.it_should_answer_exactly(String)
    And it should exit with non-zero exit code            # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to set, unset, and get a config value in the current repository': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to get a config value using the alternate syntax # Config.feature:80
    Given I have a repository                                    # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "config --global section.key value1"  # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "config --global section.key"          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "value1"                               # DefaultStepDefinitions.it_should_answer_exactly(String)
    When I run the command "config section.key value2"           # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "config section.key"                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "value2"                               # DefaultStepDefinitions.it_should_answer_exactly(String)
    When I run the command "config --local section.key"          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "value2"                               # DefaultStepDefinitions.it_should_answer_exactly(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to set, unset, and get a config value globally': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to set, unset, and get a config value in the current repository # Config.feature:91
    Given I have a repository                                                   # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "config testing.local true"                          # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "config --unset testing.local"                        # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "config --get testing.local"                          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer ""                                                    # DefaultStepDefinitions.it_should_answer_exactly(String)
    When I run the command "config testing.local true"                          # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "config --unset testing.local"                        # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "config --local --get testing.local"                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer ""                                                    # DefaultStepDefinitions.it_should_answer_exactly(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to unset a config value that doesn't exist': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to set, unset, and get a config value globally    # Config.feature:102
    Given I have a repository                                     # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "config --global testing.local true"   # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "config --global --unset testing.local" # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "config --global --get testing.local"   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer ""                                      # DefaultStepDefinitions.it_should_answer_exactly(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to unset and get in the same config command': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to unset a config value that doesn't exist         # Config.feature:109
    Given I have a repository                                      # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "config --global --unset testing.local" # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "config --global --get testing.local"    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer ""                                       # DefaultStepDefinitions.it_should_answer_exactly(String)
    When I run the command "config --unset testing.local"          # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "config --local --get testing.local"     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer ""                                       # DefaultStepDefinitions.it_should_answer_exactly(String)
    When I run the command "config --unset testing.local"          # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "config --get testing.local"             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer ""                                       # DefaultStepDefinitions.it_should_answer_exactly(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Remove a section from the current repository': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to unset and get in the same config command             # Config.feature:121
    Given I have a repository                                           # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "config --unset --get testing.local"         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "Tried to use more than one action at a time" # DefaultStepDefinitions.it_should_answer_exactly(String)
    And it should exit with non-zero exit code                          # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Remove a section globally': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Remove a section from the current repository    # Config.feature:127
    Given I have a repository                               # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "config testing.local true"      # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "config testing.local2 false"     # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "config --remove-section testing" # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "config --get testing.local"      # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer ""                                # DefaultStepDefinitions.it_should_answer_exactly(String)
    When I run the command "config --get testing.local2"    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer ""                                # DefaultStepDefinitions.it_should_answer_exactly(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to remove a section that doesn't exist': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Remove a section globally                                # Config.feature:137
    Given I have a repository                                        # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "config --global testing.local true"      # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "config --global testing.local2 false"     # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "config --global --remove-section testing" # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "config --global --get testing.local"      # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer ""                                         # DefaultStepDefinitions.it_should_answer_exactly(String)
    When I run the command "config --global --get testing.local2"    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer ""                                         # DefaultStepDefinitions.it_should_answer_exactly(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Add 2 config values and list them': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to remove a section that doesn't exist                          # Config.feature:147
    Given I have a repository                                                   # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "config --remove-section somerandomsection"          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "Could not find a section with the name provided"     # DefaultStepDefinitions.it_should_answer_exactly(String)
    When I run the command "config --global --remove-section somerandomsection" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "Could not find a section with the name provided"     # DefaultStepDefinitions.it_should_answer_exactly(String)
    And it should exit with non-zero exit code                                  # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Specify root URI and set a global config option': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Add 2 config values and list them              # Config.feature:155
    Given I have a repository                              # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "config testing.local true"     # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "config testing.local2 false"    # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "config --list"                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "testing.local=true"  # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "testing.local2=false" # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "config testing.local3 true"    # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "config testing.local4 false"    # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "config --list --local"          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "testing.local=true"  # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "testing.local2=false" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "testing.local3=true"  # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "testing.local4=false" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to add a local config value when using a root URI': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Specify root URI and set a global config option                               # Config.feature:170
    Given I have a repository                                                             # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "config --rootUri ${rootRepoURI} --global testing.global true" # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "config testing.local true"                                     # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "config --rootUri ${rootRepoURI} --list"                        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "testing.global=true"                                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "testing.local=true"                              # DefaultStepDefinitions.the_response_should_not_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to use both global and local in the same config command': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to add a local config value when using a root URI               # Config.feature:178
    Given I have a repository                                                   # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "config --rootUri ${rootRepoURI} testing.local true" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "The config location is invalid"                      # DefaultStepDefinitions.it_should_answer_exactly(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to use the config command with no arguments': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to use both global and local in the same config command # Config.feature:183
    Given I have a repository                                           # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "config --local --global"                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Usage:"                           # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Try to use the config command with no arguments # Config.feature:188
    Given I have a repository                               # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "config"                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Usage:"               # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "conflicts" command
    In order to know which features are conflicted 
    As a Geogig User
    I want to get a list of conflicted elements
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to list conflicts': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to list conflicts showing diffs': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to list conflicts               # Conflicts.feature:6
    Given I have a repository                   # DefaultStepDefinitions.I_have_a_repository()
    And I have conflicting branches             # DefaultStepDefinitions.I_have_conflicting_branches()
    When I run the command "merge branch1"      # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "conflicts"           # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Ancestor" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Ours"      # DefaultStepDefinitions.the_response_should_contain(String)
    Then the response should contain "Theirs"   # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to list conflicts showing only ids': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to list conflicts showing diffs                       # Conflicts.feature:15
    Given I have a repository                                         # DefaultStepDefinitions.I_have_a_repository()
    And I have conflicting branches                                   # DefaultStepDefinitions.I_have_conflicting_branches()
    When I run the command "merge branch1"                            # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "conflicts --diff"                          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "StringProp1_1 -> StringProp1_2" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to list conflicts showing only ids and diffs': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to list conflicts showing only ids # Conflicts.feature:22
    Given I have a repository                      # DefaultStepDefinitions.I_have_a_repository()
    And I have conflicting branches                # DefaultStepDefinitions.I_have_conflicting_branches()
    When I run the command "merge branch1"         # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "conflicts --ids-only"   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain 1 lines       # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to list conflicts when no conflicts exist': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to list conflicts showing only ids and diffs                             # Conflicts.feature:29
    Given I have a repository                                                            # DefaultStepDefinitions.I_have_a_repository()
    And I have conflicting branches                                                      # DefaultStepDefinitions.I_have_conflicting_branches()
    When I run the command "merge branch1"                                               # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "conflicts --ids-only --diff"                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Cannot use --diff and --ids-only at the same time" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to list conflicts showing only refspec': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to list conflicts when no conflicts exist       # Conflicts.feature:36
    Given I have a repository                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                 # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "conflicts"                          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "No elements need merging" # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Try to list conflicts showing only refspec # Conflicts.feature:42
    Given I have a repository                          # DefaultStepDefinitions.I_have_a_repository()
    And I have conflicting branches                    # DefaultStepDefinitions.I_have_conflicting_branches()
    When I run the command "merge branch1"             # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "conflicts --refspecs-only"  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points/Points.1" # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "diff" command
    In order to know changes made in a repository
    As a Geogig User
    I want to see the existing differences between commits
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show diff between working tree and index': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show diff between working tree and index, showing only summary': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show diff between working tree and index      # Diff.feature:6
    Given I have a repository                             # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                # DefaultStepDefinitions.I_stage_6_features()
    And I modify a feature                                # DefaultStepDefinitions.I_modify_a_feature()
    When I run the command "diff"                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points/Points.1"    # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "[1.0,1.0] (1.0,2.0)" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "1000"                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "1001"                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "StringProp1_1"       # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "StringProp1_1a"      # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show diff between working tree and index, when no changes have been made': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show diff between working tree and index, showing only summary # Diff.feature:18
    Given I have a repository                                              # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                 # DefaultStepDefinitions.I_stage_6_features()
    And I modify a feature                                                 # DefaultStepDefinitions.I_modify_a_feature()
    When I run the command "diff --summary"                                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points/Points.1"                     # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show diff between working tree and index, for a single modified tree': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show diff between working tree and index, when no changes have been made # Diff.feature:25
    Given I have a repository                                                        # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                           # DefaultStepDefinitions.I_stage_6_features()
    When I run the command "diff"                                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "No differences found"                          # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show diff between working tree and index, for a single unmodified tree': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show diff between working tree and index, for a single modified tree # Diff.feature:31
    Given I have a repository                                                    # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                       # DefaultStepDefinitions.I_stage_6_features()
    And I modify a feature                                                       # DefaultStepDefinitions.I_modify_a_feature()
    When I run the command "diff --path Points"                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points/Points.1"                           # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "[1.0,1.0] (1.0,2.0)"                        # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "1000"                                       # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show diff using too many commit refspecs': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show diff between working tree and index, for a single unmodified tree # Diff.feature:40
    Given I have a repository                                                      # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                         # DefaultStepDefinitions.I_stage_6_features()
    And I modify a feature                                                         # DefaultStepDefinitions.I_modify_a_feature()
    When I run the command "diff --path Lines"                                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "No differences found"                        # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show diff using a wrong commit refspec': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show diff using too many commit refspecs           # Diff.feature:47
    Given I have a repository                                  # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                     # DefaultStepDefinitions.I_stage_6_features()
    And I modify a feature                                     # DefaultStepDefinitions.I_modify_a_feature()
    When I run the command "diff commit1 commit2 commit3"      # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Commit list is too long" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                 # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show diff between working tree and index, for a single modified tree, showing only summary': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show diff using a wrong commit refspec                                    # Diff.feature:55
    Given I have a repository                                                         # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                            # DefaultStepDefinitions.I_stage_6_features()
    And I modify a feature                                                            # DefaultStepDefinitions.I_modify_a_feature()
    When I run the command "diff wrongcommit"                                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Refspec wrongcommit does not resolve to a tree" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                                        # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show diff between working tree and index, for a single feature whose feature type has changed': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show diff between working tree and index, for a single modified tree, showing only summary # Diff.feature:63
    Given I have a repository                                                                          # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                                             # DefaultStepDefinitions.I_stage_6_features()
    And I modify a feature                                                                             # DefaultStepDefinitions.I_modify_a_feature()
    When I run the command "diff --path Points --summary"                                              # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points/Points.1"                                                 # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "POINT (1 1)"                                                  # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain "1000"                                                         # DefaultStepDefinitions.the_response_should_not_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show diff between working tree and index with bounds': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show diff between working tree and index, for a single feature whose feature type has changed # Diff.feature:72
    Given I have a repository                                                                             # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                                                # DefaultStepDefinitions.I_stage_6_features()
    And I a featuretype is modified                                                                       # DefaultStepDefinitions.I_modify_a_feature_type()
    When I run the command "diff --path Points/Points.1"                                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "extra: [MISSING] -> "                                               # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "ExtraString"                                                         # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show diff between working tree and index with bounds': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show diff between working tree and index with bounds                  # Diff.feature:80
    Given I have a repository                                                     # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                        # DefaultStepDefinitions.I_stage_6_features()
    When I run the command "diff --bounds --crs EPSG:2163"                        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "right: 1.000000,1.000000,6.000000,6.000000" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "both:  1.000000,1.000000,6.000000,6.000000"  # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "CRS:   EPSG:2163"                            # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show diff between working tree and index with the count argument': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show diff between working tree and index with bounds         # Diff.feature:88
    Given I have a repository                                            # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                               # DefaultStepDefinitions.I_stage_6_features()
    When I run the command "diff --bounds --crs EPSG:71738191"           # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Unrecognized CRS: 'EPSG:71738191'" # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Show diff between working tree and index with the count argument # Diff.feature:94
    Given I have a repository                                                # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                   # DefaultStepDefinitions.I_stage_6_features()
    When I run the command "diff --count"                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Features: added 6"                     # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "format-patch" command
    In order to share a diff
    As a Geogig User
    I want to create a patch file
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to create a patch file': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to create a patch without specifying the file': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to create a patch file                             # FormatPatch.feature:6
    Given I have a repository                                        # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                           # DefaultStepDefinitions.I_stage_6_features()
    And I modify a feature                                           # DefaultStepDefinitions.I_modify_a_feature()
    When I run the command "format-patch -f ${currentdir}/some_file" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should exit with zero exit code                          # DefaultStepDefinitions.it_should_exit_with_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to create a patch when there are no changes': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to create a patch without specifying the file # FormatPatch.feature:13
    Given I have a repository                                   # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                      # DefaultStepDefinitions.I_stage_6_features()
    And I modify a feature                                      # DefaultStepDefinitions.I_modify_a_feature()
    When I run the command "format-patch"                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Patch file not specified" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to create a patch with too many commit arguments': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to create a patch when there are no changes        # FormatPatch.feature:20
    Given I have a repository                                        # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                       # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "format-patch -f ${currentdir}/some_file" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "No differences found"          # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to create a patch between working tree and index, for a single modified tree': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to create a patch with too many commit arguments # FormatPatch.feature:26
    Given I have a repository                                      # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                     # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "format-patch commit1 commit2 commit3"  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Commit list is too long"     # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: I try to create a patch between working tree and index, for a single modified tree # FormatPatch.feature:32
    Given I have a repository                                                                  # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                                     # DefaultStepDefinitions.I_stage_6_features()
    And I modify a feature                                                                     # DefaultStepDefinitions.I_modify_a_feature()
    When I run the command "format-patch --path Points -f ${currentdir}/some_file"             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should exit with zero exit code                                                    # DefaultStepDefinitions.it_should_exit_with_zero_exit_code()
Feature: "init" command
    In order to start versioning my spatial datasets
    As a repository Owner
    I want to create a new repository on a directory of my choice
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Create repository in the current empty directory': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Create repository specifying initial configuration': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Create repository in the current empty directory                             # Init.feature:6
    Given I am in an empty directory                                                     # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "init"                                                        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "Initialized empty Geogig repository in ${currentdir}/.geogig" # DefaultStepDefinitions.it_should_answer_exactly(String)
    And the repository shall exist                                                       # DefaultStepDefinitions.the_repository_shall_exist()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Create repository specifying the target directory': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Create repository specifying initial configuration # Init.feature:12
    Given I am in an empty directory                           # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "init --config foo.bar=baz"         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the repository shall exist                            # DefaultStepDefinitions.the_repository_shall_exist()
    When I run the command "config foo.bar"                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "baz"                                # DefaultStepDefinitions.it_should_answer_exactly(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to init a repository when already inside a repository': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Create repository specifying the target directory                                  # Init.feature:19
    Given I am in an empty directory                                                           # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "init roads"                                                        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "Initialized empty Geogig repository in ${currentdir}/roads/.geogig" # DefaultStepDefinitions.it_should_answer_exactly(String)
    And if I change to the respository subdirectory "roads"                                    # DefaultStepDefinitions.if_I_change_to_the_respository_subdirectory(String)
    Then the repository shall exist                                                            # DefaultStepDefinitions.the_repository_shall_exist()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to init a repository from inside a repository subdirectory': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to init a repository when already inside a repository              # Init.feature:26
    Given I have a repository                                                      # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "init"                                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should start with "Reinitialized existing Geogig repository" # DefaultStepDefinitions.the_response_should_start_with(String)
    And the repository shall exist                                                 # DefaultStepDefinitions.the_repository_shall_exist()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Init specifying repo URI': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to init a repository from inside a repository subdirectory            # Init.feature:32
    Given I have a repository                                                         # DefaultStepDefinitions.I_have_a_repository()
    And I am inside a repository subdirectory "topp/shapes"                           # DefaultStepDefinitions.I_am_inside_a_repository_subdirectory(String)
    When I run the command "init"                                                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should start with "Reinitialized existing Geogig repository in" # DefaultStepDefinitions.the_response_should_start_with(String)
    And the repository shall exist                                                    # DefaultStepDefinitions.the_repository_shall_exist()

  Scenario: Init specifying repo URI                # Init.feature:39
    Given I am in an empty directory                # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "init ${repoURI}"        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the repository at "${repoURI}" shall exist # DefaultStepDefinitions.the_repository_at_shall_exist(String)
Feature: "log" command
    In order to know the history of commits on a repository
    As a Geogig User
    I want to log them to the console
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a log of a empty repository': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a log of a repository with a single commit.': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show a log of a empty repository       # Log.feature:5
    Given I have a repository                             # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "log"                          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "No commits to show" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a log of a repository with several commits.': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show a log of a repository with a single commit.       # Log.feature:10
    Given I have a repository                                             # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                           # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                           # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                            # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit -m TestCommit"                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "3 features added"                   # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "log"                                          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Subject: TestCommit"                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD}" # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a log of the commits that have changed the points feature': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show a log of a repository with several commits.         # Log.feature:21
    Given I have a repository                                               # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                              # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "log"                                             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Subject: Commit1"                     # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD~3}" # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should contain "Subject: Commit2"                      # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Subject: Commit3"                      # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Subject: Commit4"                      # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD}"   # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a log of the commits that have changed the lines feature': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show a log of the commits that have changed the points feature # Log.feature:32
    Given I have a repository                                                     # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                    # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "log --path Points"                                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Subject: Commit1"                           # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Subject: Commit2"                            # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Subject: Commit4"                            # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD}"         # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD~3}"       # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a log of the commits that have changed the points and lines features': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show a log of the commits that have changed the lines feature # Log.feature:42
    Given I have a repository                                                    # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                   # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "log --path Lines"                                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Subject: Commit2"                          # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Subject: Commit3"                           # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD~1}"      # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD~2}"      # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show only the last two commits.': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show a log of the commits that have changed the points and lines features # Log.feature:51
    Given I have a repository                                                                # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                               # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "log --path Points Lines"                                          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Subject: Commit1"                                      # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Subject: Commit2"                                       # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Subject: Commit3"                                       # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Subject: Commit4"                                       # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD~1}"                  # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD~3}"                  # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show the log, skipping the last 2 commits': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show only the last two commits.                              # Log.feature:62
    Given I have a repository                                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                  # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "log -n 2"                                            # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should not contain "Subject: Commit1"                     # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain "Subject: Commit2"                      # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain variable "{@ObjectId|localrepo|HEAD~2}" # DefaultStepDefinitions.checkResponseTextDoesNotContain(String)
    And the response should contain "Subject: Commit3"                          # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Subject: Commit4"                          # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD}"       # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show the last 2 commits before the most recent': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show the log, skipping the last 2 commits                 # Log.feature:73
    Given I have a repository                                                # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                               # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "log --skip 2"                                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Subject: Commit1"                      # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Subject: Commit2"                       # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "Subject: Commit3"                   # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain "Subject: Commit4"                   # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD~3}"  # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should not contain variable "{ObjectId|localrepo|HEAD}" # DefaultStepDefinitions.checkResponseTextDoesNotContain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a log from an empty directory': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show the last 2 commits before the most recent               # Log.feature:84
    Given I have a repository                                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                  # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "log -n 2 --skip 1"                                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should not contain "Subject: Commit1"                     # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain variable "{@ObjectId|localrepo|HEAD~3}" # DefaultStepDefinitions.checkResponseTextDoesNotContain(String)
    And the response should contain "Subject: Commit2"                          # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD~2}"     # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should contain "Subject: Commit3"                          # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD~1}"     # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should not contain "Subject: Commit4"                      # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain variable "{@ObjectId|localrepo|HEAD}"   # DefaultStepDefinitions.checkResponseTextDoesNotContain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a log of all branches': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show a log from an empty directory                # Log.feature:97
    Given I am in an empty directory                                 # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "log"                                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should start with "Not in a geogig repository" # DefaultStepDefinitions.the_response_should_start_with(String)
    And it should exit with non-zero exit code                       # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a log of a single branch': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show a log of all branches                                # Log.feature:103
    Given I have a repository                                                # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                              # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "log --all"                                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Commit1"                               # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit2"                                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit3"                                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit4"                                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit5"                                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD}"    # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should contain variable "{@ObjectId|localrepo|branch1}" # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should contain variable "{@ObjectId|localrepo|branch2}" # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a log of all branches specifying the 'until' commit': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show a log of a single branch                             # Log.feature:116
    Given I have a repository                                                # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                              # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "log --branch branch1"                            # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Commit1"                               # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit2"                                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit3"                                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|branch1}" # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should not contain "Commit4"                            # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain "Commit5"                            # DefaultStepDefinitions.the_response_should_not_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a log of all branches with decoration': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show a log of all branches specifying the 'until' commit                    # Log.feature:127
    Given I have a repository                                                                  # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                                                # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "log --all HEAD..HEAD~1"                                            # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Cannot specify 'until' commit when listing all branches" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                                                 # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a log of a repository with a single commit.': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show a log of all branches with decoration                # Log.feature:134
    Given I have a repository                                                # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                              # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "log --all --decoration"                          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Commit1"                               # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit2"                                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit3"                                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit4"                                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit5"                                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|branch1}" # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should contain variable "{@ObjectId|localrepo|branch2}" # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should contain variable "{@ObjectId|localrepo|master}"  # DefaultStepDefinitions.checkResponseTextContains(String)
    Then the response should contain "HEAD"                                  # DefaultStepDefinitions.the_response_should_contain(String)
    Then the response should contain "master"                                # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a log of a repository with a single commit and decoration': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show a log of a repository with a single commit.       # Log.feature:149
    Given I have a repository                                             # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                           # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                           # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                            # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit -m TestCommit"                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "3 features added"                   # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "log --oneline"                                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain 1 lines                              # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
    And the response should contain "TestCommit"                          # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD}" # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a log of a repository showing only names of affected elements': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show a log of a repository with a single commit and decoration # Log.feature:161
    Given I have a repository                                                     # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                                   # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                                   # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                                    # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit -m TestCommit"                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "3 features added"                           # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "log --oneline --decoration"                           # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain 1 lines                                      # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
    And the response should contain "(HEAD, refs/heads/master) TestCommit"        # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD}"         # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a log of a repository showing full descriptions of affected elements': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show a log of a repository showing only names of affected elements # Log.feature:173
    Given I have a repository                                                         # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                                       # DefaultStepDefinitions.I_have_staged(String)
    And I run the command "commit -m TestCommit"                                      # DefaultStepDefinitions.I_run_the_command_X(String)
    And I have staged "points2"                                                       # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points3"                                                       # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                                        # DefaultStepDefinitions.I_have_staged(String)
    And I run the command "commit -m TestCommit"                                      # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "log --names-only"                                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain 13 lines                                         # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
    And the response should contain "Points.2"                                        # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Points.3"                                        # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Lines.1"                                         # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a log of a repository showing stats of affected elements': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show a log of a repository showing full descriptions of affected elements # Log.feature:187
    Given I have a repository                                                                # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                                              # DefaultStepDefinitions.I_have_staged(String)
    And I run the command "commit -m TestCommit"                                             # DefaultStepDefinitions.I_run_the_command_X(String)
    And I have staged "points2"                                                              # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points3"                                                              # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                                               # DefaultStepDefinitions.I_have_staged(String)
    And I run the command "commit -m TestCommit"                                             # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "log --summary"                                                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain 24 lines                                                # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a log of a repository showing a specific author': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show a log of a repository showing stats of affected elements # Log.feature:198
    Given I have a repository                                                    # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                   # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "log --stats"                                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Changes"                                   # DefaultStepDefinitions.the_response_should_contain(String)
    Then the response should contain 23 lines                                    # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a log of a repository showing a specific comitter': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show a log of a repository showing a specific author # Log.feature:205
    Given I have a repository                                           # DefaultStepDefinitions.I_have_a_repository()
    And I have a local committer                                        # DefaultStepDefinitions.I_have_a_local_committer()
    And I have several commits                                          # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "log --author "Jane Doe""                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "JaneDoe@example.com"              # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a log of a repository since yesterday': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show a log of a repository showing a specific comitter # Log.feature:212
    Given I have a repository                                             # DefaultStepDefinitions.I_have_a_repository()
    And I have a local committer                                          # DefaultStepDefinitions.I_have_a_local_committer()
    And I have several commits                                            # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "log --committer "Jane Doe""                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "JaneDoe@example.com"                # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a log of a repository until now': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show a log of a repository since yesterday # Log.feature:219
    Given I have a repository                                 # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "log --since yesterday"            # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain 19 lines                 # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a log of all branches specifying an until date': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show a log of a repository until now  # Log.feature:225
    Given I have a repository                            # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                           # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "log --until "0.seconds.ago"" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain 19 lines            # DefaultStepDefinitions.the_response_should_contain_x_lines(int)

  Scenario: Try to show a log of all branches specifying an until date                         # Log.feature:231
    Given I have a repository                                                                  # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                                                # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "log --all --until today"                                           # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Cannot specify 'until' commit when listing all branches" # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "ls" command
    In order to explore the contents of a tree
    As a Geogig User
    I want to display information about it
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to list contents in an empty directory': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to list and empty repository': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to list contents in an empty directory          # Ls.feature:6
    Given I am in an empty directory                              # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "ls"                                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Not in a geogig repository" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to list and repository': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to list and empty repository                   # Ls.feature:11
    Given I have a repository                                    # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "ls"                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "The working tree is empty" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to show a recursive list in a repository': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to list and repository          # Ls.feature:16
    Given I have a repository                     # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                    # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "ls"                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Root tree/" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Points/"     # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Lines/"      # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to show only the tree not the children': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to show a recursive list in a repository # Ls.feature:24
    Given I have a repository                              # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                             # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "ls -r"                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points.2"            # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Lines.1"              # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to show a verbose list of a tree': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to show only the tree not the children # Ls.feature:31
    Given I have a repository                            # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                           # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "ls -d"                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points/"           # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to show a list with seven digit IDs': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to show a verbose list of a tree # Ls.feature:37
    Given I have a repository                      # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                     # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "ls -v Points"          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points/"     # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Points.1"     # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Points.2"     # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Points.3"     # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: I try to show a list with seven digit IDs # Ls.feature:46
    Given I have a repository                         # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                        # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "ls -v -r -t -a 5"         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain 9 lines          # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
    And the response should contain "Points.3"        # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Lines.3"         # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "merge" command
    In order to combine two or more geogig histories into one
    As a Geogig User
    I want to merge one or more commit histories into my current branch
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to merge one branch to a parent branch': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to merge the same branch twice': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to merge one branch to a parent branch                             # Merge.feature:6
    Given I have a repository                                                      # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                                    # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "merge branch1 -m MergeMessage"                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "2 features added"                            # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "log --first-parent"                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "MergeMessage"                                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit5"                                      # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD~1}"        # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should contain "Commit1"                                      # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD~2}"        # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should not contain "Commit4"                                  # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain "Commit3"                                  # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain "Commit2"                                  # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain variable "{@ObjectId|localrepo|branch1~1}" # DefaultStepDefinitions.checkResponseTextDoesNotContain(String)
    And the response should not contain variable "{@ObjectId|localrepo|branch2}"   # DefaultStepDefinitions.checkResponseTextDoesNotContain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to merge without specifying any commits': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to merge the same branch twice                             # Merge.feature:23
    Given I have a repository                                              # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                            # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "merge branch1 -m MergeMessage"                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "2 features added"                    # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "merge branch1 -m MergeMessage2"                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "The branch has already been merged." # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                             # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to merge a nonexistent branch': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to merge without specifying any commits   # Merge.feature:32
    Given I have a repository                             # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                           # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "merge -m MergeMessage"        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "No commits provided to merge." # DefaultStepDefinitions.it_should_answer_exactly(String)
    And it should exit with non-zero exit code            # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to merge from an empty directory': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to merge a nonexistent branch              # Merge.feature:39
    Given I have a repository                              # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                            # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "merge nonexistent"             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should start with "Commit not found" # DefaultStepDefinitions.the_response_should_start_with(String)
    And it should exit with non-zero exit code             # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to merge two conflicting branches': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to merge from an empty directory                     # Merge.feature:46
    Given I am in an empty directory                                 # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "merge branch1"                           # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should start with "Not in a geogig repository" # DefaultStepDefinitions.the_response_should_start_with(String)
    And it should exit with non-zero exit code                       # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to perform an octopus merge with conflicts': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to merge two conflicting branches                                  # Merge.feature:52
    Given I have a repository                                                      # DefaultStepDefinitions.I_have_a_repository()
    And I have conflicting branches                                                # DefaultStepDefinitions.I_have_conflicting_branches()
    When I run the command "merge branch1"                                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "CONFLICT: Merge conflict in Points/Points.1" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                                     # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to perform an octopus merge': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to perform an octopus merge with conflicts                                     # Merge.feature:59
    Given I have a repository                                                                  # DefaultStepDefinitions.I_have_a_repository()
    And I have conflicting branches                                                            # DefaultStepDefinitions.I_have_conflicting_branches()
    When I run the command "merge branch1 branch2"                                             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Cannot merge more than two commits when conflicts exist" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                                                 # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to merge two conflicting branches using --ours strategy': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to perform an octopus merge                            # Merge.feature:66
    Given I have a repository                                          # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                        # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "merge branch1 branch2"                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Merge branch refs/heads/branch1" # DefaultStepDefinitions.the_response_should_contain(String)
    Then the response should contain "Merge branch refs/heads/branch2" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to merge two conflicting branches using --ours and --theirs strategy': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to merge two conflicting branches using --ours strategy # Merge.feature:73
    Given I have a repository                                           # DefaultStepDefinitions.I_have_a_repository()
    And I have conflicting branches                                     # DefaultStepDefinitions.I_have_conflicting_branches()
    When I run the command "merge branch1 --ours"                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Merge branch refs/heads/branch1"  # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to merge two conflicting branches using --theirs strategy': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to merge two conflicting branches using --ours and --theirs strategy # Merge.feature:79
    Given I have a repository                                                        # DefaultStepDefinitions.I_have_a_repository()
    And I have conflicting branches                                                  # DefaultStepDefinitions.I_have_conflicting_branches()
    When I run the command "merge branch1 --ours --theirs"                           # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Cannot use both --ours and --theirs"           # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to abort a conflicted merge': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to merge two conflicting branches using --theirs strategy # Merge.feature:85
    Given I have a repository                                             # DefaultStepDefinitions.I_have_a_repository()
    And I have conflicting branches                                       # DefaultStepDefinitions.I_have_conflicting_branches()
    When I run the command "merge branch1 --theirs"                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Merge branch refs/heads/branch1"    # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to abort when there is no conflict': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to abort a conflicted merge                       # Merge.feature:91
    Given I have a repository                                     # DefaultStepDefinitions.I_have_a_repository()
    And I have a merge conflict state                             # DefaultStepDefinitions.I_have_a_merge_conflict_state()
    When I run the command "merge branch1 --abort"                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Merge aborted successfully" # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "status"                               # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "nothing to commit"          # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Try to abort when there is no conflict                # Merge.feature:99
    Given I have a repository                                     # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "merge --abort"                        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "There is no merge to abort" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                    # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
Feature: "rebase" command
    In order to linearize the geogig history
    As a Geogig User
    I want to rebase my local commits onto an existing branch
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to rebase one branch to a parent branch': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to rebase one branch to a parent branch': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to rebase one branch to a parent branch                          # Rebase.feature:6
    Given I have a repository                                                    # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                                  # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "rebase master branch1"                               # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "log"                                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Commit1"                                   # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit2"                                    # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit3"                                    # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|branch1}"     # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should not contain "Commit4"                                # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain variable "{@ObjectId|localrepo|branch2}" # DefaultStepDefinitions.checkResponseTextDoesNotContain(String)
    And the response should contain "Commit5"                                    # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD}"        # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to graft a branch onto another branch': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to rebase one branch to a parent branch                          # Rebase.feature:20
    Given I have a repository                                                    # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                                  # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "rebase master branch1 --squash squashmessage"        # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "log"                                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Commit1"                                   # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "Commit2"                                # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain "Commit3"                                # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain "Commit4"                                # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain variable "{@ObjectId|localrepo|branch2}" # DefaultStepDefinitions.checkResponseTextDoesNotContain(String)
    And the response should contain "Commit5"                                    # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD}"        # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should contain "squashmessage"                              # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to rebase a nonexistant branch': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to graft a branch onto another branch             # Rebase.feature:34
    Given I have a repository                                     # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                   # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "rebase branch1 branch2 --onto master" # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "log"                                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Commit1"                    # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "Commit2"                 # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain "Commit3"                 # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain "Commit4"                     # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit5"                     # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to rebase to a nonexistant upstream': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to rebase a nonexistant branch                          # Rebase.feature:45
    Given I have a repository                                           # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                         # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "rebase master nonexistant"                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "The branch reference could not be resolved." # DefaultStepDefinitions.it_should_answer_exactly(String)
    And it should exit with non-zero exit code                          # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to graft a branch onto a nonexistant branch': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to rebase to a nonexistant upstream                       # Rebase.feature:52
    Given I have a repository                                             # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                           # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "rebase nonexistant branch1"                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "The upstream reference could not be resolved." # DefaultStepDefinitions.it_should_answer_exactly(String)
    And it should exit with non-zero exit code                            # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to rebase from an empty directory': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to graft a branch onto a nonexistant branch           # Rebase.feature:59
    Given I have a repository                                         # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                       # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "rebase master branch1 --onto nonexistant" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "The onto reference could not be resolved." # DefaultStepDefinitions.it_should_answer_exactly(String)
    And it should exit with non-zero exit code                        # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to rebase with conflicts and skip': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to rebase from an empty directory                    # Rebase.feature:66
    Given I am in an empty directory                                 # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "rebase master branch1"                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should start with "Not in a geogig repository" # DefaultStepDefinitions.the_response_should_start_with(String)
    And it should exit with non-zero exit code                       # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to rebase with conflicts and continue': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to rebase with conflicts and skip                            # Rebase.feature:72
    Given I have a repository                                                # DefaultStepDefinitions.I_have_a_repository()
    And I have conflicting branches                                          # DefaultStepDefinitions.I_have_conflicting_branches()
    When I run the command "rebase branch1 master"                           # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "CONFLICT"                              # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                               # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
    When I run the command "rebase --skip"                                   # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "log"                                              # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Commit1"                               # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "Commit2"                            # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain "Commit3"                                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit4"                                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|branch1}" # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to rebase with conflicts and abort': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to rebase with conflicts and continue                         # Rebase.feature:86
    Given I have a repository                                                 # DefaultStepDefinitions.I_have_a_repository()
    And I have conflicting branches                                           # DefaultStepDefinitions.I_have_conflicting_branches()
    And I run the command "rebase branch1 master"                             # DefaultStepDefinitions.I_run_the_command_X(String)
    And I have unstaged "points1"                                             # DefaultStepDefinitions.I_have_unstaged(String)
    And I run the command "add"                                               # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "rebase --continue"                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "log"                                               # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Commit1"                                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit2"                                 # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit3"                                 # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit4"                                 # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|branch1}"  # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should contain variable "{@ObjectId|localrepo|master~3}" # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to rebase --skip when no conflict exist': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to rebase with conflicts and abort          # Rebase.feature:101
    Given I have a repository                               # DefaultStepDefinitions.I_have_a_repository()
    And I have conflicting branches                         # DefaultStepDefinitions.I_have_conflicting_branches()
    When I run the command "rebase master branch1"          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "CONFLICT"             # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code              # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
    When I run the command "rebase --abort"                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "aborted successfully" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to rebase --continue when no conflict exist': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to rebase --skip when no conflict exist # Rebase.feature:110
    Given I have a repository                           # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "rebase --skip"              # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Cannot skip"      # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code          # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to rebase --abort when no conflict exist': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to rebase --continue when no conflict exist # Rebase.feature:116
    Given I have a repository                               # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "rebase --continue"              # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Cannot continue"      # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code              # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()

  Scenario: Try to rebase --abort when no conflict exist # Rebase.feature:122
    Given I have a repository                            # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "rebase --abort"              # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Cannot abort"      # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code           # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
Feature: "remote" command
    In order to track changes from other repositories
    As a Geogig User
    I want to add and remove remotes for the current repository
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to add and list remote from an empty directory': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to add and list a remote to the current repository': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to add and list remote from an empty directory       # Remote.feature:6
    Given I am in an empty directory                                 # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "remote add myremote http://myremote.com" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Not in a geogig repository"    # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to add several remotes and list them': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to add and list a remote to the current repository   # Remote.feature:11
    Given I have a repository                                        # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "remote add myremote http://myremote.com" # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "remote list"                              # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "myremote"                                 # DefaultStepDefinitions.it_should_answer_exactly(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to add a remote that already exists': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to add several remotes and list them                  # Remote.feature:17
    Given I have a repository                                         # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "remote add myremote http://myremote.com"  # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "remote add myremote2 http://myremote2.org" # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "remote list"                               # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "myremote"                       # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "myremote2"                       # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to add a remote and list with verbose mode': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to add a remote that already exists                                   # Remote.feature:25
    Given I have a repository                                                         # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "remote add myremote http://myremote.com"                  # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "remote add myremote http://myremote2.org"                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "Could not add, a remote called 'myremote' already exists." # DefaultStepDefinitions.it_should_answer_exactly(String)
    And it should exit with non-zero exit code                                        # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to add a remote that tracks a specific branch': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to add a remote and list with verbose mode                  # Remote.feature:32
    Given I have a repository                                               # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "remote add myremote http://myremote.com"        # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "remote list -v"                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "myremote http://myremote.com (fetch)" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "myremote http://myremote.com (push)"   # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to add a remote that tracks all branches': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to add a remote that tracks a specific branch                  # Remote.feature:39
    Given I have a repository                                                  # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "remote add -t branch myremote http://myremote.com" # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "config remote.myremote.fetch"                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "+refs/heads/branch:refs/remotes/myremote/branch"    # DefaultStepDefinitions.it_should_answer_exactly(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to add, remove, and list a remote': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to add a remote that tracks all branches             # Remote.feature:45
    Given I have a repository                                        # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "remote add myremote http://myremote.com" # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "config remote.myremote.fetch"             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "+refs/heads/*:refs/remotes/myremote/*"    # DefaultStepDefinitions.it_should_answer_exactly(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to remove a remote from an empty repository': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to add, remove, and list a remote                    # Remote.feature:51
    Given I have a repository                                        # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "remote add myremote http://myremote.com" # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "remote rm myremote"                       # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "remote list"                              # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer ""                                         # DefaultStepDefinitions.it_should_answer_exactly(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to remove a remote that doesn't exist': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to remove a remote from an empty repository       # Remote.feature:58
    Given I am in an empty directory                              # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "remote rm myremote"                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Not in a geogig repository" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                    # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to list remotes from an empty repository': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to remove a remote that doesn't exist                  # Remote.feature:64
    Given I have a repository                                          # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "remote rm myremote"                        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "Could not find a remote called 'myremote'." # DefaultStepDefinitions.it_should_answer_exactly(String)
    And it should exit with non-zero exit code                         # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()

  Scenario: Try to list remotes from an empty repository          # Remote.feature:70
    Given I am in an empty directory                              # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "remote list"                          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Not in a geogig repository" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                    # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
Feature: "rm" command
    In order to remove features from the repository
    As a Geogig User
    I want to delete features and trees from the working tree
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to delete a single feature': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to delete several features': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to delete a single feature                  # Remove.feature:6
    Given I have a repository                               # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                             # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                             # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                              # DefaultStepDefinitions.I_have_staged(String)
    And I run the command "commit -m Test"                  # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "rm Points/Points.1"             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Deleted 1 feature(s)" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to delete a whole tree': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to delete several features                      # Remove.feature:15
    Given I have a repository                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                 # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                 # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                  # DefaultStepDefinitions.I_have_staged(String)
    And I run the command "commit -m Test"                      # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "rm Points/Points.1 Points/Points.2" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Deleted 2 feature(s)"     # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to delete a whole tree without the -r modifier': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to delete a whole tree                     # Remove.feature:24
    Given I have a repository                              # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                            # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                            # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                             # DefaultStepDefinitions.I_have_staged(String)
    And I run the command "commit -m Test"                 # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "rm Points -r "                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Deleted Points tree" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to delete an inexistent feature': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to delete a whole tree without the -r modifier                                             # Remove.feature:33
    Given I have a repository                                                                              # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                                                            # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                                                            # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                                                             # DefaultStepDefinitions.I_have_staged(String)
    And I run the command "commit -m Test"                                                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "rm Points"                                                                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Cannot remove tree Points if recursive or truncate is not specified" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                                                             # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Truncate a tree': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to delete an inexistent feature             # Remove.feature:43
    Given I have a repository                               # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                             # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                             # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                              # DefaultStepDefinitions.I_have_staged(String)
    And I run the command "commit -m Test"                  # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "rm Points/Wrong.1"              # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Deleted 0 feature(s)" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code              # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()

  Scenario: Truncate a tree                                  # Remove.feature:53
    Given I have a repository                                # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                              # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                              # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                               # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "rm Points -t "                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Truncated Points tree" # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "ls-tree -s"                      # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points 0"              # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "reset" command
    In order to undo local changes
    As a Geogig User
    I want to reset the head, and optionally, the working tree and index to the state of another commit
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to do a mixed reset of all local changes': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to do a hard reset of all local changes': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to do a mixed reset of all local changes             # Reset.feature:6
    Given I have a repository                                        # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                      # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                      # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                       # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit -m Test"                          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "3 features added"              # DefaultStepDefinitions.the_response_should_contain(String)
    When I modify and add a feature                                  # DefaultStepDefinitions.I_modify_and_add_a_feature()
    And I run the command "reset --mixed"                            # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Unstaged changes after reset:" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain 2 lines                          # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
    When I run the command "status"                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Changes not staged for commit" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "Changes to be committed"    # DefaultStepDefinitions.the_response_should_not_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to do a soft reset of all local changes': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to do a hard reset of all local changes  # Reset.feature:21
    Given I have a repository                            # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                          # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                          # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                           # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit -m Test"              # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "3 features added"  # DefaultStepDefinitions.the_response_should_contain(String)
    When I modify and add a feature                      # DefaultStepDefinitions.I_modify_and_add_a_feature()
    And I run the command "reset --hard"                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer ""                             # DefaultStepDefinitions.it_should_answer_exactly(String)
    When I run the command "status"                      # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "nothing to commit" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to do a mixed and hard reset of all local changes': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to do a soft reset of all local changes                  # Reset.feature:34
    Given I have a repository                                            # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                          # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                          # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                           # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit -m Test"                              # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "3 features added"                  # DefaultStepDefinitions.the_response_should_contain(String)
    When I modify and add a feature                                      # DefaultStepDefinitions.I_modify_and_add_a_feature()
    And I run the command "reset --soft"                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer ""                                             # DefaultStepDefinitions.it_should_answer_exactly(String)
    When I run the command "status"                                      # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should not contain "Changes not staged for commit" # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain "Changes to be committed"            # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to do a mixed and soft reset of all local changes': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to do a mixed and hard reset of all local changes # Reset.feature:48
    Given I have a repository                                     # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                   # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                   # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                    # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit -m Test"                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "3 features added"           # DefaultStepDefinitions.the_response_should_contain(String)
    When I modify and add a feature                               # DefaultStepDefinitions.I_modify_and_add_a_feature()
    And I run the command "reset --hard --mixed"                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "you may only specify one mode."        # DefaultStepDefinitions.it_should_answer_exactly(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to reset from an empty directory': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to do a mixed and soft reset of all local changes # Reset.feature:59
    Given I have a repository                                     # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                   # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                   # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                    # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit -m Test"                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "3 features added"           # DefaultStepDefinitions.the_response_should_contain(String)
    When I modify and add a feature                               # DefaultStepDefinitions.I_modify_and_add_a_feature()
    And I run the command "reset --soft --mixed"                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "you may only specify one mode."        # DefaultStepDefinitions.it_should_answer_exactly(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to reset with no commits': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to reset from an empty directory                     # Reset.feature:70
    Given I am in an empty directory                                 # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "reset"                                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should start with "Not in a geogig repository" # DefaultStepDefinitions.the_response_should_start_with(String)
    And it should exit with non-zero exit code                       # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to reset to a nonexistant commit': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to reset with no commits                  # Reset.feature:76
    Given I have a repository                             # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "reset"                        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "Commit could not be resolved." # DefaultStepDefinitions.it_should_answer_exactly(String)
    And it should exit with non-zero exit code            # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to do a reset of a specific path': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to reset to a nonexistant commit          # Reset.feature:82
    Given I have a repository                             # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                           # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                           # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                            # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit -m Test"               # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "3 features added"   # DefaultStepDefinitions.the_response_should_contain(String)
    When I modify and add a feature                       # DefaultStepDefinitions.I_modify_and_add_a_feature()
    And I run the command "reset nonexistant"             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "Commit could not be resolved." # DefaultStepDefinitions.it_should_answer_exactly(String)
    And it should exit with non-zero exit code            # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to do a reset of a non-used path': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to do a reset of a specific path                     # Reset.feature:94
    Given I have a repository                                        # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                      # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                      # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                       # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit -m Test"                          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "3 features added"              # DefaultStepDefinitions.the_response_should_contain(String)
    When I modify and add a feature                                  # DefaultStepDefinitions.I_modify_and_add_a_feature()
    And I run the command "reset --path Points"                      # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Unstaged changes after reset:" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain 2 lines                          # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
    When I run the command "status"                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Changes not staged for commit" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "Changes to be committed"    # DefaultStepDefinitions.the_response_should_not_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to do a reset of multiple paths': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to do a reset of a non-used path                         # Reset.feature:109
    Given I have a repository                                            # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                          # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                          # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                           # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit -m Test"                              # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "3 features added"                  # DefaultStepDefinitions.the_response_should_contain(String)
    When I modify and add a feature                                      # DefaultStepDefinitions.I_modify_and_add_a_feature()
    And I run the command "reset --path Lines"                           # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer ""                                             # DefaultStepDefinitions.it_should_answer_exactly(String)
    When I run the command "status"                                      # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should not contain "Changes not staged for commit" # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain "Changes to be committed"            # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to reset to the state of another branch': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to do a reset of multiple paths                      # Reset.feature:123
    Given I have a repository                                        # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                      # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                      # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                       # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit -m Test"                          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "3 features added"              # DefaultStepDefinitions.the_response_should_contain(String)
    When I modify and add a feature                                  # DefaultStepDefinitions.I_modify_and_add_a_feature()
    And I run the command "reset --path Lines Points"                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Unstaged changes after reset:" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain 2 lines                          # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
    When I run the command "status"                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Changes not staged for commit" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "Changes to be committed"    # DefaultStepDefinitions.the_response_should_not_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to do a reset with a mode and paths': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to reset to the state of another branch                         # Reset.feature:138
    Given I have a repository                                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                                 # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "checkout branch2"                                   # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "reset branch1"                                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Unstaged changes after reset:"            # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain 2 lines                                     # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
    When I run the command "log"                                                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Subject: Commit1"                         # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Subject: Commit2"                          # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Subject: Commit3"                          # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|branch1}"    # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should not contain "Subject: Commit4"                      # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain "Subject: Commit5"                      # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain variable "{@ObjectId|localrepo|master}" # DefaultStepDefinitions.checkResponseTextDoesNotContain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to do a reset with removed feature': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to do a reset with a mode and paths                              # Reset.feature:154
    Given I have a repository                                                    # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                                  # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                                  # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                                   # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit -m Test"                                      # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "3 features added"                          # DefaultStepDefinitions.the_response_should_contain(String)
    When I modify and add a feature                                              # DefaultStepDefinitions.I_modify_and_add_a_feature()
    And I run the command "reset --hard --path Lines"                            # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should answer "Ambiguous call, cannot specify paths and reset mode." # DefaultStepDefinitions.it_should_answer_exactly(String)
    And it should exit with non-zero exit code                                   # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()

  Scenario: Try to do a reset with removed feature                  # Reset.feature:166
    Given I have a repository                                       # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                      # DefaultStepDefinitions.I_have_several_commits()
    And I remove and add a feature                                  # DefaultStepDefinitions.I_remove_and_add_a_feature()
    When I run the command "reset"                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Unstaged changes after reset" # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "revert" command
  In order to undo committed changes
  As a Geogig user
  I want to revert a series of commits and commit those changes
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to revert something while not in a geogig repository': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to revert with nothing specified for reverting': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to revert something while not in a geogig repository # Revert.feature:6
    Given I am in an empty directory                                 # DefaultStepDefinitions.I_am_in_an_empty_directory()
    And I run the command "revert master"                            # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Not in a geogig repository"    # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                       # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to revert one commit': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to revert with nothing specified for reverting         # Revert.feature:12
    Given I have a repository                                          # DefaultStepDefinitions.I_have_a_repository()
    And I run the command "revert"                                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "nothing specified for reverting" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                         # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to revert a commit that doesn't exist': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to revert one commit                            # Revert.feature:18
    Given I have a repository                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                  # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "revert master"                      # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "log"                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Subject: Commit1"         # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Subject: Commit2"          # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Subject: Commit3"          # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Subject: Commit4"          # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Subject: Revert 'Commit4'" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to revert multiple commits': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to revert a commit that doesn't exist                                              # Revert.feature:29
    Given I have a repository                                                                      # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                                     # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "revert doesntExist"                                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Couldn't resolve 'doesntExist' to a commit, aborting revert" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                                                     # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
    When I run the command "log"                                                                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Subject: Commit1"                                            # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Subject: Commit2"                                             # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Subject: Commit3"                                             # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Subject: Commit4"                                             # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "Subject: Revert 'Commit4'"                                # DefaultStepDefinitions.the_response_should_not_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to revert multiple commits but with one nonexistant commit': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to revert multiple commits                      # Revert.feature:42
    Given I have a repository                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                  # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "revert master~1 master~2"           # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "log"                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Subject: Commit1"         # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Subject: Commit2"          # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Subject: Commit3"          # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Subject: Commit4"          # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Subject: Revert 'Commit2'" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Subject: Revert 'Commit3'" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to revert with conflict and abort': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to revert multiple commits but with one nonexistant commit                  # Revert.feature:54
    Given I have a repository                                                               # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                              # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "revert master~1 blah"                                           # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Couldn't resolve 'blah' to a commit, aborting revert" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                                              # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
    When I run the command "log"                                                            # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Subject: Commit1"                                     # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Subject: Commit2"                                      # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Subject: Commit3"                                      # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Subject: Commit4"                                      # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "Subject: Revert of commit"                         # DefaultStepDefinitions.the_response_should_not_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to revert without commiting': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to revert with conflict and abort                           # Revert.feature:68
    Given I have a repository                                               # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                              # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "revert HEAD~3"                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "could not apply"                      # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "CONFLICT: conflict in Points/Points.1" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                              # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
    When I run the command "revert --abort"                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "aborted"                              # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to revert with conflict and continue': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to revert without commiting           # Revert.feature:78
    Given I have a repository                         # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                        # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "revert master --no-commit" # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "log"                      # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should not contain "Revert"     # DefaultStepDefinitions.the_response_should_not_contain(String)

  Scenario: Try to revert with conflict and continue   # Revert.feature:85
    Given I have a repository                          # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                         # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "revert HEAD~3"             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "could not apply" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code         # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
    When I have staged "points1"                       # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "revert --continue"         # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "log"                        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Revert"          # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "show" command
    In order to know about a given element
    As a Geogig User
    I want to display information about it
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show the description of a feature using only its path': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show the description of a commit': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show the description of a feature using only its path                  # Show.feature:6
    Given I have a repository                                                             # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                                # DefaultStepDefinitions.I_stage_6_features()
    And I run the command "commit -m TestCommit"                                          # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "show Points/Points.1"                                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "ATTRIBUTES"                                         # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "FEATURE TYPE ID"                                     # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "sp"                                                  # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "pp"                                                  # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "ip"                                                  # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD:Points/Points.1}" # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should contain variable "{@PointsTypeID}"                            # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show the description of a tree': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show the description of a commit                       # Show.feature:19
    Given I have a repository                                             # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                # DefaultStepDefinitions.I_stage_6_features()
    And I run the command "commit -m TestCommit"                          # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "show HEAD"                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Commit"                             # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Author"                              # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD}" # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show the description of a feature': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show the description of a tree                                # Show.feature:28
    Given I have a repository                                                    # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                       # DefaultStepDefinitions.I_stage_6_features()
    And I run the command "commit -m TestCommit"                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "show HEAD:Points"                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "TREE ID"                                   # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "DEFAULT FEATURE TYPE ATTRIBUTES"            # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "sp"                                         # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "pp"                                         # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "ip"                                         # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD:Points}" # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should contain variable "{@PointsTypeID}"                   # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show the description of a feature using its SHA-1': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show the description of a feature                                      # Show.feature:41
    Given I have a repository                                                             # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                                # DefaultStepDefinitions.I_stage_6_features()
    And I run the command "commit -m TestCommit"                                          # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "show HEAD:Points/Points.1"                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "ATTRIBUTES"                                         # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "FEATURE TYPE ID"                                     # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "sp"                                                  # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "pp"                                                  # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "ip"                                                  # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD:Points/Points.1}" # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should contain variable "{@PointsTypeID}"                            # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show the description of a feature with the --raw modifier': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show the description of a feature using its SHA-1                                          # Show.feature:54
    Given I have a repository                                                                                 # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                                                    # DefaultStepDefinitions.I_stage_6_features()
    And I run the command "commit -m TestCommit"                                                              # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "show a47ca38e5c3e92c94dec9e8ea597c642003ec878"                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "FEATURE"                                                                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "STRING"                                                                  # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "INTEGER"                                                                 # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "POINT"                                                                   # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|a47ca38e5c3e92c94dec9e8ea597c642003ec878}" # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show the description of a 2 features with the --raw modifier': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show the description of a feature with the --raw modifier              # Show.feature:65
    Given I have a repository                                                             # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                                # DefaultStepDefinitions.I_stage_6_features()
    And I run the command "commit -m TestCommit"                                          # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "show HEAD:Points/Points.1 --raw"                              # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "STRING"                                             # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "INTEGER"                                             # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "POINT urn:ogc:def:crs:EPSG::4326"                    # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "sp"                                                  # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "pp"                                                  # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "ip"                                                  # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD:Points/Points.1}" # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show the description of a featuretype': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show the description of a 2 features with the --raw modifier           # Show.feature:78
    Given I have a repository                                                             # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                                # DefaultStepDefinitions.I_stage_6_features()
    And I run the command "commit -m TestCommit"                                          # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "show HEAD:Points/Points.1 HEAD:Points/Points.2 --raw"         # DefaultStepDefinitions.I_run_the_command_X(String)
    And the response should contain "HEAD:Points/Points.1"                                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "HEAD:Points/Points.2"                                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "STRING"                                              # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "INTEGER"                                             # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "POINT"                                               # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "sp"                                                  # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "pp"                                                  # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "ip"                                                  # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD:Points/Points.1}" # DefaultStepDefinitions.checkResponseTextContains(String)

  Scenario: Try to show the description of a featuretype # Show.feature:93
    Given I have a repository                            # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                               # DefaultStepDefinitions.I_stage_6_features()
    And I run the command "commit -m TestCommit"         # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "show Points"                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "TREE ID"           # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "squash" command
    In order to modify history of the repository
    As a Geogig User
    I want to squash commits
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Squash commits': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Squash commits with message': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Squash commits                                                # Squash.feature:6
    Given I have a repository                                             # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                            # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "squash HEAD~2 HEAD"                           # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "log --oneline"                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain 2 lines                              # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
    And the response should contain variable "{@ObjectId|localrepo|HEAD}" # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Squash commits in wrong order': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Squash commits with message                                   # Squash.feature:14
    Given I have a repository                                             # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                            # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "squash HEAD~2 HEAD -m squashed"               # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "log --oneline"                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain 2 lines                              # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
    And the response should contain "squashed"                            # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD}" # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Squash commits with only one commit provided': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Squash commits in wrong order          # Squash.feature:23
    Given I have a repository                      # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                     # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "squash HEAD HEAD~2"    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "wrong order" # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Squash commits with only one commit provided                    # Squash.feature:29
    Given I have a repository                                               # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                              # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "squash HEAD~2"                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "2 commit references must be supplied" # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "status" command
    In order to know what I have staged and unstaged
    As a Geogig User
    I want to check the status of the current repository
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to get the status of an empty directory': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to get the status of a repository with no changes': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to get the status of an empty directory              # Status.feature:6
    Given I am in an empty directory                                 # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "status"                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should start with "Not in a geogig repository" # DefaultStepDefinitions.the_response_should_start_with(String)
    And it should exit with non-zero exit code                       # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to get the status of a repository with unstaged changes without using a limit': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to get the status of a repository with no changes # Status.feature:12
    Given I have a repository                                     # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "status"                               # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "nothing to commit"          # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to get the status of a repository with staged changes without using a limit': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to get the status of a repository with unstaged changes without using a limit # Status.feature:17
    Given I have a repository                                                                 # DefaultStepDefinitions.I_have_a_repository()
    And I have unstaged "points1"                                                             # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "points2"                                                             # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "points3"                                                             # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "lines1"                                                              # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "lines2"                                                              # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "lines3"                                                              # DefaultStepDefinitions.I_have_unstaged(String)
    When I run the command "status"                                                           # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Changes not staged for commit"                          # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "8 total."                                                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "Changes to be committed"                             # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain 14 lines                                                  # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to get the status of a repository with staged and unstaged changes without using a limit': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to get the status of a repository with staged changes without using a limit # Status.feature:31
    Given I have a repository                                                               # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                                             # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                                             # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points3"                                                             # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                                              # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines2"                                                              # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines3"                                                              # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "status"                                                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Changes to be committed"                              # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "8 total."                                              # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "Changes not staged for commit"                     # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain 14 lines                                                # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to get the status of a repository with unstaged changes specifying all': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to get the status of a repository with staged and unstaged changes without using a limit # Status.feature:45
    Given I have a repository                                                                            # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                                                          # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                                                          # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points3"                                                                          # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                                                           # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines2"                                                                           # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines3"                                                                           # DefaultStepDefinitions.I_have_staged(String)
    And I modify a feature                                                                               # DefaultStepDefinitions.I_modify_a_feature()
    When I run the command "status"                                                                      # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Changes to be committed"                                           # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "8 total."                                                           # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Changes not staged for commit"                                      # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "2 total."                                                           # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain 21 lines                                                             # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to get the status of a repository with staged changes specifying all': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to get the status of a repository with unstaged changes specifying all # Status.feature:61
    Given I have a repository                                                          # DefaultStepDefinitions.I_have_a_repository()
    And I have unstaged "points1"                                                      # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "points2"                                                      # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "points3"                                                      # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "lines1"                                                       # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "lines2"                                                       # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "lines3"                                                       # DefaultStepDefinitions.I_have_unstaged(String)
    When I run the command "status --all"                                              # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Changes not staged for commit"                   # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "8 total."                                         # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "Changes to be committed"                      # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain 14 lines                                           # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to get the status of a repository with staged and unstaged changes specifying all': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to get the status of a repository with staged changes specifying all # Status.feature:75
    Given I have a repository                                                        # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                                      # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                                      # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points3"                                                      # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                                       # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines2"                                                       # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines3"                                                       # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "status --all"                                            # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Changes to be committed"                       # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "8 total."                                       # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "Changes not staged for commit"              # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain 14 lines                                         # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to get the status of a repository with unstaged changes using a limit': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to get the status of a repository with staged and unstaged changes specifying all # Status.feature:89
    Given I have a repository                                                                     # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                                                   # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                                                   # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points3"                                                                   # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                                                    # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines2"                                                                    # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines3"                                                                    # DefaultStepDefinitions.I_have_staged(String)
    And I modify a feature                                                                        # DefaultStepDefinitions.I_modify_a_feature()
    When I run the command "status --all"                                                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Changes to be committed"                                    # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "8 total."                                                    # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Changes not staged for commit"                               # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "2 total."                                                    # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain 21 lines                                                      # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to get the status of a repository with staged changes using a limit': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to get the status of a repository with unstaged changes using a limit # Status.feature:105
    Given I have a repository                                                         # DefaultStepDefinitions.I_have_a_repository()
    And I have unstaged "points1"                                                     # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "points2"                                                     # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "points3"                                                     # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "lines1"                                                      # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "lines2"                                                      # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "lines3"                                                      # DefaultStepDefinitions.I_have_unstaged(String)
    When I run the command "status --limit 3"                                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Changes not staged for commit"                  # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "8 total."                                        # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain 9 lines                                           # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to get the status of a repository with staged and unstaged changes using a limit': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to get the status of a repository with staged changes using a limit # Status.feature:118
    Given I have a repository                                                       # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                                     # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                                     # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points3"                                                     # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                                      # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines2"                                                      # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines3"                                                      # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "status --limit 3"                                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Changes to be committed"                      # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "8 total."                                      # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain 9 lines                                         # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to get the status of a repository with a negative limit': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to get the status of a repository with staged and unstaged changes using a limit # Status.feature:131
    Given I have a repository                                                                    # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                                                  # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                                                  # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points3"                                                                  # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                                                   # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines2"                                                                   # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines3"                                                                   # DefaultStepDefinitions.I_have_staged(String)
    And I modify a feature                                                                       # DefaultStepDefinitions.I_modify_a_feature()
    When I run the command "status --limit 0"                                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Changes to be committed"                                   # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "8 total."                                                   # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Changes not staged for commit"                              # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "2 total."                                                   # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain 11 lines                                                     # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try the get the status of a repository with unmerged elements': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to get the status of a repository with a negative limit # Status.feature:147
    Given I have a repository                                           # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "status --limit -2"                          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Limit must be 0 or greater"       # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                          # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()

  Scenario: Try the get the status of a repository with unmerged elements # Status.feature:153
    Given I have a repository                                             # DefaultStepDefinitions.I_have_a_repository()
    And I have a merge conflict state                                     # DefaultStepDefinitions.I_have_a_merge_conflict_state()
    When I run the command "status"                                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "unmerged  Points/Points.1"          # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "tag" command
  In order to store defined versions of my repository
  As a Geogig User
  I want to be create tags
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'List the available tags': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Create a new tag': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: List the available tags          # Tag.feature:6
    Given I have a repository                # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits               # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "tag mytag -m msg" # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "tag"             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "mytag" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Create a new tag for a given commit': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Create a new tag                                              # Tag.feature:13
    Given I have a repository                                             # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                            # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "tag mytag -m msg"                             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Created tag mytag ->"               # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD}" # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Delete a tag': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Create a new tag for a given commit                            # Tag.feature:20
    Given I have a repository                                              # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                             # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "tag mytag HEAD^ -m msg"                        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Created tag mytag ->"                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD^}" # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Delete an inexistent tag': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Delete a tag                                 # Tag.feature:27
    Given I have a repository                            # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                           # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "tag mytag -m msg"             # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "tag -d mytag"                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Deleted tag mytag" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create a tag with too many parameters provided': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Delete an inexistent tag                            # Tag.feature:34
    Given I have a repository                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                  # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "tag mytag -m msg"                    # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "tag -d wrongtag"                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Wrong tag name: wrongtag" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                  # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to delete a tag with too many parameters provided': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to create a tag with too many parameters provided   # Tag.feature:42
    Given I have a repository                                       # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                      # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "tag mytag HEAD^ extraparam -m msg"      # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Too many parameters provided" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                      # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create a tag with no message': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to delete a tag with too many parameters provided   # Tag.feature:49
    Given I have a repository                                       # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                      # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "tag -d mytag HEAD^"                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Too many parameters provided" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                      # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create a tag with a wrong commit ref': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to create a tag with no message                # Tag.feature:56
    Given I have a repository                                  # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                 # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "tag mytag HEAD^"                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "No tag message provided" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                 # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()

  Scenario: Try to create a tag with a wrong commit ref          # Tag.feature:63
    Given I have a repository                                    # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                   # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "tag mytag aaaaaaaa -m msg"           # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Wrong reference: aaaaaaaa" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                   # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
@Version
Feature: "version" command
    In order to view GeoGig version information
    As a Geogig User
    I want to display information about it
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I want to view the GeoGig version': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I want to view the GeoGig version          # Version.feature:7
    Given I am in an empty directory                   # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "version"                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Project Version" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Build Time"       # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Git Commit ID"    # DefaultStepDefinitions.the_response_should_contain(String)

277 Scenarios (277 passed)
1832 Steps (1832 passed)
2m23.848s

Tests run: 2109, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 145.891 sec - in org.locationtech.geogig.cli.test.functional.RunPorcelainFunctionalTest

Results :

Tests run: 3409, Failures: 0, Errors: 0, Skipped: 0

[JENKINS] Recording test results
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ geogig-cli ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/cli/target/geogig-cli-1.1-SNAPSHOT.jar
[INFO] 
[INFO] --- maven-jar-plugin:2.4:test-jar (default) @ geogig-cli ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/cli/target/geogig-cli-1.1-SNAPSHOT-tests.jar
[INFO] 
[INFO] >>> maven-source-plugin:2.2.1:jar (attach-sources) > generate-sources @ geogig-cli >>>
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig-cli ---
[WARNING] Failed to getClass for org.apache.maven.plugin.source.SourceJarMojo
[INFO] 
[INFO] <<< maven-source-plugin:2.2.1:jar (attach-sources) < generate-sources @ geogig-cli <<<
[INFO] 
[INFO] --- maven-source-plugin:2.2.1:jar (attach-sources) @ geogig-cli ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/cli/target/geogig-cli-1.1-SNAPSHOT-sources.jar
[INFO] 
[INFO] >>> maven-source-plugin:2.2.1:test-jar (attach-sources) > generate-sources @ geogig-cli >>>
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig-cli ---
[WARNING] Failed to getClass for org.apache.maven.plugin.source.TestSourceJarMojo
[INFO] 
[INFO] <<< maven-source-plugin:2.2.1:test-jar (attach-sources) < generate-sources @ geogig-cli <<<
[INFO] 
[INFO] --- maven-source-plugin:2.2.1:test-jar (attach-sources) @ geogig-cli ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/cli/target/geogig-cli-1.1-SNAPSHOT-test-sources.jar
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ geogig-cli ---
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/cli/target/geogig-cli-1.1-SNAPSHOT.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-cli/1.1-SNAPSHOT/geogig-cli-1.1-SNAPSHOT.jar
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/cli/pom.xml to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-cli/1.1-SNAPSHOT/geogig-cli-1.1-SNAPSHOT.pom
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/cli/target/geogig-cli-1.1-SNAPSHOT-tests.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-cli/1.1-SNAPSHOT/geogig-cli-1.1-SNAPSHOT-tests.jar
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/cli/target/geogig-cli-1.1-SNAPSHOT-sources.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-cli/1.1-SNAPSHOT/geogig-cli-1.1-SNAPSHOT-sources.jar
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/cli/target/geogig-cli-1.1-SNAPSHOT-test-sources.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-cli/1.1-SNAPSHOT/geogig-cli-1.1-SNAPSHOT-test-sources.jar
[JENKINS] Archiving disabled
Started calculate disk usage of build
Finished Calculation of disk usage of build in 0 seconds
Started calculate disk usage of workspace
Finished Calculation of disk usage of workspace in 0 seconds
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building PostgreSQL Storage Backend 1.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ geogig-postgres ---
[INFO] Deleting /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/postgres/target
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig-postgres ---
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ geogig-postgres ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 3 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ geogig-postgres ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 17 source files to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/postgres/target/classes
[WARNING] /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/postgres/src/main/java/org/locationtech/geogig/storage/postgresql/PGRepositoryResolver.java: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/postgres/src/main/java/org/locationtech/geogig/storage/postgresql/PGRepositoryResolver.java uses or overrides a deprecated API.
[WARNING] /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/postgres/src/main/java/org/locationtech/geogig/storage/postgresql/PGRepositoryResolver.java: Recompile with -Xlint:deprecation for details.
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ geogig-postgres ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/postgres/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ geogig-postgres ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 30 source files to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/postgres/target/test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.17:test (default-test) @ geogig-postgres ---
[JENKINS] Recording test results
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ geogig-postgres ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/postgres/target/geogig-postgres-1.1-SNAPSHOT.jar
[INFO] 
[INFO] --- maven-jar-plugin:2.4:test-jar (default) @ geogig-postgres ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/postgres/target/geogig-postgres-1.1-SNAPSHOT-tests.jar
[INFO] 
[INFO] >>> maven-source-plugin:2.2.1:jar (attach-sources) > generate-sources @ geogig-postgres >>>
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig-postgres ---
[WARNING] Failed to getClass for org.apache.maven.plugin.source.SourceJarMojo
[INFO] 
[INFO] <<< maven-source-plugin:2.2.1:jar (attach-sources) < generate-sources @ geogig-postgres <<<
[INFO] 
[INFO] --- maven-source-plugin:2.2.1:jar (attach-sources) @ geogig-postgres ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/postgres/target/geogig-postgres-1.1-SNAPSHOT-sources.jar
[INFO] 
[INFO] >>> maven-source-plugin:2.2.1:test-jar (attach-sources) > generate-sources @ geogig-postgres >>>
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig-postgres ---
[WARNING] Failed to getClass for org.apache.maven.plugin.source.TestSourceJarMojo
[INFO] 
[INFO] <<< maven-source-plugin:2.2.1:test-jar (attach-sources) < generate-sources @ geogig-postgres <<<
[INFO] 
[INFO] --- maven-source-plugin:2.2.1:test-jar (attach-sources) @ geogig-postgres ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/postgres/target/geogig-postgres-1.1-SNAPSHOT-test-sources.jar
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ geogig-postgres ---
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/postgres/target/geogig-postgres-1.1-SNAPSHOT.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-postgres/1.1-SNAPSHOT/geogig-postgres-1.1-SNAPSHOT.jar
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/postgres/pom.xml to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-postgres/1.1-SNAPSHOT/geogig-postgres-1.1-SNAPSHOT.pom
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/postgres/target/geogig-postgres-1.1-SNAPSHOT-tests.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-postgres/1.1-SNAPSHOT/geogig-postgres-1.1-SNAPSHOT-tests.jar
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/postgres/target/geogig-postgres-1.1-SNAPSHOT-sources.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-postgres/1.1-SNAPSHOT/geogig-postgres-1.1-SNAPSHOT-sources.jar
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/storage/postgres/target/geogig-postgres-1.1-SNAPSHOT-test-sources.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-postgres/1.1-SNAPSHOT/geogig-postgres-1.1-SNAPSHOT-test-sources.jar
[JENKINS] Archiving disabled
Started calculate disk usage of build
Finished Calculation of disk usage of build in 0 seconds
Started calculate disk usage of workspace
Finished Calculation of disk usage of workspace in 0 seconds
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building GeoTools Extension 1.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ geogig-geotools ---
[INFO] Deleting /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/geotools/target
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig-geotools ---
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ geogig-geotools ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ geogig-geotools ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 62 source files to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/geotools/target/classes
[WARNING] /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/geotools/src/main/java/org/locationtech/geogig/geotools/plumbing/ImportOp.java: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/geotools/src/main/java/org/locationtech/geogig/geotools/plumbing/ImportOp.java uses unchecked or unsafe operations.
[WARNING] /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/geotools/src/main/java/org/locationtech/geogig/geotools/plumbing/ImportOp.java: Recompile with -Xlint:unchecked for details.
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ geogig-geotools ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 14 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ geogig-geotools ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 33 source files to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/geotools/target/test-classes
[WARNING] /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/geotools/src/test/java/org/locationtech/geogig/geotools/test/storage/MemoryDataStoreWithProvidedFIDSupport.java: Some input files use unchecked or unsafe operations.
[WARNING] /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/geotools/src/test/java/org/locationtech/geogig/geotools/test/storage/MemoryDataStoreWithProvidedFIDSupport.java: Recompile with -Xlint:unchecked for details.
[INFO] 
[INFO] --- maven-surefire-plugin:2.17:test (default-test) @ geogig-geotools ---
[INFO] Surefire report directory: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/geotools/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running org.locationtech.geogig.geotools.cli.geojson.GeoJsonImportTest
Running org.locationtech.geogig.geotools.cli.geojson.GeoJsonExportTest
Running org.locationtech.geogig.geotools.cli.shp.RunShpFunctionalTest
Running org.locationtech.geogig.geotools.cli.shp.ShpImportTest
Running org.locationtech.geogig.geotools.cli.shp.ShpExportTest
Running org.locationtech.geogig.geotools.cli.geopkg.GeoPkgDescribeTest
Running org.locationtech.geogig.geotools.cli.geopkg.RunGeoPkgFunctionalTest
Running org.locationtech.geogig.geotools.cli.geopkg.GeoPkgPullTest
Running org.locationtech.geogig.geotools.cli.geopkg.GeoPkgImportTest
Running org.locationtech.geogig.geotools.cli.geopkg.GeoPkgListTest
Running org.locationtech.geogig.geotools.cli.geopkg.GeoPkgExportTest
Running org.locationtech.geogig.geotools.cli.oracle.OracleListTest
Running org.locationtech.geogig.geotools.cli.oracle.OracleImportTest
Running org.locationtech.geogig.geotools.cli.oracle.OracleExportTest
Running org.locationtech.geogig.geotools.cli.oracle.OracleDescribeTest
Running org.locationtech.geogig.geotools.cli.postgis.PGExportTest
Running org.locationtech.geogig.geotools.cli.postgis.PGImportTest
Running org.locationtech.geogig.geotools.cli.postgis.PGListTest
Running org.locationtech.geogig.geotools.plumbing.ExportOpTest
Running org.locationtech.geogig.geotools.cli.postgis.PGDescribeTest
Running org.locationtech.geogig.geotools.plumbing.DescribeOpTest
Running org.locationtech.geogig.geotools.plumbing.ImportOpTest
Running org.locationtech.geogig.geotools.plumbing.ExportDiffOpTest
Running org.locationtech.geogig.geotools.plumbing.ListOpTest
Feature: "shp export" command
    In order to export data to Geogig
    As a Geogig User
    I want to export from the repository to a shapefile
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try exporting from an empty directory': Using URIBuilder DefaultTestRepoURIBuilder
Feature: "geopkg describe" command
    In order to understand the structure of a table in a GeoPackage file
    As a Geogig User
    I want Geogig to describe the table
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try describing a GeoPackage table from an empty directory': Using URIBuilder DefaultTestRepoURIBuilder
Usage: geogig describe [options]
  Options:
    --database, -D
       The database to connect to.  Default: database.gpkg
       Default: /opt/public/hipp/ramdisk/geogig/geogig_geopackage_test5620848647591509206.gpkg
  * --table, -t
       Table to describe.
       Default: <empty string>
    --user, -U
       User name.  Default: user
       Default: user

The shapefile '/home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/geotools/target/test-classes/org/locationtech/geogig/geotools/cli/shp/shape.shp' could not be found, skipping...
The GeoJSON file 'file://nonexistent.geojson' could not be found, skipping...
Importing from shapefile /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/geotools/target/test-classes/org/locationtech/geogig/geotools/cli/shp/shape.shp
0%
Importing table2           (1/2)... 
Usage: geogig import [options] <geojson> [<geojson>]...
  Options:
    --add
       Do not replace or delete features on the destination path, but just add
       new ones
       Default: false
    --alter
       Set the path default feature type to the the feature type of imported
       features, and modify existing features to match it
       Default: false
    -d, --dest
       Path to import to
    --fid-attrib
       Use the specified attribute to create the feature Id
    --force-featuretype
       Use origin feature type even if it does not match the default destination
       featuretype
       Default: false
    --geom-name
       Name to use for geometry attribute, replacing the default one
       ('geometry')
    --geom-name-auto
       Uses the name of the geometry descriptor in the destination feature type
       Default: false

Importing from database database
0%
Importing from GeoJSON /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/geotools/target/test-classes/org/locationtech/geogig/geotools/cli/geojson/sample.geojson
Usage: geogig describe [options]
  Options:
    --database, -D
       The database to connect to.  Default: database
       Default: database
    --host, -H
       Machine name or IP address to connect to. Default: localhost
       Default: localhost
    --password, -W
       Password.  Default: <no password>
       Default: <empty string>
    --port, -P
       Port number to connect to.  Default: 5432
       Default: 5432
    --schema, -S
       The database schema to access.  Default: public
       Default: public
  * --table, -t
       Table to describe.
       Default: <empty string>
    --user, -U
       User name.  Default: postgres
       Default: postgres


Importing feature          (1/1)... 

1 features inserted in 103.9 ms

Building final tree table2...

1 features tree built in 5.371 ms

Importing table1           (2/2)... 
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.612 sec - in org.locationtech.geogig.geotools.plumbing.DescribeOpTest
Running org.locationtech.geogig.geotools.plumbing.FeatureTypeAdapterFeatureSourceTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.144 sec - in org.locationtech.geogig.geotools.plumbing.FeatureTypeAdapterFeatureSourceTest
0%
Importing from database database

2 features inserted in 109.3 ms

Building final tree feature...

2 features tree built in 2.780 ms
2017-07-06T09:10:02.450-0400  SEVERE  Connection error: 
org.postgresql.util.PSQLException: The connection attempt failed.
	at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:275)
	at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
	at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:194)
	at org.postgresql.Driver.makeConnection(Driver.java:450)
	at org.postgresql.Driver.connect(Driver.java:252)
	at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
	at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)
	at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)
	at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)
	at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
	at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
	at org.geotools.data.jdbc.datasource.AbstractManageableDataSource.getConnection(AbstractManageableDataSource.java:48)
	at org.locationtech.geogig.geotools.cli.postgis.PGSupport.getDataStore(PGSupport.java:74)
	at org.locationtech.geogig.geotools.cli.postgis.PGDescribe.getDataStore(PGDescribe.java:40)
	at org.locationtech.geogig.geotools.cli.DataStoreDescribe.runInternal(DataStoreDescribe.java:51)
	at org.locationtech.geogig.cli.AbstractCommand.run(AbstractCommand.java:68)
	at org.locationtech.geogig.geotools.cli.postgis.PGDescribeTest.testInvalidDatabaseParams(PGDescribeTest.java:76)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
	at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:48)
	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
Caused by: java.net.UnknownHostException: nonexistent
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at org.postgresql.core.PGStream.<init>(PGStream.java:68)
	at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:144)
	... 44 more

100%
100%
/home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/geotools/target/test-classes/org/locationtech/geogig/geotools/cli/geojson/sample.geojson imported successfully.
Usage: geogig export [options] <path> <geojson>
  Options:
    --alter
       Export all features if several types are found, altering them to adapt to
       the output feature type
       Default: false
    --defaulttype
       Export only features with the tree default feature type if several types
       are found
       Default: false
    --featuretype
       Export only features with the specified feature type if several types are
       found
    --overwrite, -o
       Overwrite output file
       Default: false

Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.67 sec - in org.locationtech.geogig.geotools.cli.geojson.GeoJsonImportTest
Fetching table...
Importing from database /opt/public/hipp/ramdisk/geogig/geogig_geopackage_test1286662070205943381.gpkg
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.371 sec - in org.locationtech.geogig.geotools.plumbing.ExportDiffOpTest

Importing Lines            (1/2)... 

Exporting from WORK_HEAD:Points to Points... 
33%
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.976 sec - in org.locationtech.geogig.geotools.plumbing.ListOpTest
100%
WORK_HEAD:Points exported successfully to /opt/public/hipp/ramdisk/geogig/junit3938299028761299118/repo1366395198/TestPoints.geojson
0%
Exporting from Points to Points... 
33%
3 features inserted in 58.32 ms

Building final tree Lines...

3 features tree built in 2.064 ms

Importing Points           (2/2)... 
67%
100%
Points exported successfully to Points

Exporting repository metadata from 'HEAD:Points' (commit 75d6c252f8bf740f09d5459c6cc8009f106a2967)...

Creating audit metadata for table 'Points'
1%
3 features inserted in 5.129 ms

Building final tree Points...

3 features tree built in 1.499 ms
100%
Import successful.
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 9.906 sec - in org.locationtech.geogig.geotools.plumbing.ExportOpTest
Fetching table...
Table : table1
----------------------------------------
	Property  : label
	Type      : String
----------------------------------------
	Property  : geom
	Type      : Point
----------------------------------------
Importing from database /opt/public/hipp/ramdisk/geogig/geogig_geopackage_test1060995366410865951.gpkg

Importing Points           (1/1)... 

Importing changes to table Points onto feature tree Points...
0%
Exporting from Points to Points... 
33%
100%
Points exported successfully to /opt/public/hipp/ramdisk/geogig/junit6633793419032906544/repo241307561/TestPoints.geojson
Importing from database database
0%
3 features inserted in 5.165 ms

Building final tree Points...

3 features tree built in 11.74 ms
100%
Import successful.
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 10.605 sec - in org.locationtech.geogig.geotools.cli.geopkg.GeoPkgImportTest
Importing from database database
The shapefile 'file://nonexistent.shp' could not be found, skipping...
Fetching table...
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 10.921 sec - in org.locationtech.geogig.geotools.cli.geopkg.GeoPkgDescribeTest
Fetching table...

Exporting from Points to Points... 
33%
100%
Points exported successfully to /opt/public/hipp/ramdisk/geogig/junit4543728959304857641/repo1538329276/TestPoints.geojson

Exporting from Lines to Lines... 
33%
Fetching table...
Lines exported successfully to /opt/public/hipp/ramdisk/geogig/junit4543728959304857641/repo1538329276/TestPoints.geojson
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 11.33 sec - in org.locationtech.geogig.geotools.cli.geojson.GeoJsonExportTest
Table : table1
----------------------------------------
	Property  : label
	Type      : String
----------------------------------------
	Property  : geom
	Type      : Point
----------------------------------------
Importing from shapefile /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/geotools/target/test-classes/org/locationtech/geogig/geotools/cli/shp/shape.shp
0%
Exporting from Points to Points... 
Fetching table...
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 11.233 sec - in org.locationtech.geogig.geotools.cli.oracle.OracleDescribeTest
33%
Import successful.
Changes committed and merge at e3bd91d3251946d9d9c9e58f0ec68d5e481ae4c7
Importing from database database
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try exporting a feature type': Using URIBuilder DefaultTestRepoURIBuilder

Importing table2           (1/2)... 
Usage: geogig import [options] <shapefile> [<shapefile>]...
  Options:
    --add
       Do not replace or delete features on the destination path, but just add
       new ones
       Default: false
    --alter
       Set the path default feature type to the the feature type of imported
       features, and modify existing features to match it
       Default: false
    --charset
       Use the specified charset to decode attributes. Default is ISO-8859-1.
       Default: ISO-8859-1
    --create, -c
       Only create the schema, do not actually import its features
       Default: false
    -d, --dest
       Path to import to
    --fid-attrib
       Use the specified attribute to create the feature Id
    --force-featuretype
       Use origin feature type even if it does not match the default destination
       featuretype
       Default: false

67%
100%
Points exported successfully to Points
Importing from shapefile /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/geotools/target/test-classes/org/locationtech/geogig/geotools/cli/shp/shape.shp

Exporting repository metadata from 'HEAD:Points' (commit ece6fa6840c610bff150267968180252feee878c)...
0%
Importing table4           (1/8)... 
Importing from database database

Creating audit metadata for table 'Points'

Importing table3           (2/8)... 
0%
1 features inserted in 11.88 ms

Building final tree table3...

1 features tree built in 2.669 ms
[main] ERROR org.locationtech.geogig.cli.GeogigCLI - Could not find the specified table.
org.locationtech.geogig.cli.CommandFailedException: Could not find the specified table.
	at org.locationtech.geogig.geotools.cli.DataStoreDescribe.runInternal(DataStoreDescribe.java:68)
	at org.locationtech.geogig.cli.AbstractCommand.run(AbstractCommand.java:68)
	at org.locationtech.geogig.cli.GeogigCLI.executeInternal(GeogigCLI.java:532)
	at org.locationtech.geogig.cli.GeogigCLI.execute(GeogigCLI.java:368)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:159)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:153)
	at org.locationtech.geogig.geotools.cli.geopkg.GeoPkgStepDefinitions.I_run_the_command_on_an_existing_GeoPackage_file(GeoPkgStepDefinitions.java:79)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at cucumber.runtime.Utils$1.call(Utils.java:37)
	at cucumber.runtime.Timeout.timeout(Timeout.java:13)
	at cucumber.runtime.Utils.invoke(Utils.java:31)
	at cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:38)
	at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37)
	at cucumber.runtime.Runtime.runStep(Runtime.java:299)
	at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44)
	at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39)
	at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:44)
	at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:91)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:93)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:37)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.api.junit.Cucumber.run(Cucumber.java:98)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)

Importing table2           (3/8)... 

1 features inserted in 2.573 ms

Building final tree table2...

1 features tree built in 881.6 μs

Importing table1           (4/8)... 
Importing from database database

Exporting from Points to Points... 
33%
0%
2 features inserted in 3.341 ms

Building final tree table1...

2 features tree built in 12.28 ms
100%
Points exported successfully to Points

Importing shpLikeTable2    (5/8)... 

Exporting repository metadata from 'HEAD:Points' (commit a6b96ad9818aa5edc937fb3a192f5756cd30e5ea)...

Creating audit metadata for table 'Points'

1 features inserted in 2.832 ms

Building final tree shpLikeTable2...

1 features tree built in 604.7 μs
0%
Importing shpLikeTable     (6/8)... 

1 features inserted in 39.33 ms

Building final tree table2...
1%
1 features inserted in 2.752 ms

Building final tree shpLikeTable...

1 features tree built in 10.56 ms

1 features tree built in 5.497 ms

Importing table1           (2/2)... 
Usage: geogig export [options] <path> <shapefile>
  Options:
    --alter
       Export all features if several types are found, altering them to adapt to
       the output feature type
       Default: false
    --charset
       Use the specified charset to encode attributes. Default is ISO-8859-1.
       Default: ISO-8859-1
    --defaulttype
       Export only features with the tree default feature type if several types
       are found
       Default: false
    --featuretype
       Export only features with the specified feature type if several types are
       found
    --overwrite, -o
       Overwrite output file
       Default: false


  Scenario: Try exporting from an empty directory                    # ShpExport.feature:6
    Given I am in an empty directory                                 # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "shp export Points Points.shp"            # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should start with "Not in a geogig repository" # DefaultStepDefinitions.the_response_should_start_with(String)
Importing from database database
Fetching feature types...
 - table4
 - table3
 - table2
 - table1
 - shpLikeTable2
 - shpLikeTable
 - GeoJsonLikeTable2
 - GeoJsonLikeTable
2017-07-06T09:10:06.730-0400  SEVERE  Connection error: 
org.postgresql.util.PSQLException: The connection attempt failed.
	at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:275)
	at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
	at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:194)
	at org.postgresql.Driver.makeConnection(Driver.java:450)
	at org.postgresql.Driver.connect(Driver.java:252)
	at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
	at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)
	at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)
	at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)
	at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
	at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
	at org.geotools.data.jdbc.datasource.AbstractManageableDataSource.getConnection(AbstractManageableDataSource.java:48)
	at org.locationtech.geogig.geotools.cli.postgis.PGSupport.getDataStore(PGSupport.java:74)
	at org.locationtech.geogig.geotools.cli.postgis.PGImport.getDataStore(PGImport.java:39)
	at org.locationtech.geogig.geotools.cli.DataStoreImport.runInternal(DataStoreImport.java:89)
	at org.locationtech.geogig.cli.AbstractCommand.run(AbstractCommand.java:68)
	at org.locationtech.geogig.geotools.cli.postgis.PGImportTest.testInvalidDatabaseParams(PGImportTest.java:100)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
	at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:48)
	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
Caused by: java.net.UnknownHostException: nonexistent
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at org.postgresql.core.PGStream.<init>(PGStream.java:68)
	at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:144)
	... 44 more


Importing changes to table Points onto feature tree Points...
0%
Importing GeoJsonLikeTa... (7/8)... 
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try describing a GeoPackage table': Using URIBuilder DefaultTestRepoURIBuilder
Importing from database database

Importing table1           (1/1)... 
2017-07-06T09:10:06.819-0400  SEVERE  Connection error: 
org.postgresql.util.PSQLException: The connection attempt failed.
	at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:275)
	at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
	at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:194)
	at org.postgresql.Driver.makeConnection(Driver.java:450)
	at org.postgresql.Driver.connect(Driver.java:252)
	at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
	at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)
	at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)
	at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)
	at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
	at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
	at org.geotools.data.jdbc.datasource.AbstractManageableDataSource.getConnection(AbstractManageableDataSource.java:48)
	at org.locationtech.geogig.geotools.cli.postgis.PGSupport.getDataStore(PGSupport.java:74)
	at org.locationtech.geogig.geotools.cli.postgis.PGList.getDataStore(PGList.java:42)
	at org.locationtech.geogig.geotools.cli.DataStoreList.runInternal(DataStoreList.java:41)
	at org.locationtech.geogig.cli.AbstractCommand.run(AbstractCommand.java:68)
	at org.locationtech.geogig.geotools.cli.postgis.PGListTest.testInvalidDatabaseParams(PGListTest.java:69)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
	at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:48)
	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
Caused by: java.net.UnknownHostException: nonexistent
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at org.postgresql.core.PGStream.<init>(PGStream.java:68)
	at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:144)
	... 44 more

Fetching table...
Fetching feature types...
Import successful.
Changes committed and merge at e840789e51a0bf3cd545a9e628ef45393d849fed
0%
2 features inserted in 3.960 ms

Building final tree table1...

2 features tree built in 1.578 ms
1%
1 features inserted in 1.887 ms

Building final tree GeoJsonLikeTable2...
100%
Import successful.

1 features tree built in 4.500 ms
Fetching feature types...
Importing from database database
Fetching table...
Fetching feature types...
 - table4

Importing GeoJsonLikeTable (8/8)... 
 - table3
Importing from database database
 - table2
 - table1
 - shpLikeTable2
 - shpLikeTable
 - GeoJsonLikeTable2
 - GeoJsonLikeTable

Importing table2           (1/2)... 
Table : table1
----------------------------------------
	Property  : label
	Type      : String
----------------------------------------
	Property  : geom
	Type      : Point
----------------------------------------

1 features inserted in 1.963 ms

Building final tree GeoJsonLikeTable...

1 features tree built in 634.8 μs
100%
/home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/geotools/target/test-classes/org/locationtech/geogig/geotools/cli/shp/shape.shp imported successfully.
Fetching feature types...
Fetching table...
Usage: geogig list [options]
  Options:
    --database, -D
       The database to connect to. Default: database
       Default: database
    --estimated_extents
       Use spatial index information to quickly get an estimate of the data
       bounds. Default: true
       Default: true
    --geometry_metadata_table
       Geometry metadata table
       Default: <empty string>
    --host, -H
       Machine name or IP address to connect to. Default: localhost
       Default: localhost
    --loose_bbox
       Perform only primary filter on bbox. Default: true
       Default: true
    --password, -W
       Password.  Default: <no password>
       Default: <empty string>
    --port, -P
       Port number to connect to.  Default: 1521
       Default: 1521
    --schema, -S
       The database schema to access.  Default: public
       Default: public
    --user, -U
       User name.  Default: oracle
       Default: oracle

Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 12.592 sec - in org.locationtech.geogig.geotools.cli.postgis.PGDescribeTest
Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 12.871 sec - in org.locationtech.geogig.geotools.cli.shp.ShpImportTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 12.728 sec - in org.locationtech.geogig.geotools.cli.oracle.OracleListTest
Usage: geogig import [options]
  Options:
    --add
       Do not replace or delete features on the destination path, but just add
       new ones
       Default: false
    --all
       Import all tables.
       Default: false
    --alter
       Set the path default feature type to the the feature type of imported
       features, and modify existing features to match it
       Default: false
    --database, -D
       The database to connect to. Default: database
       Default: database
    -d, --dest
       Path to import to
    --estimated_extents
       Use spatial index information to quickly get an estimate of the data
       bounds. Default: true
       Default: true
    --fid-attrib
       Use the specified attribute to create the feature Id
    --force-featuretype
       Use origin feature type even if it does not match the default destination
       featuretype
       Default: false
    --geometry_metadata_table
       Geometry metadata table
       Default: <empty string>
    --host, -H
       Machine name or IP address to connect to. Default: localhost
       Default: localhost
    --loose_bbox
       Perform only primary filter on bbox. Default: true
       Default: true
    --password, -W
       Password.  Default: <no password>
       Default: <empty string>
    --port, -P
       Port number to connect to.  Default: 1521
       Default: 1521
    --schema, -S
       The database schema to access.  Default: public
       Default: public
    --table, -t
       Table to import.
       Default: <empty string>
    --user, -U
       User name.  Default: oracle
       Default: oracle

Importing from database database

Importing table4           (1/8)... 

Importing table3           (2/8)... 

Exporting from Points to Points... 
33%
Fetching feature types...
100%
Points exported successfully to Points
0%
1 features inserted in 3.475 ms

Building final tree table3...

1 features tree built in 6.694 ms

Importing table2           (3/8)... 

Exporting repository metadata from 'HEAD:Points' (commit 896c722140bb0920aba0c7d7eaa3b4b8743ef754)...

Creating audit metadata for table 'Points'

1 features inserted in 2.192 ms

Building final tree table2...

1 features tree built in 948.4 μs
Usage: geogig list [options]
  Options:
    --database, -D
       The database to connect to.  Default: database
       Default: database
    --host, -H
       Machine name or IP address to connect to. Default: localhost
       Default: localhost
    --password, -W
       Password.  Default: <no password>
       Default: <empty string>
    --port, -P
       Port number to connect to.  Default: 5432
       Default: 5432
    --schema, -S
       The database schema to access.  Default: public
       Default: public
    --user, -U
       User name.  Default: postgres
       Default: postgres

Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 12.879 sec - in org.locationtech.geogig.geotools.cli.postgis.PGListTest

Importing table1           (4/8)... 
0%
2 features inserted in 3.333 ms

Building final tree table1...

2 features tree built in 699.5 μs

  Scenario: Try describing a GeoPackage table from an empty directory                    # GeoPkgDescribe.feature:6
    Given I am in an empty directory                                                     # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "geopkg describe --table test" on an existing GeoPackage file # GeoPkgStepDefinitions.I_run_the_command_on_an_existing_GeoPackage_file(String)
    Then the response should contain "Could not find the specified table."               # DefaultStepDefinitions.the_response_should_contain(String)

Importing shpLikeTable2    (5/8)... 
0%
1 features inserted in 2.652 ms

Importing changes to table Points onto feature tree Points...

0%
Building final tree shpLikeTable2...

1 features tree built in 7.159 ms

1 features inserted in 33.17 ms

Building final tree table2...

1 features tree built in 8.343 ms

Importing table1           (2/2)... 

Importing shpLikeTable     (6/8)... 
Importing from database database
2017-07-06T09:10:07.684-0400  SEVERE  There's code using JDBC based datastore and not disposing them. This may lead to temporary loss of database connections. Please make sure all data access code calls DataStore.dispose() before freeing all references to it
Fetching feature types...
 - table4
 - table3
 - table2
 - table1
 - shpLikeTable2
 - shpLikeTable
 - GeoJsonLikeTable2
 - GeoJsonLikeTable
1%
1 features inserted in 23.54 ms

Building final tree shpLikeTable...
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 13.397 sec - in org.locationtech.geogig.geotools.cli.geopkg.GeoPkgPullTest
Fetching feature types...

1 features tree built in 869.3 μs

Importing GeoJsonLikeTa... (7/8)... 
Importing from database database

Importing table1           (1/1)... 

1 features inserted in 4.802 ms

Building final tree GeoJsonLikeTable2...

1 features tree built in 558.5 μs
0%
2 features inserted in 6.591 ms

Building final tree table1...

2 features tree built in 1.411 ms

Importing GeoJsonLikeTable (8/8)... 
Fetching feature types...
100%
Import successful.

1 features inserted in 1.477 ms

Building final tree GeoJsonLikeTable...

1 features tree built in 615.0 μs
100%
100%
Import successful.
Usage: geogig export [options] <path> <shapefile>
  Options:
    --alter
       Export all features if several types are found, altering them to adapt to
       the output feature type
       Default: false
    --charset
       Use the specified charset to encode attributes. Default is ISO-8859-1.
       Default: ISO-8859-1
    --defaulttype
       Export only features with the tree default feature type if several types
       are found
       Default: false
    --featuretype
       Export only features with the specified feature type if several types are
       found
    --overwrite, -o
       Overwrite output file
       Default: false

Usage: geogig export [options] [<commit-ish>:]<path> <table> (define source feature type tree and target table name)
  Options:
    --alter
       Export all features if several types are found, altering them to adapt to
       the output feature type
       Default: false
    --database, -D
       The database to connect to.  Default: database.gpkg
       Default: database.gpkg
    --defaulttype
       Export only features with the tree default feature type if several types
       are found
       Default: false
    --featuretype
       Export only features with the specified feature type if several types are
       found
    -i, --interchange
       Export as geogig mobile interchange format
       Default: false
    --overwrite, -o
       Overwrite output table
       Default: false
    --user, -U
       User name.  Default: user
       Default: user

Importing from database database
Usage: geogig list [options]
  Options:
    --database, -D
       The database to connect to.  Default: database.gpkg
       Default: database.gpkg
    --user, -U
       User name.  Default: user
       Default: user

Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 13.549 sec - in org.locationtech.geogig.geotools.cli.geopkg.GeoPkgListTest
Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 13.538 sec - in org.locationtech.geogig.geotools.cli.oracle.OracleImportTest
Usage: geogig import [options]
  Options:
    --add
       Do not replace or delete features on the destination path, but just add
       new ones
       Default: false
    --all
       Import all tables.
       Default: false
    --alter
       Set the path default feature type to the the feature type of imported
       features, and modify existing features to match it
       Default: false
    --database, -D
       The database to connect to.  Default: database
       Default: database
    -d, --dest
       Path to import to
    --fid-attrib
       Use the specified attribute to create the feature Id
    --force-featuretype
       Use origin feature type even if it does not match the default destination
       featuretype
       Default: false
    --host, -H
       Machine name or IP address to connect to. Default: localhost
       Default: localhost
    --password, -W
       Password.  Default: <no password>
       Default: <empty string>
    --port, -P
       Port number to connect to.  Default: 5432
       Default: 5432
    --schema, -S
       The database schema to access.  Default: public
       Default: public
    --table, -t
       Table to import.
       Default: <empty string>
    --user, -U
       User name.  Default: postgres
       Default: postgres

Importing from database database

Importing table4           (1/8)... 

Importing table3           (2/8)... 
0%
1 features inserted in 3.069 ms

Building final tree table3...

1 features tree built in 694.4 μs

Importing table2           (3/8)... 

1 features inserted in 2.329 ms

Building final tree table2...

1 features tree built in 768.4 μs

Importing table1           (4/8)... 

2 features inserted in 2.960 ms

Building final tree table1...

2 features tree built in 655.9 μs

Importing shpLikeTable2    (5/8)... 
0%
1 features inserted in 2.330 ms

Building final tree shpLikeTable2...

1 features tree built in 3.074 ms

Importing shpLikeTable     (6/8)... 

1 features inserted in 1.805 ms

Building final tree shpLikeTable...

1 features tree built in 23.11 ms

Exporting from WORK_HEAD:Points to Points... 
33%
2017-07-06T09:10:08.404-0400  SEVERE  There's code using JDBC based datastore and not disposing them. This may lead to temporary loss of database connections. Please make sure all data access code calls DataStore.dispose() before freeing all references to it
100%
WORK_HEAD:Points exported successfully to Points

Importing GeoJsonLikeTa... (7/8)... 
1%
1 features inserted in 1.534 ms

Building final tree GeoJsonLikeTable2...

1 features tree built in 1.318 ms

Importing GeoJsonLikeTable (8/8)... 

Exporting from WORK_HEAD:Lines to Lines... 
33%
WORK_HEAD:Lines exported successfully to Lines

1 features inserted in 1.683 ms

Building final tree GeoJsonLikeTable...

1 features tree built in 667.7 μs

Exporting from WORK_HEAD:Points to TestPoints... 
100%
Import successful.
33%
Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 14.067 sec - in org.locationtech.geogig.geotools.cli.postgis.PGImportTest
100%
WORK_HEAD:Points exported successfully to /opt/public/hipp/ramdisk/geogig/junit178253977586172870/repo-301378614/TestPoints.shp
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to describe a GeoPackage table that doesn't exit in the database': Using URIBuilder DefaultTestRepoURIBuilder

Exporting from Points to TestPoints... 
33%
  Scenario: Try describing a GeoPackage table                                              # GeoPkgDescribe.feature:11
    Given I have a repository                                                              # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "geopkg describe --table Points" on an existing GeoPackage file # GeoPkgStepDefinitions.I_run_the_command_on_an_existing_GeoPackage_file(String)
    Then the response should contain "Table : Points"                                      # DefaultStepDefinitions.the_response_should_contain(String)
Usage: geogig export [options] <path> <shapefile>
  Options:
    --alter
       Export all features if several types are found, altering them to adapt to
       the output feature type
       Default: false
    --charset
       Use the specified charset to encode attributes. Default is ISO-8859-1.
       Default: ISO-8859-1
    --defaulttype
       Export only features with the tree default feature type if several types
       are found
       Default: false
    --featuretype
       Export only features with the specified feature type if several types are
       found
    --overwrite, -o
       Overwrite output file
       Default: false


Exporting from Points to Points... 
33%
100%
Points exported successfully to Points

Exporting from WORK_HEAD:Points to testTable... 
33%
100%
WORK_HEAD:Points exported successfully to testTable

Exporting from Lines to testTable... 
33%
Exporting from Points to TestPoints... 
33%
[main] ERROR org.locationtech.geogig.cli.GeogigCLI - Could not find the specified table.
org.locationtech.geogig.cli.CommandFailedException: Could not find the specified table.
100%
Points exported successfully to /opt/public/hipp/ramdisk/geogig/junit4198718041954157938/repo-952838779/TestPoints.shp
	at org.locationtech.geogig.geotools.cli.DataStoreDescribe.runInternal(DataStoreDescribe.java:68)
	at org.locationtech.geogig.cli.AbstractCommand.run(AbstractCommand.java:68)
	at org.locationtech.geogig.cli.GeogigCLI.executeInternal(GeogigCLI.java:532)
	at org.locationtech.geogig.cli.GeogigCLI.execute(GeogigCLI.java:368)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:159)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:153)
	at org.locationtech.geogig.geotools.cli.geopkg.GeoPkgStepDefinitions.I_run_the_command_on_an_existing_GeoPackage_file(GeoPkgStepDefinitions.java:79)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at cucumber.runtime.Utils$1.call(Utils.java:37)
	at cucumber.runtime.Timeout.timeout(Timeout.java:13)
	at cucumber.runtime.Utils.invoke(Utils.java:31)
	at cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:38)
	at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37)
	at cucumber.runtime.Runtime.runStep(Runtime.java:299)
	at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44)
	at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39)
	at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:44)
	at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:91)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:93)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:37)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.api.junit.Cucumber.run(Cucumber.java:98)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)

Exporting from WORK_HEAD:Points to testTable... 
Lines exported successfully to testTable
33%
Exporting from Points to Points... 
33%
100%
Points exported successfully to Points

Exporting from Points to TestPoints... 
33%
100%
  Scenario: Try to describe a GeoPackage table that doesn't exit in the database                      # GeoPkgDescribe.feature:16
    Given I have a repository                                                                         # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "geopkg describe --table nonexistant_table" on an existing GeoPackage file # GeoPkgStepDefinitions.I_run_the_command_on_an_existing_GeoPackage_file(String)
    Then the response should contain "Could not find the specified table."                            # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "geopkg export" command
    In order to export data to Geogig
    As a Geogig User
    I want to export from the repository into a GeoPackage file
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try exporting from an empty directory': Using URIBuilder DefaultTestRepoURIBuilder
100%
Points exported successfully to /opt/public/hipp/ramdisk/geogig/junit6130008940050459977/repo1134889130/TestPoints.shp

Exporting from Lines to TestPoints... 
33%
Lines exported successfully to /opt/public/hipp/ramdisk/geogig/junit6130008940050459977/repo1134889130/TestPoints.shp
Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 15.457 sec - in org.locationtech.geogig.geotools.cli.shp.ShpExportTest

Exporting from Lines to Points... 
33%
Lines exported successfully to Points

Exporting from Points to Points... 
33%
100%
Points exported successfully to Points
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 15.426 sec - in org.locationtech.geogig.geotools.cli.geopkg.GeoPkgExportTest

WORK_HEAD:Points exported successfully to testTable

Exporting from Lines to testTable... 
33%
Lines exported successfully to testTable

Exporting from Points to Points... 
33%
100%
Points exported successfully to Points
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try exporting a feature type': Using URIBuilder DefaultTestRepoURIBuilder
Usage: geogig export [options] [<commit-ish>:]<path> <table> (define source feature type tree and target table name)
  Options:
    --alter
       Export all features if several types are found, altering them to adapt to
       the output feature type
       Default: false
    --database, -D
       The database to connect to. Default: database
       Default: database
    --defaulttype
       Export only features with the tree default feature type if several types
       are found
       Default: false
    --estimated_extents
       Use spatial index information to quickly get an estimate of the data
       bounds. Default: true
       Default: true
    --featuretype
       Export only features with the specified feature type if several types are
       found
    --geometry_metadata_table
       Geometry metadata table
       Default: <empty string>
    --host, -H
       Machine name or IP address to connect to. Default: localhost
       Default: localhost
    --loose_bbox
       Perform only primary filter on bbox. Default: true
       Default: true
    --overwrite, -o
       Overwrite output table
       Default: false
    --password, -W
       Password.  Default: <no password>
       Default: <empty string>
    --port, -P
       Port number to connect to.  Default: 1521
       Default: 1521
    --schema, -S
       The database schema to access.  Default: public
       Default: public
    --user, -U
       User name.  Default: oracle
       Default: oracle

Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 15.764 sec - in org.locationtech.geogig.geotools.cli.oracle.OracleExportTest
Usage: geogig export [options] [<commit-ish>:]<path> <table> (define source feature type tree and target table name)
  Options:
    --alter
       Export all features if several types are found, altering them to adapt to
       the output feature type
       Default: false
    --database, -D
       The database to connect to.  Default: database
       Default: database
    --defaulttype
       Export only features with the tree default feature type if several types
       are found
       Default: false
    --featuretype
       Export only features with the specified feature type if several types are
       found
    --host, -H
       Machine name or IP address to connect to. Default: localhost
       Default: localhost
    --overwrite, -o
       Overwrite output table
       Default: false
    --password, -W
       Password.  Default: <no password>
       Default: <empty string>
    --port, -P
       Port number to connect to.  Default: 5432
       Default: 5432
    --schema, -S
       The database schema to access.  Default: public
       Default: public
    --user, -U
       User name.  Default: postgres
       Default: postgres

Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 15.734 sec - in org.locationtech.geogig.geotools.cli.postgis.PGExportTest

  Scenario: Try exporting from an empty directory                                 # GeoPkgExport.feature:6
    Given I am in an empty directory                                              # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "geopkg export Points Points" on a new GeoPackage file # GeoPkgStepDefinitions.I_run_the_command_on_a_new_GeoPackage_file(String)
    Then the response should start with "Not in a geogig repository:"             # DefaultStepDefinitions.the_response_should_start_with(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try exporting an inexistent feature type': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try exporting a feature type                                          # ShpExport.feature:11
    Given I have a repository                                                     # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                        # DefaultStepDefinitions.I_stage_6_features()
    When I run the command "shp export -o Points Points.shp"                      # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points exported successfully to Points.shp" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try exporting an inexistent feature type': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try exporting a feature type                                               # GeoPkgExport.feature:11
    Given I have a repository                                                          # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                             # DefaultStepDefinitions.I_stage_6_features()
    When I run the command "geopkg export -o Points MyPoints" on a new GeoPackage file # GeoPkgStepDefinitions.I_run_the_command_on_a_new_GeoPackage_file(String)
    Then the response should contain "Points exported successfully to MyPoints"        # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try exporting with mixed feature types': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try exporting an inexistent feature type                                      # ShpExport.feature:17
    Given I have a repository                                                             # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                                # DefaultStepDefinitions.I_stage_6_features()
    When I run the command "shp export WRONGTABLE Points.shp"                             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "pathspec 'WRONGTABLE' did not match any valid path" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try exporting to a table that already exists': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try exporting an inexistent feature type                                      # GeoPkgExport.feature:17
    Given I have a repository                                                             # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                                # DefaultStepDefinitions.I_stage_6_features()
    When I run the command "geopkg export WRONGTABLE Points" on a new GeoPackage file     # GeoPkgStepDefinitions.I_run_the_command_on_a_new_GeoPackage_file(String)
    Then the response should contain "pathspec 'WRONGTABLE' did not match any valid path" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try exporting with mixed feature types using the default feature type': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try exporting with mixed feature types                                                    # ShpExport.feature:23
    Given I have a repository                                                                         # DefaultStepDefinitions.I_have_a_repository()
    And I have several feature types in a path                                                        # GeoToolsStepDefinitions.I_have_several_feature_types_in_a_path()
    When I run the command "shp export -o Points Points.shp"                                          # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "The selected tree contains mixed feature types"                 # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Use --defaulttype or --featuretype <feature_type_ref> to export" # DefaultStepDefinitions.the_response_should_contain(String)
[main] ERROR org.locationtech.geogig.cli.GeogigCLI - The selected table already exists. Use -o to overwrite
org.locationtech.geogig.cli.CommandFailedException: The selected table already exists. Use -o to overwrite
	at org.locationtech.geogig.geotools.cli.DataStoreExport.exportInternal(DataStoreExport.java:134)
	at org.locationtech.geogig.geotools.cli.DataStoreExport.runInternal(DataStoreExport.java:99)
	at org.locationtech.geogig.geotools.cli.geopkg.GeopkgExport.runInternal(GeopkgExport.java:75)
	at org.locationtech.geogig.cli.AbstractCommand.run(AbstractCommand.java:68)
	at org.locationtech.geogig.cli.GeogigCLI.executeInternal(GeogigCLI.java:532)
	at org.locationtech.geogig.cli.GeogigCLI.execute(GeogigCLI.java:368)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:159)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:153)
	at org.locationtech.geogig.geotools.cli.geopkg.GeoPkgStepDefinitions.I_run_the_command_on_an_existing_GeoPackage_file(GeoPkgStepDefinitions.java:79)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at cucumber.runtime.Utils$1.call(Utils.java:37)
	at cucumber.runtime.Timeout.timeout(Timeout.java:13)
	at cucumber.runtime.Utils.invoke(Utils.java:31)
	at cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:38)
	at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37)
	at cucumber.runtime.Runtime.runStep(Runtime.java:299)
	at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44)
	at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39)
	at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:44)
	at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:91)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:93)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:37)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.api.junit.Cucumber.run(Cucumber.java:98)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try exporting a table from HEAD': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try exporting with mixed feature types using --alter': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try exporting to a table that already exists                                      # GeoPkgExport.feature:23
    Given I have a repository                                                                 # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                                    # DefaultStepDefinitions.I_stage_6_features()
    When I run the command "geopkg export Points Points" on an existing GeoPackage file       # GeoPkgStepDefinitions.I_run_the_command_on_an_existing_GeoPackage_file(String)
    Then the response should contain "The selected table already exists. Use -o to overwrite" # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Try exporting with mixed feature types using the default feature type # ShpExport.feature:30
    Given I have a repository                                                     # DefaultStepDefinitions.I_have_a_repository()
    And I have several feature types in a path                                    # GeoToolsStepDefinitions.I_have_several_feature_types_in_a_path()
    When I run the command "shp export -o --defaulttype Points Points.shp"        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points exported successfully to Points.shp" # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Try exporting a table from HEAD                                                       # GeoPkgExport.feature:29
    Given I have a repository                                                                     # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                                        # DefaultStepDefinitions.I_stage_6_features()
    When I run the command "commit -m TestCommit"                                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "geopkg export -o HEAD:Points CommitedPoints" on a new GeoPackage file # GeoPkgStepDefinitions.I_run_the_command_on_a_new_GeoPackage_file(String)
    Then the response should contain "Points exported successfully to CommitedPoints"             # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "geopkg import" command
    In order to import data to Geogig
    As a Geogig User
    I want to import one or more tables from a GeoPackage file
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try importing into an empty directory': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try exporting a table from HEAD': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try exporting with mixed feature types using --alter                  # ShpExport.feature:36
    Given I have a repository                                                     # DefaultStepDefinitions.I_have_a_repository()
    And I have several feature types in a path                                    # GeoToolsStepDefinitions.I_have_several_feature_types_in_a_path()
    When I run the command "shp export -o --defaulttype Points Points.shp"        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points exported successfully to Points.shp" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to import a GeoPackage table': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try importing into an empty directory                                        # GeoPkgImport.feature:6
    Given I am in an empty directory                                                     # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "geopkg import --table Points" on an existing GeoPackage file # GeoPkgStepDefinitions.I_run_the_command_on_an_existing_GeoPackage_file(String)
    Then the response should start with "Not in a geogig repository"                     # DefaultStepDefinitions.the_response_should_start_with(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to import a full GeoPackage file': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try exporting a table from HEAD                                               # ShpExport.feature:42
    Given I have a repository                                                             # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                                # DefaultStepDefinitions.I_stage_6_features()
    When I run the command "commit -m TestCommit"                                         # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "shp export -o HEAD:Points CommitedPoints.shp"                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points exported successfully to CommitedPoints.shp" # DefaultStepDefinitions.the_response_should_contain(String)

7 Scenarios (7 passed)
29 Steps (29 passed)
0m18.881s

Tests run: 36, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 20.698 sec - in org.locationtech.geogig.geotools.cli.shp.RunShpFunctionalTest

  Scenario: Try to import a GeoPackage table                                             # GeoPkgImport.feature:11
    Given I have a repository                                                            # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "geopkg import --table Points" on an existing GeoPackage file # GeoPkgStepDefinitions.I_run_the_command_on_an_existing_GeoPackage_file(String)
    Then the response should contain "Import successful."                                # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to import a GeoPackage table that doesn't exit in the file': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to import a full GeoPackage file                                # GeoPkgImport.feature:16
    Given I have a repository                                                   # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "geopkg import --all" on an existing GeoPackage file # GeoPkgStepDefinitions.I_run_the_command_on_an_existing_GeoPackage_file(String)
    Then the response should contain "Import successful."                       # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to import without specifying table or -all': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to import a GeoPackage table that doesn't exit in the file                          # GeoPkgImport.feature:21
    Given I have a repository                                                                       # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "geopkg import --table nonexistant_table" on an existing GeoPackage file # GeoPkgStepDefinitions.I_run_the_command_on_an_existing_GeoPackage_file(String)
    Then the response should contain "Could not find the specified table."                          # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to import with table and -all': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to import without specifying table or -all                                               # GeoPkgImport.feature:26
    Given I have a repository                                                                            # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "geopkg import" on an existing GeoPackage file                                # GeoPkgStepDefinitions.I_run_the_command_on_an_existing_GeoPackage_file(String)
    Then the response should contain "No tables specified for import. Specify --all or --table <table>." # DefaultStepDefinitions.the_response_should_contain(String)

  Scenario: Try to import with table and -all                                                  # GeoPkgImport.feature:31
    Given I have a repository                                                                  # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "geopkg import --table Points --all" on an existing GeoPackage file # GeoPkgStepDefinitions.I_run_the_command_on_an_existing_GeoPackage_file(String)
    Then the response should contain "Specify --all or --table <table>, both cannot be set."   # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "geopkg list" command
    In order to know all of the features available in a GeoPackage file
    As a Geogig User
    I want to list all of the features
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try listing from an empty directory': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try listing from a valid directory': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try listing from an empty directory                         # GeoPkgList.feature:6
    Given I am in an empty directory                                    # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "geopkg list" on an existing GeoPackage file # GeoPkgStepDefinitions.I_run_the_command_on_an_existing_GeoPackage_file(String)
    Then the response should start with "Not in a geogig repository"    # DefaultStepDefinitions.the_response_should_start_with(String)

  Scenario: Try listing from a valid directory                          # GeoPkgList.feature:11
    Given I have a repository                                           # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "geopkg list" on an existing GeoPackage file # GeoPkgStepDefinitions.I_run_the_command_on_an_existing_GeoPackage_file(String)
    Then the response should contain "Points"                           # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "geopkg pull" command
    In order to import data to Geogig
    As a Geogig User
    I want to import one or more tables from a GeoPackage file with the interchange format
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try pulling into an empty directory': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to pull a GeoPackage table without commit message': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try pulling into an empty directory                                        # GeoPkgPull.feature:6
    Given I am in an empty directory                                                   # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "geopkg pull --table Points" on an existing GeoPackage file # GeoPkgStepDefinitions.I_run_the_command_on_an_existing_GeoPackage_file(String)
    Then the response should start with "Not in a geogig repository"                   # DefaultStepDefinitions.the_response_should_start_with(String)
[main] ERROR org.locationtech.geogig.cli.GeogigCLI - Commit message not provided
java.lang.IllegalArgumentException: Commit message not provided
	at com.google.common.base.Preconditions.checkArgument(Preconditions.java:122)
	at org.locationtech.geogig.geotools.geopkg.GeopkgAuditImport._call(GeopkgAuditImport.java:64)
	at org.locationtech.geogig.geotools.geopkg.GeopkgAuditImport._call(GeopkgAuditImport.java:23)
	at org.locationtech.geogig.repository.AbstractGeoGigOp.call(AbstractGeoGigOp.java:154)
	at org.locationtech.geogig.geotools.cli.geopkg.GeopkgPull.runInternal(GeopkgPull.java:67)
	at org.locationtech.geogig.cli.AbstractCommand.run(AbstractCommand.java:68)
	at org.locationtech.geogig.cli.GeogigCLI.executeInternal(GeogigCLI.java:532)
	at org.locationtech.geogig.cli.GeogigCLI.execute(GeogigCLI.java:368)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:159)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:153)
	at org.locationtech.geogig.geotools.cli.geopkg.GeoPkgStepDefinitions.I_run_the_command_on_an_existing_interchange_GeoPackage_file(GeoPkgStepDefinitions.java:116)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at cucumber.runtime.Utils$1.call(Utils.java:37)
	at cucumber.runtime.Timeout.timeout(Timeout.java:13)
	at cucumber.runtime.Utils.invoke(Utils.java:31)
	at cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:38)
	at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37)
	at cucumber.runtime.Runtime.runStep(Runtime.java:299)
	at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44)
	at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39)
	at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:44)
	at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:91)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:93)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:37)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.api.junit.Cucumber.run(Cucumber.java:98)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to pull a GeoPackage table': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to pull a GeoPackage table without commit message                                  # GeoPkgPull.feature:11
    Given I have a repository                                                                      # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "geopkg pull --table Points" on an existing interchange GeoPackage file # GeoPkgStepDefinitions.I_run_the_command_on_an_existing_interchange_GeoPackage_file(String)
    Then the response should contain "Commit message not provided"                                 # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to pull a GeoPackage table that doesn't exit in the file': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to pull a GeoPackage table                                                                            # GeoPkgPull.feature:16
    Given I have a repository                                                                                         # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "geopkg pull --table Points --message imported" on an existing interchange GeoPackage file # GeoPkgStepDefinitions.I_run_the_command_on_an_existing_interchange_GeoPackage_file(String)
    Then the response should contain "Import successful."                                                             # DefaultStepDefinitions.the_response_should_contain(String)
[main] WARN org.locationtech.geogig.geotools.plumbing.ImportOp - Error looking for known identifier for CRS null
org.locationtech.geogig.porcelain.CRSException: Could not find identifier associated with the defined CRS: 
GEOGCS["GCS_WGS_1985", 
  DATUM["D_WGS_1985", 
    SPHEROID["WGS_1985", 6378137.0, 298.257223563]], 
  PRIMEM["Greenwich", 0.0], 
  UNIT["degree", 0.017453292519943295], 
  AXIS["Longitude", EAST], 
  AXIS["Latitude", NORTH]]
	at org.locationtech.geogig.repository.impl.SpatialOps.findKnownCrs(SpatialOps.java:218)
	at org.locationtech.geogig.repository.impl.SpatialOps.findIdentifier(SpatialOps.java:202)
	at org.locationtech.geogig.geotools.plumbing.ImportOp.tryForceKnownCRS(ImportOp.java:281)
	at org.locationtech.geogig.geotools.plumbing.ImportOp._call(ImportOp.java:221)
	at org.locationtech.geogig.geotools.plumbing.ImportOp._call(ImportOp.java:87)
	at org.locationtech.geogig.repository.AbstractGeoGigOp.call(AbstractGeoGigOp.java:154)
	at org.locationtech.geogig.geotools.plumbing.ImportOpTest.testForcedKnownCrsIdentifierNoMatch(ImportOpTest.java:479)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
	at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:48)
	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
Tests run: 24, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 23.663 sec - in org.locationtech.geogig.geotools.plumbing.ImportOpTest
[main] ERROR org.locationtech.geogig.cli.GeogigCLI - Unable to import: No table to import.
java.lang.IllegalStateException: No table to import.
	at com.google.common.base.Preconditions.checkState(Preconditions.java:173)
	at org.locationtech.geogig.geotools.geopkg.InterchangeFormat.importAuditLog(InterchangeFormat.java:270)
	at org.locationtech.geogig.geotools.geopkg.GeopkgAuditImport._call(GeopkgAuditImport.java:81)
	at org.locationtech.geogig.geotools.geopkg.GeopkgAuditImport._call(GeopkgAuditImport.java:23)
	at org.locationtech.geogig.repository.AbstractGeoGigOp.call(AbstractGeoGigOp.java:154)
	at org.locationtech.geogig.geotools.cli.geopkg.GeopkgPull.runInternal(GeopkgPull.java:67)
	at org.locationtech.geogig.cli.AbstractCommand.run(AbstractCommand.java:68)
	at org.locationtech.geogig.cli.GeogigCLI.executeInternal(GeogigCLI.java:532)
	at org.locationtech.geogig.cli.GeogigCLI.execute(GeogigCLI.java:368)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:159)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:153)
	at org.locationtech.geogig.geotools.cli.geopkg.GeoPkgStepDefinitions.I_run_the_command_on_an_existing_interchange_GeoPackage_file(GeoPkgStepDefinitions.java:116)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at cucumber.runtime.Utils$1.call(Utils.java:37)
	at cucumber.runtime.Timeout.timeout(Timeout.java:13)
	at cucumber.runtime.Utils.invoke(Utils.java:31)
	at cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:38)
	at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37)
	at cucumber.runtime.Runtime.runStep(Runtime.java:299)
	at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44)
	at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39)
	at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:44)
	at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:91)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:93)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:37)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.api.junit.Cucumber.run(Cucumber.java:98)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to pull without specifying table': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to pull a GeoPackage table that doesn't exit in the file                                                         # GeoPkgPull.feature:21
    Given I have a repository                                                                                                    # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "geopkg pull --table nonexistant_table --message imported" on an existing interchange GeoPackage file # GeoPkgStepDefinitions.I_run_the_command_on_an_existing_interchange_GeoPackage_file(String)
    Then the response should contain "Unable to import: No table to import."                                                     # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to pull a GeoPackage table with a conflict': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to pull without specifying table                                                       # GeoPkgPull.feature:26
    Given I have a repository                                                                          # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "geopkg pull --message imported" on an existing interchange GeoPackage file # GeoPkgStepDefinitions.I_run_the_command_on_an_existing_interchange_GeoPackage_file(String)
    Then the response should contain "Import successful."                                              # DefaultStepDefinitions.the_response_should_contain(String)
[main] ERROR org.locationtech.geogig.cli.GeogigCLI - CONFLICT: Merge conflict in Points/Points.1
Automatic merge failed. Fix conflicts and then commit the result.

org.locationtech.geogig.geotools.geopkg.GeopkgMergeConflictsException: CONFLICT: Merge conflict in Points/Points.1
Automatic merge failed. Fix conflicts and then commit the result.

	at org.locationtech.geogig.geotools.geopkg.InterchangeFormat.importAuditLog(InterchangeFormat.java:342)
	at org.locationtech.geogig.geotools.geopkg.GeopkgAuditImport._call(GeopkgAuditImport.java:81)
	at org.locationtech.geogig.geotools.geopkg.GeopkgAuditImport._call(GeopkgAuditImport.java:23)
	at org.locationtech.geogig.repository.AbstractGeoGigOp.call(AbstractGeoGigOp.java:154)
	at org.locationtech.geogig.geotools.cli.geopkg.GeopkgPull.runInternal(GeopkgPull.java:67)
	at org.locationtech.geogig.cli.AbstractCommand.run(AbstractCommand.java:68)
	at org.locationtech.geogig.cli.GeogigCLI.executeInternal(GeogigCLI.java:532)
	at org.locationtech.geogig.cli.GeogigCLI.execute(GeogigCLI.java:368)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:159)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:153)
	at org.locationtech.geogig.geotools.cli.geopkg.GeoPkgStepDefinitions.I_run_the_command_on_an_existing_interchange_GeoPackage_file_with_conflict(GeoPkgStepDefinitions.java:157)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at cucumber.runtime.Utils$1.call(Utils.java:37)
	at cucumber.runtime.Timeout.timeout(Timeout.java:13)
	at cucumber.runtime.Utils.invoke(Utils.java:31)
	at cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:38)
	at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37)
	at cucumber.runtime.Runtime.runStep(Runtime.java:299)
	at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44)
	at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39)
	at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:44)
	at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:91)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:93)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:37)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.api.junit.Cucumber.run(Cucumber.java:98)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)

  Scenario: Try to pull a GeoPackage table with a conflict                                                                            # GeoPkgPull.feature:31
    Given I have a repository                                                                                                         # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "geopkg pull --table Points --message imported" on an existing interchange GeoPackage file with a conflict # GeoPkgStepDefinitions.I_run_the_command_on_an_existing_interchange_GeoPackage_file_with_conflict(String)
    Then the response should contain "CONFLICT: Merge conflict in"                                                                    # DefaultStepDefinitions.the_response_should_contain(String)

22 Scenarios (22 passed)
71 Steps (71 passed)
0m23.139s

Tests run: 93, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 25.11 sec - in org.locationtech.geogig.geotools.cli.geopkg.RunGeoPkgFunctionalTest

Results :

Tests run: 316, Failures: 0, Errors: 0, Skipped: 0

[JENKINS] Recording test results
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ geogig-geotools ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/geotools/target/geogig-geotools-1.1-SNAPSHOT.jar
[INFO] 
[INFO] --- maven-jar-plugin:2.4:test-jar (default) @ geogig-geotools ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/geotools/target/geogig-geotools-1.1-SNAPSHOT-tests.jar
[INFO] 
[INFO] >>> maven-source-plugin:2.2.1:jar (attach-sources) > generate-sources @ geogig-geotools >>>
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig-geotools ---
[WARNING] Failed to getClass for org.apache.maven.plugin.source.SourceJarMojo
[INFO] 
[INFO] <<< maven-source-plugin:2.2.1:jar (attach-sources) < generate-sources @ geogig-geotools <<<
[INFO] 
[INFO] --- maven-source-plugin:2.2.1:jar (attach-sources) @ geogig-geotools ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/geotools/target/geogig-geotools-1.1-SNAPSHOT-sources.jar
[INFO] 
[INFO] >>> maven-source-plugin:2.2.1:test-jar (attach-sources) > generate-sources @ geogig-geotools >>>
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig-geotools ---
[WARNING] Failed to getClass for org.apache.maven.plugin.source.TestSourceJarMojo
[INFO] 
[INFO] <<< maven-source-plugin:2.2.1:test-jar (attach-sources) < generate-sources @ geogig-geotools <<<
[INFO] 
[INFO] --- maven-source-plugin:2.2.1:test-jar (attach-sources) @ geogig-geotools ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/geotools/target/geogig-geotools-1.1-SNAPSHOT-test-sources.jar
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ geogig-geotools ---
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/geotools/target/geogig-geotools-1.1-SNAPSHOT.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-geotools/1.1-SNAPSHOT/geogig-geotools-1.1-SNAPSHOT.jar
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/geotools/pom.xml to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-geotools/1.1-SNAPSHOT/geogig-geotools-1.1-SNAPSHOT.pom
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/geotools/target/geogig-geotools-1.1-SNAPSHOT-tests.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-geotools/1.1-SNAPSHOT/geogig-geotools-1.1-SNAPSHOT-tests.jar
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/geotools/target/geogig-geotools-1.1-SNAPSHOT-sources.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-geotools/1.1-SNAPSHOT/geogig-geotools-1.1-SNAPSHOT-sources.jar
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/geotools/target/geogig-geotools-1.1-SNAPSHOT-test-sources.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-geotools/1.1-SNAPSHOT/geogig-geotools-1.1-SNAPSHOT-test-sources.jar
[JENKINS] Archiving disabled
Started calculate disk usage of build
Finished Calculation of disk usage of build in 0 seconds
Started calculate disk usage of workspace
Finished Calculation of disk usage of workspace in 0 seconds
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building Web modules 1.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ web ---
[INFO] Deleting /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/target
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ web ---
[INFO] 
[INFO] --- maven-jar-plugin:2.4:test-jar (default) @ web ---
[WARNING] JAR will be empty - no content was marked for inclusion!
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/target/web-1.1-SNAPSHOT-tests.jar
[INFO] 
[INFO] >>> maven-source-plugin:2.2.1:jar (attach-sources) > generate-sources @ web >>>
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ web ---
[WARNING] Failed to getClass for org.apache.maven.plugin.source.SourceJarMojo
[INFO] 
[INFO] <<< maven-source-plugin:2.2.1:jar (attach-sources) < generate-sources @ web <<<
[INFO] 
[INFO] --- maven-source-plugin:2.2.1:jar (attach-sources) @ web ---
[INFO] 
[INFO] >>> maven-source-plugin:2.2.1:test-jar (attach-sources) > generate-sources @ web >>>
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ web ---
[WARNING] Failed to getClass for org.apache.maven.plugin.source.TestSourceJarMojo
[INFO] 
[INFO] <<< maven-source-plugin:2.2.1:test-jar (attach-sources) < generate-sources @ web <<<
[INFO] 
[INFO] --- maven-source-plugin:2.2.1:test-jar (attach-sources) @ web ---
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ web ---
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/pom.xml to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/web/1.1-SNAPSHOT/web-1.1-SNAPSHOT.pom
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/target/web-1.1-SNAPSHOT-tests.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/web/1.1-SNAPSHOT/web-1.1-SNAPSHOT-tests.jar
[JENKINS] Archiving disabled
Started calculate disk usage of build
Finished Calculation of disk usage of build in 0 seconds
Started calculate disk usage of workspace
Finished Calculation of disk usage of workspace in 0 seconds
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building GeoGig Web API 1.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ geogig-web-api ---
[INFO] Deleting /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/api/target
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig-web-api ---
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ geogig-web-api ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 8 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ geogig-web-api ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 118 source files to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/api/target/classes
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ geogig-web-api ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/api/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ geogig-web-api ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 53 source files to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/api/target/test-classes
[WARNING] /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/api/src/test/java/org/locationtech/geogig/rest/geopkg/GeoPackageExportDiffIntegrationTest.java: Some input files use unchecked or unsafe operations.
[WARNING] /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/api/src/test/java/org/locationtech/geogig/rest/geopkg/GeoPackageExportDiffIntegrationTest.java: Recompile with -Xlint:unchecked for details.
[INFO] 
[INFO] --- maven-surefire-plugin:2.17:test (default-test) @ geogig-web-api ---
[INFO] Surefire report directory: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/api/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running org.locationtech.geogig.web.api.commands.FetchTest
Running org.locationtech.geogig.web.api.commands.ConfigTest
Running org.locationtech.geogig.web.api.commands.RemoveTest
Running org.locationtech.geogig.web.api.commands.LogTest
Running org.locationtech.geogig.web.api.commands.RebuildGraphTest
Running org.locationtech.geogig.web.api.commands.StatusTest
Running org.locationtech.geogig.web.api.commands.VersionTest
Running org.locationtech.geogig.web.api.commands.AddTest
Running org.locationtech.geogig.web.api.commands.PullTest
Running org.locationtech.geogig.web.api.commands.TagTest
Running org.locationtech.geogig.web.api.commands.LsTreeTest
Running org.locationtech.geogig.web.api.commands.CheckoutTest
Running org.locationtech.geogig.web.api.commands.FeatureDiffTest
Running org.locationtech.geogig.web.api.commands.EndTransactionTest
Running org.locationtech.geogig.web.api.commands.RenameRepositoryTest
Running org.locationtech.geogig.web.api.commands.ResolveConflictTest
Running org.locationtech.geogig.web.api.commands.UpdateRefTest
Running org.locationtech.geogig.web.api.commands.RefParseTest
Running org.locationtech.geogig.web.api.commands.BlameTest
Running org.locationtech.geogig.web.api.commands.DiffTest
Running org.locationtech.geogig.web.api.commands.MergeTest
Running org.locationtech.geogig.web.api.commands.InitTest
Running org.locationtech.geogig.web.api.commands.GetCommitGraphTest
Running org.locationtech.geogig.web.api.commands.RequestDeleteRepositoryTokenTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.861 sec - in org.locationtech.geogig.web.api.commands.VersionTest
Running org.locationtech.geogig.web.api.commands.RevertFeatureTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.598 sec - in org.locationtech.geogig.web.api.commands.RequestDeleteRepositoryTokenTest
Running org.locationtech.geogig.web.api.commands.ReportMergeScenarioTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.067 sec - in org.locationtech.geogig.web.api.commands.StatusTest
Running org.locationtech.geogig.web.api.commands.BeginTransactionTest
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit7928697185736884643/testrepo/.geogig/
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.514 sec - in org.locationtech.geogig.web.api.commands.RenameRepositoryTest
Running org.locationtech.geogig.web.api.commands.CommitTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.741 sec - in org.locationtech.geogig.web.api.commands.RefParseTest
Running org.locationtech.geogig.web.api.commands.PushTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.937 sec - in org.locationtech.geogig.web.api.commands.BeginTransactionTest
Running org.locationtech.geogig.web.api.commands.BranchTest
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 9.328 sec - in org.locationtech.geogig.web.api.commands.ConfigTest
Running org.locationtech.geogig.web.api.commands.RemoteManagementTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 9.325 sec - in org.locationtech.geogig.web.api.commands.AddTest
Running org.locationtech.geogig.web.api.commands.CatTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 9.586 sec - in org.locationtech.geogig.web.api.commands.ResolveConflictTest
Running org.locationtech.geogig.web.api.commands.StatisticsTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 9.571 sec - in org.locationtech.geogig.web.api.commands.InitTest
Running org.locationtech.geogig.web.api.index.UpdateIndexTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 9.947 sec - in org.locationtech.geogig.web.api.commands.RebuildGraphTest
Running org.locationtech.geogig.web.api.index.CreateIndexTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.537 sec - in org.locationtech.geogig.web.api.commands.CommitTest
Running org.locationtech.geogig.web.api.index.ListIndexesTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 11.033 sec - in org.locationtech.geogig.web.api.commands.GetCommitGraphTest
Running org.locationtech.geogig.web.api.index.RebuildIndexTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 11.824 sec - in org.locationtech.geogig.web.api.commands.EndTransactionTest
Running org.locationtech.geogig.web.api.XMLStreamingWriterTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 12.242 sec - in org.locationtech.geogig.web.api.commands.RemoveTest
Running org.locationtech.geogig.web.api.JSONCompareTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.052 sec - in org.locationtech.geogig.web.api.JSONCompareTest
Running org.locationtech.geogig.web.api.JSONStreaminWriterTest
Tests run: 27, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.073 sec - in org.locationtech.geogig.web.api.JSONStreaminWriterTest
Running org.locationtech.geogig.rest.geopkg.GeoPackageExportDiffIntegrationTest
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 12.484 sec - in org.locationtech.geogig.web.api.commands.DiffTest
Running org.locationtech.geogig.rest.geopkg.GeoPackageImportIntegrationTest
Tests run: 27, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.99 sec - in org.locationtech.geogig.web.api.XMLStreamingWriterTest
Running org.locationtech.geogig.rest.geopkg.GeoPackageExportIntegrationTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.496 sec - in org.locationtech.geogig.web.api.commands.StatisticsTest
Running org.locationtech.geogig.rest.geotools.ExportTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.225 sec - in org.locationtech.geogig.web.api.index.RebuildIndexTest
Running org.locationtech.geogig.rest.repository.InitRequestUtilTest
Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 13.619 sec - in org.locationtech.geogig.web.api.commands.FeatureDiffTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.166 sec - in org.locationtech.geogig.rest.repository.InitRequestUtilTest
Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 11.176 sec - in org.locationtech.geogig.web.api.commands.RevertFeatureTest
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/master -> 440aa6f0b75952fb350b195246bccff66de61d32] to refs/remotes/origin/master(master)
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 15.44 sec - in org.locationtech.geogig.web.api.commands.FetchTest
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.724 sec - in org.locationtech.geogig.web.api.index.CreateIndexTest
Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 15.391 sec - in org.locationtech.geogig.web.api.commands.MergeTest
Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 11.735 sec - in org.locationtech.geogig.web.api.commands.ReportMergeScenarioTest
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 15.98 sec - in org.locationtech.geogig.web.api.commands.CheckoutTest
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 16.122 sec - in org.locationtech.geogig.web.api.commands.LsTreeTest
Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 15.91 sec - in org.locationtech.geogig.web.api.commands.BlameTest
Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.228 sec - in org.locationtech.geogig.web.api.commands.BranchTest
Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 17.329 sec - in org.locationtech.geogig.web.api.commands.LogTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.22 sec - in org.locationtech.geogig.rest.geopkg.GeoPackageExportDiffIntegrationTest
Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.228 sec - in org.locationtech.geogig.web.api.commands.CatTest
Tests run: 14, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 17.43 sec - in org.locationtech.geogig.web.api.commands.UpdateRefTest
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/branch1 -> ae88a500df05c05507e7d1f5a5dd6212d4c699ac] to refs/remotes/origin/branch1(null)
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/branch2 -> 76af8b916b2ab18eb3253f376e3c9e5cb1c8232c] to refs/remotes/origin/branch2(null)
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/master -> daaa6956e8c1cdd72fc1689be06dede2009794d1] to refs/remotes/origin/master(null)
Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.721 sec - in org.locationtech.geogig.web.api.index.ListIndexesTest
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.21 sec - in org.locationtech.geogig.rest.geotools.ExportTest
Tests run: 14, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 18.501 sec - in org.locationtech.geogig.web.api.commands.TagTest
Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 9.697 sec - in org.locationtech.geogig.web.api.commands.PushTest
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 18.926 sec - in org.locationtech.geogig.web.api.commands.PullTest
Tests run: 14, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 9.765 sec - in org.locationtech.geogig.web.api.index.UpdateIndexTest
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.538 sec - in org.locationtech.geogig.rest.geopkg.GeoPackageExportIntegrationTest
Tests run: 15, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.074 sec - in org.locationtech.geogig.rest.geopkg.GeoPackageImportIntegrationTest
Tests run: 27, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 18.719 sec - in org.locationtech.geogig.web.api.commands.RemoteManagementTest

Results :

Tests run: 462, Failures: 0, Errors: 0, Skipped: 0

[JENKINS] Recording test results
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ geogig-web-api ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/api/target/geogig-web-api-1.1-SNAPSHOT.jar
[INFO] 
[INFO] --- maven-jar-plugin:2.4:test-jar (default) @ geogig-web-api ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/api/target/geogig-web-api-1.1-SNAPSHOT-tests.jar
[INFO] 
[INFO] >>> maven-source-plugin:2.2.1:jar (attach-sources) > generate-sources @ geogig-web-api >>>
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig-web-api ---
[WARNING] Failed to getClass for org.apache.maven.plugin.source.SourceJarMojo
[INFO] 
[INFO] <<< maven-source-plugin:2.2.1:jar (attach-sources) < generate-sources @ geogig-web-api <<<
[INFO] 
[INFO] --- maven-source-plugin:2.2.1:jar (attach-sources) @ geogig-web-api ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/api/target/geogig-web-api-1.1-SNAPSHOT-sources.jar
[INFO] 
[INFO] >>> maven-source-plugin:2.2.1:test-jar (attach-sources) > generate-sources @ geogig-web-api >>>
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig-web-api ---
[WARNING] Failed to getClass for org.apache.maven.plugin.source.TestSourceJarMojo
[INFO] 
[INFO] <<< maven-source-plugin:2.2.1:test-jar (attach-sources) < generate-sources @ geogig-web-api <<<
[INFO] 
[INFO] --- maven-source-plugin:2.2.1:test-jar (attach-sources) @ geogig-web-api ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/api/target/geogig-web-api-1.1-SNAPSHOT-test-sources.jar
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ geogig-web-api ---
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/api/target/geogig-web-api-1.1-SNAPSHOT.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-web-api/1.1-SNAPSHOT/geogig-web-api-1.1-SNAPSHOT.jar
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/api/pom.xml to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-web-api/1.1-SNAPSHOT/geogig-web-api-1.1-SNAPSHOT.pom
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/api/target/geogig-web-api-1.1-SNAPSHOT-tests.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-web-api/1.1-SNAPSHOT/geogig-web-api-1.1-SNAPSHOT-tests.jar
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/api/target/geogig-web-api-1.1-SNAPSHOT-sources.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-web-api/1.1-SNAPSHOT/geogig-web-api-1.1-SNAPSHOT-sources.jar
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/api/target/geogig-web-api-1.1-SNAPSHOT-test-sources.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-web-api/1.1-SNAPSHOT/geogig-web-api-1.1-SNAPSHOT-test-sources.jar
[JENKINS] Archiving disabled
Started calculate disk usage of build
Finished Calculation of disk usage of build in 0 seconds
Started calculate disk usage of workspace
Finished Calculation of disk usage of workspace in 0 seconds
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building GeoGig WebApp 1.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ geogig-web-app ---
[INFO] Deleting /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/app/target
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig-web-app ---
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ geogig-web-app ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ geogig-web-app ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 5 source files to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/app/target/classes
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ geogig-web-app ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/app/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ geogig-web-app ---
[INFO] No sources to compile
[INFO] 
[INFO] --- maven-surefire-plugin:2.17:test (default-test) @ geogig-web-app ---
[INFO] No tests to run.
[JENKINS] Recording test results
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ geogig-web-app ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/app/target/geogig-web-app-1.1-SNAPSHOT.jar
[INFO] 
[INFO] --- maven-jar-plugin:2.4:test-jar (default) @ geogig-web-app ---
[WARNING] JAR will be empty - no content was marked for inclusion!
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/app/target/geogig-web-app-1.1-SNAPSHOT-tests.jar
[INFO] 
[INFO] >>> maven-source-plugin:2.2.1:jar (attach-sources) > generate-sources @ geogig-web-app >>>
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig-web-app ---
[WARNING] Failed to getClass for org.apache.maven.plugin.source.SourceJarMojo
[INFO] 
[INFO] <<< maven-source-plugin:2.2.1:jar (attach-sources) < generate-sources @ geogig-web-app <<<
[INFO] 
[INFO] --- maven-source-plugin:2.2.1:jar (attach-sources) @ geogig-web-app ---
[INFO] Building jar: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/app/target/geogig-web-app-1.1-SNAPSHOT-sources.jar
[INFO] 
[INFO] >>> maven-source-plugin:2.2.1:test-jar (attach-sources) > generate-sources @ geogig-web-app >>>
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig-web-app ---
[WARNING] Failed to getClass for org.apache.maven.plugin.source.TestSourceJarMojo
[INFO] 
[INFO] <<< maven-source-plugin:2.2.1:test-jar (attach-sources) < generate-sources @ geogig-web-app <<<
[INFO] 
[INFO] --- maven-source-plugin:2.2.1:test-jar (attach-sources) @ geogig-web-app ---
[INFO] No sources in project. Archive not created.
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ geogig-web-app ---
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/app/target/geogig-web-app-1.1-SNAPSHOT.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-web-app/1.1-SNAPSHOT/geogig-web-app-1.1-SNAPSHOT.jar
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/app/pom.xml to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-web-app/1.1-SNAPSHOT/geogig-web-app-1.1-SNAPSHOT.pom
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/app/target/geogig-web-app-1.1-SNAPSHOT-tests.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-web-app/1.1-SNAPSHOT/geogig-web-app-1.1-SNAPSHOT-tests.jar
[INFO] Installing /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/app/target/geogig-web-app-1.1-SNAPSHOT-sources.jar to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/.repository/org/locationtech/geogig/geogig-web-app/1.1-SNAPSHOT/geogig-web-app-1.1-SNAPSHOT-sources.jar
[JENKINS] Archiving disabled
Started calculate disk usage of build
Finished Calculation of disk usage of build in 0 seconds
Started calculate disk usage of workspace
Finished Calculation of disk usage of workspace in 0 seconds
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building GeoGig Web API Automated Functional Tests 1.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ geogig-web-api-functional-tests ---
[INFO] Deleting /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/functional/target
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ geogig-web-api-functional-tests ---
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ geogig-web-api-functional-tests ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ geogig-web-api-functional-tests ---
[INFO] No sources to compile
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ geogig-web-api-functional-tests ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 50 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ geogig-web-api-functional-tests ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 16 source files to /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/functional/target/test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.17:test (default-test) @ geogig-web-api-functional-tests ---
[INFO] Surefire report directory: /home/hudson/genie.geogig/.jenkins/jobs/geogig-1.1.x/workspace/src/web/functional/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running org.geogig.web.functional.InitFunctionalTest
Running org.geogig.web.functional.WebAPICucumberHooksTest
Running org.geogig.web.functional.RunFunctionalTest
Running org.geogig.web.functional.MissingResolversTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.074 sec - in org.geogig.web.functional.WebAPICucumberHooksTest
Feature: GeoGig Repository initialization tests specific to stand-alone server
# Copyright (c) 2017 Boundless and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Distribution License v1.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/org/documents/edl-v10.html
#
# Contributors:
# Erik Merkle (Boundless) - initial implementation
@CreateRepository @MissingBackend
Feature: Tests Init request behavior when certain repository backends backend are not available
[main] INFO org.mortbay.log - Logging to org.slf4j.impl.SimpleLogger(org.mortbay.log) via org.mortbay.log.Slf4jLog
[main] INFO org.mortbay.log - Logging to org.slf4j.impl.SimpleLogger(org.mortbay.log) via org.mortbay.log.Slf4jLog
@Commands @Add
Feature: Add
  The add command allows a user to stage features in the repository and is supported through the "/repos/{repository}/add" endpoint
  The command must be executed using the HTTP GET method
[main] INFO org.mortbay.log - Logging to org.slf4j.impl.SimpleLogger(org.mortbay.log) via org.mortbay.log.Slf4jLog

  Scenario: Init request for RocksDB repo with RocksDB backend missing                                                             # MissingResolvers.feature:13
    Given There is an empty multirepo server                                                                                       # WebAPICucumberHooks.setUpEmptyMultiRepo()
    And I have disabled backends: "Directory"                                                                                      # WebAPICucumberHooks.i_have_plugin_without_backend(String)
    When I "PUT" content-type "application/json" to "/repos/repo1/init" with                                                       # WebAPICucumberHooks.requestWithContent(String,String,String,String)
      """
      {
        "parentDirectory":"{@systemTempPath}"
      }
      """
    Then the response status should be '400'                                                                                       # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "application/xml"                                                                       # WebAPICucumberHooks.checkContentType(String)
    And the xpath "/response/success/text()" equals "false"                                                                        # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/error/text()" contains "No repository initializer found capable of handling this kind of URI: file:/" # WebAPICucumberHooks.checkXPathValueContains(String,String)

  Scenario: Init request for RocksDB repo with RocksDB backend missing, JSON response                                                    # MissingResolvers.feature:27
    Given There is an empty multirepo server                                                                                             # WebAPICucumberHooks.setUpEmptyMultiRepo()
    And I have disabled backends: "Directory"                                                                                            # WebAPICucumberHooks.i_have_plugin_without_backend(String)
    When I "PUT" content-type "application/json" to "/repos/repo1/init.json" with                                                        # WebAPICucumberHooks.requestWithContent(String,String,String,String)
      """
      {
        "parentDirectory":"{@systemTempPath}"
      }
      """
    Then the response status should be '400'                                                                                             # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "application/json"                                                                            # WebAPICucumberHooks.checkContentType(String)
    And the json object "response.success" equals "false"                                                                                # WebAPICucumberHooks.checkJSONResponse(String,String)
    And the json response "response.error" should contain "No repository initializer found capable of handling this kind of URI: file:/" # WebAPICucumberHooks.checkJSONResponseContains(String,String)

  Scenario: Init request for PostgreSQL repo with PostgreSQL backend missing                                                             # MissingResolvers.feature:41
    Given There is an empty multirepo server                                                                                             # WebAPICucumberHooks.setUpEmptyMultiRepo()
    And I have disabled backends: "PostgreSQL"                                                                                           # WebAPICucumberHooks.i_have_plugin_without_backend(String)
    When I "PUT" content-type "application/json" to "/repos/repo1/init" with                                                             # WebAPICucumberHooks.requestWithContent(String,String,String,String)
      """
      {
        "dbName":"database",
        "dbPassword":"password"
      }
      """
    Then the response status should be '400'                                                                                             # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "application/xml"                                                                             # WebAPICucumberHooks.checkContentType(String)
    And the xpath "/response/success/text()" equals "false"                                                                              # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/error/text()" contains "No repository initializer found capable of handling this kind of URI: postgresql:/" # WebAPICucumberHooks.checkXPathValueContains(String,String)

  Scenario: Init request for PostgreSQL repo with PostgreSQL backend missing, JSON response                                                    # MissingResolvers.feature:56
    Given There is an empty multirepo server                                                                                                   # WebAPICucumberHooks.setUpEmptyMultiRepo()
    And I have disabled backends: "PostgreSQL"                                                                                                 # WebAPICucumberHooks.i_have_plugin_without_backend(String)
    When I "PUT" content-type "application/json" to "/repos/repo1/init.json" with                                                              # WebAPICucumberHooks.requestWithContent(String,String,String,String)
      """
      {
        "dbName":"database",
        "dbPassword":"password"
      }
      """
    Then the response status should be '400'                                                                                                   # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "application/json"                                                                                  # WebAPICucumberHooks.checkContentType(String)
    And the json object "response.success" equals "false"                                                                                      # WebAPICucumberHooks.checkJSONResponse(String,String)
    And the json response "response.error" should contain "No repository initializer found capable of handling this kind of URI: postgresql:/" # WebAPICucumberHooks.checkJSONResponseContains(String,String)

  Scenario: Init request for RocksDB repo with PostgreSQL backend missing      # MissingResolvers.feature:71
    Given There is an empty multirepo server                                   # WebAPICucumberHooks.setUpEmptyMultiRepo()
    And I have disabled backends: "PostgreSQL"                                 # WebAPICucumberHooks.i_have_plugin_without_backend(String)
    When I "PUT" content-type "application/json" to "/repos/repo1/init" with   # WebAPICucumberHooks.requestWithContent(String,String,String,String)
      """
      {
        "parentDirectory":"{@systemTempPath}"
      }
      """
    Then the response status should be '201'                                   # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "application/xml"                   # WebAPICucumberHooks.checkContentType(String)
    And the xpath "/response/success/text()" equals "true"                     # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/repo/name/text()" equals "repo1"                  # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/repo/atom:link/@href" contains "/repos/repo1.xml" # WebAPICucumberHooks.checkXPathValueContains(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver

  Scenario: Init request for RocksDB repo with PostgreSQL backend missing, JSON response # MissingResolvers.feature:86
    Given There is an empty multirepo server                                             # WebAPICucumberHooks.setUpEmptyMultiRepo()
    And I have disabled backends: "PostgreSQL"                                           # WebAPICucumberHooks.i_have_plugin_without_backend(String)
    When I "PUT" content-type "application/json" to "/repos/repo1/init.json" with        # WebAPICucumberHooks.requestWithContent(String,String,String,String)
      """
      {
        "parentDirectory":"{@systemTempPath}"
      }
      """
    Then the response status should be '201'                                             # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "application/json"                            # WebAPICucumberHooks.checkContentType(String)
    And the json object "response.success" equals "true"                                 # WebAPICucumberHooks.checkJSONResponse(String,String)
    And the json object "response.repo.name" equals "repo1"                              # WebAPICucumberHooks.checkJSONResponse(String,String)
    And the json object "response.repo.href" ends with "/repos/repo1.json"               # WebAPICucumberHooks.checkJSONResponseEndsWith(String,String)

  Scenario: Init request for RocksDB repo with RocksDB and PostgreSQL backends missing                                             # MissingResolvers.feature:101
    Given There is an empty multirepo server                                                                                       # WebAPICucumberHooks.setUpEmptyMultiRepo()
    And I have disabled backends: "Directory, PostgreSQL"                                                                          # WebAPICucumberHooks.i_have_plugin_without_backend(String)
    When I "PUT" content-type "application/json" to "/repos/repo1/init" with                                                       # WebAPICucumberHooks.requestWithContent(String,String,String,String)
      """
      {
        "parentDirectory":"{@systemTempPath}"
      }
      """
    Then the response status should be '400'                                                                                       # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "application/xml"                                                                       # WebAPICucumberHooks.checkContentType(String)
    And the xpath "/response/success/text()" equals "false"                                                                        # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/error/text()" contains "No repository initializer found capable of handling this kind of URI: file:/" # WebAPICucumberHooks.checkXPathValueContains(String,String)

  Scenario: Init request for RocksDB repo with RocksDB and PostgreSQL backends missing, JSON response                                    # MissingResolvers.feature:115
    Given There is an empty multirepo server                                                                                             # WebAPICucumberHooks.setUpEmptyMultiRepo()
    And I have disabled backends: "Directory, PostgreSQL"                                                                                # WebAPICucumberHooks.i_have_plugin_without_backend(String)
    When I "PUT" content-type "application/json" to "/repos/repo1/init.json" with                                                        # WebAPICucumberHooks.requestWithContent(String,String,String,String)
      """
      {
        "parentDirectory":"{@systemTempPath}"
      }
      """
    Then the response status should be '400'                                                                                             # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "application/json"                                                                            # WebAPICucumberHooks.checkContentType(String)
    And the json object "response.success" equals "false"                                                                                # WebAPICucumberHooks.checkJSONResponse(String,String)
    And the json response "response.error" should contain "No repository initializer found capable of handling this kind of URI: file:/" # WebAPICucumberHooks.checkJSONResponseContains(String,String)

  Scenario: Init request for PostgreSQL repo with RocksDB and PostgreSQL backends missing                                                # MissingResolvers.feature:129
    Given There is an empty multirepo server                                                                                             # WebAPICucumberHooks.setUpEmptyMultiRepo()
    And I have disabled backends: "Directory, PostgreSQL"                                                                                # WebAPICucumberHooks.i_have_plugin_without_backend(String)
    When I "PUT" content-type "application/json" to "/repos/repo1/init" with                                                             # WebAPICucumberHooks.requestWithContent(String,String,String,String)
      """
      {
        "dbName":"database",
        "dbPassword":"password"
      }
      """
    Then the response status should be '400'                                                                                             # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "application/xml"                                                                             # WebAPICucumberHooks.checkContentType(String)
    And the xpath "/response/success/text()" equals "false"                                                                              # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/error/text()" contains "No repository initializer found capable of handling this kind of URI: postgresql:/" # WebAPICucumberHooks.checkXPathValueContains(String,String)

  Scenario: Init request for PostgreSQL repo with RocksDB and PostgreSQL backends missing, JSON response                                       # MissingResolvers.feature:144
    Given There is an empty multirepo server                                                                                                   # WebAPICucumberHooks.setUpEmptyMultiRepo()
    And I have disabled backends: "Directory, PostgreSQL"                                                                                      # WebAPICucumberHooks.i_have_plugin_without_backend(String)
    When I "PUT" content-type "application/json" to "/repos/repo1/init.json" with                                                              # WebAPICucumberHooks.requestWithContent(String,String,String,String)
      """
      {
        "dbName":"database",
        "dbPassword":"password"
      }
      """
    Then the response status should be '400'                                                                                                   # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "application/json"                                                                                  # WebAPICucumberHooks.checkContentType(String)
    And the json object "response.success" equals "false"                                                                                      # WebAPICucumberHooks.checkJSONResponse(String,String)
    And the json response "response.error" should contain "No repository initializer found capable of handling this kind of URI: postgresql:/" # WebAPICucumberHooks.checkJSONResponseContains(String,String)

10 Scenarios (10 passed)
72 Steps (72 passed)
0m2.273s

Tests run: 82, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.185 sec - in org.geogig.web.functional.MissingResolversTest
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Verify wrong HTTP method issues 405 "Method not allowed" # Add.feature:6
    Given There is an empty repository named repo1                   # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "PUT /repos/repo1/add"                               # WebAPICucumberHooks.callURL(String)
    Then the response status should be '405'                         # WebAPICucumberHooks.checkStatusCode(int)
    And the response allowed methods should be "GET"                 # WebAPICucumberHooks.checkResponseAllowedMethods(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Adding outside of a transaction issues 500 "Transaction required"      # Add.feature:12
    Given There is an empty repository named repo1                                 # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "GET /repos/repo1/add"                                             # WebAPICucumberHooks.callURL(String)
    Then the response status should be '500'                                       # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/error/text()" contains "No transaction was specified" # WebAPICucumberHooks.checkXPathValueContains(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Adding outside of a repository issues 404 "Not found" # Add.feature:18
    Given There is an empty multirepo server                      # WebAPICucumberHooks.setUpEmptyMultiRepo()
    When I call "GET /repos/repo1/add"                            # WebAPICucumberHooks.callURL(String)
    Then the response status should be '404'                      # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "text/plain"           # WebAPICucumberHooks.checkContentType(String)
    And the response body should contain "Repository not found"   # WebAPICucumberHooks.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  @CreateRepository
  Scenario: Verify trying to create a repo issues 409 "Conflict" when a repo with the same name already exists # InitConflict.feature:4
    Given There is a default multirepo server                                                                  # WebAPICucumberHooks.setUpDefaultMultiRepo()
    When I "PUT" content-type "application/json" to "/repos/repo1/init.json" with                              # WebAPICucumberHooks.requestWithContent(String,String,String,String)
      """
      {
      }
      """
    Then the response status should be '409'                                                                   # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "application/json"                                                  # WebAPICucumberHooks.checkContentType(String)
    And the json object "response.success" equals "false"                                                      # WebAPICucumberHooks.checkJSONResponse(String,String)
    And the json object "response.error" equals "Cannot run init on an already initialized repository."        # WebAPICucumberHooks.checkJSONResponse(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Adding with no path filter stages all features                                               # Add.feature:25
    Given There is an empty repository named repo1                                                       # WebAPICucumberHooks.setUpEmptyRepo(String)
    And I have a transaction as "@txId" on the "repo1" repo                                              # WebAPICucumberHooks.beginTransactionAsVariable(String,String)
    And I have unstaged "Point.1" on the "repo1" repo in the "@txId" transaction                         # WebAPICucumberHooks.I_have_unstaged(String,String,String)
    And I have unstaged "Point.2" on the "repo1" repo in the "@txId" transaction                         # WebAPICucumberHooks.I_have_unstaged(String,String,String)
    And I have unstaged "Line.1" on the "repo1" repo in the "@txId" transaction                          # WebAPICucumberHooks.I_have_unstaged(String,String,String)
    And the repo1 repository's "STAGE_HEAD" in the @txId transaction should have the following features: # WebAPICucumberHooks.verifyRepositoryContentsTx(String,String,String,DataTable)
    When I call "GET /repos/repo1/add?transactionId={@txId}"                                             # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                                             # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                                               # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/Add/text()" equals "Success"                                                # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the repo1 repository's "STAGE_HEAD" in the @txId transaction should have the following features: # WebAPICucumberHooks.verifyRepositoryContentsTx(String,String,String,DataTable)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Adding with a path filter stages specified features                                          # Add.feature:42
    Given There is an empty repository named repo1                                                       # WebAPICucumberHooks.setUpEmptyRepo(String)
    And I have a transaction as "@txId" on the "repo1" repo                                              # WebAPICucumberHooks.beginTransactionAsVariable(String,String)
    And I have unstaged "Point.1" on the "repo1" repo in the "@txId" transaction                         # WebAPICucumberHooks.I_have_unstaged(String,String,String)
    And I have unstaged "Point.2" on the "repo1" repo in the "@txId" transaction                         # WebAPICucumberHooks.I_have_unstaged(String,String,String)
    And I have unstaged "Line.1" on the "repo1" repo in the "@txId" transaction                          # WebAPICucumberHooks.I_have_unstaged(String,String,String)
    And the repo1 repository's "STAGE_HEAD" in the @txId transaction should have the following features: # WebAPICucumberHooks.verifyRepositoryContentsTx(String,String,String,DataTable)
    When I call "GET /repos/repo1/add?path=Points/Point.1&transactionId={@txId}"                         # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                                             # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                                               # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/Add/text()" equals "Success"                                                # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the repo1 repository's "STAGE_HEAD" in the @txId transaction should have the following features: # WebAPICucumberHooks.verifyRepositoryContentsTx(String,String,String,DataTable)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Adding on a conflicted path resolves the conflict                     # Add.feature:58
    Given There is an empty repository named repo1                                # WebAPICucumberHooks.setUpEmptyRepo(String)
    And I have a transaction as "@txId" on the "repo1" repo                       # WebAPICucumberHooks.beginTransactionAsVariable(String,String)
    And There are conflicts on the "repo1" repo in the @txId transaction          # WebAPICucumberHooks.There_are_conflict(String,String)
    When I call "GET /repos/repo1/add?path=Points/Point.1&transactionId={@txId}"  # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                      # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                        # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/Add/text()" equals "Success"                         # WebAPICucumberHooks.checkXPathEquals(String,String)
    And There should be no conflicts on the "repo1" repo in the @txId transaction # WebAPICucumberHooks.There_should_be_no_conflicts(String,String)
@Repo @AffectedFeatures
Feature: AffectedFeatures
  The AffectedFeatures resource provides a list of features changed in a commit and is supported through the "/repos/{repository}/repo/affectedfeatures" endpoint
  The command must be executed using the HTTP GET method
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  @CreateRepository
  Scenario: Verify trying to create a repo issues 409 "Conflict" when a repo with the same name already exists, with parentDirectory # InitConflict.feature:17
    Given There is a default multirepo server                                                                                        # WebAPICucumberHooks.setUpDefaultMultiRepo()
    When I "PUT" content-type "application/json" to "/repos/repo1/init.json" with                                                    # WebAPICucumberHooks.requestWithContent(String,String,String,String)
      """
      {
        "parentDirectory": "{@systemTempPath}"
      }
      """
    Then the response status should be '409'                                                                                         # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "application/json"                                                                        # WebAPICucumberHooks.checkContentType(String)
    And the json object "response.success" equals "false"                                                                            # WebAPICucumberHooks.checkJSONResponse(String,String)
    And the json object "response.error" equals "Cannot run init on an already initialized repository."                              # WebAPICucumberHooks.checkJSONResponse(String,String)

2 Scenarios (2 passed)
12 Steps (12 passed)
0m4.352s

Tests run: 14, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.165 sec - in org.geogig.web.functional.InitFunctionalTest
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Verify wrong HTTP method issues 405 "Method not allowed" # AffectedFeatures.feature:6
    Given There is an empty repository named repo1                   # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "PUT /repos/repo1/repo/affectedfeatures"             # WebAPICucumberHooks.callURL(String)
    Then the response status should be '405'                         # WebAPICucumberHooks.checkStatusCode(int)
    And the response allowed methods should be "GET"                 # WebAPICucumberHooks.checkResponseAllowedMethods(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: AffectedFeatures outside of a repository issues 404 "Not found" # AffectedFeatures.feature:12
    Given There is an empty multirepo server                                # WebAPICucumberHooks.setUpEmptyMultiRepo()
    When I call "GET /repos/repo1/repo/affectedfeatures"                    # WebAPICucumberHooks.callURL(String)
    Then the response status should be '404'                                # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "text/plain"                     # WebAPICucumberHooks.checkContentType(String)
    And the response body should contain "Repository not found"             # WebAPICucumberHooks.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: AffectedFeatures with no commit issues a 400 status code     # AffectedFeatures.feature:19
    Given There is an empty repository named repo1                       # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "GET /repos/repo1/repo/affectedfeatures"                 # WebAPICucumberHooks.callURL(String)
    Then the response status should be '400'                             # WebAPICucumberHooks.checkStatusCode(int)
    And the response body should contain "You must specify a commit id." # WebAPICucumberHooks.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: AffectedFeatures with an invalid commit issues a 400 status code   # AffectedFeatures.feature:25
    Given There is an empty repository named repo1                             # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "GET /repos/repo1/repo/affectedfeatures?commitId=invalid"      # WebAPICucumberHooks.callURL(String)
    Then the response status should be '400'                                   # WebAPICucumberHooks.checkStatusCode(int)
    And the response body should contain "You must specify a valid commit id." # WebAPICucumberHooks.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: AffectedFeatures lists all features changed in a commit                        # AffectedFeatures.feature:31
    Given There is a default multirepo server                                              # WebAPICucumberHooks.setUpDefaultMultiRepo()
    And I have committed "Point.1_modified" on the "repo1" repo in the "" transaction      # WebAPICucumberHooks.I_have_committed(String,String,String)
    When I call "GET /repos/repo1/repo/affectedfeatures?commitId={@ObjectId|repo1|master}" # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                               # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "text/plain"                                    # WebAPICucumberHooks.checkContentType(String)
    And the response body should contain "{@ObjectId|repo1|master~1:Points/Point.1}"       # WebAPICucumberHooks.checkResponseTextContains(String)
@Commands @Blame
Feature: Blame
  The blame command allows a user to see who last modified each attribute of a feature and is supported through the "/repos/{repository}/blame" endpoint
  The command must be executed using the HTTP GET method
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Verify wrong HTTP method issues 405 "Method not allowed" # Blame.feature:6
    Given There is an empty repository named repo1                   # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "PUT /repos/repo1/blame"                             # WebAPICucumberHooks.callURL(String)
    Then the response status should be '405'                         # WebAPICucumberHooks.checkStatusCode(int)
    And the response allowed methods should be "GET"                 # WebAPICucumberHooks.checkResponseAllowedMethods(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling blame without a feature path issues a 500 status code                         # Blame.feature:12
    Given There is an empty repository named repo1                                                # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "GET /repos/repo1/blame"                                                          # WebAPICucumberHooks.callURL(String)
    Then the response status should be '500'                                                      # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/error/text()" contains "Required parameter 'path' was not provided." # WebAPICucumberHooks.checkXPathValueContains(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling blame with an invalid commit issues a 500 status code                # Blame.feature:18
    Given There is an empty repository named repo1                                       # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "GET /repos/repo1/blame?commit=nonexistent&path=somePath"                # WebAPICucumberHooks.callURL(String)
    Then the response status should be '500'                                             # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/error/text()" contains "Could not resolve branch or commit" # WebAPICucumberHooks.checkXPathValueContains(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling blame with an invalid feature path issues a 500 status code        # Blame.feature:24
    Given There is an empty repository named repo1                                     # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "GET /repos/repo1/blame?path=nonexistent"                              # WebAPICucumberHooks.callURL(String)
    Then the response status should be '500'                                           # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/error/text()" contains "The supplied path does not exist" # WebAPICucumberHooks.checkXPathValueContains(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling blame with a tree path issues a 500 status code                                   # Blame.feature:30
    Given There is a default multirepo server                                                         # WebAPICucumberHooks.setUpDefaultMultiRepo()
    When I call "GET /repos/repo1/blame?path=Points"                                                  # WebAPICucumberHooks.callURL(String)
    Then the response status should be '500'                                                          # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/error/text()" contains "The supplied path does not resolve to a feature" # WebAPICucumberHooks.checkXPathValueContains(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling blame with a feature path shows who modified each attribute                            # Blame.feature:36
    Given There is an empty repository named repo1                                                         # WebAPICucumberHooks.setUpEmptyRepo(String)
    And There is a feature with multiple authors on the "repo1" repo                                       # WebAPICucumberHooks.There_is_a_feature_with_multiple_authors(String)
    When I call "GET /repos/repo1/blame?path=Points/Point.1"                                               # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                                               # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                                                 # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xml response should contain "/response/Blame/Attribute" 3 times                                # WebAPICucumberHooks.checkXPathCadinality(String,int)
    And there is an xpath "/response/Blame/Attribute/commit/author/name/text()" that equals "Author1"      # WebAPICucumberHooks.checkOneXPathEquals(String,String)
    And there is an xpath "/response/Blame/Attribute/commit/message/text()" that equals "Added Point.1"    # WebAPICucumberHooks.checkOneXPathEquals(String,String)
    And there is an xpath "/response/Blame/Attribute/commit/author/name/text()" that equals "Author2"      # WebAPICucumberHooks.checkOneXPathEquals(String,String)
    And there is an xpath "/response/Blame/Attribute/commit/message/text()" that equals "Modified Point.1" # WebAPICucumberHooks.checkOneXPathEquals(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling blame with a feature path and commit shows who modified each attribute # Blame.feature:48
    Given There is an empty repository named repo1                                         # WebAPICucumberHooks.setUpEmptyRepo(String)
    And There is a feature with multiple authors on the "repo1" repo                       # WebAPICucumberHooks.There_is_a_feature_with_multiple_authors(String)
    When I call "GET /repos/repo1/blame?path=Points/Point.1&commit=HEAD~1"                 # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                               # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                                 # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xml response should contain "/response/Blame/Attribute" 3 times                # WebAPICucumberHooks.checkXPathCadinality(String,int)
    And the xpath "/response/Blame/Attribute/commit/author/name/text()" equals "Author1"   # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/Blame/Attribute/commit/message/text()" equals "Added Point.1" # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the response body should not contain "Author2"                                     # WebAPICucumberHooks.checkResponseTextNotContains(String)
    And the response body should not contain "Modified Point.1"                            # WebAPICucumberHooks.checkResponseTextNotContains(String)
@Commands @Branch
Feature: Branch
  The branch command allows a user to create and list branches and is supported through the "/repos/{repository}/branch" endpoint
  The command must be executed using the HTTP GET method
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Verify wrong HTTP method issues 405 "Method not allowed" # Branch.feature:6
    Given There is an empty repository named repo1                   # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "PUT /repos/repo1/branch"                            # WebAPICucumberHooks.callURL(String)
    Then the response status should be '405'                         # WebAPICucumberHooks.checkStatusCode(int)
    And the response allowed methods should be "GET"                 # WebAPICucumberHooks.checkResponseAllowedMethods(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling branch without specifying list or a branch name issues a 500 status code # Branch.feature:12
    Given There is an empty repository named repo1                                           # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "GET /repos/repo1/branch"                                                    # WebAPICucumberHooks.callURL(String)
    Then the response status should be '500'                                                 # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/error/text()" contains "Nothing to do."                         # WebAPICucumberHooks.checkXPathValueContains(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling branch with the list parameter lists all local branches          # Branch.feature:18
    Given There is an empty repository named repo1                                   # WebAPICucumberHooks.setUpEmptyRepo(String)
    And There are multiple branches on the "repo1" repo                              # WebAPICucumberHooks.There_are_multiple_branches(String)
    When I call "GET /repos/repo1/branch?list=true"                                  # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                         # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                           # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xml response should contain "/response/Local/Branch" 3 times             # WebAPICucumberHooks.checkXPathCadinality(String,int)
    And the xml response should contain "/response/Remote/Branch" 0 times            # WebAPICucumberHooks.checkXPathCadinality(String,int)
    And there is an xpath "/response/Local/Branch/name/text()" that equals "master"  # WebAPICucumberHooks.checkOneXPathEquals(String,String)
    And there is an xpath "/response/Local/Branch/name/text()" that equals "branch1" # WebAPICucumberHooks.checkOneXPathEquals(String,String)
    And there is an xpath "/response/Local/Branch/name/text()" that equals "branch2" # WebAPICucumberHooks.checkOneXPathEquals(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling branch with the list and remotes parameters lists all local and remote branches # Branch.feature:30
    Given There is an empty repository named repo1                                                  # WebAPICucumberHooks.setUpEmptyRepo(String)
    And There are multiple branches on the "repo1" repo                                             # WebAPICucumberHooks.There_are_multiple_branches(String)
    When I call "GET /repos/repo1/branch?list=true&remotes=true"                                    # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                                        # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                                          # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xml response should contain "/response/Local/Branch" 3 times                            # WebAPICucumberHooks.checkXPathCadinality(String,int)
    And the xml response should contain "/response/Remote/Branch" 3 times                           # WebAPICucumberHooks.checkXPathCadinality(String,int)
    And there is an xpath "/response/Local/Branch/name/text()" that equals "master"                 # WebAPICucumberHooks.checkOneXPathEquals(String,String)
    And there is an xpath "/response/Local/Branch/name/text()" that equals "branch1"                # WebAPICucumberHooks.checkOneXPathEquals(String,String)
    And there is an xpath "/response/Local/Branch/name/text()" that equals "branch2"                # WebAPICucumberHooks.checkOneXPathEquals(String,String)
    And there is an xpath "/response/Remote/Branch/remoteName/text()" that equals "origin"          # WebAPICucumberHooks.checkOneXPathEquals(String,String)
    And there is an xpath "/response/Remote/Branch/name/text()" that equals "master_remote"         # WebAPICucumberHooks.checkOneXPathEquals(String,String)
    And there is an xpath "/response/Remote/Branch/name/text()" that equals "branch1_remote"        # WebAPICucumberHooks.checkOneXPathEquals(String,String)
    And there is an xpath "/response/Remote/Branch/name/text()" that equals "branch2_remote"        # WebAPICucumberHooks.checkOneXPathEquals(String,String)
    And the response body should contain "branch2_remote"                                           # WebAPICucumberHooks.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling branch with a branch name creates a new branch                          # Branch.feature:47
    Given There is a default multirepo server                                               # WebAPICucumberHooks.setUpDefaultMultiRepo()
    When I call "GET /repos/repo1/branch?branchName=new_branch"                             # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                                # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                                  # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/BranchCreated/name/text()" equals "new_branch"                 # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/BranchCreated/source/text()" equals "{@ObjectId|repo1|master}" # WebAPICucumberHooks.checkXPathEquals(String,String)
    When I call "GET /repos/repo1/repo/manifest"                                            # WebAPICucumberHooks.callURL(String)
    Then the response body should contain "new_branch"                                      # WebAPICucumberHooks.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling branch with a branch name and source creates a new branch from the source # Branch.feature:57
    Given There is a default multirepo server                                                 # WebAPICucumberHooks.setUpDefaultMultiRepo()
    When I call "GET /repos/repo1/branch?branchName=new_branch&source=branch1"                # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                                  # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                                    # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/BranchCreated/name/text()" equals "new_branch"                   # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/BranchCreated/source/text()" equals "{@ObjectId|repo1|branch1}"  # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xml response should contain "/response/BranchCreated/source" 1 times              # WebAPICucumberHooks.checkXPathCadinality(String,int)
    When I call "GET /repos/repo1/repo/manifest"                                              # WebAPICucumberHooks.callURL(String)
    Then the response body should contain "new_branch"                                        # WebAPICucumberHooks.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling branch with a branch name that already exists issues a 400 status code   # Branch.feature:68
    Given There is a default multirepo server                                                # WebAPICucumberHooks.setUpDefaultMultiRepo()
    When I call "GET /repos/repo1/branch?branchName=branch1"                                 # WebAPICucumberHooks.callURL(String)
    Then the response status should be '400'                                                 # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/error/text()" equals "A branch named 'branch1' already exists." # WebAPICucumberHooks.checkXPathEquals(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling branch with a source that does not exist issues a 400 status code                   # Branch.feature:74
    Given There is a default multirepo server                                                           # WebAPICucumberHooks.setUpDefaultMultiRepo()
    When I call "GET /repos/repo1/branch?branchName=new_branch&source=nonexistent"                      # WebAPICucumberHooks.callURL(String)
    Then the response status should be '400'                                                            # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/error/text()" equals "nonexistent does not resolve to a repository object" # WebAPICucumberHooks.checkXPathEquals(String,String)
@Commands @Cat
Feature: Cat
  The cat command allows a user to display the attributes of a repository object and is supported through the "/repos/{repository}/cat" endpoint
  The command must be executed using the HTTP GET method
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Verify wrong HTTP method issues 405 "Method not allowed" # Cat.feature:6
    Given There is an empty repository named repo1                   # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "PUT /repos/repo1/cat"                               # WebAPICucumberHooks.callURL(String)
    Then the response status should be '405'                         # WebAPICucumberHooks.checkStatusCode(int)
    And the response allowed methods should be "GET"                 # WebAPICucumberHooks.checkResponseAllowedMethods(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling cat without specifying an object id issues a 500 status code                      # Cat.feature:12
    Given There is an empty repository named repo1                                                    # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "GET /repos/repo1/cat"                                                                # WebAPICucumberHooks.callURL(String)
    Then the response status should be '500'                                                          # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/error/text()" contains "Required parameter 'objectid' was not provided." # WebAPICucumberHooks.checkXPathValueContains(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling cat with an invalid object id issues a 400 status code                        # Cat.feature:18
    Given There is an empty repository named repo1                                                # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "GET /repos/repo1/cat?objectid=notobjectid"                                       # WebAPICucumberHooks.callURL(String)
    Then the response status should be '400'                                                      # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/error/text()" contains "You must specify a valid non-null ObjectId." # WebAPICucumberHooks.checkXPathValueContains(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling cat with a nonexistent object id issues a 400 status code                                  # Cat.feature:24
    Given There is an empty repository named repo1                                                             # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "GET /repos/repo1/cat?objectid=0123456789012345678901234567890123456789"                       # WebAPICucumberHooks.callURL(String)
    Then the response status should be '400'                                                                   # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/error/text()" contains "The specified ObjectId was not found in the respository." # WebAPICucumberHooks.checkXPathValueContains(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling cat on a commit returns details of that commit                              # Cat.feature:30
    Given There is a default multirepo server                                                   # WebAPICucumberHooks.setUpDefaultMultiRepo()
    When I call "GET /repos/repo1/cat?objectid={@ObjectId|repo1|master}"                        # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                                    # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                                      # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/commit/id/text()" equals "{@ObjectId|repo1|master}"                # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/commit/parents/id/text()" equals "{@ObjectId|repo1|master~1}"      # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/commit/author/name/text()" equals "geogigUser"                     # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/commit/author/email/text()" equals "repo1_Owner@geogig.org"        # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/commit/committer/name/text()" equals "geogigUser"                  # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/commit/committer/email/text()" equals "repo1_Owner@geogig.org"     # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/commit/message/text()" contains "merge branch branch2 onto master" # WebAPICucumberHooks.checkXPathValueContains(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling cat on a feature returns details of that feature                             # Cat.feature:43
    Given There is a default multirepo server                                                    # WebAPICucumberHooks.setUpDefaultMultiRepo()
    When I call "GET /repos/repo1/cat?objectid={@ObjectId|repo1|master:Points/Point.1}"          # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                                     # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                                       # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/feature/id/text()" equals "{@ObjectId|repo1|master:Points/Point.1}" # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xml response should contain "/response/feature/attribute" 3 times                    # WebAPICucumberHooks.checkXPathCadinality(String,int)
    And the response body should contain "StringProp1_1"                                         # WebAPICucumberHooks.checkResponseTextContains(String)
    And the response body should contain "1000"                                                  # WebAPICucumberHooks.checkResponseTextContains(String)
    And the response body should contain "POINT (0 0)"                                           # WebAPICucumberHooks.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling cat on a feature tree returns details of that tree                # Cat.feature:54
    Given There is a default multirepo server                                         # WebAPICucumberHooks.setUpDefaultMultiRepo()
    When I call "GET /repos/repo1/cat?objectid={@ObjectId|repo1|master:Points}"       # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                          # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                            # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/tree/id/text()" equals "{@ObjectId|repo1|master:Points}" # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/tree/size/text()" equals "3"                             # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/tree/numtrees/text()" equals "0"                         # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xml response should contain "/response/tree/feature" 3 times              # WebAPICucumberHooks.checkXPathCadinality(String,int)
    And the response body should contain "Point.1"                                    # WebAPICucumberHooks.checkResponseTextContains(String)
    And the response body should contain "Point.2"                                    # WebAPICucumberHooks.checkResponseTextContains(String)
    And the response body should contain "Point.3"                                    # WebAPICucumberHooks.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling cat on a tag returns details of that tag                                                              # Cat.feature:67
    Given There is a default multirepo server                                                                             # WebAPICucumberHooks.setUpDefaultMultiRepo()
    And There is a tag called "tag1" on the "repo1" repo pointing to "{@ObjectId|repo1|master}" with the "My tag" message # WebAPICucumberHooks.There_is_a_tag(String,String,String,String)
    When I call "GET /repos/repo1/cat?objectid={@ObjectId|repo1|refs/tags/tag1}"                                          # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                                                              # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                                                                # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/tag/id/text()" equals "{@ObjectId|repo1|refs/tags/tag1}"                                     # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/tag/commitid/text()" equals "{@ObjectId|repo1|master}"                                       # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/tag/name/text()" equals "tag1"                                                               # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/tag/message/text()" equals "My tag"                                                          # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/tag/tagger/name/text()" equals "geogigUser"                                                  # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/tag/tagger/email/text()" equals "repo1_Owner@geogig.org"                                     # WebAPICucumberHooks.checkXPathEquals(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling cat on a feature type returns details of that feature type          # Cat.feature:80
    Given There is a default multirepo server                                           # WebAPICucumberHooks.setUpDefaultMultiRepo()
    When I call "GET /repos/repo1/cat?objectid={@PointsTypeID}"                         # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                            # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                              # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/featuretype/id/text()" equals "{@PointsTypeID}"            # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/featuretype/name/text()" equals "http://geogig.org:Points" # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xml response should contain "/response/featuretype/attribute" 3 times       # WebAPICucumberHooks.checkXPathCadinality(String,int)
    And the response body should contain "sp"                                           # WebAPICucumberHooks.checkResponseTextContains(String)
    And the response body should contain "ip"                                           # WebAPICucumberHooks.checkResponseTextContains(String)
    And the response body should contain "geom"                                         # WebAPICucumberHooks.checkResponseTextContains(String)
@Commands @Checkout
Feature: Checkout
  The checkout command allows a user to switch branches or resolve conflicts and is supported through the "/repos/{repository}/checkout" endpoint
  The command must be executed using the HTTP GET method
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Verify wrong HTTP method issues 405 "Method not allowed" # Checkout.feature:6
    Given There is an empty repository named repo1                   # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "PUT /repos/repo1/checkout"                          # WebAPICucumberHooks.callURL(String)
    Then the response status should be '405'                         # WebAPICucumberHooks.checkStatusCode(int)
    And the response allowed methods should be "GET"                 # WebAPICucumberHooks.checkResponseAllowedMethods(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Checkout outside of a transaction issues 500 "Transaction required"    # Checkout.feature:12
    Given There is an empty repository named repo1                                 # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "GET /repos/repo1/checkout"                                        # WebAPICucumberHooks.callURL(String)
    Then the response status should be '500'                                       # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/error/text()" contains "No transaction was specified" # WebAPICucumberHooks.checkXPathValueContains(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Checkout outside of a repository issues 404 "Not found" # Checkout.feature:18
    Given There is an empty multirepo server                        # WebAPICucumberHooks.setUpEmptyMultiRepo()
    When I call "GET /repos/repo1/checkout"                         # WebAPICucumberHooks.callURL(String)
    Then the response status should be '404'                        # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "text/plain"             # WebAPICucumberHooks.checkContentType(String)
    And the response body should contain "Repository not found"     # WebAPICucumberHooks.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling checkout without specifying a branch or path issues a 500 status code         # Checkout.feature:25
    Given There is an empty repository named repo1                                                # WebAPICucumberHooks.setUpEmptyRepo(String)
    And I have a transaction as "@txId" on the "repo1" repo                                       # WebAPICucumberHooks.beginTransactionAsVariable(String,String)
    When I call "GET /repos/repo1/checkout?transactionId={@txId}"                                 # WebAPICucumberHooks.callURL(String)
    Then the response status should be '500'                                                      # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/error/text()" contains "No branch or commit specified for checkout." # WebAPICucumberHooks.checkXPathValueContains(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling checkout with a branch name changes the current branch       # Checkout.feature:32
    Given There is a default multirepo server                                    # WebAPICucumberHooks.setUpDefaultMultiRepo()
    And I have a transaction as "@txId" on the "repo1" repo                      # WebAPICucumberHooks.beginTransactionAsVariable(String,String)
    When I call "GET /repos/repo1/checkout?transactionId={@txId}&branch=branch1" # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                     # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                       # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/OldTarget/text()" equals "refs/heads/master"        # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/NewTarget/text()" equals "branch1"                  # WebAPICucumberHooks.checkXPathEquals(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling checkout with a conflicted path with 'ours' will checkout 'our' version of the feature                     # Checkout.feature:41
    Given There is an empty repository named repo1                                                                             # WebAPICucumberHooks.setUpEmptyRepo(String)
    And I have a transaction as "@txId" on the "repo1" repo                                                                    # WebAPICucumberHooks.beginTransactionAsVariable(String,String)
    And There are conflicts on the "repo1" repo in the @txId transaction                                                       # WebAPICucumberHooks.There_are_conflict(String,String)
    When I call "GET /repos/repo1/checkout?transactionId={@txId}&path=Points/Point.1&ours=true"                                # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                                                                   # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                                                                     # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/Path/text()" equals "Points/Point.1"                                                              # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/Strategy/text()" equals "ours"                                                                    # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the variable "{@ObjectId|repo1|@txId|WORK_HEAD:Points/Point.1}" equals "{@ObjectId|repo1|@txId|master:Points/Point.1}" # WebAPICucumberHooks.checkVariableEquals(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling checkout with a conflicted path with 'theirs' will checkout 'their' version of the feature                  # Checkout.feature:52
    Given There is an empty repository named repo1                                                                              # WebAPICucumberHooks.setUpEmptyRepo(String)
    And I have a transaction as "@txId" on the "repo1" repo                                                                     # WebAPICucumberHooks.beginTransactionAsVariable(String,String)
    And There are conflicts on the "repo1" repo in the @txId transaction                                                        # WebAPICucumberHooks.There_are_conflict(String,String)
    When I call "GET /repos/repo1/checkout?transactionId={@txId}&path=Points/Point.1&theirs=true"                               # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                                                                    # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                                                                      # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/Path/text()" equals "Points/Point.1"                                                               # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/Strategy/text()" equals "theirs"                                                                   # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the variable "{@ObjectId|repo1|@txId|WORK_HEAD:Points/Point.1}" equals "{@ObjectId|repo1|@txId|branch1:Points/Point.1}" # WebAPICucumberHooks.checkVariableEquals(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling checkout with a conflicted path with neither 'ours' or 'theirs' issues a 500 status code                   # Checkout.feature:63
    Given There is an empty repository named repo1                                                                             # WebAPICucumberHooks.setUpEmptyRepo(String)
    And I have a transaction as "@txId" on the "repo1" repo                                                                    # WebAPICucumberHooks.beginTransactionAsVariable(String,String)
    And There are conflicts on the "repo1" repo in the @txId transaction                                                       # WebAPICucumberHooks.There_are_conflict(String,String)
    When I call "GET /repos/repo1/checkout?transactionId={@txId}&path=Points/Point.1"                                          # WebAPICucumberHooks.callURL(String)
    Then the response status should be '500'                                                                                   # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/error/text()" equals "Please specify either ours or theirs to update the feature path specified." # WebAPICucumberHooks.checkXPathEquals(String,String)
@Commands @Commit
Feature: Commit
  The commit command allows a user to commit staged changes and is supported through the "/repos/{repository}/commit" endpoint
  The command must be executed using the HTTP GET method
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Verify wrong HTTP method issues 405 "Method not allowed" # Commit.feature:6
    Given There is an empty repository named repo1                   # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "PUT /repos/repo1/commit"                            # WebAPICucumberHooks.callURL(String)
    Then the response status should be '405'                         # WebAPICucumberHooks.checkStatusCode(int)
    And the response allowed methods should be "GET"                 # WebAPICucumberHooks.checkResponseAllowedMethods(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Commit outside of a transaction issues 500 "Transaction required"      # Commit.feature:12
    Given There is an empty repository named repo1                                 # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "GET /repos/repo1/commit"                                          # WebAPICucumberHooks.callURL(String)
    Then the response status should be '500'                                       # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/error/text()" contains "No transaction was specified" # WebAPICucumberHooks.checkXPathValueContains(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Commit outside of a repository issues 404 "Not found" # Commit.feature:18
    Given There is an empty multirepo server                      # WebAPICucumberHooks.setUpEmptyMultiRepo()
    When I call "GET /repos/repo1/commit"                         # WebAPICucumberHooks.callURL(String)
    Then the response status should be '404'                      # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "text/plain"           # WebAPICucumberHooks.checkContentType(String)
    And the response body should contain "Repository not found"   # WebAPICucumberHooks.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling commit with no changes creates an empty commit                    # Commit.feature:25
    Given There is an empty repository named repo1                                    # WebAPICucumberHooks.setUpEmptyRepo(String)
    And I have a transaction as "@txId" on the "repo1" repo                           # WebAPICucumberHooks.beginTransactionAsVariable(String,String)
    When I call "GET /repos/repo1/commit?transactionId={@txId}&message=My%20Message"  # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                          # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                            # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/commitId/text()" equals "{@ObjectId|repo1|@txId|master}" # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/added/text()" equals "0"                                 # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/changed/text()" equals "0"                               # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/deleted/text()" equals "0"                               # WebAPICucumberHooks.checkXPathEquals(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling commit with unstaged features creates an empty commit             # Commit.feature:36
    Given There is an empty repository named repo1                                    # WebAPICucumberHooks.setUpEmptyRepo(String)
    And I have a transaction as "@txId" on the "repo1" repo                           # WebAPICucumberHooks.beginTransactionAsVariable(String,String)
    And I have unstaged "Point.1" on the "repo1" repo in the "@txId" transaction      # WebAPICucumberHooks.I_have_unstaged(String,String,String)
    And I have unstaged "Point.2" on the "repo1" repo in the "@txId" transaction      # WebAPICucumberHooks.I_have_unstaged(String,String,String)
    And I have unstaged "Line.1" on the "repo1" repo in the "@txId" transaction       # WebAPICucumberHooks.I_have_unstaged(String,String,String)
    When I call "GET /repos/repo1/commit?transactionId={@txId}&message=My%20Message"  # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                          # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                            # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/commitId/text()" equals "{@ObjectId|repo1|@txId|master}" # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/added/text()" equals "0"                                 # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/changed/text()" equals "0"                               # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/deleted/text()" equals "0"                               # WebAPICucumberHooks.checkXPathEquals(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling commit with staged features commits all staged features           # Commit.feature:51
    Given There is an empty repository named repo1                                    # WebAPICucumberHooks.setUpEmptyRepo(String)
    And I have a transaction as "@txId" on the "repo1" repo                           # WebAPICucumberHooks.beginTransactionAsVariable(String,String)
    And I have staged "Point.1" on the "repo1" repo in the "@txId" transaction        # WebAPICucumberHooks.I_have_staged(String,String,String)
    And I have staged "Point.2" on the "repo1" repo in the "@txId" transaction        # WebAPICucumberHooks.I_have_staged(String,String,String)
    And I have staged "Line.1" on the "repo1" repo in the "@txId" transaction         # WebAPICucumberHooks.I_have_staged(String,String,String)
    When I call "GET /repos/repo1/commit?transactionId={@txId}&message=My%20Message"  # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                          # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                            # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/commitId/text()" equals "{@ObjectId|repo1|@txId|master}" # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/added/text()" equals "3"                                 # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/changed/text()" equals "0"                               # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/deleted/text()" equals "0"                               # WebAPICucumberHooks.checkXPathEquals(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: I should be able supply commit with a different author name and commit message                                               # Commit.feature:65
    Given There is an empty repository named repo1                                                                                       # WebAPICucumberHooks.setUpEmptyRepo(String)
    And I have a transaction as "@txId" on the "repo1" repo                                                                              # WebAPICucumberHooks.beginTransactionAsVariable(String,String)
    And I have staged "Point.1" on the "repo1" repo in the "@txId" transaction                                                           # WebAPICucumberHooks.I_have_staged(String,String,String)
    And I have staged "Point.2" on the "repo1" repo in the "@txId" transaction                                                           # WebAPICucumberHooks.I_have_staged(String,String,String)
    And I have staged "Line.1" on the "repo1" repo in the "@txId" transaction                                                            # WebAPICucumberHooks.I_have_staged(String,String,String)
    When I call "GET /repos/repo1/commit?transactionId={@txId}&message=My%20Message&authorName=myAuthor&authorEmail=myAuthor@geogig.org" # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                                                                             # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                                                                               # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/commitId/text()" equals "{@ObjectId|repo1|@txId|master}"                                                    # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/added/text()" equals "3"                                                                                    # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/changed/text()" equals "0"                                                                                  # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/deleted/text()" equals "0"                                                                                  # WebAPICucumberHooks.checkXPathEquals(String,String)
    When I call "GET /repos/repo1/cat?objectid={@ObjectId|repo1|@txId|master}"                                                           # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                                                                             # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                                                                               # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/commit/author/name/text()" equals "myAuthor"                                                                # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/commit/author/email/text()" equals "myAuthor@geogig.org"                                                    # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/commit/message/text()" contains "My Message"                                                                # WebAPICucumberHooks.checkXPathValueContains(String,String)
@Commands @Config
Feature: Config
  The config command allows a user to get and set config values and is supported through the "/repos/{repository}/config" endpoint
  The command must be executed using the HTTP GET or POST methods
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Verify wrong HTTP method issues 405 "Method not allowed" # Config.feature:6
    Given There is an empty repository named repo1                   # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "DELETE /repos/repo1/config"                         # WebAPICucumberHooks.callURL(String)
    Then the response status should be '405'                         # WebAPICucumberHooks.checkStatusCode(int)
    And the response allowed methods should be "GET,POST"            # WebAPICucumberHooks.checkResponseAllowedMethods(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Config outside of a repository issues 404 "Not found" # Config.feature:12
    Given There is an empty multirepo server                      # WebAPICucumberHooks.setUpEmptyMultiRepo()
    When I call "GET /repos/repo1/config"                         # WebAPICucumberHooks.callURL(String)
    Then the response status should be '404'                      # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "text/plain"           # WebAPICucumberHooks.checkContentType(String)
    And the response body should contain "Repository not found"   # WebAPICucumberHooks.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Config POST without specifying a key issues a 400 status code                                 # Config.feature:19
    Given There is an empty repository named repo1                                                        # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "POST /repos/repo1/config"                                                                # WebAPICucumberHooks.callURL(String)
    Then the response status should be '400'                                                              # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/error/text()" contains "You must specify the key when setting a config key." # WebAPICucumberHooks.checkXPathValueContains(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Config POST without specifying a value issues a 400 status code                                 # Config.feature:25
    Given There is an empty repository named repo1                                                          # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "POST /repos/repo1/config?name=user.name"                                                   # WebAPICucumberHooks.callURL(String)
    Then the response status should be '400'                                                                # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/error/text()" contains "You must specify the value when setting a config key." # WebAPICucumberHooks.checkXPathValueContains(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Config POST with a name and value in the url sets the config entry and GET retrieves the set value # Config.feature:31
    Given There is an empty repository named repo1                                                             # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "POST /repos/repo1/config?name=user.name&value=myUser"                                         # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                                                   # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                                                     # WebAPICucumberHooks.checkXPathEquals(String,String)
    When I call "GET /repos/repo1/config?name=user.name"                                                       # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                                                   # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/value/text()" equals "myUser"                                                     # WebAPICucumberHooks.checkXPathEquals(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Config POST with a name and value as json sets the config entry and GET retrieves the set value # Config.feature:40
    Given There is an empty repository named repo1                                                          # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I "POST" content-type "application/json" to "/repos/repo1/config" with                             # WebAPICucumberHooks.requestWithContent(String,String,String,String)
      """
      {
        "name":"user.name",
        "value":"myUser"
      }
      """
    Then the response status should be '200'                                                                # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                                                  # WebAPICucumberHooks.checkXPathEquals(String,String)
    When I call "GET /repos/repo1/config?name=user.name"                                                    # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                                                # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/value/text()" equals "myUser"                                                  # WebAPICucumberHooks.checkXPathEquals(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Config POST with a name and value as xml sets the config entry and GET retrieves the set value # Config.feature:55
    Given There is an empty repository named repo1                                                         # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I "POST" content-type "application/xml" to "/repos/repo1/config" with                             # WebAPICucumberHooks.requestWithContent(String,String,String,String)
      """
      <params>
        <name>user.name</name>
        <value>myUser</value>
      </params>
      """
    Then the response status should be '200'                                                               # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                                                 # WebAPICucumberHooks.checkXPathEquals(String,String)
    When I call "GET /repos/repo1/config?name=user.name"                                                   # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                                               # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/value/text()" equals "myUser"                                                 # WebAPICucumberHooks.checkXPathEquals(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Config GET without a name will list all config entries           # Config.feature:70
    Given There is an empty repository named repo1                           # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "POST /repos/repo1/config?name=config.value1&value=myValue1" # WebAPICucumberHooks.callURL(String)
    And I call "POST /repos/repo1/config?name=config.value2&value=myValue2"  # WebAPICucumberHooks.callURL(String)
    When I call "GET /repos/repo1/config"                                    # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                 # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                   # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the response body should contain "config.value1"                     # WebAPICucumberHooks.checkResponseTextContains(String)
    And the response body should contain "myValue1"                          # WebAPICucumberHooks.checkResponseTextContains(String)
    And the response body should contain "config.value2"                     # WebAPICucumberHooks.checkResponseTextContains(String)
    And the response body should contain "myValue2"                          # WebAPICucumberHooks.checkResponseTextContains(String)
@RepositoryManagement @CreateRepository
Feature: Create Repository
  Creating a repository on the server is done through the "/repos/{repository}/init" command
  The command must be executed using the HTTP PUT method
  If a repository with the provided name already exists, then a 409 "Conflict" error code shall be returned
  If the command succeeds, the response status code is 201 "Created"

  Scenario: Verify wrong HTTP method issues 405 "Method not allowed" # CreateRepository.feature:8
    Given There is an empty multirepo server                         # WebAPICucumberHooks.setUpEmptyMultiRepo()
    When I call "GET /repos/repo1/init"                              # WebAPICucumberHooks.callURL(String)
    Then the response status should be '405'                         # WebAPICucumberHooks.checkStatusCode(int)
    And the response allowed methods should be "PUT"                 # WebAPICucumberHooks.checkResponseAllowedMethods(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit7455286156495823006/extraRepo/.geogig/
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository extraRepo using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  @FileRepository
  Scenario: Verify trying to create an existing repo issues 409 "Conflict"                                # CreateRepository.feature:15
    Given There is a default multirepo server                                                             # WebAPICucumberHooks.setUpDefaultMultiRepo()
    And I have "extraRepo" that is not managed                                                            # WebAPICucumberHooks.setupExtraUnMangedRepo(String)
    When I "PUT" content-type "application/json" to "/repos/extraRepo/init" with                          # WebAPICucumberHooks.requestWithContent(String,String,String,String)
      """
      {
        "parentDirectory":"{@systemTempPath}"
      }
      """
    Then the response status should be '409'                                                              # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "application/xml"                                              # WebAPICucumberHooks.checkContentType(String)
    And the xpath "/response/success/text()" equals "false"                                               # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/error/text()" equals "Cannot run init on an already initialized repository." # WebAPICucumberHooks.checkXPathEquals(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Create repository on empty server                                  # CreateRepository.feature:29
    Given There is an empty multirepo server                                   # WebAPICucumberHooks.setUpEmptyMultiRepo()
    When I call "PUT /repos/repo1/init"                                        # WebAPICucumberHooks.callURL(String)
    Then the response status should be '201'                                   # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "application/xml"                   # WebAPICucumberHooks.checkContentType(String)
    And the xpath "/response/success/text()" equals "true"                     # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/repo/name/text()" equals "repo1"                  # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/repo/atom:link/@href" contains "/repos/repo1.xml" # WebAPICucumberHooks.checkXPathValueContains(String,String)

  Scenario: Verify wrong HTTP method issues 405 "Method not allowed", JSON requested response # CreateRepository.feature:38
    Given There is an empty multirepo server                                                  # WebAPICucumberHooks.setUpEmptyMultiRepo()
    When I call "GET /repos/repo1/init.json"                                                  # WebAPICucumberHooks.callURL(String)
    Then the response status should be '405'                                                  # WebAPICucumberHooks.checkStatusCode(int)
    And the response allowed methods should be "PUT"                                          # WebAPICucumberHooks.checkResponseAllowedMethods(String)
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit2729340510195074612/0f9fde4d65077e25/.geogig/
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository extraRepo using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  @FileRepository
  Scenario: Verify trying to create an existing repo issues 409 "Conflict", JSON requested response     # CreateRepository.feature:45
    Given There is a default multirepo server                                                           # WebAPICucumberHooks.setUpDefaultMultiRepo()
    And I have "extraRepo" that is not managed                                                          # WebAPICucumberHooks.setupExtraUnMangedRepo(String)
    When I "PUT" content-type "application/json" to "/repos/extraRepo/init.json" with                   # WebAPICucumberHooks.requestWithContent(String,String,String,String)
      """
      {
        "parentDirectory":"{@systemTempPath}"
      }
      """
    Then the response status should be '409'                                                            # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "application/json"                                           # WebAPICucumberHooks.checkContentType(String)
    And the json object "response.success" equals "false"                                               # WebAPICucumberHooks.checkJSONResponse(String,String)
    And the json object "response.error" equals "Cannot run init on an already initialized repository." # WebAPICucumberHooks.checkJSONResponse(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit2637653784492548329/extraRepo/.geogig/
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Create repository on empty server, JSON requested response     # CreateRepository.feature:59
    Given There is an empty multirepo server                               # WebAPICucumberHooks.setUpEmptyMultiRepo()
    When I call "PUT /repos/repo1/init.json"                               # WebAPICucumberHooks.callURL(String)
    Then the response status should be '201'                               # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "application/json"              # WebAPICucumberHooks.checkContentType(String)
    And the json object "response.success" equals "true"                   # WebAPICucumberHooks.checkJSONResponse(String,String)
    And the json object "response.repo.name" equals "repo1"                # WebAPICucumberHooks.checkJSONResponse(String,String)
    And the json object "response.repo.href" ends with "/repos/repo1.json" # WebAPICucumberHooks.checkJSONResponseEndsWith(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  @FileRepository
  Scenario: Verify JSON fomratted response of Init with JSON formatted request parameters          # CreateRepository.feature:69
    Given There is an empty multirepo server                                                       # WebAPICucumberHooks.setUpEmptyMultiRepo()
    When I call "PUT /repos/repo1/init.json" with the System Temp Directory as the parentDirectory # WebAPICucumberHooks.callURLWithJSONPaylod(String)
    Then the response status should be '201'                                                       # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "application/json"                                      # WebAPICucumberHooks.checkContentType(String)
    And the json object "response.success" equals "true"                                           # WebAPICucumberHooks.checkJSONResponse(String,String)
    And the json object "response.repo.name" equals "repo1"                                        # WebAPICucumberHooks.checkJSONResponse(String,String)
    And the json object "response.repo.href" ends with "/repos/repo1.json"                         # WebAPICucumberHooks.checkJSONResponseEndsWith(String,String)
    And the parent directory of repository "repo1" equals System Temp directory                    # WebAPICucumberHooks.checkRepositoryParent(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  @FileRepository
  Scenario: Verify XML fomratted response of Init with JSON formatted request parameters      # CreateRepository.feature:80
    Given There is an empty multirepo server                                                  # WebAPICucumberHooks.setUpEmptyMultiRepo()
    When I call "PUT /repos/repo1/init" with the System Temp Directory as the parentDirectory # WebAPICucumberHooks.callURLWithJSONPaylod(String)
    Then the response status should be '201'                                                  # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "application/xml"                                  # WebAPICucumberHooks.checkContentType(String)
    And the xpath "/response/success/text()" equals "true"                                    # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/repo/name/text()" equals "repo1"                                 # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/repo/atom:link/@href" contains "/repos/repo1.xml"                # WebAPICucumberHooks.checkXPathValueContains(String,String)
    And the parent directory of repository "repo1" equals System Temp directory               # WebAPICucumberHooks.checkRepositoryParent(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  @FileRepository
  Scenario: Verify JSON fomratted response of Init with URL Form encoded request parameters                 # CreateRepository.feature:91
    Given There is an empty multirepo server                                                                # WebAPICucumberHooks.setUpEmptyMultiRepo()
    When I call "PUT /repos/repo1/init.json" with a URL encoded Form containing a parentDirectory parameter # WebAPICucumberHooks.callURLWithFormPaylod(String)
    Then the response status should be '201'                                                                # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "application/json"                                               # WebAPICucumberHooks.checkContentType(String)
    And the json object "response.success" equals "true"                                                    # WebAPICucumberHooks.checkJSONResponse(String,String)
    And the json object "response.repo.name" equals "repo1"                                                 # WebAPICucumberHooks.checkJSONResponse(String,String)
    And the json object "response.repo.href" ends with "/repos/repo1.json"                                  # WebAPICucumberHooks.checkJSONResponseEndsWith(String,String)
    And the parent directory of repository "repo1" equals System Temp directory                             # WebAPICucumberHooks.checkRepositoryParent(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit540984167404245937/f9431863e7b0ec89/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit2384252264389754937/57bac1ec38d9e49f/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit1737307431032080666/05b876e7a9674512/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit1737307431032080666/05b876e7a9674512/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit5338345480320058256/ee1a33d333c20c1c/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit5338345480320058256/ee1a33d333c20c1c/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit2312151745115158808/4d4a8855240f688b/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit540984167404245937/f9431863e7b0ec89/.geogig/
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  @FileRepository
  Scenario: Verify XML fomratted response of Init with URL Form encoded request parameters             # CreateRepository.feature:102
    Given There is an empty multirepo server                                                           # WebAPICucumberHooks.setUpEmptyMultiRepo()
    When I call "PUT /repos/repo1/init" with a URL encoded Form containing a parentDirectory parameter # WebAPICucumberHooks.callURLWithFormPaylod(String)
    Then the response status should be '201'                                                           # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "application/xml"                                           # WebAPICucumberHooks.checkContentType(String)
    And the xpath "/response/success/text()" equals "true"                                             # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/repo/name/text()" equals "repo1"                                          # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/repo/atom:link/@href" contains "/repos/repo1.xml"                         # WebAPICucumberHooks.checkXPathValueContains(String,String)
    And the parent directory of repository "repo1" equals System Temp directory                        # WebAPICucumberHooks.checkRepositoryParent(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  @FileRepository
  Scenario: Verify JSON fomratted response of Init with JSON formatted request parameters and Author          # CreateRepository.feature:113
    Given There is an empty multirepo server                                                                  # WebAPICucumberHooks.setUpEmptyMultiRepo()
    When I call "PUT /repos/repo1/init.json" with Author and the System Temp Directory as the parentDirectory # WebAPICucumberHooks.callURLWithJSONPayloadAndAuthor(String)
    Then the response status should be '201'                                                                  # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "application/json"                                                 # WebAPICucumberHooks.checkContentType(String)
    And the json object "response.success" equals "true"                                                      # WebAPICucumberHooks.checkJSONResponse(String,String)
    And the json object "response.repo.name" equals "repo1"                                                   # WebAPICucumberHooks.checkJSONResponse(String,String)
    And the json object "response.repo.href" ends with "/repos/repo1.json"                                    # WebAPICucumberHooks.checkJSONResponseEndsWith(String,String)
    And the parent directory of repository "repo1" equals System Temp directory                               # WebAPICucumberHooks.checkRepositoryParent(String)
    And the Author config of repository "repo1" is set                                                        # WebAPICucumberHooks.checkAuthorConfig(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  @FileRepository
  Scenario: Verify XML fomratted response of Init with JSON formatted request parameters and Author      # CreateRepository.feature:125
    Given There is an empty multirepo server                                                             # WebAPICucumberHooks.setUpEmptyMultiRepo()
    When I call "PUT /repos/repo1/init" with Author and the System Temp Directory as the parentDirectory # WebAPICucumberHooks.callURLWithJSONPayloadAndAuthor(String)
    Then the response status should be '201'                                                             # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "application/xml"                                             # WebAPICucumberHooks.checkContentType(String)
    And the xpath "/response/success/text()" equals "true"                                               # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/repo/name/text()" equals "repo1"                                            # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/repo/atom:link/@href" contains "/repos/repo1.xml"                           # WebAPICucumberHooks.checkXPathValueContains(String,String)
    And the parent directory of repository "repo1" equals System Temp directory                          # WebAPICucumberHooks.checkRepositoryParent(String)
    And the Author config of repository "repo1" is set                                                   # WebAPICucumberHooks.checkAuthorConfig(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit4867243842636871819/190f48070a8c7c70/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit4867243842636871819/190f48070a8c7c70/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit7532087255478578167/06dc16261ad3c2b1/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit7532087255478578167/06dc16261ad3c2b1/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit9166121131678053271/15ea1a40b3f90e06/.geogig/
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  @FileRepository
  Scenario: Verify JSON fomratted response of Init with URL Form encoded request parameters and Author                 # CreateRepository.feature:137
    Given There is an empty multirepo server                                                                           # WebAPICucumberHooks.setUpEmptyMultiRepo()
    When I call "PUT /repos/repo1/init.json" with a URL encoded Form containing a parentDirectory parameter and Author # WebAPICucumberHooks.callURLWithFormPaylodWithAuthor(String)
    Then the response status should be '201'                                                                           # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "application/json"                                                          # WebAPICucumberHooks.checkContentType(String)
    And the json object "response.success" equals "true"                                                               # WebAPICucumberHooks.checkJSONResponse(String,String)
    And the json object "response.repo.name" equals "repo1"                                                            # WebAPICucumberHooks.checkJSONResponse(String,String)
    And the json object "response.repo.href" ends with "/repos/repo1.json"                                             # WebAPICucumberHooks.checkJSONResponseEndsWith(String,String)
    And the parent directory of repository "repo1" equals System Temp directory                                        # WebAPICucumberHooks.checkRepositoryParent(String)
    And the Author config of repository "repo1" is set                                                                 # WebAPICucumberHooks.checkAuthorConfig(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  @FileRepository
  Scenario: Verify XML fomratted response of Init with URL Form encoded request parameters and Author             # CreateRepository.feature:149
    Given There is an empty multirepo server                                                                      # WebAPICucumberHooks.setUpEmptyMultiRepo()
    When I call "PUT /repos/repo1/init" with a URL encoded Form containing a parentDirectory parameter and Author # WebAPICucumberHooks.callURLWithFormPaylodWithAuthor(String)
    Then the response status should be '201'                                                                      # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "application/xml"                                                      # WebAPICucumberHooks.checkContentType(String)
    And the xpath "/response/success/text()" equals "true"                                                        # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/repo/name/text()" equals "repo1"                                                     # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xpath "/response/repo/atom:link/@href" contains "/repos/repo1.xml"                                    # WebAPICucumberHooks.checkXPathValueContains(String,String)
    And the parent directory of repository "repo1" equals System Temp directory                                   # WebAPICucumberHooks.checkRepositoryParent(String)
    And the Author config of repository "repo1" is set                                                            # WebAPICucumberHooks.checkAuthorConfig(String)

  Scenario: Verify Init with unsupported MediaType does not create a repository with defualt settings # CreateRepository.feature:160
    Given There is an empty multirepo server                                                          # WebAPICucumberHooks.setUpEmptyMultiRepo()
    When I call "PUT /repos/repo1/init.json" with an unsupported media type                           # WebAPICucumberHooks.callURLWithUnsupportedMediaType(String)
    Then the response status should be '400'                                                          # WebAPICucumberHooks.checkStatusCode(int)
    And there should be no "repo1" created                                                            # WebAPICucumberHooks.checkRepoNotInitialized(String)
@RepositoryManagement @DeleteRepository
Feature: Delete Repository
  Deleting a repository through the web API is a non reversible operation.
  * In order to avoid accidental deletion of repositories, it is a two-step process:
  * first a GET call to "/repos/{repository}/delete" returns an automatically generated token with the format:
  * <response><success>true</success><token>d713df9c703733e2</token></response>.
  * To actually delete the repository, a HTTP DELETE method call to "/repos/{repository}?token={token}" must be issued, with a valid and non expired token.
  * An attempt to delete a non existent repository, results in a 404 "Not found" error code.
  * A successfull DELETE operation returns a 200 status code,
  * the XML response body is <deleted>true</deleted>, the JSON response body is '{"deleted":true}'
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit7406041750529254545/76253de1a8db24b5/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit7406041750529254545/76253de1a8db24b5/.geogig/
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Requesting delete token with wrong HTTP Method issues 405 "Method not allowed" # DeleteRepository.feature:12
    Given There is a default multirepo server                                              # WebAPICucumberHooks.setUpDefaultMultiRepo()
    When I call "POST /repos/repo1/delete"                                                 # WebAPICucumberHooks.callURL(String)
    Then the response status should be '405'                                               # WebAPICucumberHooks.checkStatusCode(int)
    And the response allowed methods should be "GET"                                       # WebAPICucumberHooks.checkResponseAllowedMethods(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository nonExistentRepo using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Requesting a delete token for a non existent repository issues 404 "Not found" # DeleteRepository.feature:18
    Given There is a default multirepo server                                              # WebAPICucumberHooks.setUpDefaultMultiRepo()
    When I call "GET /repos/nonExistentRepo/delete"                                        # WebAPICucumberHooks.callURL(String)
    Then the response status should be '404'                                               # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "text/plain"                                    # WebAPICucumberHooks.checkContentType(String)
    And the response body should contain "Repository not found"                            # WebAPICucumberHooks.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository nonExistentRepo using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Try deleting a non existent repository issues 404 "Not found" # DeleteRepository.feature:25
    Given There is a default multirepo server                             # WebAPICucumberHooks.setUpDefaultMultiRepo()
    When I call "DELETE /repos/nonExistentRepo?token=someToken"           # WebAPICucumberHooks.callURL(String)
    Then the response status should be '404'                              # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "text/plain"                   # WebAPICucumberHooks.checkContentType(String)
    And the response body should contain "error:No repository to delete." # WebAPICucumberHooks.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Succesfully delete a repository                       # DeleteRepository.feature:32
    Given There is a default multirepo server                     # WebAPICucumberHooks.setUpDefaultMultiRepo()
    When I call "GET /repos/repo2/delete"                         # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                      # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "application/xml"      # WebAPICucumberHooks.checkContentType(String)
    And the xpath "/response/success/text()" equals "true"        # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xml response should contain "/response/token"         # WebAPICucumberHooks.checkResponseContainsXPath(String)
    Then I save the response "/response/token/text()" as "@token" # WebAPICucumberHooks.saveResponseXPathValueAsVariable(String,String)
    When I call "DELETE /repos/repo2?token={@token}"              # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                      # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "application/xml"      # WebAPICucumberHooks.checkContentType(String)
    And the xpath "/deleted/text()" equals "repo2"                # WebAPICucumberHooks.checkXPathEquals(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Requesting delete token with wrong HTTP Method issues 405 "Method not allowed", JSON requested response # DeleteRepository.feature:45
    Given There is a default multirepo server                                                                       # WebAPICucumberHooks.setUpDefaultMultiRepo()
    When I call "POST /repos/repo1/delete.json"                                                                     # WebAPICucumberHooks.callURL(String)
    Then the response status should be '405'                                                                        # WebAPICucumberHooks.checkStatusCode(int)
    And the response allowed methods should be "GET"                                                                # WebAPICucumberHooks.checkResponseAllowedMethods(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository nonExistentRepo using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit2384252264389754937/57bac1ec38d9e49f/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit9166121131678053271/15ea1a40b3f90e06/.geogig/
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Requesting a delete token for a non existent repository issues 404 "Not found", JSON requested response # DeleteRepository.feature:51
    Given There is a default multirepo server                                                                       # WebAPICucumberHooks.setUpDefaultMultiRepo()
    When I call "GET /repos/nonExistentRepo/delete.json"                                                            # WebAPICucumberHooks.callURL(String)
    Then the response status should be '404'                                                                        # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "text/plain"                                                             # WebAPICucumberHooks.checkContentType(String)
    And the response body should contain "Repository not found"                                                     # WebAPICucumberHooks.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository nonExistentRepo using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Try deleting a non existent repository issues 404 "Not found", JSON requested response # DeleteRepository.feature:58
    Given There is a default multirepo server                                                      # WebAPICucumberHooks.setUpDefaultMultiRepo()
    When I call "DELETE /repos/nonExistentRepo.json?token=someToken"                               # WebAPICucumberHooks.callURL(String)
    Then the response status should be '404'                                                       # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "text/plain"                                            # WebAPICucumberHooks.checkContentType(String)
    And the response body should contain "error:No repository to delete."                          # WebAPICucumberHooks.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Succesfully delete a repository, JSON requested response # DeleteRepository.feature:65
    Given There is a default multirepo server                        # WebAPICucumberHooks.setUpDefaultMultiRepo()
    When I call "GET /repos/repo2/delete.json"                       # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                         # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "application/json"        # WebAPICucumberHooks.checkContentType(String)
    And the json object "response.success" equals "true"             # WebAPICucumberHooks.checkJSONResponse(String,String)
    And the json response "response" should contain "token"          # WebAPICucumberHooks.checkJSONResponseContains(String,String)
    Then I save the json response "response.token" as "@token"       # WebAPICucumberHooks.saveResponseJSONValueAsVariable(String,String)
    When I call "DELETE /repos/repo2.json?token={@token}"            # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                         # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "application/json"        # WebAPICucumberHooks.checkContentType(String)
    And the json object "deleted" equals "repo2"                     # WebAPICucumberHooks.checkJSONResponse(String,String)
@Repo @Depth
Feature: Depth
  The Depth resource returns the depth of the repository from a specific commit and is supported through the "/repos/{repository}/repo/getdepth" endpoint
  The command must be executed using the HTTP GET method
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Verify wrong HTTP method issues 405 "Method not allowed" # Depth.feature:6
    Given There is an empty repository named repo1                   # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "PUT /repos/repo1/repo/getdepth"                     # WebAPICucumberHooks.callURL(String)
    Then the response status should be '405'                         # WebAPICucumberHooks.checkStatusCode(int)
    And the response allowed methods should be "GET"                 # WebAPICucumberHooks.checkResponseAllowedMethods(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Depth outside of a repository issues 404 "Not found" # Depth.feature:12
    Given There is an empty multirepo server                     # WebAPICucumberHooks.setUpEmptyMultiRepo()
    When I call "GET /repos/repo1/repo/getdepth"                 # WebAPICucumberHooks.callURL(String)
    Then the response status should be '404'                     # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "text/plain"          # WebAPICucumberHooks.checkContentType(String)
    And the response body should contain "Repository not found"  # WebAPICucumberHooks.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Depth with an invalid commit issues a 400 status code              # Depth.feature:19
    Given There is a default multirepo server                                  # WebAPICucumberHooks.setUpDefaultMultiRepo()
    When I call "GET /repos/repo1/repo/getdepth?commitId=invalid"              # WebAPICucumberHooks.callURL(String)
    Then the response status should be '400'                                   # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "text/plain"                        # WebAPICucumberHooks.checkContentType(String)
    And the response body should contain "You must specify a valid commit id." # WebAPICucumberHooks.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Depth with no commit returns no depth for a non-shallow repository # Depth.feature:26
    Given There is a default multirepo server                                  # WebAPICucumberHooks.setUpDefaultMultiRepo()
    When I call "GET /repos/repo1/repo/getdepth"                               # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                   # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "text/plain"                        # WebAPICucumberHooks.checkContentType(String)
    And the response body should contain ""                                    # WebAPICucumberHooks.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository shallow using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository full using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  @ShallowDepth
  Scenario: Depth with no commit returns the depth of a shallow repository # Depth.feature:34
    Given There is a default multirepo server with a shallow clone         # WebAPICucumberHooks.setUpDefaultMultiRepoWithShallowClone()
    When I call "GET /repos/shallow/repo/getdepth"                         # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                               # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "text/plain"                    # WebAPICucumberHooks.checkContentType(String)
    And the response body should contain "1"                               # WebAPICucumberHooks.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Depth with a commit returns the number of ancestors that commit has     # Depth.feature:41
    Given There is a default multirepo server                                       # WebAPICucumberHooks.setUpDefaultMultiRepo()
    When I call "GET /repos/repo1/repo/getdepth?commitId={@ObjectId|repo1|branch1}" # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                        # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "text/plain"                             # WebAPICucumberHooks.checkContentType(String)
    And the response body should contain "1"                                        # WebAPICucumberHooks.checkResponseTextContains(String)
    When I call "GET /repos/repo1/repo/getdepth?commitId={@ObjectId|repo1|master}"  # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                        # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "text/plain"                             # WebAPICucumberHooks.checkContentType(String)
    And the response body should contain "2"                                        # WebAPICucumberHooks.checkResponseTextContains(String)
@Commands @Diff
Feature: Diff
  The diff command allows a user to see the difference between two commits and is supported through the "/repos/{repository}/config" endpoint
  The command must be executed using the HTTP GET method
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Verify wrong HTTP method issues 405 "Method not allowed" # Diff.feature:6
    Given There is an empty repository named repo1                   # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "PUT /repos/repo1/diff"                              # WebAPICucumberHooks.callURL(String)
    Then the response status should be '405'                         # WebAPICucumberHooks.checkStatusCode(int)
    And the response allowed methods should be "GET"                 # WebAPICucumberHooks.checkResponseAllowedMethods(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Diff outside of a repository issues 404 "Not found" # Diff.feature:12
    Given There is an empty multirepo server                    # WebAPICucumberHooks.setUpEmptyMultiRepo()
    When I call "GET /repos/repo1/diff?oldRefSpec=someRefSpec"  # WebAPICucumberHooks.callURL(String)
    Then the response status should be '404'                    # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "text/plain"         # WebAPICucumberHooks.checkContentType(String)
    And the response body should contain "Repository not found" # WebAPICucumberHooks.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling diff without specifying an old ref spec issues a 500 status code                    # Diff.feature:19
    Given There is an empty repository named repo1                                                      # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "GET /repos/repo1/diff"                                                                 # WebAPICucumberHooks.callURL(String)
    Then the response status should be '500'                                                            # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/error/text()" contains "Required parameter 'oldRefSpec' was not provided." # WebAPICucumberHooks.checkXPathValueContains(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling diff with an empty old ref spec issues a 500 status code # Diff.feature:25
    Given There is an empty repository named repo1                           # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "GET /repos/repo1/diff?oldRefSpec=%20"                       # WebAPICucumberHooks.callURL(String)
    Then the response status should be '500'                                 # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/error/text()" contains "Invalid old ref spec"   # WebAPICucumberHooks.checkXPathValueContains(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling diff with an old ref spec returns all of the changes since that commit # Diff.feature:31
    Given There is a default multirepo server                                              # WebAPICucumberHooks.setUpDefaultMultiRepo()
    When I call "GET /repos/repo1/diff?oldRefSpec=master~2"                                # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                               # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                                 # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xml response should contain "/response/diff" 6 times                           # WebAPICucumberHooks.checkXPathCadinality(String,int)
    And the response body should contain "Points/Point.2"                                  # WebAPICucumberHooks.checkResponseTextContains(String)
    And the response body should contain "Points/Point.3"                                  # WebAPICucumberHooks.checkResponseTextContains(String)
    And the response body should contain "Lines/Line.2"                                    # WebAPICucumberHooks.checkResponseTextContains(String)
    And the response body should contain "Lines/Line.3"                                    # WebAPICucumberHooks.checkResponseTextContains(String)
    And the response body should contain "Polygons/Polygon.2"                              # WebAPICucumberHooks.checkResponseTextContains(String)
    And the response body should contain "Polygons/Polygon.3"                              # WebAPICucumberHooks.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling diff with two ref specs returns all of the changes since those commits # Diff.feature:44
    Given There is a default multirepo server                                              # WebAPICucumberHooks.setUpDefaultMultiRepo()
    When I call "GET /repos/repo1/diff?oldRefSpec=master~2&newRefSpec=master~1"            # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                               # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                                 # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xml response should contain "/response/diff" 3 times                           # WebAPICucumberHooks.checkXPathCadinality(String,int)
    And the response body should contain "Points/Point.2"                                  # WebAPICucumberHooks.checkResponseTextContains(String)
    And the response body should contain "Lines/Line.2"                                    # WebAPICucumberHooks.checkResponseTextContains(String)
    And the response body should contain "Polygons/Polygon.2"                              # WebAPICucumberHooks.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Diff should support paging results                            # Diff.feature:54
    Given There is a default multirepo server                             # WebAPICucumberHooks.setUpDefaultMultiRepo()
    When I call "GET /repos/repo1/diff?oldRefSpec=master~2&page=0&show=2" # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                              # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xml response should contain "/response/diff" 2 times          # WebAPICucumberHooks.checkXPathCadinality(String,int)
    And the response body should contain "Points/Point.2"                 # WebAPICucumberHooks.checkResponseTextContains(String)
    And the response body should contain "Points/Point.3"                 # WebAPICucumberHooks.checkResponseTextContains(String)
    When I call "GET /repos/repo1/diff?oldRefSpec=master~2&page=1&show=2" # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                              # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xml response should contain "/response/diff" 2 times          # WebAPICucumberHooks.checkXPathCadinality(String,int)
    And the response body should contain "Polygons/Polygon.2"             # WebAPICucumberHooks.checkResponseTextContains(String)
    And the response body should contain "Polygons/Polygon.3"             # WebAPICucumberHooks.checkResponseTextContains(String)
    When I call "GET /repos/repo1/diff?oldRefSpec=master~2&page=2&show=2" # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                              # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xml response should contain "/response/diff" 2 times          # WebAPICucumberHooks.checkXPathCadinality(String,int)
    And the response body should contain "Lines/Line.2"                   # WebAPICucumberHooks.checkResponseTextContains(String)
    And the response body should contain "Lines/Line.3"                   # WebAPICucumberHooks.checkResponseTextContains(String)
@Commands @FeatureDiff
Feature: FeatureDiff
  The feature diff command allows a user to see the difference between two versions of a specific feature and is supported through the "/repos/{repository}/featurediff" endpoint
  The command must be executed using the HTTP GET method
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Verify wrong HTTP method issues 405 "Method not allowed" # FeatureDiff.feature:6
    Given There is an empty repository named repo1                   # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "PUT /repos/repo1/featurediff"                       # WebAPICucumberHooks.callURL(String)
    Then the response status should be '405'                         # WebAPICucumberHooks.checkStatusCode(int)
    And the response allowed methods should be "GET"                 # WebAPICucumberHooks.checkResponseAllowedMethods(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Feature diff outside of a repository issues 404 "Not found" # FeatureDiff.feature:12
    Given There is an empty multirepo server                            # WebAPICucumberHooks.setUpEmptyMultiRepo()
    When I call "GET /repos/repo1/featurediff?path=somePath"            # WebAPICucumberHooks.callURL(String)
    Then the response status should be '404'                            # WebAPICucumberHooks.checkStatusCode(int)
    And the response ContentType should be "text/plain"                 # WebAPICucumberHooks.checkContentType(String)
    And the response body should contain "Repository not found"         # WebAPICucumberHooks.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling feature diff without specifying a path issues a 500 status code               # FeatureDiff.feature:19
    Given There is an empty repository named repo1                                                # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "GET /repos/repo1/featurediff"                                                    # WebAPICucumberHooks.callURL(String)
    Then the response status should be '500'                                                      # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/error/text()" contains "Required parameter 'path' was not provided." # WebAPICucumberHooks.checkXPathValueContains(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Calling feature diff with an empty path issues a 500 status code     # FeatureDiff.feature:25
    Given There is an empty repository named repo1                               # WebAPICucumberHooks.setUpEmptyRepo(String)
    When I call "GET /repos/repo1/featurediff?path=%20"                          # WebAPICucumberHooks.callURL(String)
    Then the response status should be '500'                                     # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/error/text()" contains "Invalid path was specified" # WebAPICucumberHooks.checkXPathValueContains(String,String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Feature diff should work for an added feature                                                # FeatureDiff.feature:31
    Given There is a default multirepo server                                                            # WebAPICucumberHooks.setUpDefaultMultiRepo()
    When I call "GET /repos/repo1/featurediff?path=Points/Point.3&oldTreeish=master~1&newTreeish=master" # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                                             # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                                               # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xml response should contain "/response/diff" 3 times                                         # WebAPICucumberHooks.checkXPathCadinality(String,int)
    And the response body should contain "ADDED"                                                         # WebAPICucumberHooks.checkResponseTextContains(String)
    And the response body should contain "StringProp1_3"                                                 # WebAPICucumberHooks.checkResponseTextContains(String)
    And the response body should contain "3000"                                                          # WebAPICucumberHooks.checkResponseTextContains(String)
    And the response body should contain "POINT (10 10)"                                                 # WebAPICucumberHooks.checkResponseTextContains(String)
    And the response body should not contain "MODIFIED"                                                  # WebAPICucumberHooks.checkResponseTextNotContains(String)
    And the response body should not contain "REMOVED"                                                   # WebAPICucumberHooks.checkResponseTextNotContains(String)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo2 using FileRepositoryResolver
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()

  Scenario: Feature diff should work for a removed feature                                               # FeatureDiff.feature:44
    Given There is a default multirepo server                                                            # WebAPICucumberHooks.setUpDefaultMultiRepo()
    When I call "GET /repos/repo1/featurediff?path=Points/Point.3&oldTreeish=master&newTreeish=master~1" # WebAPICucumberHooks.callURL(String)
    Then the response status should be '200'                                                             # WebAPICucumberHooks.checkStatusCode(int)
    And the xpath "/response/success/text()" equals "true"                                               # WebAPICucumberHooks.checkXPathEquals(String,String)
    And the xml response should contain "/response/diff" 3 times                                         # WebAPICucumberH