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