2012-05-06 21:29:50 +04:00
|
|
|
Feature: hub fetch
|
|
|
|
Background:
|
|
|
|
Given I am in "dotfiles" git repo
|
|
|
|
And the "origin" remote has url "git://github.com/evilchelu/dotfiles.git"
|
|
|
|
And I am "mislav" on github.com with OAuth token "OTOKEN"
|
|
|
|
|
|
|
|
Scenario: Fetch existing remote
|
|
|
|
When I successfully run `hub fetch origin`
|
2016-01-22 13:13:45 +03:00
|
|
|
Then the git command should be unchanged
|
2012-05-06 21:29:50 +04:00
|
|
|
And there should be no output
|
|
|
|
|
2016-08-14 21:33:14 +03:00
|
|
|
Scenario: Fetch existing remote from non-GitHub source
|
|
|
|
Given the "origin" remote has url "ssh://dev@codeserver.dev.xxx.drush.in/~/repository.git"
|
|
|
|
When I successfully run `hub fetch origin`
|
|
|
|
Then the git command should be unchanged
|
|
|
|
And there should be no output
|
|
|
|
|
2016-01-22 13:13:45 +03:00
|
|
|
Scenario: Fetch from local bundle
|
|
|
|
Given the GitHub API server:
|
|
|
|
"""
|
|
|
|
get('/repos/mislav/dotfiles') { json :private => false }
|
|
|
|
"""
|
|
|
|
And a git bundle named "mislav"
|
|
|
|
When I successfully run `hub fetch mislav`
|
|
|
|
Then the git command should be unchanged
|
|
|
|
And there should be no output
|
|
|
|
And there should be no "mislav" remote
|
|
|
|
|
2012-05-06 21:29:50 +04:00
|
|
|
Scenario: Creates new remote
|
|
|
|
Given the GitHub API server:
|
|
|
|
"""
|
2012-10-10 15:50:23 +04:00
|
|
|
get('/repos/mislav/dotfiles') { json :private => false }
|
2012-05-06 21:29:50 +04:00
|
|
|
"""
|
|
|
|
When I successfully run `hub fetch mislav`
|
|
|
|
Then "git fetch mislav" should be run
|
|
|
|
And the url for "mislav" should be "git://github.com/mislav/dotfiles.git"
|
|
|
|
And there should be no output
|
|
|
|
|
2013-03-12 18:26:50 +04:00
|
|
|
Scenario: Owner name with dash
|
|
|
|
Given the GitHub API server:
|
|
|
|
"""
|
|
|
|
get('/repos/ankit-maverick/dotfiles') { json :private => false }
|
|
|
|
"""
|
|
|
|
When I successfully run `hub fetch ankit-maverick`
|
|
|
|
Then "git fetch ankit-maverick" should be run
|
|
|
|
And the url for "ankit-maverick" should be "git://github.com/ankit-maverick/dotfiles.git"
|
|
|
|
And there should be no output
|
|
|
|
|
2012-05-06 21:29:50 +04:00
|
|
|
Scenario: HTTPS is preferred
|
|
|
|
Given the GitHub API server:
|
|
|
|
"""
|
2012-10-10 15:50:23 +04:00
|
|
|
get('/repos/mislav/dotfiles') { json :private => false }
|
2012-05-06 21:29:50 +04:00
|
|
|
"""
|
|
|
|
And HTTPS is preferred
|
|
|
|
When I successfully run `hub fetch mislav`
|
|
|
|
Then "git fetch mislav" should be run
|
|
|
|
And the url for "mislav" should be "https://github.com/mislav/dotfiles.git"
|
|
|
|
|
2012-05-07 17:22:32 +04:00
|
|
|
Scenario: Private repo
|
|
|
|
Given the GitHub API server:
|
|
|
|
"""
|
2012-10-10 15:50:23 +04:00
|
|
|
get('/repos/mislav/dotfiles') { json :private => true }
|
2012-05-07 17:22:32 +04:00
|
|
|
"""
|
|
|
|
When I successfully run `hub fetch mislav`
|
|
|
|
Then "git fetch mislav" should be run
|
|
|
|
And the url for "mislav" should be "git@github.com:mislav/dotfiles.git"
|
|
|
|
And there should be no output
|
|
|
|
|
2012-05-06 21:29:50 +04:00
|
|
|
Scenario: Fetch with options
|
|
|
|
Given the GitHub API server:
|
|
|
|
"""
|
2012-10-10 15:50:23 +04:00
|
|
|
get('/repos/mislav/dotfiles') { json :private => false }
|
2012-05-06 21:29:50 +04:00
|
|
|
"""
|
|
|
|
When I successfully run `hub fetch --depth=1 mislav`
|
|
|
|
Then "git fetch --depth=1 mislav" should be run
|
|
|
|
|
|
|
|
Scenario: Fetch multiple
|
|
|
|
Given the GitHub API server:
|
|
|
|
"""
|
2012-10-10 15:50:23 +04:00
|
|
|
get('/repos/:owner/dotfiles') { json :private => false }
|
2012-05-06 21:29:50 +04:00
|
|
|
"""
|
|
|
|
When I successfully run `hub fetch --multiple mislav rtomayko`
|
|
|
|
Then "git fetch --multiple mislav rtomayko" should be run
|
|
|
|
And the url for "mislav" should be "git://github.com/mislav/dotfiles.git"
|
|
|
|
And the url for "rtomayko" should be "git://github.com/rtomayko/dotfiles.git"
|
|
|
|
|
|
|
|
Scenario: Fetch multiple with filtering
|
|
|
|
Given the GitHub API server:
|
|
|
|
"""
|
2012-10-10 15:50:23 +04:00
|
|
|
get('/repos/mislav/dotfiles') { json :private => false }
|
2012-05-06 21:29:50 +04:00
|
|
|
"""
|
|
|
|
When I successfully run `git config remotes.mygrp "foo bar"`
|
|
|
|
When I successfully run `hub fetch --multiple origin mislav mygrp git://example.com typo`
|
|
|
|
Then "git fetch --multiple origin mislav mygrp git://example.com typo" should be run
|
|
|
|
And the url for "mislav" should be "git://github.com/mislav/dotfiles.git"
|
|
|
|
But there should be no "mygrp" remote
|
|
|
|
And there should be no "typo" remote
|
|
|
|
|
|
|
|
Scenario: Fetch multiple comma-separated
|
|
|
|
Given the GitHub API server:
|
|
|
|
"""
|
2012-10-10 15:50:23 +04:00
|
|
|
get('/repos/:owner/dotfiles') { json :private => false }
|
2012-05-06 21:29:50 +04:00
|
|
|
"""
|
2016-08-14 23:02:54 +03:00
|
|
|
When I successfully run `hub fetch mislav,rtomayko,dustinleblanc`
|
|
|
|
Then "git fetch --multiple mislav rtomayko dustinleblanc" should be run
|
2012-05-06 21:29:50 +04:00
|
|
|
And the url for "mislav" should be "git://github.com/mislav/dotfiles.git"
|
|
|
|
And the url for "rtomayko" should be "git://github.com/rtomayko/dotfiles.git"
|
2016-08-14 23:02:54 +03:00
|
|
|
And the url for "dustinleblanc" should be "git://github.com/dustinleblanc/dotfiles.git"
|
2012-05-06 21:29:50 +04:00
|
|
|
|
|
|
|
Scenario: Doesn't create a new remote if repo doesn't exist on GitHub
|
|
|
|
Given the GitHub API server:
|
|
|
|
"""
|
|
|
|
get('/repos/mislav/dotfiles') { status 404 }
|
|
|
|
"""
|
|
|
|
When I successfully run `hub fetch mislav`
|
2016-01-22 13:13:45 +03:00
|
|
|
Then the git command should be unchanged
|
2012-05-06 21:29:50 +04:00
|
|
|
And there should be no "mislav" remote
|