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 4b501cac975c82e9677288aca2f114b2e646bccc (origin/1.1.x)
 > /usr/local/bin/git config core.sparsecheckout # timeout=10
 > /usr/local/bin/git checkout -f 4b501cac975c82e9677288aca2f114b2e646bccc
Commit message: "Merge pull request #397 from emerkle826/GIG-981-backport"
 > /usr/local/bin/git rev-list 1765eb7bbd73a6c02d38e4eadcf0fc2d3e5f422d # timeout=10
Parsing POMs
Established TCP socket on 39731
[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.12-alpha-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.10.2.jar /home/hudson/genie.geogig/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven33-interceptor-1.12-alpha-1.jar /home/hudson/genie.geogig/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.12-alpha-1.jar 39731
<===[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.RevObjectTest
Running org.locationtech.geogig.model.HashObjectFunnelsTest
Running org.locationtech.geogig.model.BucketTest
Running org.locationtech.geogig.model.RefTest
Running org.locationtech.geogig.model.NodeRefTest
Running org.locationtech.geogig.model.ObjectIdTest
Running org.locationtech.geogig.model.RevTreeTest
Running org.locationtech.geogig.model.Float32BoundsTest
Running org.locationtech.geogig.model.CanonicalNodeOrderTest
Running org.locationtech.geogig.model.NodeTest
Running org.locationtech.geogig.repository.ConflictTest
Running org.locationtech.geogig.repository.DiffEntryTest
Running org.locationtech.geogig.repository.HintsTest
Running org.locationtech.geogig.repository.FeatureInfoTest
Running org.locationtech.geogig.repository.DiffObjectCountTest
Running org.locationtech.geogig.repository.AbstractGeoGigOpTest
Running org.locationtech.geogig.repository.RemoteTest
Running org.locationtech.geogig.repository.ProgressListenerTest
Running org.locationtech.geogig.storage.StorageTypeTest
Running org.locationtech.geogig.storage.ConfigExceptionTest
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.124 sec - in org.locationtech.geogig.model.ObjectIdTest
Running org.locationtech.geogig.storage.VersionedFormatTest
Running org.locationtech.geogig.storage.AutoCloseableIteratorTest
Running org.locationtech.geogig.storage.GraphDatabaseTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.275 sec - in org.locationtech.geogig.model.Float32BoundsTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.397 sec - in org.locationtech.geogig.model.SymRefTest
Running org.locationtech.geogig.storage.PluginDefaultsTest
Running org.locationtech.geogig.storage.BulkOpListenerTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec - in org.locationtech.geogig.storage.BulkOpListenerTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.014 sec - in org.locationtech.geogig.storage.PluginDefaultsTest
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.344 sec - in org.locationtech.geogig.model.RefTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.396 sec - in org.locationtech.geogig.model.BucketTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.25 sec - in org.locationtech.geogig.storage.VersionedFormatTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.303 sec - in org.locationtech.geogig.repository.DiffObjectCountTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.394 sec - in org.locationtech.geogig.repository.ConflictTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.293 sec - in org.locationtech.geogig.storage.ConfigExceptionTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.449 sec - in org.locationtech.geogig.model.CanonicalNodeOrderTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.355 sec - in org.locationtech.geogig.repository.ProgressListenerTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.299 sec - in org.locationtech.geogig.storage.StorageTypeTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.309 sec - in org.locationtech.geogig.storage.GraphDatabaseTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.629 sec - in org.locationtech.geogig.model.FieldTypeTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.404 sec - in org.locationtech.geogig.repository.FeatureInfoTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.411 sec - in org.locationtech.geogig.repository.HintsTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.487 sec - in org.locationtech.geogig.repository.DiffEntryTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.691 sec - in org.locationtech.geogig.model.RevObjectTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.666 sec - in org.locationtech.geogig.model.RevTreeTest
Tests run: 23, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.682 sec - in org.locationtech.geogig.model.NodeRefTest
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.659 sec - in org.locationtech.geogig.model.NodeTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.581 sec - in org.locationtech.geogig.repository.AbstractGeoGigOpTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.521 sec - in org.locationtech.geogig.storage.AutoCloseableIteratorTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.906 sec - in org.locationtech.geogig.model.HashObjectFunnelsTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.743 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.StringTableTest
Running org.locationtech.geogig.storage.datastream.v2_3.TailTest
Running org.locationtech.geogig.storage.datastream.v2_3.RevTreeFormatTest
Running org.locationtech.geogig.storage.datastream.v2_3.RevTreeFormatPrefTest
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.LZFSerializationFactoryTest
Running org.locationtech.geogig.storage.datastream.FormatCommonV2_1Test
Running org.locationtech.geogig.storage.datastream.DataStreamSerializationFactoryV1Test
Running org.locationtech.geogig.storage.datastream.LZ4SerializationFactoryTest
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
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.342 sec - in org.locationtech.geogig.storage.cache.KeyTest
Running org.locationtech.geogig.storage.memory.HeapConflictsDatabaseConformanceTest
Running org.locationtech.geogig.storage.memory.HeapIndexDatabaseConformanceTest
Running org.locationtech.geogig.storage.memory.HeapObjectStoreConformanceTest
[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.392 sec - in org.locationtech.geogig.storage.datastream.Float32BoundsSerializationTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.452 sec - in org.locationtech.geogig.storage.datastream.v2_3.StringTableTest
[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: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.35 sec - in org.locationtech.geogig.storage.datastream.VarintTest
Running org.locationtech.geogig.storage.impl.INIBlobTest
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.
Running org.locationtech.geogig.storage.memory.HeapGraphDatabaseTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.473 sec - in org.locationtech.geogig.storage.datastream.v2_3.RevTreeFormatPrefTest
Running org.locationtech.geogig.storage.fs.FileRefDatabaseTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.609 sec - in org.locationtech.geogig.storage.datastream.v2_3.TailTest
Running org.locationtech.geogig.storage.fs.FileConflictsDatabaseConformanceTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.523 sec - in org.locationtech.geogig.storage.datastream.FloatPackedCoordinateSequenceTest
Running org.locationtech.geogig.storage.fs.FileBlobStoreTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.282 sec - in org.locationtech.geogig.storage.impl.PersistedIterableTest
Running org.locationtech.geogig.storage.fs.IniFileConfigDatabaseTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.61 sec - in org.locationtech.geogig.storage.memory.HeapBlobStoreTest
Running org.locationtech.geogig.storage.text.TextSerializationFactoryTest
[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: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.346 sec - in org.locationtech.geogig.storage.fs.FileBlobStoreTest
Running org.locationtech.geogig.test.integration.CleanOpTest
[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: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.724 sec - in org.locationtech.geogig.storage.fs.FileRefDatabaseTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.317 sec - in org.locationtech.geogig.storage.cache.ObjectCacheTest
Running org.locationtech.geogig.test.integration.HooksTest
Running org.locationtech.geogig.test.integration.ConfigOpTest
Tests run: 14, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.116 sec - in org.locationtech.geogig.storage.memory.HeapConflictsDatabaseConformanceTest
Running org.locationtech.geogig.test.integration.CheckoutOpTest
Tests run: 13, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.87 sec - in org.locationtech.geogig.storage.memory.HeapGraphDatabaseTest
Running org.locationtech.geogig.test.integration.ReportMergeConflictsOpTest
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.265 sec - in org.locationtech.geogig.storage.memory.HeapRefDatabaseTest
Running org.locationtech.geogig.test.integration.repository.IndexTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.481 sec - in org.locationtech.geogig.storage.datastream.FormatCommonV2_1Test
Running org.locationtech.geogig.test.integration.repository.WorkingTreeTest
Tests run: 23, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.089 sec - in org.locationtech.geogig.storage.fs.IniFileConfigDatabaseTest
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.696 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.422 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.804 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: 5.13 sec - in org.locationtech.geogig.storage.datastream.DataStreamSerializationFactoryV2_1Test
Running org.locationtech.geogig.test.integration.RemoteRemoveOpTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.408 sec - in org.locationtech.geogig.storage.datastream.v2_3.NodeSetTest
Running org.locationtech.geogig.test.integration.LogOpTest
Tests run: 21, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.512 sec - in org.locationtech.geogig.storage.datastream.DataStreamSerializationFactoryV2Test
Tests run: 21, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.592 sec - in org.locationtech.geogig.storage.datastream.LZ4SerializationFactoryTest
Running org.locationtech.geogig.test.integration.GeogigTransactionTest
Running org.locationtech.geogig.test.integration.PushOpTest
Tests run: 21, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.649 sec - in org.locationtech.geogig.storage.datastream.DataStreamSerializationFactoryV1Test
Running org.locationtech.geogig.test.integration.RevertOpTest
Tests run: 21, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.89 sec - in org.locationtech.geogig.storage.datastream.DataStreamSerializationFactoryV2_2Test
Running org.locationtech.geogig.test.integration.BranchListOpTest
Tests run: 21, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.268 sec - in org.locationtech.geogig.storage.datastream.v2_3.DataStreamSerializationFactoryV2_3Test
Running org.locationtech.geogig.test.integration.BranchCreateOpTest
Tests run: 21, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.401 sec - in org.locationtech.geogig.storage.datastream.LZFSerializationFactoryTest
Running org.locationtech.geogig.test.integration.RebaseOpTest
Tests run: 22, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.733 sec - in org.locationtech.geogig.storage.text.TextSerializationFactoryTest
Running org.locationtech.geogig.test.integration.TagTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.513 sec - in org.locationtech.geogig.storage.impl.INIBlobTest
Running org.locationtech.geogig.test.integration.MergeOpTest
testMergeNoCommits
testOctopusMerge
Tests run: 21, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.337 sec - in org.locationtech.geogig.test.integration.ConfigOpTest
Running org.locationtech.geogig.test.integration.CloneOpTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.659 sec - in org.locationtech.geogig.test.integration.RemoteRemoveOpTest
Running org.locationtech.geogig.test.integration.FetchOpTest
Tests run: 14, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.387 sec - in org.locationtech.geogig.storage.fs.FileConflictsDatabaseConformanceTest
Running org.locationtech.geogig.test.integration.FindCommonAncestorTest
[main] INFO org.locationtech.geogig.hooks.Scripting - Running jvm script /opt/public/hipp/ramdisk/geogig/junit2400584939929799790/repo-505034911/.geogig/hooks/pre_commit.js
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.189 sec - in org.locationtech.geogig.test.integration.CleanOpTest
Running org.locationtech.geogig.test.integration.AddOpTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.846 sec - in org.locationtech.geogig.test.integration.TagTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.977 sec - in org.locationtech.geogig.test.integration.RevParseIntegrationTest
Running org.locationtech.geogig.test.integration.BlameOpTest
Running org.locationtech.geogig.test.integration.ReportCommitConflictsOpTest
testMergeTwice
[main] INFO org.locationtech.geogig.hooks.Scripting - Running jvm script /opt/public/hipp/ramdisk/geogig/junit2400584939929799790/repo-505034911/.geogig/hooks/pre_commit.js
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 10.053 sec - in org.locationtech.geogig.storage.datastream.v2_3.RevTreeFormatTest
Running org.locationtech.geogig.test.integration.PullOpTest
[main] INFO org.locationtech.geogig.hooks.Scripting - Running jvm script /opt/public/hipp/ramdisk/geogig/junit2556490856610067384/repo320854520/.geogig/hooks/post_commit.js
[main] WARN org.locationtech.geogig.hooks.CommandHookChain - Post-command hook org.locationtech.geogig.hooks.JVMScriptHook@344344fa 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)
[main] WARN org.locationtech.geogig.hooks.CommandHookChain - Post-command hook org.locationtech.geogig.test.integration.HooksTest$ClasspathHookTest@5528a42c 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)
[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)
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 10.783 sec - in org.locationtech.geogig.storage.cache.SharedCacheTest
Running org.locationtech.geogig.test.integration.CheckSparsePathTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.892 sec - in org.locationtech.geogig.test.integration.BranchListOpTest
Running org.locationtech.geogig.test.integration.CreatePatchOpTest
[main] INFO org.locationtech.geogig.hooks.Scripting - Running shell script /opt/public/hipp/ramdisk/geogig/junit93666862609391252/repo-486529968/.geogig/hooks/pre_commit.bat
[main] INFO org.locationtech.geogig.hooks.Scripting - Running shell script /opt/public/hipp/ramdisk/geogig/junit93666862609391252/repo-486529968/.geogig/hooks/pre_commit.bat
Tests run: 20, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 9.629 sec - in org.locationtech.geogig.test.integration.repository.WorkingTreeTest
Running org.locationtech.geogig.test.integration.SquashOpTest
testNoFastForwardSpecifyAuthor
[main] INFO org.locationtech.geogig.hooks.Scripting - Running jvm script /opt/public/hipp/ramdisk/geogig/junit3249511093395501695/repo282109794/.geogig/hooks/pre_commit.js
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.94 sec - in org.locationtech.geogig.test.integration.BlameOpTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 10.184 sec - in org.locationtech.geogig.test.integration.HooksTest
Running org.locationtech.geogig.test.integration.SparseCloneTest
Running org.locationtech.geogig.test.integration.DiffOpTest
testBothBranchesSameGeometryChange
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.55 sec - in org.locationtech.geogig.test.integration.BranchCreateOpTest
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.084 sec - in org.locationtech.geogig.test.integration.CleanRefsOpTest
Running org.locationtech.geogig.test.integration.LsTreeOpTest
Tests run: 15, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.395 sec - in org.locationtech.geogig.test.integration.RevertOpTest
Running org.locationtech.geogig.test.integration.GeogigAPITest
testMergeFastForwardSecondCase
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.282 sec - in org.locationtech.geogig.test.integration.GeogigAPITest
Running org.locationtech.geogig.test.integration.BranchDeleteOpTest
testOctopusMergeWithAutomerge
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 11.187 sec - in org.locationtech.geogig.test.integration.repository.IndexTest
Running org.locationtech.geogig.test.integration.CherryPickOpTest
Tests run: 15, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.254 sec - in org.locationtech.geogig.test.integration.GeogigTransactionTest
Running org.locationtech.geogig.test.integration.RemoteListOpTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.937 sec - in org.locationtech.geogig.test.integration.BranchRenameOpTest
Running org.locationtech.geogig.test.integration.CommitOpTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.637 sec - in org.locationtech.geogig.test.integration.BranchDeleteOpTest
Running org.locationtech.geogig.test.integration.ConflictsReadWriteOpTest
Tests run: 10, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 11.286 sec - in org.locationtech.geogig.test.integration.RemoveOpTest
Running org.locationtech.geogig.test.integration.RebuildGraphOpTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.137 sec - in org.locationtech.geogig.test.integration.ConflictsReadWriteOpTest
Running org.locationtech.geogig.test.integration.RemoteAddOpTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.421 sec - in org.locationtech.geogig.test.integration.RemoteListOpTest
Running org.locationtech.geogig.test.integration.StatusOpTest
Tests run: 18, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.713 sec - in org.locationtech.geogig.test.integration.ApplyPatchOpTest
Running org.locationtech.geogig.test.integration.ResetOpTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.546 sec - in org.locationtech.geogig.test.integration.CreatePatchOpTest
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.011 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.002 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.016 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.014 sec - in org.locationtech.geogig.model.impl.RevPersonTest
Running org.locationtech.geogig.model.impl.RevFeatureTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 sec - in org.locationtech.geogig.model.impl.RevFeatureTest
Running org.locationtech.geogig.model.impl.RevFeatureTypeTest
testConflictingMergeInterceptor
Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.134 sec - in org.locationtech.geogig.test.integration.ReportCommitConflictsOpTest
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.005 sec - in org.locationtech.geogig.model.impl.QuadTreeBuilderExpandCollapseTest
Running org.locationtech.geogig.model.impl.LegacyTreeBuilderTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.202 sec - in org.locationtech.geogig.model.impl.RevFeatureTypeTest
Running org.locationtech.geogig.model.impl.CanonicalTreeBuilderTest
[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: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.785 sec - in org.locationtech.geogig.test.integration.RebuildGraphOpTest
Running org.locationtech.geogig.model.impl.CommitBuilderTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.037 sec - in org.locationtech.geogig.model.impl.CommitBuilderTest
Running org.locationtech.geogig.model.internal.QuadTreeClusteringStrategyTest
Tests run: 13, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 12.631 sec - in org.locationtech.geogig.test.integration.ReportMergeConflictsOpTest
Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.556 sec - in org.locationtech.geogig.test.integration.RebaseOpTest
Tests run: 12, Failures: 0, Errors: 0, Skipped: 12, Time elapsed: 0.029 sec - in org.locationtech.geogig.model.internal.QuadTreeClusteringStrategyTest
Running org.locationtech.geogig.model.internal.QuadTreeClusteringStrategy_putTest
Running org.locationtech.geogig.model.internal.CanonicalClusteringStrategyHeapStorageTest
Running org.locationtech.geogig.model.internal.CanonicalClusteringStrategyRocksdbStorageTest
testMerge
Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.897 sec - in org.locationtech.geogig.test.integration.RemoteAddOpTest
Running org.locationtech.geogig.model.internal.DAGNodeTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.944 sec - in org.locationtech.geogig.test.integration.StatusOpTest
Running org.locationtech.geogig.model.internal.QuadTreeClusteringStrategy_computeIdTest
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/master -> a3ad4dd3b550a1215e3001faf8071e3448956105] to refs/remotes/origin/master(null)
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.15 sec - in org.locationtech.geogig.model.internal.QuadTreeClusteringStrategy_computeIdTest
Running org.locationtech.geogig.model.internal.NodeIdTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec - in org.locationtech.geogig.model.internal.NodeIdTest
Running org.locationtech.geogig.model.internal.QuadrantTest
testConflictingOctopusMerge
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.048 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.055 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: 1.983 sec - in org.locationtech.geogig.test.integration.CherryPickOpTest
Running org.locationtech.geogig.data.retrieve.MultiFeatureTypeBuilderTest
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: []]
  Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.567 sec - in org.locationtech.geogig.test.integration.AddOpTest
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: []]
Running org.locationtech.geogig.data.retrieve.BulkGeoGigFeatureRetrieverTest
testFastForwardOnly
testSpecifyAuthor
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.577 sec - in org.locationtech.geogig.data.retrieve.BulkFeatureRetrieverTest
Running org.locationtech.geogig.data.retrieve.BackgroundingIteratorTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.581 sec - in org.locationtech.geogig.data.retrieve.BulkGeoGigFeatureRetrieverTest
Running org.locationtech.geogig.data.EPSGBoundsCalcTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.739 sec - in org.locationtech.geogig.data.retrieve.MultiFeatureTypeBuilderTest
Running org.locationtech.geogig.data.EPSGBoundsXYTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.002 sec - in org.locationtech.geogig.data.EPSGBoundsXYTest
Running org.locationtech.geogig.data.MapToStringConverterFactoryTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.188 sec - in org.locationtech.geogig.model.internal.DAGNodeTest
Running org.locationtech.geogig.data.PrimitiveArrayToStringConverterFactoryTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.112 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.004 sec - in org.locationtech.geogig.data.EPSGBoundsYXTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.167 sec - in org.locationtech.geogig.data.MapToStringConverterFactoryTest
Running org.locationtech.geogig.plumbing.ResolveRepositoryNameTest
Running org.locationtech.geogig.data.FeatureBuilderTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.044 sec - in org.locationtech.geogig.data.FeatureBuilderTest
Running org.locationtech.geogig.plumbing.merge.MergeFeaturesOpTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.278 sec - in org.locationtech.geogig.plumbing.ResolveRepositoryNameTest
Running org.locationtech.geogig.plumbing.merge.MergeStatusBuilderDiffEntrySerializerTest
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/master -> a3ad4dd3b550a1215e3001faf8071e3448956105] to refs/remotes/origin/master(null)
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/Branch1 -> e4d10fce0f71850b8e201763343ebde1c71aa5f6] to refs/remotes/origin/Branch1(null)
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.18 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.316 sec - in org.locationtech.geogig.plumbing.merge.MergeStatusBuilderDiffEntrySerializerTest
Running org.locationtech.geogig.plumbing.index.BuildFullHistoryIndexOpTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.209 sec - in org.locationtech.geogig.model.internal.QuadTreeClusteringStrategy_putTest
Running org.locationtech.geogig.plumbing.diff.DepthTreeIteratorTest
testOursAndTheirs
testNoCommitMerge
Tests run: 14, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.489 sec - in org.locationtech.geogig.test.integration.SquashOpTest
Running org.locationtech.geogig.plumbing.diff.MutableTreeTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.013 sec - in org.locationtech.geogig.plumbing.diff.MutableTreeTest
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.499 sec - in org.locationtech.geogig.data.retrieve.BackgroundingIteratorTest
Running org.locationtech.geogig.plumbing.diff.TreeDifferenceTest
Running org.locationtech.geogig.plumbing.diff.PostOrderDiffWalkTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.044 sec - in org.locationtech.geogig.plumbing.diff.TreeDifferenceTest
Running org.locationtech.geogig.plumbing.diff.GeometryDiffTest
testMergeFastForward
Tests run: 14, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.45 sec - in 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: 21, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 16.709 sec - in org.locationtech.geogig.test.integration.CheckoutOpTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 10.408 sec - in org.locationtech.geogig.test.integration.CloneOpTest
Running org.locationtech.geogig.plumbing.diff.PatchSerializationTest
Running org.locationtech.geogig.plumbing.diff.DiffCountConsumerTest
testMergeNullCommit
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/master -> b2e392a358773a01efe3ec48a3580362a7fc83d0] to refs/remotes/origin/refs/heads/master(refs/heads/master)
testMergeMultiple
Tests run: 17, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 13.151 sec - in org.locationtech.geogig.test.integration.LogOpTest
Running org.locationtech.geogig.plumbing.diff.AttributeDiffTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.025 sec - in org.locationtech.geogig.plumbing.diff.AttributeDiffTest
Running org.locationtech.geogig.plumbing.RevParseTest
testMergeConflictingPolygon
Tests run: 21, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.843 sec - in org.locationtech.geogig.test.integration.DiffOpTest
Running org.locationtech.geogig.plumbing.DiffTreeTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.322 sec - in org.locationtech.geogig.plumbing.diff.PatchSerializationTest
Running org.locationtech.geogig.plumbing.HashObjectTest
Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.615 sec - in org.locationtech.geogig.test.integration.LsTreeOpTest
Running org.locationtech.geogig.plumbing.ResolveFeatureTypeTest
testMergeConflictingBranchesTheirs
Removed 32,600 nodes in 2.577 s
testMergeWithFeatureMerge
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.683 sec - in org.locationtech.geogig.plumbing.ResolveFeatureTypeTest
Running org.locationtech.geogig.plumbing.ParseTimestampTest
Removed 32,600 nodes in 3.437 s
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 9.978 sec - in org.locationtech.geogig.test.integration.CheckSparsePathTest
Running org.locationtech.geogig.plumbing.RefParseTest
Tests run: 13, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.3 sec - in org.locationtech.geogig.test.integration.ResetOpTest
Running org.locationtech.geogig.plumbing.WriteTree2Test
Added 7,000 nodes in 123.5 ms
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.573 sec - in org.locationtech.geogig.plumbing.ParseTimestampTest
Running org.locationtech.geogig.plumbing.UpdateRefTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 12.874 sec - in org.locationtech.geogig.test.integration.FindCommonAncestorTest
Running org.locationtech.geogig.plumbing.DescribeFeatureTypeTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.29 sec - in org.locationtech.geogig.plumbing.RefParseTest
Running org.locationtech.geogig.plumbing.ResolveGeogigURITest
testMergeNoCommitMessage
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/Branch1 -> b9ffcf8d172b8905500e906f2218c55b58cf2c44] to refs/remotes/origin/Branch1(Branch1)
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.203 sec - in org.locationtech.geogig.plumbing.DescribeFeatureTypeTest
Running org.locationtech.geogig.plumbing.CatObjectTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.213 sec - in org.locationtech.geogig.plumbing.ResolveGeogigURITest
Running org.locationtech.geogig.plumbing.UpdateSymRefTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.025 sec - in org.locationtech.geogig.plumbing.HashObjectTest
Running org.locationtech.geogig.plumbing.UpdateTreeTest
testMergeTwoBranchesWithNewFeatureType
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]]
	[]
Added 7,000Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.918 sec - in org.locationtech.geogig.plumbing.UpdateRefTest
Running org.locationtech.geogig.plumbing.DiffBoundsTest
 nodes in 577.8 ms
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.749 sec - in org.locationtech.geogig.plumbing.UpdateTreeTest
Running org.locationtech.geogig.plumbing.CheckRefFormatTest
testCancelScenario1
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.216 sec - in org.locationtech.geogig.plumbing.CheckRefFormatTest
Running org.locationtech.geogig.plumbing.DiffFeatureTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.311 sec - in org.locationtech.geogig.plumbing.CatObjectTest
Running org.locationtech.geogig.plumbing.WalkGraphOpTest
Added 5,000 nodes in 27.57 ms
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.462 sec - in org.locationtech.geogig.plumbing.UpdateSymRefTest
Running org.locationtech.geogig.porcelain.index.UpdateIndexesOpTest
Added 1,024 nodes in 4.941 ms
Removed 400 nodes in 1.650 ms

Tests run: 26, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 9.996 sec - in org.locationtech.geogig.test.integration.CommitOpTest
Running org.locationtech.geogig.porcelain.index.UpdateIndexOpTest
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit7038553772610502602/mockWorkingDir/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit1561191963686504556/mockWorkingDir/.geogig/
sp	StringProp1_1 -> StringProp1_1a
ip	1000 -> 1001
pp	0 point(s) deleted, 0 new point(s) added, 1 point(s) moved

Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.004 sec - in org.locationtech.geogig.plumbing.DiffFeatureTest
Running org.locationtech.geogig.porcelain.index.DropIndexOpTest
Tests run: 15, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.863 sec - in org.locationtech.geogig.plumbing.WriteTree2Test
Added 10,000 nodes in 298.0 ms
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 9.599 sec - in org.locationtech.geogig.model.internal.CanonicalClusteringStrategyHeapStorageTest
Running org.locationtech.geogig.porcelain.index.CreateIndexOpTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.863 sec - in org.locationtech.geogig.plumbing.diff.PostOrderDiffWalkTest
Running org.locationtech.geogig.repository.impl.SpatialOpsTest
Running org.locationtech.geogig.porcelain.InitOpTest
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)
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.4 sec - in org.locationtech.geogig.plumbing.WalkGraphOpTest
Running org.locationtech.geogig.repository.impl.RepositoryResolverTest
testCancelScenario2
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: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 10.42 sec - in org.locationtech.geogig.model.impl.LegacyTreeBuilderTest
Running org.locationtech.geogig.repository.impl.RevFeatureBuilderTest
testCancelScenario3
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/master -> a3ad4dd3b550a1215e3001faf8071e3448956105] to refs/remotes/origin/master(null)
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.783 sec - in org.locationtech.geogig.porcelain.InitOpTest
testCancelScenario4
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.243 sec - in org.locationtech.geogig.repository.impl.DepthSearchTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.195 sec - in org.locationtech.geogig.repository.impl.RevFeatureBuilderTest
testNoFastForward
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.537 sec - in org.locationtech.geogig.plumbing.diff.DiffCountConsumerTest
testMergeConflictingBranches
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/master -> a3ad4dd3b550a1215e3001faf8071e3448956105] to refs/remotes/origin/master(null)
Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.167 sec - in org.locationtech.geogig.plumbing.RevParseTest
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 20.232 sec - in org.locationtech.geogig.test.integration.PushOpTest
testMergeConflictingBranchesOurs
Tests run: 30, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 19.42 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/junit7329006978953378560/mockWorkingDir/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit1001199327216439921/mockWorkingDir/.geogig/
Added 5,000 nodes in 180.0 ms
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit6446944108861702971/mockWorkingDir/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit2695314267235366253/mockWorkingDir/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit6266569728009919788/mockWorkingDir/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit4677092800573490235/mockWorkingDir/.geogig/
Added 1,024 nodes in 39.16 ms
Removed 400 nodes in 4.367 ms
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/master -> 32b4e258bf8026e45ba1c2ace4a1f36e15b862a1] to refs/remotes/origin/master(null)
Tests run: 15, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 19.975 sec - in org.locationtech.geogig.test.integration.FetchOpTest
Added 10,000 nodes in 465.1 ms
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 14.662 sec - in org.locationtech.geogig.model.internal.CanonicalClusteringStrategyRocksdbStorageTest
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit1496144261482894266/mockWorkingDir/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit3521174098782263815/mockWorkingDir/.geogig/
Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 17.31 sec - in org.locationtech.geogig.test.integration.SparseCloneTest
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 9.608 sec - in org.locationtech.geogig.plumbing.DiffTreeTest
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 16.175 sec - in org.locationtech.geogig.model.impl.CanonicalTreeBuilderTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.477 sec - in org.locationtech.geogig.porcelain.index.DropIndexOpTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 21.418 sec - in org.locationtech.geogig.test.integration.PullOpTest
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 16.135 sec - in org.locationtech.geogig.plumbing.index.BuildIndexOpTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 10.966 sec - in org.locationtech.geogig.plumbing.DiffBoundsTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 17.302 sec - in org.locationtech.geogig.plumbing.index.BuildFullHistoryIndexOpTest
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 12.109 sec - in org.locationtech.geogig.porcelain.index.CreateIndexOpTest
Tests run: 16, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 14.458 sec - in org.locationtech.geogig.porcelain.index.UpdateIndexOpTest
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 16.297 sec - in org.locationtech.geogig.porcelain.index.UpdateIndexesOpTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 22.908 sec - in org.locationtech.geogig.plumbing.diff.DepthTreeIteratorTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 24.139 sec - in org.locationtech.geogig.data.EPSGBoundsCalcTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 16.675 sec - in org.locationtech.geogig.repository.impl.SpatialOpsTest
PreOrderDiffWalkTest: walked 524,288 vs 262144 trees in 382.4 ms
PreOrderDiffWalkTest: walked 1,024 vs 512 trees in 12.64 ms
PreOrderDiffWalkTest: walked 16,384 vs 512 trees in 134.6 ms
Tests run: 24, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 26.889 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.reader.FeatureReaderBuilderTest
Running org.locationtech.geogig.geotools.data.functional.RunDataStoreFunctionalTest
Running org.locationtech.geogig.geotools.data.functional.RunDataStoreDimensionTest
Running org.locationtech.geogig.geotools.data.GeoGigDataStoreTest
Running org.locationtech.geogig.geotools.data.GeoGigFeatureStoreIndexedTest
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.931 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: 3.407 sec - in org.locationtech.geogig.geotools.data.reader.PreFilterTest
Tests run: 37, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.681 sec - in org.locationtech.geogig.geotools.data.reader.PrePostFilterSplitterTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.873 sec - in org.locationtech.geogig.geotools.data.reader.MaterializedIndexFeatureIteratorTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.21 sec - in org.locationtech.geogig.geotools.data.GeoGigDataStoreFactoryTest
2017-10-16T15:50:42.266-0400  WARNING  Feature Collection contains a heterogeneous mix of features
2017-10-16T15:50:43.024-0400  WARNING  Feature Collection contains a heterogeneous mix of features
2017-10-16T15:50:43.179-0400  WARNING  Feature Collection contains a heterogeneous mix of features
Tests run: 16, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.926 sec - in org.locationtech.geogig.geotools.data.reader.FeatureReaderBuilderTest
Tests run: 15, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.291 sec - in org.locationtech.geogig.geotools.data.GeoGigDataStoreTest

  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: 13, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.563 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)
2017-10-16T15:50:46.706-0400  WARNING  Feature Collection contains a heterogeneous mix of features
Tests run: 17, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 9.523 sec - in org.locationtech.geogig.geotools.data.GeoGigFeatureSourceTest

  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)

  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)
0m8.541s

Tests run: 21, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 9.664 sec - in org.locationtech.geogig.geotools.data.functional.RunDataStoreDimensionTest
2017-10-16T15:50:47.124-0400  WARNING  Feature Collection contains a heterogeneous mix of features
2017-10-16T15:50:47.385-0400  WARNING  Feature Collection contains a heterogeneous mix of features
Tests run: 17, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 10.883 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)
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 15.394 sec - in org.locationtech.geogig.geotools.data.stresstest.DataStoreConcurrencyTest

  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)

  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)
1m54.644s

Tests run: 120, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 115.948 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.RocksdbIndexDatabaseConformanceTest
Running org.locationtech.geogig.rocksdb.performance.RocksdbObjectStoreStressTest
Running org.locationtech.geogig.rocksdb.RocksdbConflictsDatabaseConformanceTest
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
[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.254 sec - in org.locationtech.geogig.rocksdb.performance.RocksdbObjectStoreStressTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.191 sec - in org.locationtech.geogig.rocksdb.DBOptionsTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.238 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.355 sec - in org.locationtech.geogig.rocksdb.performance.RevTreeBuilderRocksObjectsPerformanceTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.543 sec - in org.locationtech.geogig.rocksdb.RocksdbBlobStoreTest
Tests run: 14, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.729 sec - in org.locationtech.geogig.rocksdb.RocksdbGraphDatabaseConformanceTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.774 sec - in org.locationtech.geogig.rocksdb.RocksdbObjectDatabaseTest
Tests run: 16, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.959 sec - in org.locationtech.geogig.rocksdb.RocksdbConflictsDatabaseConformanceTest
Tests run: 24, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.59 sec - in org.locationtech.geogig.rocksdb.RocksdbObjectStoreConformanceTest
Tests run: 39, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.718 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.RunPorcelainFunctionalTest
Running org.locationtech.geogig.cli.test.functional.RunIndexFunctionalTest
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.139 sec - in org.locationtech.geogig.cli.test.ArgumentTokenizerTest
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 - 'Try to clone without specifying a repository': 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: "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 - 'Use command alias': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show the content of a tree.': Using URIBuilder DefaultTestRepoURIBuilder
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: 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 - 'Committing a modified indexed feature updates the indexes': 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

  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()

  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
[main] INFO org.locationtech.geogig.hooks.Scripting - Running jvm script /opt/public/hipp/ramdisk/geogig/junit8778097207614764052/data/localrepo/.geogig/hooks/pre_commit.js
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show the content of a feature.': 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 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)
0m8.029s

Tests run: 27, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.892 sec - in org.locationtech.geogig.cli.test.functional.RunGenralFunctionalTest
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Set a pre-commit hook and perform a valid commit': 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)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to clone with too many parameters': 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 - 'Try to add features to the index': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to clone a remote repository': Using URIBuilder DefaultTestRepoURIBuilder

  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()

  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 - 'Rebasing a branch generates indexes for each rebased commit': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show the content of a feature that does not exist': 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)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to add a specific feature type to the index': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.hooks.Scripting - Running jvm script /opt/public/hipp/ramdisk/geogig/junit3560427230739357823/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)

  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)

  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)
0m9.582s

Tests run: 15, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 10.483 sec - in org.locationtech.geogig.cli.test.functional.RunHooksFunctionalTest
[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 using too many parameters': Using URIBuilder DefaultTestRepoURIBuilder

  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 add a specific feature to the index': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show the content of HEAD.': 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()

  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)
[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 - 'Cherry-picking a commit updates the index': Using URIBuilder DefaultTestRepoURIBuilder

  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 an empty feature type': Using URIBuilder DefaultTestRepoURIBuilder

  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

  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)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try show the binary content of HEAD': 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)
[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 - 'Creating a branch updates the index': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to add when no changes have been made': Using URIBuilder DefaultTestRepoURIBuilder

  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)
[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 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 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)
commitHMO���zJ���|W9John DoeJohnDoe@example.com_&�E�$FJohn DoeJohnDoe@example.com_&�E�$F
TestCommit
  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 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: 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

  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 - 'Show diff between working tree and index, omitting index refspec': Using URIBuilder DefaultTestRepoURIBuilder

  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 wrong patch can be applied': 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

  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: 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)
[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 - 'Show diff between working tree and index, omitting both refspecs': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Check if a patch can be applied twice': 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)

  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 - '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 - 'Try to create an index with user-specified bounds': Using URIBuilder DefaultTestRepoURIBuilder
[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
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show diff tree stats between working tree and index': 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)

  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)

  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 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 - 'Show diff using too many commit refspecs': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to partially apply a wrong patch': 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)

  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 apply an inexistent patch': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create an index with invalid bounds parameters': 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()

  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 - 'Show diff using a wrong  refspec': Using URIBuilder DefaultTestRepoURIBuilder

  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 - '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 on a nonexistent tree': Using URIBuilder DefaultTestRepoURIBuilder

  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)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to clone a remote repository with a single argument': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Apply a reversed patch that cannot be applied': 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: 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 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] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Apply a path and then the reverse version of that patch': 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()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create an index on a nonexistent attribute': 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)

  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, with a change in the feature type': Using URIBuilder DefaultTestRepoURIBuilder
[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)

  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 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
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to fetch from origin': 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: 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()

  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 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, using a path filter': Using URIBuilder DefaultTestRepoURIBuilder

  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 create an index with the full history': Using URIBuilder DefaultTestRepoURIBuilder

  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)
[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

  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)
[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 run blame with a wrong path': Using URIBuilder DefaultTestRepoURIBuilder
[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 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)

  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 - '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 more than one path': 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)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to deepen the history of a shallow clone': Using URIBuilder DefaultTestRepoURIBuilder

  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 - '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 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 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
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to insert a feature passing a wrong 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: 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 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 run blame with a feature type': 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)

  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 an index with an incorrect extra attribute': 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 insert a feature in a tree that does not exist in the repo': 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)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to reset from an empty directory': 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)

  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 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 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 delete a branch while not in a repository': Using URIBuilder DefaultTestRepoURIBuilder

  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 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 - 'Show a list of features in the root tree recursively including trees': Using URIBuilder DefaultTestRepoURIBuilder
[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: 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)

  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 a branch with a non-existent start point': 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 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()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show a list of features in the root tree non-recursively': 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)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show a verbose list of trees in the root tree non-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: 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 drop a nonexistent 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)

  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 - '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 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 checkout a branch as soon as it is created': 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

  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)

  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)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show a verbose list of features in a path': 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)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to fetch from unchanged remote': Using URIBuilder DefaultTestRepoURIBuilder
[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 - 'Show a list of features using STAGE_HEAD as non-recursively, including trees': Using URIBuilder DefaultTestRepoURIBuilder

  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 - 'I try to drop the index for a non-existent attribute': 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)

  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: 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 trees using HEAD as origin, recursively': Using URIBuilder DefaultTestRepoURIBuilder
[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: 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)

  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] 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 - 'I try to drop an index in an empty repository': Using URIBuilder DefaultTestRepoURIBuilder

  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 verbose list of features 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 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)

  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
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to pull from origin': 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 - 'Try to list local branches': Using URIBuilder DefaultTestRepoURIBuilder
[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: 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: 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 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 - 'Show a list from an empty directory': Using URIBuilder DefaultTestRepoURIBuilder

  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
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to list local branches with verbose option': 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: 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)

  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 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 - 'I try to list the indexes without specifying a tree': 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)
[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, specifying a non-existent tree': Using URIBuilder DefaultTestRepoURIBuilder

  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 - 'I try to view the common parent with too many arguments': Using URIBuilder DefaultTestRepoURIBuilder

  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()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to pull a certain depth from origin': 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)
[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 - 'Try to list all branches': Using URIBuilder DefaultTestRepoURIBuilder
[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: 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)

  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 - 'I try to list the indexes in an empty repository': 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: 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

  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 push with no changes': 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 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 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] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to delete a branch': 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 - '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 - '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)

  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 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] 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 - 'I rebuild the index for an attribute on a tree': Using URIBuilder DefaultTestRepoURIBuilder

  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.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 delete multiple branches': 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()
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/master -> e5eacc8b9f3f40cdb80e46e36a04d51b9d71f578] 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)
[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 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 - '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] 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 - 'I try to rebuild the index for an attribute on a non-existent tree': Using URIBuilder DefaultTestRepoURIBuilder

  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

  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 push when the remote has changes': Using URIBuilder DefaultTestRepoURIBuilder

  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 - '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 - 'Try to show a range of commits and provide additional commits.': Using URIBuilder DefaultTestRepoURIBuilder
[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: 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)

  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)
[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 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 rename a branch that you are on': Using URIBuilder DefaultTestRepoURIBuilder
[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 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)

  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)

  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)
0m35.764s

Tests run: 230, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 36.904 sec - in org.locationtech.geogig.cli.test.functional.RunRemoteFunctionalTest
[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 - 'I try to rebuild the index on an empty repository': Using URIBuilder DefaultTestRepoURIBuilder

  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)

  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
[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

  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)
[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 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)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show only the last two commits.': Using URIBuilder DefaultTestRepoURIBuilder
[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 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)

  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

  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 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 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 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 the log, skipping the last 2 commits': 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()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to add attributes to an index': Using URIBuilder DefaultTestRepoURIBuilder

  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 show the list of commits, with the changes introduced by each one': 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 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 replace attributes of an index': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to checkout something while not in a repository': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a log from an empty directory': 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)

  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)

  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)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to checkout without specifying a path': Using URIBuilder DefaultTestRepoURIBuilder

  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 update the bounds of an index': Using URIBuilder DefaultTestRepoURIBuilder

  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 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 - 'I check if I am in a repository': 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 with incorrect bounds parameter': 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)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to checkout a branch that doesn't exist': 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 - 'I try to check if I'm in a repository when in an empty directory': 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()

  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 make a change but don't commit and then checkout a different branch without forcing': 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 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 - '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] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to change existing attributes without specifying add or overwrite': Using URIBuilder DefaultTestRepoURIBuilder

  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 - '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 - '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 - 'Try to make a change to a feature and revert back to an old version using path filtering': Using URIBuilder DefaultTestRepoURIBuilder
[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)

  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 - '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 get rid of changes that I have made with path filtering with multiple paths': Using URIBuilder DefaultTestRepoURIBuilder

  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 resolve the geogig uri when not in a repository': 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: 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 - '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 - '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] 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: 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

  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 - 'I try to verify multiple files': 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 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)

  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)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to verify a patch with a bad file path': 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 - 'Try to revert a feature where the version you want doesn't exist': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to update the index for a non-existent extra-attribute': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I have a patch file that contains rejects': 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 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: 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
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to revert an unmerged feature': 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)

  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 overwrite a non-existent extra-attribute': Using URIBuilder DefaultTestRepoURIBuilder

  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)

  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
[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
[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: 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 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 - 'I try to walk the graph with bad arguments': Using URIBuilder DefaultTestRepoURIBuilder

  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 - 'I try to update the index without updating anything': 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)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to walk the graph': Using URIBuilder DefaultTestRepoURIBuilder

  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)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to checkout a remote branch': 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)

  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] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to update the index with the same extra attribute': 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)
[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 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)
[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

  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)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to checkout a specific 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)


  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()
66    When I run the command "pull origin"                                                                        # DefaultStepDefinitions.I_run_the_command_X(String)
 Scenarios (    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)
66 passed)
408 Steps (408 passed)
0m49.129s

Tests run: 474, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 50.405 sec - in org.locationtech.geogig.cli.test.functional.RunPlumbingFunctionalTest
[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

  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 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)
0m49.380s

Tests run: 553, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 50.86 sec - in org.locationtech.geogig.cli.test.functional.RunIndexFunctionalTest

  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] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to cherry pick a single commit': Using URIBuilder DefaultTestRepoURIBuilder

  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()
[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)
2m41.837s

Tests run: 2109, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 164.383 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.ShpImportTest
Running org.locationtech.geogig.geotools.cli.shp.RunShpFunctionalTest
Running org.locationtech.geogig.geotools.cli.shp.ShpExportTest
Running org.locationtech.geogig.geotools.cli.geopkg.GeoPkgDescribeTest
Running org.locationtech.geogig.geotools.cli.geopkg.GeoPkgPullTest
Running org.locationtech.geogig.geotools.cli.geopkg.RunGeoPkgFunctionalTest
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.PGDescribeTest
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.plumbing.ImportOpTest
Running org.locationtech.geogig.geotools.plumbing.ExportDiffOpTest
Running org.locationtech.geogig.geotools.plumbing.DescribeOpTest
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_test1820593299978736882.gpkg
  * --table, -t
       Table to describe.
       Default: <empty string>
    --user, -U
       User name.  Default: user
       Default: user

The GeoJSON file 'file://nonexistent.geojson' could not be found, skipping...
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 from database database
Importing from database database
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...
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

Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.693 sec - in org.locationtech.geogig.geotools.plumbing.ExportDiffOpTest
Running org.locationtech.geogig.geotools.plumbing.FeatureTypeAdapterFeatureSourceTest
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%
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.084 sec - in org.locationtech.geogig.geotools.plumbing.FeatureTypeAdapterFeatureSourceTest

Importing table2           (1/2)... 
2017-10-16T15:55:50.288-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

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

Importing feature          (1/1)... 
0%
0%
Exporting from Points to Points... 
33%
2 features inserted in 26.92 ms

Building final tree feature...

2 features tree built in 1.454 ms

1 features inserted in 59.29 ms

Building final tree table2...
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.

1 features tree built in 13.00 ms

Importing table1           (2/2)... 
67%
100%
Points exported successfully to Points
Importing from database /opt/public/hipp/ramdisk/geogig/geogig_geopackage_test7153779700592903795.gpkg

Importing Lines            (1/2)... 
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 9.382 sec - in org.locationtech.geogig.geotools.cli.geojson.GeoJsonImportTest

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

Creating audit metadata for table 'Points'

Exporting from Points to Points... 
33%
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: 9.292 sec - in org.locationtech.geogig.geotools.plumbing.DescribeOpTest
67%
100%
Points exported successfully to Points
0%
Importing changes to table Points onto feature tree Points...

3 features inserted in 34.71 ms

Building final tree Lines...

3 features tree built in 1.334 ms
0%
Importing Points           (2/2)... 

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

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

Building final tree Points...

3 features tree built in 1.808 ms
100%
Import successful.

Exporting from WORK_HEAD:Points to Points... 
33%
100%
Import successful.
Changes committed and merge at 75881859add40afa5f084dfed944064e30635a59
WORK_HEAD:Points exported successfully to /opt/public/hipp/ramdisk/geogig/junit92290988985003628/repo-2118590860/TestPoints.geojson
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 9.99 sec - in org.locationtech.geogig.geotools.plumbing.ListOpTest
Importing from database /opt/public/hipp/ramdisk/geogig/geogig_geopackage_test4279093046486085530.gpkg

Exporting from Points to Points... 
33%
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 10.617 sec - in org.locationtech.geogig.geotools.plumbing.ExportOpTest

Importing Points           (1/1)... 
100%
Points exported successfully to Points

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

Creating audit metadata for table 'Points'
0%
3 features inserted in 18.01 ms

Building final tree Points...

3 features tree built in 1.463 ms
100%
Import successful.
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 11.265 sec - in org.locationtech.geogig.geotools.cli.geopkg.GeoPkgImportTest
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try exporting a feature type': Using URIBuilder DefaultTestRepoURIBuilder

Importing changes to table Points onto feature tree Points...
0%
Fetching table...
Import successful.
Changes committed and merge at 4d7a3be4e33daa4d03efe899f3d17849bfefd80b
Fetching table...
Importing from database database
Fetching table...
Fetching table...
Table : table1
----------------------------------------
	Property  : label
	Type      : String
----------------------------------------
	Property  : geom
	Type      : Point
----------------------------------------
Importing from database database
Fetching table...
Importing from database database
Table : table1
----------------------------------------
	Property  : label
	Type      : String
----------------------------------------
	Property  : geom
	Type      : Point
----------------------------------------

Exporting from Points to Points... 
33%
100%
Points exported successfully to /opt/public/hipp/ramdisk/geogig/junit5053912385003242687/repo-127604480/TestPoints.geojson
Fetching table...
Importing from database database
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 12.15 sec - in org.locationtech.geogig.geotools.cli.postgis.PGDescribeTest
Fetching table...
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 12.282 sec - in org.locationtech.geogig.geotools.cli.oracle.OracleDescribeTest

Exporting from Points to Points... 
33%
Fetching feature types...
 - table4
 - table3
 - table2
 - table1
 - shpLikeTable2
 - shpLikeTable
 - GeoJsonLikeTable2
 - GeoJsonLikeTable
100%
Points exported successfully to Points

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

Creating audit metadata for table 'Points'
Fetching feature types...
The shapefile 'file://nonexistent.shp' could not be found, skipping...

  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)
2017-10-16T15:55:54.713-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


Importing changes to table Points onto feature tree Points...
0%
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

Fetching feature types...

Exporting from Points to Points... 
33%
100%
Points exported successfully to /opt/public/hipp/ramdisk/geogig/junit7505275648704037939/repo-1832564274/TestPoints.geojson

Exporting from Lines to Lines... 
33%
Lines exported successfully to /opt/public/hipp/ramdisk/geogig/junit7505275648704037939/repo-1832564274/TestPoints.geojson
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 13.178 sec - in org.locationtech.geogig.geotools.cli.geojson.GeoJsonExportTest
Fetching feature types...
 - table4
 - table3
 - table2
 - table1
 - shpLikeTable2
 - shpLikeTable
 - GeoJsonLikeTable2
 - GeoJsonLikeTable
2017-10-16T15:55:54.860-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

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: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 12.929 sec - in org.locationtech.geogig.geotools.cli.oracle.OracleListTest
Importing from database database
[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)
Fetching feature types...

Importing table2           (1/2)... 
Importing from database database
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 13.303 sec - in org.locationtech.geogig.geotools.cli.geopkg.GeoPkgPullTest
Fetching feature types...

Importing table2           (1/2)... 
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%
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try describing a GeoPackage table': Using URIBuilder DefaultTestRepoURIBuilder
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: 13.237 sec - in org.locationtech.geogig.geotools.cli.postgis.PGListTest
0%
Fetching table...
Table : table1
----------------------------------------
	Property  : label
	Type      : String
----------------------------------------
	Property  : geom
	Type      : Point
----------------------------------------

1 features inserted in 47.84 ms

Building final tree table2...

1 features tree built in 19.92 ms
0%
Importing table1           (2/2)... 

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

1 features inserted in 48.85 ms

Building final tree table2...

1 features tree built in 3.006 ms

Importing table1           (2/2)... 
Importing from database database

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

Importing table1           (1/1)... 
Fetching feature types...
 - table4
 - table3
 - table2
 - table1
 - shpLikeTable2
 - shpLikeTable
 - GeoJsonLikeTable2
 - GeoJsonLikeTable

  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)
0%
2 features inserted in 3.482 ms

Building final tree table1...
Importing from database database

Importing table1           (1/1)... 

2 features tree built in 11.19 ms
0%
100%
Import successful.
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


2 features inserted in 28.61 ms

Building final tree table1...

2 features tree built in 1.034 ms
100%
Import successful.
Fetching feature types...
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 table4           (1/8)... 

Importing table3           (2/8)... 
Importing from database database
Fetching table...
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 14.28 sec - in org.locationtech.geogig.geotools.cli.geopkg.GeoPkgDescribeTest
Importing from database database
0%
1 features inserted in 2.849 ms

Building final tree table3...

1 features tree built in 770.7 μs

Importing table2           (3/8)... 
Fetching feature types...

1 features inserted in 2.515 ms

Building final tree table2...

1 features tree built in 2.393 ms
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

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


Importing table1           (4/8)... 

2 features inserted in 2.806 ms

Building final tree table1...
Importing from database database
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 table4           (1/8)... 

2 features tree built in 9.505 ms
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: 14.363 sec - in org.locationtech.geogig.geotools.cli.geopkg.GeoPkgListTest

Importing table3           (2/8)... 

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

Building final tree table3...

1 features tree built in 784.5 μs
0%
Importing from database database

Importing table4           (1/8)... 

Importing table3           (2/8)... 

1 features inserted in 23.51 ms

Building final tree shpLikeTable2...

1 features tree built in 577.7 μs
0%
1 features inserted in 3.454 ms

Building final tree table3...

1 features tree built in 13.59 ms

Importing table2           (3/8)... 

Importing shpLikeTable     (6/8)... 

Importing table2           (3/8)... 
1%
0%
1 features inserted in 2.634 ms

Building final tree table2...

1 features inserted in 2.460 ms

Building final tree shpLikeTable...

1 features tree built in 568.4 μs

1 features inserted in 2.441 ms

Building final tree table2...

1 features tree built in 8.794 ms

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

1 features tree built in 4.773 ms

Importing table1           (4/8)... 

2 features inserted in 2.616 ms

Building final tree table1...

2 features tree built in 578.0 μs

Importing shpLikeTable2    (5/8)... 

1 features inserted in 2.234 ms

Building final tree shpLikeTable2...

1 features tree built in 486.7 μs

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

Building final tree table1...

2 features tree built in 753.7 μs

Importing shpLikeTable2    (5/8)... 

Importing shpLikeTable     (6/8)... 

1 features inserted in 2.391 ms

Building final tree shpLikeTable2...

1 features tree built in 556.7 μs

Importing shpLikeTable     (6/8)... 
1%
1 features inserted in 1.766 ms

Building final tree GeoJsonLikeTable2...

1 features tree built in 1.816 ms

Importing GeoJsonLikeTable (8/8)... 
2017-10-16T15:55:56.861-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

1 features inserted in 1.676 ms

Building final tree GeoJsonLikeTable...

1 features tree built in 596.1 μs
100%
1%
1 features inserted in 1.360 ms

Building final tree shpLikeTable...

1 features tree built in 449.8 μs
1%
1 features inserted in 1.357 ms

Building final tree shpLikeTable...

1 features tree built in 10.59 ms
/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.

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

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

1 features inserted in 1.627 ms

Building final tree GeoJsonLikeTable2...
Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 15.202 sec - in org.locationtech.geogig.geotools.cli.shp.ShpImportTest

1 features tree built in 578.4 μs

Importing GeoJsonLikeTable (8/8)... 

1 features inserted in 1.533 ms

Building final tree GeoJsonLikeTable...
2017-10-16T15:55:56.995-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

1 features tree built in 589.6 μs
100%
Import successful.
1%
1 features inserted in 10.58 ms

Building final tree GeoJsonLikeTable2...

1 features tree built in 592.8 μs

Importing GeoJsonLikeTable (8/8)... 
Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 14.842 sec - in org.locationtech.geogig.geotools.cli.postgis.PGImportTest

1 features inserted in 1.573 ms

Building final tree GeoJsonLikeTable...

1 features tree built in 581.6 μs
100%
Import successful.
Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 15.082 sec - in org.locationtech.geogig.geotools.cli.oracle.OracleImportTest

Exporting from Points to Points... 
33%
100%
Points exported successfully to Points
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 Lines to Points... 
33%
Lines exported successfully to Points
[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
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 15.797 sec - in org.locationtech.geogig.geotools.cli.geopkg.GeoPkgExportTest

Exporting from WORK_HEAD: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)
100%
WORK_HEAD:Points exported successfully to /opt/public/hipp/ramdisk/geogig/junit8482767191403842790/repo-837100889/TestPoints.shp

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

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

Exporting from Points to TestPoints... 
33%
Exporting from WORK_HEAD:Points to testTable... 
33%
100%
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] 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)

  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

Exporting from Points to Points... 
33%
100%
Points exported successfully to Points
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
       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: 17.36 sec - in org.locationtech.geogig.geotools.cli.postgis.PGExportTest

Exporting from Points to TestPoints... 
33%
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: 17.562 sec - in org.locationtech.geogig.geotools.cli.oracle.OracleExportTest
100%
Points exported successfully to /opt/public/hipp/ramdisk/geogig/junit3866788527963755184/repo1481473987/TestPoints.shp
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try exporting a feature type': Using URIBuilder DefaultTestRepoURIBuilder

Exporting from Points to TestPoints... 
33%
100%
Points exported successfully to /opt/public/hipp/ramdisk/geogig/junit5941772253442513569/repo-710531181/TestPoints.shp

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

  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 with mixed feature types': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try exporting an inexistent feature type': 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)

  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 to a table that already exists': Using URIBuilder DefaultTestRepoURIBuilder
[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 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)

  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 with mixed feature types using --alter': 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 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 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)
[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)

  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 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)

  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)
0m21.694s

Tests run: 36, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 24.101 sec - in org.locationtech.geogig.geotools.cli.shp.RunShpFunctionalTest
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to import a full GeoPackage file': Using URIBuilder DefaultTestRepoURIBuilder

  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
[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)

  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)
Tests run: 24, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 26.586 sec - in org.locationtech.geogig.geotools.plumbing.ImportOpTest
[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] 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)
0m27.384s

Tests run: 93, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 29.962 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.InitTest
Running org.locationtech.geogig.web.api.commands.GetCommitGraphTest
Running org.locationtech.geogig.web.api.commands.RequestDeleteRepositoryTokenTest
Running org.locationtech.geogig.web.api.commands.MergeTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.864 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: 4.145 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.885 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/junit1098621077797277616/testrepo/.geogig/
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.763 sec - in org.locationtech.geogig.web.api.commands.InitTest
Running org.locationtech.geogig.web.api.commands.CommitTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 9.151 sec - in org.locationtech.geogig.web.api.commands.RenameRepositoryTest
Running org.locationtech.geogig.web.api.commands.PushTest
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 10.165 sec - in org.locationtech.geogig.web.api.commands.ConfigTest
Running org.locationtech.geogig.web.api.commands.BranchTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.262 sec - in org.locationtech.geogig.web.api.commands.BeginTransactionTest
Running org.locationtech.geogig.web.api.commands.RemoteManagementTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 10.613 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: 10.827 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: 2.396 sec - in org.locationtech.geogig.web.api.commands.CommitTest
Running org.locationtech.geogig.web.api.index.UpdateIndexTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 11.383 sec - in org.locationtech.geogig.web.api.commands.RefParseTest
Running org.locationtech.geogig.web.api.index.CreateIndexTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 11.891 sec - in org.locationtech.geogig.web.api.commands.RebuildGraphTest
Running org.locationtech.geogig.web.api.index.ListIndexesTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 12.406 sec - in org.locationtech.geogig.web.api.commands.GetCommitGraphTest
Running org.locationtech.geogig.web.api.index.RebuildIndexTest
Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 12.938 sec - in org.locationtech.geogig.web.api.commands.FeatureDiffTest
Running org.locationtech.geogig.web.api.XMLStreamingWriterTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 13.368 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.059 sec - in org.locationtech.geogig.web.api.JSONCompareTest
Running org.locationtech.geogig.web.api.JSONStreaminWriterTest
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 12.912 sec - in org.locationtech.geogig.web.api.commands.DiffTest
Running org.locationtech.geogig.rest.geopkg.GeoPackageExportDiffIntegrationTest
Tests run: 27, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.22 sec - in org.locationtech.geogig.web.api.JSONStreaminWriterTest
Running org.locationtech.geogig.rest.geopkg.GeoPackageImportIntegrationTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 14.305 sec - in org.locationtech.geogig.web.api.commands.EndTransactionTest
Running org.locationtech.geogig.rest.geopkg.GeoPackageExportIntegrationTest
Tests run: 27, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.41 sec - in org.locationtech.geogig.web.api.XMLStreamingWriterTest
Running org.locationtech.geogig.rest.geotools.ExportTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.579 sec - in org.locationtech.geogig.web.api.commands.StatisticsTest
Running org.locationtech.geogig.rest.repository.InitRequestUtilTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.136 sec - in org.locationtech.geogig.rest.repository.InitRequestUtilTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.377 sec - in org.locationtech.geogig.web.api.index.RebuildIndexTest
Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 11.474 sec - in org.locationtech.geogig.web.api.commands.RevertFeatureTest
Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 12.524 sec - in org.locationtech.geogig.web.api.commands.ReportMergeScenarioTest
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/master -> f228f4b52e50c5a933670353c157c46256773ab2] to refs/remotes/origin/master(master)
Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 17.046 sec - in org.locationtech.geogig.web.api.commands.BlameTest
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 17.114 sec - in org.locationtech.geogig.web.api.commands.MergeTest
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 17.637 sec - in org.locationtech.geogig.web.api.commands.LsTreeTest
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.818 sec - in org.locationtech.geogig.web.api.index.CreateIndexTest
Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.04 sec - in org.locationtech.geogig.web.api.commands.CatTest
Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.727 sec - in org.locationtech.geogig.web.api.commands.BranchTest
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 18.801 sec - in org.locationtech.geogig.web.api.commands.CheckoutTest
Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.135 sec - in org.locationtech.geogig.web.api.index.ListIndexesTest
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 19.209 sec - in org.locationtech.geogig.web.api.commands.FetchTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.597 sec - in org.locationtech.geogig.rest.geopkg.GeoPackageExportDiffIntegrationTest
Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 19.149 sec - in org.locationtech.geogig.web.api.commands.LogTest
Tests run: 14, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 19.041 sec - in org.locationtech.geogig.web.api.commands.UpdateRefTest
Tests run: 14, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 19.501 sec - in org.locationtech.geogig.web.api.commands.TagTest
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/branch1 -> 1bacda72de39cafcb15e428b1c7475175ad2f57f] to refs/remotes/origin/branch1(null)
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/branch2 -> 83d485fdc893d3a7d740191a26d803cb2b434180] to refs/remotes/origin/branch2(null)
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/master -> b9a864ca66f6674f15eb22750cb4e2bf852457e2] to refs/remotes/origin/master(null)
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.544 sec - in org.locationtech.geogig.rest.geotools.ExportTest
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 20.438 sec - in org.locationtech.geogig.web.api.commands.PullTest
Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 11.156 sec - in org.locationtech.geogig.web.api.commands.PushTest
Tests run: 14, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 9.014 sec - in org.locationtech.geogig.web.api.index.UpdateIndexTest
Tests run: 15, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.764 sec - in org.locationtech.geogig.rest.geopkg.GeoPackageImportIntegrationTest
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.028 sec - in org.locationtech.geogig.rest.geopkg.GeoPackageExportIntegrationTest
Tests run: 27, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 19.236 sec - in org.locationtech.geogig.web.api.commands.RemoteManagementTest

Results :

Tests run: 463, 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.093 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)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Disposing repository {}. Cause: manually removed by remove() or invalidateAll()


  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: 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)

  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)
[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver

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

Tests run: 82, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.713 sec - in org.geogig.web.functional.MissingResolversTest
[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 - 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 - 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()
[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)
[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)

2 Scenarios (2 passed)
12 Steps (12 passed)
0m5.607s

[main] INFO org.locationtech.geogig.web.MultiRepositoryProvider - Loading repository repo1 using FileRepositoryResolver
Tests run: 14, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.412 sec - in org.geogig.web.functional.InitFunctionalTest
[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/junit1684877666953985630/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/junit2879988553928399645/464e2c113767987d/.geogig/
[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/junit708554578656267170/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", 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
[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
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit7339444934690638548/b1f20669b830e668/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit4636381697078767142/86b582ab1be46935/.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 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
[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
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit2332632666136675524/0e6367f315f499d8/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit3486081196471895474/fd5be299caac69d0/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit3486081196471895474/fd5be299caac69d0/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit5162500240954153979/0b719859789f51bf/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit5162500240954153979/0b719859789f51bf/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit1570026233444023109/f76d7c2b453f652e/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit1570026233444023109/f76d7c2b453f652e/.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 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
[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
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit6772524185917131254/58d216b1b530ec6f/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit3915064551775557627/e3c2c49c4d937b16/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit6772524185917131254/58d216b1b530ec6f/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit1263953109350888827/c36f65f90fde8906/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit1263953109350888827/c36f65f90fde8906/.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 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}'
[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
[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()
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit2332632666136675524/0e6367f315f499d8/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit7339444934690638548/b1f20669b830e668/.geogig/
[Finalizer] WARN org.locationtech.geogig.repository.impl.RepositoryImpl - Repository instance being finalized without having been closed: file:/opt/public/hipp/ramdisk/geogig/junit3915064551775557627/e3c2c49c4d937b16/.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()

  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                                         # WebAPICucumberHooks.checkXPathCadinality(String,int)
    And the response body should contain "REMOVED"                                                       # WebAPICucumberHooks.checkResponseTextContains(String)
    And the response body should contain "StringProp1_3"                                                 # WebAPICucumberHooks.checkResponseTextContains(String)
    And the response body should contain "3000"