git_reflow 0.3.5 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,98 @@
1
+ $LOAD_PATH << 'lib'
2
+ require 'git_reflow'
3
+ require 'github_api'
4
+ require File.expand_path('../web_mocks', __FILE__)
5
+ require File.expand_path('../fixtures', __FILE__)
6
+
7
+ module GithubHelpers
8
+ def stub_github_with(options = {})
9
+
10
+ hostname = options[:hostname] || 'hostname.local'
11
+ api_endpoint = options[:api_endpoint] || "https://api.github.com"
12
+ site_url = options[:site_url] || "https://github.com"
13
+ user = options[:user] || 'reenhanced'
14
+ password = options[:passwordl] || 'shazam'
15
+ oauth_token_hash = Hashie::Mash.new({ token: 'a1b2c3d4e5f6g7h8i9j0', note: 'git-reflow (hostname.local)'})
16
+ repo = options[:repo] || 'repo'
17
+ branch = options[:branch] || 'new-feature'
18
+ pull = options[:pull]
19
+
20
+ HighLine.any_instance.stub(:ask) do |terminal, question|
21
+ values = {
22
+ "Please enter your GitHub username: " => user,
23
+ "Please enter your GitHub password (we do NOT store this): " => password,
24
+ "Please enter your Enterprise site URL (e.g. https://github.company.com):" => enterprise_site,
25
+ "Please enter your Enterprise API endpoint (e.g. https://github.company.com/api/v3):" => enterprise_api
26
+ }
27
+ return_value = values[question] || values[terminal]
28
+ question = ""
29
+ return_value
30
+ end
31
+
32
+ github = Github.new do |config|
33
+ config.oauth_token = oauth_token_hash.token
34
+ config.endpoint = api_endpoint
35
+ config.site = site_url
36
+ config.adapter = :net_http
37
+ config.ssl = {:verify => false}
38
+ end
39
+
40
+ stub_request(:get, "#{api_endpoint}/authorizations?").to_return(:body => [oauth_token_hash].to_json, status: 200, headers: {})
41
+ Github.stub(:new).and_return(github)
42
+ GitReflow.stub(:push_current_branch).and_return(true)
43
+ GitReflow.stub(:github).and_return(github)
44
+ GitReflow.stub(:current_branch).and_return(branch)
45
+ GitReflow.stub(:remote_repo_name).and_return(repo)
46
+ GitReflow.stub(:remote_user).and_return(user)
47
+ GitReflow.stub(:fetch_destination).and_return(true)
48
+ GitReflow.stub(:update_destination).and_return(true)
49
+
50
+ GitReflow::GitServer::GitHub.any_instance.stub(:run).with('hostname', loud: false).and_return(hostname)
51
+ github_server = GitReflow::GitServer::GitHub.new
52
+ github_server.class.stub(:user).and_return(user)
53
+ github_server.class.stub(:oauth_token).and_return(oauth_token_hash.token)
54
+ github_server.class.stub(:site_url).and_return(site_url)
55
+ github_server.class.stub(:api_endpoint).and_return(api_endpoint)
56
+ github_server.stub(:remote_user).and_return(user)
57
+ github_server.stub(:remote_repo).and_return(repo)
58
+ github_server.stub(:oauth_token).and_return(oauth_token_hash.token)
59
+ github_server.stub(:get_commited_time).and_return(Time.now)
60
+
61
+ GitReflow.stub(:git_server).and_return(github_server)
62
+
63
+ # Stubbing statuses for a given commit
64
+ stub_request(:get, %r{#{GitReflow.git_server.class.api_endpoint}/repos/#{user}/commits/\w+/statuses?}).
65
+ to_return(:body => fixture('pull_requests/pull_requests.json'), :status => 201, :headers => {:content_type => "application/json; charset=utf-8"})
66
+
67
+ if pull
68
+ # Stubbing review
69
+ github.pull_requests.stub(:create).with(user, repo, pull.except('state')).and_return(Hashie::Mash.new(:number => '1', :title => pull['title'], :html_url => "https://github.com/#{user}/#{repo}/pulls/1"))
70
+ stub_post("/repos/#{user}/#{repo}/pulls").
71
+ to_return(:body => pull.to_s, :status => 201, :headers => {:content_type => "application/json\; charset=utf-8"})
72
+
73
+ # Stubbing pull request finder
74
+ stub_get("/repos/#{user}/pulls").with(:query => {'base' => 'master', 'head' => "#{user}:#{branch}", 'state' => 'open'}).
75
+ to_return(:body => fixture('pull_requests/pull_requests.json'), :status => 201, :headers => {:content_type => "application/json; charset=utf-8"})
76
+ stub_get("/repos/#{user}/#{repo}/pulls").with(:query => {'base' => 'master', 'head' => "#{user}:#{branch}", 'state' => 'open'}).
77
+ to_return(:body => fixture('pull_requests/pull_requests.json'), :status => 201, :headers => {:content_type => "application/json; charset=utf-8"})
78
+ # Stubbing pull request comments
79
+ stub_get("/repos/#{user}/pulls/#{pull[:number]}/comments?").
80
+ to_return(:body => fixture('pull_requests/comments.json'), :status => 201, :headers => {:content_type => "application/json; charset=utf-8"})
81
+ # Stubbing issue comments
82
+ stub_get("/repos/#{user}/issues/#{pull[:number]}/comments?").
83
+ to_return(:body => fixture('issues/comments.json'), :status => 201, :headers => {:content_type => "application/json; charset=utf-8"})
84
+ end
85
+
86
+ github_server
87
+ end
88
+ end
89
+
90
+ # the github_api gem does some overrides to Hash so we have to make sure
91
+ # this still works here...
92
+ class Hash
93
+ def except(*keys)
94
+ cpy = self.dup
95
+ keys.each { |key| cpy.delete(key) }
96
+ cpy
97
+ end
98
+ end
@@ -0,0 +1,7 @@
1
+ module RspecStubHelpers
2
+ def stub_with_fallback(obj, method)
3
+ original_method = obj.method(method)
4
+ obj.stub(method).with(anything()) { |*args| original_method.call(*args) }
5
+ return obj.stub(method)
6
+ end
7
+ end
@@ -0,0 +1,39 @@
1
+ def stub_get(path, endpoint = GitReflow.git_server.class.api_endpoint)
2
+ stub_request(:get, endpoint + path)
3
+ end
4
+
5
+ def stub_post(path, endpoint = GitReflow.git_server.class.api_endpoint)
6
+ stub_request(:post, endpoint + path)
7
+ end
8
+
9
+ def stub_patch(path, endpoint = Github.endpoint.to_s)
10
+ stub_request(:patch, endpoint + path)
11
+ end
12
+
13
+ def stub_put(path, endpoint = Github.endpoint.to_s)
14
+ stub_request(:put, endpoint + path)
15
+ end
16
+
17
+ def stub_delete(path, endpoint = Github.endpoint.to_s)
18
+ stub_request(:delete, endpoint + path)
19
+ end
20
+
21
+ def a_get(path, endpoint = Github.endpoint.to_s)
22
+ a_request(:get, endpoint + path)
23
+ end
24
+
25
+ def a_post(path, endpoint = Github.endpoint.to_s)
26
+ a_request(:post, endpoint + path)
27
+ end
28
+
29
+ def a_patch(path, endpoint = Github.endpoint.to_s)
30
+ a_request(:patch, endpoint + path)
31
+ end
32
+
33
+ def a_put(path, endpoint = Github.endpoint)
34
+ a_request(:put, endpoint + path)
35
+ end
36
+
37
+ def a_delete(path, endpoint = Github.endpoint)
38
+ a_request(:delete, endpoint + path)
39
+ end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git_reflow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
5
- prerelease:
4
+ version: 0.4.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Valentino Stoll
@@ -11,76 +10,95 @@ authors:
11
10
  autorequire:
12
11
  bindir: bin
13
12
  cert_chain: []
14
- date: 2014-03-05 00:00:00.000000000 Z
13
+ date: 2014-10-16 00:00:00.000000000 Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
16
  name: bundler
18
17
  requirement: !ruby/object:Gem::Requirement
19
- none: false
20
18
  requirements:
21
- - - ! '>='
19
+ - - ">="
22
20
  - !ruby/object:Gem::Version
23
21
  version: '0'
24
22
  type: :development
25
23
  prerelease: false
26
24
  version_requirements: !ruby/object:Gem::Requirement
27
- none: false
28
25
  requirements:
29
- - - ! '>='
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: '0'
29
+ - !ruby/object:Gem::Dependency
30
+ name: pry-byebug
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ type: :development
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
30
41
  - !ruby/object:Gem::Version
31
42
  version: '0'
32
43
  - !ruby/object:Gem::Dependency
33
44
  name: rake
34
45
  requirement: !ruby/object:Gem::Requirement
35
- none: false
36
46
  requirements:
37
- - - ! '>='
47
+ - - ">="
38
48
  - !ruby/object:Gem::Version
39
49
  version: '0'
40
50
  type: :development
41
51
  prerelease: false
42
52
  version_requirements: !ruby/object:Gem::Requirement
43
- none: false
44
53
  requirements:
45
- - - ! '>='
54
+ - - ">="
46
55
  - !ruby/object:Gem::Version
47
56
  version: '0'
48
57
  - !ruby/object:Gem::Dependency
49
58
  name: rdoc
50
59
  requirement: !ruby/object:Gem::Requirement
51
- none: false
52
60
  requirements:
53
- - - ! '>='
61
+ - - ">="
54
62
  - !ruby/object:Gem::Version
55
63
  version: '0'
56
64
  type: :development
57
65
  prerelease: false
58
66
  version_requirements: !ruby/object:Gem::Requirement
59
- none: false
60
67
  requirements:
61
- - - ! '>='
68
+ - - ">="
62
69
  - !ruby/object:Gem::Version
63
70
  version: '0'
64
71
  - !ruby/object:Gem::Dependency
65
- name: jeweler
72
+ name: rspec
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: 3.0.0
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - "~>"
83
+ - !ruby/object:Gem::Version
84
+ version: 3.0.0
85
+ - !ruby/object:Gem::Dependency
86
+ name: webmock
66
87
  requirement: !ruby/object:Gem::Requirement
67
- none: false
68
88
  requirements:
69
- - - ! '>='
89
+ - - ">="
70
90
  - !ruby/object:Gem::Version
71
91
  version: '0'
72
92
  type: :development
73
93
  prerelease: false
74
94
  version_requirements: !ruby/object:Gem::Requirement
75
- none: false
76
95
  requirements:
77
- - - ! '>='
96
+ - - ">="
78
97
  - !ruby/object:Gem::Version
79
98
  version: '0'
80
99
  - !ruby/object:Gem::Dependency
81
100
  name: colorize
82
101
  requirement: !ruby/object:Gem::Requirement
83
- none: false
84
102
  requirements:
85
103
  - - '='
86
104
  - !ruby/object:Gem::Version
@@ -88,7 +106,6 @@ dependencies:
88
106
  type: :runtime
89
107
  prerelease: false
90
108
  version_requirements: !ruby/object:Gem::Requirement
91
- none: false
92
109
  requirements:
93
110
  - - '='
94
111
  - !ruby/object:Gem::Version
@@ -96,83 +113,73 @@ dependencies:
96
113
  - !ruby/object:Gem::Dependency
97
114
  name: gli
98
115
  requirement: !ruby/object:Gem::Requirement
99
- none: false
100
116
  requirements:
101
117
  - - '='
102
118
  - !ruby/object:Gem::Version
103
- version: 2.8.1
119
+ version: 2.12.2
104
120
  type: :runtime
105
121
  prerelease: false
106
122
  version_requirements: !ruby/object:Gem::Requirement
107
- none: false
108
123
  requirements:
109
124
  - - '='
110
125
  - !ruby/object:Gem::Version
111
- version: 2.8.1
126
+ version: 2.12.2
112
127
  - !ruby/object:Gem::Dependency
113
128
  name: highline
114
129
  requirement: !ruby/object:Gem::Requirement
115
- none: false
116
130
  requirements:
117
- - - ! '>='
131
+ - - ">="
118
132
  - !ruby/object:Gem::Version
119
133
  version: '0'
120
134
  type: :runtime
121
135
  prerelease: false
122
136
  version_requirements: !ruby/object:Gem::Requirement
123
- none: false
124
137
  requirements:
125
- - - ! '>='
138
+ - - ">="
126
139
  - !ruby/object:Gem::Version
127
140
  version: '0'
128
141
  - !ruby/object:Gem::Dependency
129
142
  name: httpclient
130
143
  requirement: !ruby/object:Gem::Requirement
131
- none: false
132
144
  requirements:
133
- - - ! '>='
145
+ - - ">="
134
146
  - !ruby/object:Gem::Version
135
147
  version: '0'
136
148
  type: :runtime
137
149
  prerelease: false
138
150
  version_requirements: !ruby/object:Gem::Requirement
139
- none: false
140
151
  requirements:
141
- - - ! '>='
152
+ - - ">="
142
153
  - !ruby/object:Gem::Version
143
154
  version: '0'
144
155
  - !ruby/object:Gem::Dependency
145
156
  name: json_pure
146
157
  requirement: !ruby/object:Gem::Requirement
147
- none: false
148
158
  requirements:
149
- - - ! '>='
159
+ - - ">="
150
160
  - !ruby/object:Gem::Version
151
161
  version: '0'
152
162
  type: :runtime
153
163
  prerelease: false
154
164
  version_requirements: !ruby/object:Gem::Requirement
155
- none: false
156
165
  requirements:
157
- - - ! '>='
166
+ - - ">="
158
167
  - !ruby/object:Gem::Version
159
168
  version: '0'
160
169
  - !ruby/object:Gem::Dependency
161
170
  name: github_api
162
171
  requirement: !ruby/object:Gem::Requirement
163
- none: false
164
172
  requirements:
165
173
  - - '='
166
174
  - !ruby/object:Gem::Version
167
- version: 0.10.2
175
+ version: 0.12.1
168
176
  type: :runtime
169
177
  prerelease: false
170
178
  version_requirements: !ruby/object:Gem::Requirement
171
- none: false
172
179
  requirements:
173
180
  - - '='
174
181
  - !ruby/object:Gem::Version
175
- version: 0.10.2
182
+ version: 0.12.1
176
183
  description: Git Reflow manages your git workflow.
177
184
  email:
178
185
  - dev@reenhanced.com
@@ -183,7 +190,7 @@ extensions: []
183
190
  extra_rdoc_files:
184
191
  - README.rdoc
185
192
  files:
186
- - .gitignore
193
+ - ".gitignore"
187
194
  - Gemfile
188
195
  - Gemfile.lock
189
196
  - LICENSE
@@ -199,44 +206,79 @@ files:
199
206
  - lib/git_reflow/commands/setup.rb
200
207
  - lib/git_reflow/commands/start.rb
201
208
  - lib/git_reflow/commands/status.rb
209
+ - lib/git_reflow/config.rb
210
+ - lib/git_reflow/git_helpers.rb
211
+ - lib/git_reflow/git_server.rb
212
+ - lib/git_reflow/git_server/base.rb
213
+ - lib/git_reflow/git_server/git_hub.rb
214
+ - lib/git_reflow/sandbox.rb
202
215
  - lib/git_reflow/version.rb
216
+ - spec/fixtures/git/git_config
217
+ - spec/fixtures/issues/comments.json
218
+ - spec/fixtures/pull_requests/comments.json
219
+ - spec/fixtures/pull_requests/pull_request.json
220
+ - spec/fixtures/pull_requests/pull_request_exists_error.json
221
+ - spec/fixtures/pull_requests/pull_requests.json
222
+ - spec/fixtures/repositories/statuses.json
223
+ - spec/git_reflow_spec.rb
224
+ - spec/lib/git_reflow/config_spec.rb
225
+ - spec/lib/git_reflow/git_helpers_spec.rb
226
+ - spec/lib/git_reflow/git_server_spec.rb
227
+ - spec/lib/git_server/git_hub_spec.rb
228
+ - spec/spec_helper.rb
229
+ - spec/support/command_line_helpers.rb
230
+ - spec/support/fixtures.rb
231
+ - spec/support/github_helpers.rb
232
+ - spec/support/rspec_stub_helpers.rb
233
+ - spec/support/web_mocks.rb
203
234
  homepage: http://github.com/reenhanced/gitreflow
204
235
  licenses:
205
236
  - MIT
206
- post_install_message: ! 'You need to setup your GitHub OAuth token
207
-
208
- Please run ''git-reflow setup'''
237
+ metadata: {}
238
+ post_install_message: |-
239
+ You need to setup your GitHub OAuth token
240
+ Please run 'git-reflow setup'
209
241
  rdoc_options:
210
- - --title
242
+ - "--title"
211
243
  - git_reflow
212
- - --main
244
+ - "--main"
213
245
  - README.rdoc
214
- - -ri
246
+ - "-ri"
215
247
  require_paths:
216
248
  - lib
217
249
  - lib
218
250
  required_ruby_version: !ruby/object:Gem::Requirement
219
- none: false
220
251
  requirements:
221
- - - ! '>='
252
+ - - ">="
222
253
  - !ruby/object:Gem::Version
223
254
  version: '0'
224
- segments:
225
- - 0
226
- hash: 4495408522000953472
227
255
  required_rubygems_version: !ruby/object:Gem::Requirement
228
- none: false
229
256
  requirements:
230
- - - ! '>='
257
+ - - ">="
231
258
  - !ruby/object:Gem::Version
232
259
  version: '0'
233
- segments:
234
- - 0
235
- hash: 4495408522000953472
236
260
  requirements: []
237
261
  rubyforge_project:
238
- rubygems_version: 1.8.23
262
+ rubygems_version: 2.2.2
239
263
  signing_key:
240
- specification_version: 3
264
+ specification_version: 4
241
265
  summary: A better git process
242
- test_files: []
266
+ test_files:
267
+ - spec/fixtures/git/git_config
268
+ - spec/fixtures/issues/comments.json
269
+ - spec/fixtures/pull_requests/comments.json
270
+ - spec/fixtures/pull_requests/pull_request.json
271
+ - spec/fixtures/pull_requests/pull_request_exists_error.json
272
+ - spec/fixtures/pull_requests/pull_requests.json
273
+ - spec/fixtures/repositories/statuses.json
274
+ - spec/git_reflow_spec.rb
275
+ - spec/lib/git_reflow/config_spec.rb
276
+ - spec/lib/git_reflow/git_helpers_spec.rb
277
+ - spec/lib/git_reflow/git_server_spec.rb
278
+ - spec/lib/git_server/git_hub_spec.rb
279
+ - spec/spec_helper.rb
280
+ - spec/support/command_line_helpers.rb
281
+ - spec/support/fixtures.rb
282
+ - spec/support/github_helpers.rb
283
+ - spec/support/rspec_stub_helpers.rb
284
+ - spec/support/web_mocks.rb