git_reflow 0.3.5 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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