зеркало из https://github.com/mislav/hub.git
172 строки
8.2 KiB
Gherkin
172 строки
8.2 KiB
Gherkin
Feature: hub compare
|
|
Background:
|
|
Given I am in "git://github.com/mislav/dotfiles.git" git repo
|
|
And I am "mislav" on github.com with OAuth token "OTOKEN"
|
|
|
|
Scenario: Compare branch
|
|
When I successfully run `hub compare refactor`
|
|
Then the output should not contain anything
|
|
And "open https://github.com/mislav/dotfiles/compare/refactor" should be run
|
|
|
|
Scenario: Compare complex branch
|
|
When I successfully run `hub compare feature/foo`
|
|
Then the output should not contain anything
|
|
And "open https://github.com/mislav/dotfiles/compare/feature/foo" should be run
|
|
|
|
Scenario: Compare branch with funky characters
|
|
When I successfully run `hub compare 'my#branch!with.special+chars'`
|
|
Then the output should not contain anything
|
|
And "open https://github.com/mislav/dotfiles/compare/my%23branch!with.special%2Bchars" should be run
|
|
|
|
Scenario: No args, no upstream
|
|
When I run `hub compare`
|
|
Then the exit status should be 1
|
|
And the stderr should contain exactly "the current branch 'master' doesn't seem pushed to a remote\n"
|
|
|
|
Scenario: Can't compare default branch to self
|
|
Given the default branch for "origin" is "develop"
|
|
And I am on the "develop" branch with upstream "origin/develop"
|
|
When I run `hub compare`
|
|
Then the exit status should be 1
|
|
And the stderr should contain exactly "the branch to compare 'develop' is the default branch\n"
|
|
|
|
Scenario: No args, has upstream branch
|
|
Given I am on the "feature" branch with upstream "origin/experimental"
|
|
And git "push.default" is set to "upstream"
|
|
When I successfully run `hub compare`
|
|
Then the output should not contain anything
|
|
And "open https://github.com/mislav/dotfiles/compare/experimental" should be run
|
|
|
|
Scenario: Current branch has funky characters
|
|
Given I am on the "feature" branch with upstream "origin/my#branch!with.special+chars"
|
|
And git "push.default" is set to "upstream"
|
|
When I successfully run `hub compare`
|
|
Then the output should not contain anything
|
|
And "open https://github.com/mislav/dotfiles/compare/my%23branch!with.special%2Bchars" should be run
|
|
|
|
Scenario: Current branch pushed to fork
|
|
Given I am "monalisa" on github.com with OAuth token "MONATOKEN"
|
|
And the "monalisa" remote has url "git@github.com:monalisa/dotfiles.git"
|
|
And I am on the "topic" branch pushed to "monalisa/topic"
|
|
When I successfully run `hub compare`
|
|
Then "open https://github.com/mislav/dotfiles/compare/monalisa:topic" should be run
|
|
|
|
Scenario: Current branch with full URL in upstream configuration
|
|
Given I am on the "local-topic" branch
|
|
When I successfully run `git config branch.local-topic.remote https://github.com/monalisa/dotfiles.git`
|
|
When I successfully run `git config branch.local-topic.merge refs/remotes/remote-topic`
|
|
When I successfully run `hub compare`
|
|
Then "open https://github.com/mislav/dotfiles/compare/monalisa:remote-topic" should be run
|
|
|
|
Scenario: Compare range
|
|
When I successfully run `hub compare 1.0...fix`
|
|
Then the output should not contain anything
|
|
And "open https://github.com/mislav/dotfiles/compare/1.0...fix" should be run
|
|
|
|
Scenario: Output URL without opening the browser
|
|
When I successfully run `hub compare -u 1.0...fix`
|
|
Then "open https://github.com/mislav/dotfiles/compare/1.0...fix" should not be run
|
|
And the stdout should contain exactly:
|
|
"""
|
|
https://github.com/mislav/dotfiles/compare/1.0...fix\n
|
|
"""
|
|
|
|
Scenario: Compare base in branch that is not master
|
|
Given I am on the "feature" branch with upstream "origin/experimental"
|
|
And git "push.default" is set to "upstream"
|
|
When I successfully run `hub compare -b master`
|
|
Then the output should not contain anything
|
|
And "open https://github.com/mislav/dotfiles/compare/master...experimental" should be run
|
|
|
|
Scenario: Compare base in master branch
|
|
Given I am on the "master" branch with upstream "origin/master"
|
|
And git "push.default" is set to "upstream"
|
|
When I successfully run `hub compare -b experimental`
|
|
Then the output should not contain anything
|
|
And "open https://github.com/mislav/dotfiles/compare/experimental...master" should be run
|
|
|
|
Scenario: Compare base with same branch as the current branch
|
|
Given I am on the "feature" branch with upstream "origin/experimental"
|
|
And git "push.default" is set to "upstream"
|
|
When I run `hub compare -b experimental`
|
|
Then "open https://github.com/mislav/dotfiles/compare/experimental...experimental" should not be run
|
|
And the exit status should be 1
|
|
And the stderr should contain exactly "the branch to compare 'experimental' is the same as --base\n"
|
|
|
|
Scenario: Compare base with parameters
|
|
Given I am on the "master" branch with upstream "origin/master"
|
|
When I run `hub compare -b master experimental..master`
|
|
Then "open https://github.com/mislav/dotfiles/compare/experimental...master" should not be run
|
|
And the exit status should be 1
|
|
And the stderr should contain "Usage: hub compare"
|
|
|
|
Scenario: Compare 2-dots range for tags
|
|
When I successfully run `hub compare 1.0..fix`
|
|
Then the output should not contain anything
|
|
And "open https://github.com/mislav/dotfiles/compare/1.0...fix" should be run
|
|
|
|
Scenario: Compare 2-dots range for SHAs
|
|
When I successfully run `hub compare 1234abc..3456cde`
|
|
Then the output should not contain anything
|
|
And "open https://github.com/mislav/dotfiles/compare/1234abc...3456cde" should be run
|
|
|
|
Scenario: Compare 2-dots range with "user:repo" notation
|
|
When I successfully run `hub compare henrahmagix:master..2b10927`
|
|
Then the output should not contain anything
|
|
And "open https://github.com/mislav/dotfiles/compare/henrahmagix:master...2b10927" should be run
|
|
|
|
Scenario: Compare 2-dots range with slashes in branch names
|
|
When I successfully run `hub compare one/foo..two/bar/baz`
|
|
Then the output should not contain anything
|
|
And "open https://github.com/mislav/dotfiles/compare/one/foo...two/bar/baz" should be run
|
|
|
|
Scenario: Complex range is unchanged
|
|
When I successfully run `hub compare @{a..b}..@{c..d}`
|
|
Then the output should not contain anything
|
|
And "open https://github.com/mislav/dotfiles/compare/@{a..b}..@{c..d}" should be run
|
|
|
|
Scenario: Compare wiki
|
|
Given the "origin" remote has url "git://github.com/mislav/dotfiles.wiki.git"
|
|
When I successfully run `hub compare 1.0..fix`
|
|
Then the output should not contain anything
|
|
And "open https://github.com/mislav/dotfiles/wiki/_compare/1.0...fix" should be run
|
|
|
|
Scenario: Compare fork
|
|
When I successfully run `hub compare anotheruser feature`
|
|
Then the output should not contain anything
|
|
And "open https://github.com/anotheruser/dotfiles/compare/feature" should be run
|
|
|
|
Scenario: Enterprise repo over HTTP
|
|
Given the "origin" remote has url "git://git.my.org/mislav/dotfiles.git"
|
|
And I am "mislav" on http://git.my.org with OAuth token "FITOKEN"
|
|
And "git.my.org" is a whitelisted Enterprise host
|
|
When I successfully run `hub compare refactor`
|
|
Then the output should not contain anything
|
|
And "open http://git.my.org/mislav/dotfiles/compare/refactor" should be run
|
|
|
|
Scenario: Enterprise repo with explicit upstream project
|
|
Given the "origin" remote has url "git://git.my.org/mislav/dotfiles.git"
|
|
And I am "mislav" on git.my.org with OAuth token "FITOKEN"
|
|
And "git.my.org" is a whitelisted Enterprise host
|
|
When I successfully run `hub compare fehmicansaglam a..b`
|
|
Then the output should not contain anything
|
|
And "open https://git.my.org/fehmicansaglam/dotfiles/compare/a...b" should be run
|
|
|
|
Scenario: Compare in non-GitHub repo
|
|
Given the "origin" remote has url "git@bitbucket.org:mislav/dotfiles.git"
|
|
And I am on the "feature" branch
|
|
When I run `hub compare`
|
|
Then the stdout should contain exactly ""
|
|
And the stderr should contain exactly:
|
|
"""
|
|
Aborted: could not find any git remote pointing to a GitHub repository\n
|
|
"""
|
|
And the exit status should be 1
|
|
|
|
Scenario: Comparing two branches while not on a local branch
|
|
Given I am in detached HEAD
|
|
And I run `hub compare refactor...master`
|
|
Then the exit status should be 0
|
|
And the output should not contain anything
|
|
And "open https://github.com/mislav/dotfiles/compare/refactor...master" should be run
|