Feature: hub merge
Background: Given I am in "hub" git repo And the "origin" remote has url "git://github.com/defunkt/hub.git" And I am "mislav" on github.com with OAuth token "OTOKEN" Scenario: Merge pull request Given the GitHub API server: """ require 'json' get('/repos/defunkt/hub/pulls/164') { json \ :head => { :label => 'jfirebaugh:hub_merge', :repo => {:private => false, :name=>"hub"} }, :title => "Add %xhub merge` command" } """ And there is a commit named "jfirebaugh/hub_merge" When I successfully run %xhub merge https://github.com/defunkt/hub/pull/164` Then "git fetch git://github.com/jfirebaugh/hub.git +refs/heads/hub_merge:refs/remotes/jfirebaugh/hub_merge" should be run When I successfully run %xgit show -s --format=%B` Then the output should contain: """ Merge pull request #164 from jfirebaugh/hub_merge Add `hub merge` command """ Scenario: Merge pull request with --ff-only option Given the GitHub API server: """ require 'json' get('/repos/defunkt/hub/pulls/164') { json \ :head => { :label => 'jfirebaugh:hub_merge', :repo => {:private => false, :name=>"hub"} }, :title => "Add %xhub merge` command" } """ And there is a commit named "jfirebaugh/hub_merge" When I successfully run %xhub merge --ff-only https://github.com/defunkt/hub/pull/164` Then "git fetch git://github.com/jfirebaugh/hub.git +refs/heads/hub_merge:refs/remotes/jfirebaugh/hub_merge" should be run When I successfully run %xgit show -s --format=%B` Then the output should contain: """ Fast-forward (no commit created; -m option ignored) """ Scenario: Merge private pull request Given the GitHub API server: """ require 'json' get('/repos/defunkt/hub/pulls/164') { json \ :head => { :label => 'jfirebaugh:hub_merge', :repo => {:private => true, :name=>"hub"} }, :title => "Add %xhub merge` command" } """ And there is a commit named "jfirebaugh/hub_merge" When I successfully run %xhub merge https://github.com/defunkt/hub/pull/164` Then "git fetch git@github.com:jfirebaugh/hub.git +refs/heads/hub_merge:refs/remotes/jfirebaugh/hub_merge" should be run Scenario: Missing repo Given the GitHub API server: """ require 'json' get('/repos/defunkt/hub/pulls/164') { json \ :head => { :label => 'jfirebaugh:hub_merge', :repo => nil } } """ When I run %xhub merge https://github.com/defunkt/hub/pull/164` Then the exit status should be 1 And the stderr should contain exactly: """ Error: jfirebaugh's fork is not available anymore\n """ Scenario: Renamed repo Given the GitHub API server: """ require 'json' get('/repos/defunkt/hub/pulls/164') { json \ :head => { :label => 'jfirebaugh:hub_merge', :repo => {:private => false, :name=>"hub-1"} } } """ And there is a commit named "jfirebaugh/hub_merge" When I successfully run %xhub merge https://github.com/defunkt/hub/pull/164` Then "git fetch git://github.com/jfirebaugh/hub-1.git +refs/heads/hub_merge:refs/remotes/jfirebaugh/hub_merge" should be run Scenario: Unchanged merge When I run %xhub merge master` Then "git merge master" should be run