SuccessConsole Output

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-beta1
[INFO] ------------------------------------------------------------------------
[INFO] Downloading: https://repo.boundlessgeo.com/main/org/geotools/gt-shapefile/15.4/gt-shapefile-15.4.pom
[INFO] Downloaded: https://repo.boundlessgeo.com/main/org/geotools/gt-shapefile/15.4/gt-shapefile-15.4.pom (6 KB at 21.4 KB/sec)
[INFO] Downloading: https://repo.boundlessgeo.com/main/org/geotools/gt-shapefile/15.4/gt-shapefile-15.4.jar
[INFO] Downloaded: https://repo.boundlessgeo.com/main/org/geotools/gt-shapefile/15.4/gt-shapefile-15.4.jar (215 KB at 931.6 KB/sec)
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ geogig-cli ---
[INFO] Deleting /home/hudson/genie.geogig/.hudson/jobs/geogig-release/workspace/src/cli/target
[INFO] 
[INFO] --- git-commit-id-plugin:2.1.8: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/.hudson/jobs/geogig-release/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/.hudson/jobs/geogig-release/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/.hudson/jobs/geogig-release/workspace/src/cli/target/surefire-reports

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

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running org.locationtech.geogig.cli.test.functional.RunPorcelainFunctionalTest
Running org.locationtech.geogig.cli.test.functional.RunGenralFunctionalTest
Running org.locationtech.geogig.cli.test.functional.RunRemoteFunctionalTest
Running org.locationtech.geogig.cli.test.functional.RunPlumbingFunctionalTest
Running org.locationtech.geogig.cli.test.functional.RunHooksFunctionalTest
Running org.locationtech.geogig.cli.test.functional.RunIndexFunctionalTest
Running org.locationtech.geogig.cli.test.ArgumentTokenizerTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.155 sec - in org.locationtech.geogig.cli.test.ArgumentTokenizerTest
Feature: "hooks" functionality
    In order to control how geogig commands are executed
    As a Geogig User
    I want to set hooks in my repo
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 - 'Set a pre-commit hook and perform a wrong commit': Using URIBuilder DefaultTestRepoURIBuilder
[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
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Use command alias': Using URIBuilder DefaultTestRepoURIBuilder
Feature: "cat" command
    In order to know the content of a given element
    As a Geogig User
    I want to display its content
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show the content of a tree.': Using URIBuilder DefaultTestRepoURIBuilder
Feature: 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
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show the content of a feature.': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show command candidates when command is mistyped': 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)

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

  Scenario: Show command candidate when command is mistyped # General.feature:15
    Given I have a repository                               # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "brunch"                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Did you mean this?"   # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "branch"                # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code              # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.hooks.Scripting - Running jvm script /opt/public/hipp/ramdisk/geogig/junit8390622722280100698/data/localrepo/.geogig/hooks/pre_commit.js

  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.cli.test.functional.DefaultStepDefinitions - 'Try to add features to the index': Using URIBuilder DefaultTestRepoURIBuilder

  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)

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

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

Tests run: 27, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.081 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
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to clone with too many parameters': Using URIBuilder DefaultTestRepoURIBuilder

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

  Scenario: Try to clone 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 clone a remote repository': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to add a specific feature type to the index': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to 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 features to the index                                    # Add.feature:16
    Given I have a repository                                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have unstaged "points1"                                               # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "points2"                                               # DefaultStepDefinitions.I_have_unstaged(String)
    And I have unstaged "lines1"                                                # DefaultStepDefinitions.I_have_unstaged(String)
    When I run the command "add"                                                # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "3 features and 2 trees staged for commit" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show the content of a feature that does not exist': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show the content of a feature.                                         # Cat.feature:16
    Given I have a repository                                                             # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                                # DefaultStepDefinitions.I_stage_6_features()
    When I run the command "commit -m TestCommit"                                         # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "cat HEAD:Points/Points.1"                                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "1000"                                               # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "POINT (1 1)"                                         # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "StringProp1_1"                                       # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|HEAD:Points/Points.1}" # DefaultStepDefinitions.checkResponseTextContains(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to add a using too many parameters': Using URIBuilder DefaultTestRepoURIBuilder
[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 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.hooks.Scripting - Running jvm script /opt/public/hipp/ramdisk/geogig/junit6529896398071876016/data/localrepo/.geogig/hooks/pre_commit.js

  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 - 'Rebasing a branch generates indexes for each rebased commit': Using URIBuilder DefaultTestRepoURIBuilder

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

  Scenario: Set a pre-commit hook and perform a valid commit                           # Hooks.feature:14
    Given I have a repository                                                          # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                             # DefaultStepDefinitions.I_stage_6_features()
    And I set up a hook                                                                # DefaultStepDefinitions.I_set_up_a_hook()
    When I run the command "commit -m LongerMessage "                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then it should exit with zero exit code                                            # DefaultStepDefinitions.it_should_exit_with_zero_exit_code()
    And the response should not contain "Commit messages must have at least 5 letters" # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain "6 features added"                                 # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to add a specific feature to the index': Using URIBuilder DefaultTestRepoURIBuilder

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

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

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

  Scenario: Try to show the content of a feature in the working tree.                          # Cat.feature:32
    Given I have a repository                                                                  # DefaultStepDefinitions.I_have_a_repository()
    And I have 6 unstaged features                                                             # DefaultStepDefinitions.I_have_6_unstaged_features()
    When I run the command "cat WORK_HEAD:Points/Points.1"                                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "1000"                                                    # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "POINT (1 1)"                                              # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "StringProp1_1"                                            # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|WORK_HEAD:Points/Points.1}" # DefaultStepDefinitions.checkResponseTextContains(String)
[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 clone a remote repository with blank spaces': Using URIBuilder DefaultTestRepoURIBuilder

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

  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 - 'Try to add when no changes have been made': 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()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to just stage a modified feature with add update': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to add when no changes have been made       # Add.feature:67
    Given I have a repository                               # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "add"                            # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "No unstaged elements" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to clone a remote repository that does not exist': Using URIBuilder DefaultTestRepoURIBuilder
commitHMO���zJ���|W9John DoeJohnDoe@example.com[�d���$FJohn DoeJohnDoe@example.com[�d���$F
TestCommit
  #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)

  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
[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 - 'Creating a branch updates the index': 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)

  Scenario: Cherry-picking a commit updates the index                             # AutomaticIndexUpdating.feature:54
    Given I have a repository                                                     # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                                   # DefaultStepDefinitions.I_have_several_branches()
    And I run the command "index create --tree Points"                            # DefaultStepDefinitions.I_run_the_command_X(String)
    And the repository's "HEAD:Points" index should have the following features:  # DefaultStepDefinitions.verifyIndexContents(String,DataTable)
    When I run the command "cherry-pick branch1"                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the repository's "HEAD:Points" index should have the following features: # DefaultStepDefinitions.verifyIndexContents(String,DataTable)

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

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

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

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

  Scenario: Check if a patch can be applied twice                  # Apply.feature:21
    Given I have a repository                                      # DefaultStepDefinitions.I_have_a_repository()
    And I have 6 unstaged features                                 # DefaultStepDefinitions.I_have_6_unstaged_features()
    And I have a patch file                                        # DefaultStepDefinitions.I_have_a_patch_file()
    When I run the command "apply ${currentdir}/test.patch"        # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "apply --check ${currentdir}/test.patch" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Patch can be applied"        # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - '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 - 'Show diff tree stats between working tree and index': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create an index with user-specified bounds': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Show diff between working tree and index, omitting both refspecs # DiffTree.feature:23
    Given I have a repository                                                # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                                   # DefaultStepDefinitions.I_stage_6_features()
    And I modify a featuregit                                                # DefaultStepDefinitions.I_modify_a_feature()
    When I run the command "diff-tree"                                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points/Points.1"                       # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain 1 lines                                  # DefaultStepDefinitions.the_response_should_contain_x_lines(int)

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

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

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

  Scenario: Show diff tree stats between working tree and index # DiffTree.feature:31
    Given I have a repository                                   # DefaultStepDefinitions.I_have_a_repository()
    And I stage 6 features                                      # DefaultStepDefinitions.I_stage_6_features()
    And I modify a feature                                      # DefaultStepDefinitions.I_modify_a_feature()
    When I run the command "diff-tree --tree-stats"             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points 0 0 1"             # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to apply an inexistent patch': 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)

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

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


  Scenario: Try to create an index with too few bounds parameters                                                   # CreateIndex.feature:66
  Scenario: Show diff using too many commit refspecs                  # DiffTree.feature:38
    Given I have a repository                                         # DefaultStepDefinitions.I_have_a_repository()
    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)
    And I have several commits                                                                                      # DefaultStepDefinitions.I_have_several_commits()
    Then the response should contain "Tree refspecs list is too long" # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "index create --tree Points --bounds -45,-45,45"                                         # DefaultStepDefinitions.I_run_the_command_X(String)
    And it should exit with non-zero exit code                        # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
    Then the response should contain "Invalid bbox parameter: '-45,-45,45'. Expected format: <minx,miny,maxx,maxy>" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Apply a reversed patch that cannot be applied': Using URIBuilder DefaultTestRepoURIBuilder

  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 - '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 clone a remote repository with a single argument': 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)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create an index on a nonexistent tree': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show diff between working tree and index, describing the modified element': Using URIBuilder DefaultTestRepoURIBuilder

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

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

  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 - '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)
[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:528)
	at org.locationtech.geogig.cli.GeogigCLI.execute(GeogigCLI.java:367)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:159)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:153)
	at org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions.I_run_the_command_X(DefaultStepDefinitions.java:214)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at cucumber.runtime.Utils$1.call(Utils.java:37)
	at cucumber.runtime.Timeout.timeout(Timeout.java:13)
	at cucumber.runtime.Utils.invoke(Utils.java:31)
	at cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:38)
	at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37)
	at cucumber.runtime.Runtime.runStep(Runtime.java:299)
	at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44)
	at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39)
	at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:44)
	at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:91)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:93)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:37)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.api.junit.Cucumber.run(Cucumber.java:98)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show diff between working tree and index, with a change in the feature type': Using URIBuilder DefaultTestRepoURIBuilder

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

  Scenario: 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)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to run blame with a valid path in porcelain mode': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to fetch from origin': 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)

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

  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 - '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 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 create an index with the full history': Using URIBuilder DefaultTestRepoURIBuilder
[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 create an index on a non-geometry attribute                 # CreateIndex.feature:90
    Given I have a repository                                                  # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                 # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree Points --attribute sp"         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "property sp is not a geometry attribute" # DefaultStepDefinitions.the_response_should_contain(String)

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

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

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

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

  Scenario: Try to 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 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 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)

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

  Scenario: Try to run blame with no arguments                  # Blame.feature:38
    Given I have a repository                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                  # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "blame"                              # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "A path must be specified" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to fetch from origin without specifying a remote': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to insert a feature passing a wrong file': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to deepen the history of a shallow clone                           # Fetch.feature:36
    Given I am in an empty directory                                               # DefaultStepDefinitions.I_am_in_an_empty_directory()
    And there is a remote repository                                               # DefaultStepDefinitions.there_is_a_remote_repository()
    When I run the command "clone --depth 1 ${remoterepo} ${localrepo}"            # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "log"                                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should not contain "Commit4"                                 # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain variable "{@ObjectId|remoterepo|master~1}" # DefaultStepDefinitions.checkResponseTextDoesNotContain(String)
    When I run the command "fetch --depth 2"                                       # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "log"                                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Commit5"                                     # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit4"                                      # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|remoterepo|master~1}"     # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should not contain "Commit1"                                  # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain variable "{@ObjectId|remoterepo|master~2}" # DefaultStepDefinitions.checkResponseTextDoesNotContain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create a full history index on an empty repository': 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 an index without specifying a tree            # CreateIndex.feature:164
    Given I have a repository                                           # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                          # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree"                        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Expected a value after parameter" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create a full history index on a repository with a single commit': Using URIBuilder DefaultTestRepoURIBuilder

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

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

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

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

  Scenario: Try to create a branch while not in a repository      # Branch.feature:6
    Given I am in an empty directory                              # DefaultStepDefinitions.I_am_in_an_empty_directory()
    And I run the command "branch newBranch"                      # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Not in a geogig repository" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to list branches while not in a geogig 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

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

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

  Scenario: Try to fetch from 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)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to create a branch with a non-existent start point': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to fetch from origin with pruning': 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

  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 recursively including trees': Using URIBuilder DefaultTestRepoURIBuilder

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

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

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

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

  Scenario: Show a list of features in the root tree non-recursively # LsTree.feature:25
    Given I have a repository                                        # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                      # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                      # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                       # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "ls-tree"                                 # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should not contain "tree"                      # DefaultStepDefinitions.the_response_should_not_contain(String)
    Then the response should not contain "Points/Points.1"           # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain "Points"                         # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Lines"                          # DefaultStepDefinitions.the_response_should_contain(String)
    Then the response should not contain "Points/Points.1"           # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain variable "{@PointsTypeID}"   # DefaultStepDefinitions.checkResponseTextDoesNotContain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to 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 - 'Try to checkout a branch as soon as it is created': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to drop a nonexistent index': 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)
[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: 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)

  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 - '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 create a branch off of master while not on master': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to drop the index without specifying a tree': Using URIBuilder DefaultTestRepoURIBuilder

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

  Scenario: Try to drop a nonexistent index                                  # DropIndex.feature:23
    Given I have a repository                                                # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                               # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index drop --tree nonexistent"                   # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Can't find feature tree 'nonexistent'" # DefaultStepDefinitions.the_response_should_contain(String)
[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 - 'Show a list of features using STAGE_HEAD as non-recursively, including trees': 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 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 - 'Try to create a branch with the same name as an existing branch': Using URIBuilder DefaultTestRepoURIBuilder

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

  Scenario: I try to drop 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)

  Scenario: Show a list of features using STAGE_HEAD as non-recursively, including trees # LsTree.feature:71
    Given I have a repository                                                            # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                                          # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                                          # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                                           # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "ls-tree STAGE_HEAD -t -v"                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "tree"                                              # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Points 1.0;2.0;1.0;2.0 2"                           # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Lines 1.0;2.0;1.0;2.0 1 0"                          # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "Points/Points.1"                                # DefaultStepDefinitions.the_response_should_not_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Show a verbose list of features using HEAD as origin, recursively': Using URIBuilder DefaultTestRepoURIBuilder
[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:528)
	at org.locationtech.geogig.cli.GeogigCLI.execute(GeogigCLI.java:367)
	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: Show a list of trees using HEAD as origin, recursively # LsTree.feature:82
    Given I have a repository                                      # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                    # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "points2"                                    # DefaultStepDefinitions.I_have_staged(String)
    And I have staged "lines1"                                     # DefaultStepDefinitions.I_have_staged(String)
    And I run the command "commit -m Test"                         # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "ls-tree HEAD -t"                       # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Points"                      # DefaultStepDefinitions.the_response_should_contain(String)
    Then the response should contain "Lines"                       # DefaultStepDefinitions.the_response_should_contain(String)
    Then the response should not contain "Points/Points.1"         # DefaultStepDefinitions.the_response_should_not_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to drop an index in an empty repository': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to list local branches': 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)

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

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

  Scenario: I try to drop 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
[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 - 'Show a list of features in a path, using HEAD as origin': Using URIBuilder DefaultTestRepoURIBuilder

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

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

  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 - 'Try to list remote branches only': Using URIBuilder DefaultTestRepoURIBuilder
[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 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)

  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 - '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 - '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 - '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 view the parent using a bad left commit reference': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to list the indexes when there are none': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to list all branches': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: I try to view the common parent with too many arguments           # MergeBase.feature:14
    Given I have a repository                                                 # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                               # DefaultStepDefinitions.I_have_several_branches()
    And I run the command "merge branch1 -m MergeMessage"                     # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "merge-base commit1 commit2 commit3"               # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Two commit references must be provided" # DefaultStepDefinitions.the_response_should_contain(String)

  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)

  Scenario: Try to list remote branches only         # Branch.feature:88
    Given I have a repository with a remote          # DefaultStepDefinitions.I_have_a_repository_with_a_remote()
    And I run the command "pull origin --rebase"     # DefaultStepDefinitions.I_run_the_command_X(String)
    When I run the command "branch -r"               # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "origin/master" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "origin/branch1" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "origin/HEAD"    # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should not contain "* master"   # DefaultStepDefinitions.the_response_should_not_contain(String)
[main] 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:528)
	at org.locationtech.geogig.cli.GeogigCLI.execute(GeogigCLI.java:367)
	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
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to push with no changes': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to list the indexes in an empty repository': 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)

  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 - 'I try to view the parent using a bad right commit reference': 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: 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)

  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 push to origin': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to rebuild a nonexistent index': 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: 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 delete a branch without specifying a name': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to delete a branch                               # Branch.feature:106
    Given I have a repository                                    # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                  # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "branch --delete branch1"             # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Deleted branch 'branch1'." # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to rebuild the graph with quiet argument': Using URIBuilder DefaultTestRepoURIBuilder
[main] ERROR org.locationtech.geogig.cli.GeogigCLI - A matching index could not be found.
java.lang.IllegalStateException: A matching index could not be found.
	at com.google.common.base.Preconditions.checkState(Preconditions.java:173)
	at org.locationtech.geogig.plumbing.index.BuildFullHistoryIndexOp._call(BuildFullHistoryIndexOp.java:77)
	at org.locationtech.geogig.plumbing.index.BuildFullHistoryIndexOp._call(BuildFullHistoryIndexOp.java:39)
	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:528)
	at org.locationtech.geogig.cli.GeogigCLI.execute(GeogigCLI.java:367)
	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: 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 - '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 - 'Try to delete multiple branches': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.plumbing.SendPack - Pushing Ref[refs/heads/master -> 06f16af20473a0d9f8b1c994f5d31df2209f94ac] to refs/remotes/origin/master(null)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to rebuild the graph when it is not broken': 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.cli.test.functional.DefaultStepDefinitions - 'Try to push a symbolic reference': 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)

  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)

  Scenario: I try to rebuild the graph when it is not broken                   # RebuildGraph.feature:21
    Given I have a repository                                                  # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                 # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "rebuild-graph"                                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "No missing or incomplete graph elements" # DefaultStepDefinitions.the_response_should_contain(String)
Feature: "rev-list" command
    In order to know the history of commits on a repository
    As a Geogig User
    I want to see a list of commits
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show only a range of commits.': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to 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:77)
	at org.locationtech.geogig.plumbing.index.BuildFullHistoryIndexOp._call(BuildFullHistoryIndexOp.java:39)
	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:528)
	at org.locationtech.geogig.cli.GeogigCLI.execute(GeogigCLI.java:367)
	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 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 show a range of commits and provide additional commits.': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to push when the remote has changes': 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: 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
[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 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 log of a repository with a single commit.': Using URIBuilder DefaultTestRepoURIBuilder

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

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

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

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

  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)

29 Scenarios (29 passed)
201 Steps (201 passed)
0m30.961s

Tests run: 230, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 31.805 sec - in org.locationtech.geogig.cli.test.functional.RunRemoteFunctionalTest
[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 - '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
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show only the last two commits.': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show a log of the commits that have changed the points feature # RevList.feature:41
    Given I have a repository                                                     # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                    # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "rev-list HEAD --path Points"                           # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Commit1"                                    # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit2"                                     # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit4"                                     # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|master~3}"     # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should not contain "Commit3"                                 # DefaultStepDefinitions.the_response_should_not_contain(String)

  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 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 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 without being in a repository': Using URIBuilder DefaultTestRepoURIBuilder

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

  Scenario: Try to rename a branch without being in a repository  # Branch.feature:176
    Given I am in an empty directory                              # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "branch --rename branch2"              # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Not in a geogig repository" # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show 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 show the list of commits, with the changes introduced by each one': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to show the log, skipping the last 2 commits                    # RevList.feature:68
    Given I have a repository                                                   # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                  # DefaultStepDefinitions.I_have_several_commits()
    And I run the command "rev-list HEAD --skip 2"                              # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Commit1"                                  # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Commit2"                                   # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|master~3}"   # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should not contain "Commit3"                               # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain "Commit4"                               # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should not contain variable "{@ObjectId|localrepo|master}" # DefaultStepDefinitions.checkResponseTextDoesNotContain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to rename a branch to the same name': Using URIBuilder DefaultTestRepoURIBuilder
[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 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()

  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)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to show a log from an empty directory': Using URIBuilder DefaultTestRepoURIBuilder

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

  Scenario: Try to show a log from an empty directory                # RevList.feature:91
    Given I am in an empty directory                                 # DefaultStepDefinitions.I_am_in_an_empty_directory()
    When I run the command "rev-list HEAD"                           # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should start with "Not in a geogig repository" # DefaultStepDefinitions.the_response_should_start_with(String)
    And it should exit with non-zero exit code                       # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
Feature: "rev-parse" command
    As a Geogig User
    I want to determine if I am in a repository
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to print out the repository location"': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to replace attributes of 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

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

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

  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)
[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 update the bounds 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

  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)

  Scenario: Create a new branch and check it out                           # Checkout.feature:6
    Given I have a repository                                              # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                             # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "branch newBranch"                              # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Created branch refs/heads/newBranch" # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "checkout newBranch"                            # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "status"                                         # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "# On branch newBranch"               # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to checkout without specifying a path': 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 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 - '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 checkout a branch that doesn't exist': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to update the bounds of an index with incorrect bounds parameter': Using URIBuilder DefaultTestRepoURIBuilder

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

  Scenario: Try to checkout a branch that doesn't exist                   # Checkout.feature:35
    Given I have a repository                                             # DefaultStepDefinitions.I_have_a_repository()
    When I run the command "checkout noBranch"                            # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "'noBranch' not found in repository" # DefaultStepDefinitions.the_response_should_contain(String)
    And it should exit with non-zero exit code                            # DefaultStepDefinitions.it_should_exit_with_non_zero_exit_code()
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - '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 - 'Try to change existing attributes without specifying add or overwrite': 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 with forcing': 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)

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

  Scenario: Try to make a change but don't commit and then checkout a different branch with forcing # Checkout.feature:53
    Given I have a repository                                                                       # DefaultStepDefinitions.I_have_a_repository()
    And I have staged "points1"                                                                     # DefaultStepDefinitions.I_have_staged(String)
    When I run the command "commit -m Commit1"                                                      # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "branch newBranch"                                                        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Created branch refs/heads/newBranch"                          # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "checkout newBranch"                                                     # DefaultStepDefinitions.I_run_the_command_X(String)
    And I have unstaged "points2"                                                                   # DefaultStepDefinitions.I_have_unstaged(String)
    And I run the command "checkout -f master"                                                      # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "status"                                                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should not contain "# Changes not staged for commit:"                         # DefaultStepDefinitions.the_response_should_not_contain(String)
    And the response should contain "# On branch master"                                            # DefaultStepDefinitions.the_response_should_contain(String)
[main] 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:177)
	at org.locationtech.geogig.porcelain.index.UpdateIndexOp._call(UpdateIndexOp.java:40)
	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:528)
	at org.locationtech.geogig.cli.GeogigCLI.execute(GeogigCLI.java:367)
	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: List all references                                              # ShowRef.feature:6
    Given I have a repository                                                # DefaultStepDefinitions.I_have_a_repository()
    And I have several branches                                              # DefaultStepDefinitions.I_have_several_branches()
    When I run the command "show-ref"                                        # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain 3 lines                                 # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
    And the response should contain "master"                                 # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "branch1"                                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "branch2"                                # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain variable "{@ObjectId|localrepo|master}"  # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should contain variable "{@ObjectId|localrepo|branch1}" # DefaultStepDefinitions.checkResponseTextContains(String)
    And the response should contain variable "{@ObjectId|localrepo|branch2}" # DefaultStepDefinitions.checkResponseTextContains(String)
Feature: "verify-patch" command
    In order to ensure I have a valid patch
    As a Geogig User
    I want to verify the patch
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to verify a patch without specifying a file': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to 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 - 'I try to verify multiple files': Using URIBuilder DefaultTestRepoURIBuilder
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to get rid of changes that I have made with path filtering with multiple paths': Using URIBuilder DefaultTestRepoURIBuilder

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

  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 - 'Try to bring a feature from a different branch into this branch': Using URIBuilder DefaultTestRepoURIBuilder

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

  Scenario: I have a patch file that contains rejects              # VerifyPatch.feature:21
    Given I have a repository                                      # DefaultStepDefinitions.I_have_a_repository()
    And I have a patch file                                        # DefaultStepDefinitions.I_have_a_patch_file()
    When I run the command "verify-patch ${currentdir}/test.patch" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Patch cannot be applied"     # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain 10 lines                       # DefaultStepDefinitions.the_response_should_contain_x_lines(int)
[main] 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:149)
	at org.locationtech.geogig.porcelain.index.UpdateIndexOp._call(UpdateIndexOp.java:40)
	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:528)
	at org.locationtech.geogig.cli.GeogigCLI.execute(GeogigCLI.java:367)
	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: 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)

  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 using both --ours and --theirs': Using URIBuilder DefaultTestRepoURIBuilder

  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 update the index for a non-existent extra-attribute': Using URIBuilder DefaultTestRepoURIBuilder

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

  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()
[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 - 'Try to revert an unmerged feature': Using URIBuilder DefaultTestRepoURIBuilder

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

  Scenario: I try to overwrite a non-existent extra-attribute                                     # UpdateIndex.feature:216
    Given I have a repository                                                                     # DefaultStepDefinitions.I_have_a_repository()
    And I have several commits                                                                    # DefaultStepDefinitions.I_have_several_commits()
    When I run the command "index create --tree Points --extra-attributes ip"                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Index created successfully"                                 # DefaultStepDefinitions.the_response_should_contain(String)
    When I run the command "index update --tree Points --extra-attributes fakeAttrib --overwrite" # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "FeatureType Points does not define attribute 'fakeAttrib'"  # DefaultStepDefinitions.the_response_should_contain(String)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to 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 walk the graph with verbose enabled': 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 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] 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)

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

66 Scenarios (66 passed)
408 Steps (408 passed)
0m40.184s

Tests run: 474, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 41.339 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:199)
	at org.locationtech.geogig.porcelain.index.UpdateIndexOp._call(UpdateIndexOp.java:40)
	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:528)
	at org.locationtech.geogig.cli.GeogigCLI.execute(GeogigCLI.java:367)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:159)
	at org.locationtech.geogig.cli.test.functional.CLIContext.runCommand(CLIContext.java:153)
	at org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions.I_run_the_command_X(DefaultStepDefinitions.java:214)
	at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at cucumber.runtime.Utils$1.call(Utils.java:37)
	at cucumber.runtime.Timeout.timeout(Timeout.java:13)
	at cucumber.runtime.Utils.invoke(Utils.java:31)
	at cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:38)
	at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37)
	at cucumber.runtime.Runtime.runStep(Runtime.java:299)
	at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44)
	at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39)
	at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:44)
	at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:91)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:93)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:37)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.api.junit.Cucumber.run(Cucumber.java:98)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'I try to update the index with the same extra attribute': Using URIBuilder DefaultTestRepoURIBuilder

  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 - 'Try to checkout a remote branch': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to revert a feature to the --theirs version and fix the conflict # Checkout.feature:130
    Given I have a repository                                                    # DefaultStepDefinitions.I_have_a_repository()
    And I have a merge conflict state                                            # DefaultStepDefinitions.I_have_a_merge_conflict_state()
    When I run the command "checkout -p Points/Points.1 --theirs"                # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "add"                                                  # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "commit -m Commit"                                     # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Committed"                                 # DefaultStepDefinitions.the_response_should_contain(String)
[main] ERROR org.locationtech.geogig.cli.GeogigCLI - Nothing to update...
java.lang.IllegalStateException: Nothing to update...
	at com.google.common.base.Preconditions.checkState(Preconditions.java:173)
	at org.locationtech.geogig.porcelain.index.UpdateIndexOp._call(UpdateIndexOp.java:199)
	at org.locationtech.geogig.porcelain.index.UpdateIndexOp._call(UpdateIndexOp.java:40)
	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:528)
	at org.locationtech.geogig.cli.GeogigCLI.execute(GeogigCLI.java:367)
	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] 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:199)
	at org.locationtech.geogig.porcelain.index.UpdateIndexOp._call(UpdateIndexOp.java:40)
	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:528)
	at org.locationtech.geogig.cli.GeogigCLI.execute(GeogigCLI.java:367)
	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)
[main] INFO org.locationtech.geogig.cli.test.functional.DefaultStepDefinitions - 'Try to checkout a specific commit': Using URIBuilder DefaultTestRepoURIBuilder

  Scenario: Try to checkout a remote branch                                                                     # Checkout.feature:138
    Given I have a repository with a remote                                                                     # DefaultStepDefinitions.I_have_a_repository_with_a_remote()
    When I run the command "pull origin"                                                                        # DefaultStepDefinitions.I_run_the_command_X(String)
    And I run the command "checkout branch1"                                                                    # DefaultStepDefinitions.I_run_the_command_X(String)
    Then the response should contain "Branch 'branch1' was set up to track remote branch 'branch1' from origin" # DefaultStepDefinitions.the_response_should_contain(String)
    And the response should contain "Switched to a new branch 'branch1'"                                        # DefaultStepDefinitions.the_response_should_contain(String)

  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)
0m41.612s

Tests run: 553, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 42.784 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)
3m5.624s

Tests run: 2109, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 188.903 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/.hudson/jobs/geogig-release/workspace/src/cli/target/geogig-cli-1.1-beta1.jar
[INFO] 
[INFO] --- maven-jar-plugin:2.4:test-jar (default) @ geogig-cli ---
[INFO] Building jar: /home/hudson/genie.geogig/.hudson/jobs/geogig-release/workspace/src/cli/target/geogig-cli-1.1-beta1-tests.jar
[INFO] 
[INFO] >>> maven-source-plugin:2.2.1:jar (attach-sources) > generate-sources @ geogig-cli >>>
[INFO] 
[INFO] --- git-commit-id-plugin:2.1.8: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/.hudson/jobs/geogig-release/workspace/src/cli/target/geogig-cli-1.1-beta1-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.1.8: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/.hudson/jobs/geogig-release/workspace/src/cli/target/geogig-cli-1.1-beta1-test-sources.jar
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ geogig-cli ---
[INFO] Installing /home/hudson/genie.geogig/.hudson/jobs/geogig-release/workspace/src/cli/target/geogig-cli-1.1-beta1.jar to /home/hudson/genie.geogig/.hudson/jobs/geogig-release/workspace/.repository/org/locationtech/geogig/geogig-cli/1.1-beta1/geogig-cli-1.1-beta1.jar
[INFO] Installing /home/hudson/genie.geogig/.hudson/jobs/geogig-release/workspace/src/cli/pom.xml to /home/hudson/genie.geogig/.hudson/jobs/geogig-release/workspace/.repository/org/locationtech/geogig/geogig-cli/1.1-beta1/geogig-cli-1.1-beta1.pom
[INFO] Installing /home/hudson/genie.geogig/.hudson/jobs/geogig-release/workspace/src/cli/target/geogig-cli-1.1-beta1-tests.jar to /home/hudson/genie.geogig/.hudson/jobs/geogig-release/workspace/.repository/org/locationtech/geogig/geogig-cli/1.1-beta1/geogig-cli-1.1-beta1-tests.jar
[INFO] Installing /home/hudson/genie.geogig/.hudson/jobs/geogig-release/workspace/src/cli/target/geogig-cli-1.1-beta1-sources.jar to /home/hudson/genie.geogig/.hudson/jobs/geogig-release/workspace/.repository/org/locationtech/geogig/geogig-cli/1.1-beta1/geogig-cli-1.1-beta1-sources.jar
[INFO] Installing /home/hudson/genie.geogig/.hudson/jobs/geogig-release/workspace/src/cli/target/geogig-cli-1.1-beta1-test-sources.jar to /home/hudson/genie.geogig/.hudson/jobs/geogig-release/workspace/.repository/org/locationtech/geogig/geogig-cli/1.1-beta1/geogig-cli-1.1-beta1-test-sources.jar
[JENKINS] Archiving disabled