github.com/scorpionis/hub@v2.2.1+incompatible/features/merge.feature (about) 1 Feature: hub merge 2 Background: 3 Given I am in "hub" git repo 4 And the "origin" remote has url "git://github.com/defunkt/hub.git" 5 And I am "mislav" on github.com with OAuth token "OTOKEN" 6 7 Scenario: Merge pull request 8 Given the GitHub API server: 9 """ 10 get('/repos/defunkt/hub/pulls/164') { json \ 11 :head => { 12 :ref => "hub_merge", 13 :repo => { 14 :owner => { :login => "jfirebaugh" }, 15 :name => "hub", 16 :private => false 17 } 18 }, 19 :title => "Add `hub merge` command" 20 } 21 """ 22 And there is a commit named "jfirebaugh/hub_merge" 23 When I successfully run `hub merge https://github.com/defunkt/hub/pull/164` 24 Then "git fetch git://github.com/jfirebaugh/hub.git +refs/heads/hub_merge:refs/remotes/jfirebaugh/hub_merge" should be run 25 And "git merge jfirebaugh/hub_merge --no-ff -m Merge pull request #164 from jfirebaugh/hub_merge" should be run 26 When I successfully run `git show -s --format=%B` 27 Then the output should contain: 28 """ 29 Merge pull request #164 from jfirebaugh/hub_merge 30 31 Add `hub merge` command 32 """ 33 34 Scenario: Merge pull request with --ff-only option 35 Given the GitHub API server: 36 """ 37 require 'json' 38 get('/repos/defunkt/hub/pulls/164') { json \ 39 :head => { 40 :ref => "hub_merge", 41 :repo => { 42 :owner => { :login => "jfirebaugh" }, 43 :name => "hub", 44 :private => false 45 } 46 }, 47 :title => "Add `hub merge` command" 48 } 49 """ 50 And there is a commit named "jfirebaugh/hub_merge" 51 When I successfully run `hub merge --ff-only https://github.com/defunkt/hub/pull/164` 52 Then "git fetch git://github.com/jfirebaugh/hub.git +refs/heads/hub_merge:refs/remotes/jfirebaugh/hub_merge" should be run 53 And "git merge --ff-only jfirebaugh/hub_merge -m Merge pull request #164 from jfirebaugh/hub_merge" should be run 54 When I successfully run `git show -s --format=%B` 55 Then the output should contain: 56 """ 57 Fast-forward (no commit created; -m option ignored) 58 """ 59 60 Scenario: Merge pull request with --squash option 61 Given the GitHub API server: 62 """ 63 require 'json' 64 get('/repos/defunkt/hub/pulls/164') { json \ 65 :head => { 66 :ref => "hub_merge", 67 :repo => { 68 :owner => { :login => "jfirebaugh" }, 69 :name => "hub", 70 :private => false 71 } 72 }, 73 :title => "Add `hub merge` command" 74 } 75 """ 76 And there is a commit named "jfirebaugh/hub_merge" 77 When I successfully run `hub merge --squash https://github.com/defunkt/hub/pull/164` 78 Then "git fetch git://github.com/jfirebaugh/hub.git +refs/heads/hub_merge:refs/remotes/jfirebaugh/hub_merge" should be run 79 And "git merge --squash jfirebaugh/hub_merge -m Merge pull request #164 from jfirebaugh/hub_merge" should be run 80 When I successfully run `git show -s --format=%B` 81 Then the output should contain: 82 """ 83 Fast-forward (no commit created; -m option ignored) 84 """ 85 86 Scenario: Merge private pull request 87 Given the GitHub API server: 88 """ 89 require 'json' 90 get('/repos/defunkt/hub/pulls/164') { json \ 91 :head => { 92 :ref => "hub_merge", 93 :repo => { 94 :owner => { :login => "jfirebaugh" }, 95 :name => "hub", 96 :private => true 97 } 98 }, 99 :title => "Add `hub merge` command" 100 } 101 """ 102 And there is a commit named "jfirebaugh/hub_merge" 103 When I successfully run `hub merge https://github.com/defunkt/hub/pull/164` 104 Then "git fetch git@github.com:jfirebaugh/hub.git +refs/heads/hub_merge:refs/remotes/jfirebaugh/hub_merge" should be run 105 106 Scenario: Missing repo 107 Given the GitHub API server: 108 """ 109 require 'json' 110 get('/repos/defunkt/hub/pulls/164') { json \ 111 :head => { 112 :ref => "hub_merge", 113 :repo => nil 114 } 115 } 116 """ 117 When I run `hub merge https://github.com/defunkt/hub/pull/164` 118 Then the exit status should be 1 119 And the stderr should contain exactly: 120 """ 121 Error: that fork is not available anymore\n 122 """ 123 124 Scenario: Renamed repo 125 Given the GitHub API server: 126 """ 127 require 'json' 128 get('/repos/defunkt/hub/pulls/164') { json \ 129 :head => { 130 :ref => "hub_merge", 131 :repo => { 132 :owner => { :login => "jfirebaugh" }, 133 :name => "hub-1", 134 :private => false 135 } 136 } 137 } 138 """ 139 And there is a commit named "jfirebaugh/hub_merge" 140 When I successfully run `hub merge https://github.com/defunkt/hub/pull/164` 141 Then "git fetch git://github.com/jfirebaugh/hub-1.git +refs/heads/hub_merge:refs/remotes/jfirebaugh/hub_merge" should be run 142 143 Scenario: Unchanged merge 144 When I run `hub merge master` 145 Then "git merge master" should be run