codefumes 0.1.10 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. data/Gemfile +19 -0
  2. data/Gemfile.lock +135 -0
  3. data/History.txt +12 -0
  4. data/LICENSE +20 -0
  5. data/Manifest.txt +40 -19
  6. data/README.txt +11 -29
  7. data/Rakefile +15 -10
  8. data/bin/fumes +214 -0
  9. data/config/website.yml +2 -0
  10. data/cucumber.yml +2 -0
  11. data/features/claiming_a_project.feature +46 -0
  12. data/features/deleting_a_project.feature +32 -0
  13. data/features/releasing_a_project.feature +50 -0
  14. data/features/step_definitions/cli_steps.rb +98 -0
  15. data/features/step_definitions/common_steps.rb +168 -0
  16. data/features/step_definitions/filesystem_steps.rb +19 -0
  17. data/features/storing_user_api_key.feature +41 -0
  18. data/features/support/common.rb +29 -0
  19. data/features/support/env.rb +24 -0
  20. data/features/support/matchers.rb +11 -0
  21. data/features/synchronizing_repository_with_project.feature +33 -0
  22. data/lib/codefumes.rb +10 -8
  23. data/lib/codefumes/api.rb +20 -11
  24. data/lib/codefumes/api/build.rb +139 -0
  25. data/lib/codefumes/api/claim.rb +74 -0
  26. data/lib/codefumes/api/commit.rb +150 -0
  27. data/lib/codefumes/api/payload.rb +93 -0
  28. data/lib/codefumes/api/project.rb +158 -0
  29. data/lib/codefumes/cli_helpers.rb +54 -0
  30. data/lib/codefumes/config_file.rb +3 -2
  31. data/lib/codefumes/errors.rb +21 -0
  32. data/lib/codefumes/exit_codes.rb +10 -0
  33. data/lib/codefumes/harvester.rb +113 -0
  34. data/lib/codefumes/quick_build.rb +43 -0
  35. data/lib/codefumes/quick_metric.rb +20 -0
  36. data/lib/codefumes/source_control.rb +137 -0
  37. data/lib/integrity_notifier/codefumes.haml +11 -0
  38. data/lib/integrity_notifier/codefumes.rb +62 -0
  39. data/spec/codefumes/{build_spec.rb → api/build_spec.rb} +14 -24
  40. data/spec/codefumes/{claim_spec.rb → api/claim_spec.rb} +42 -3
  41. data/spec/codefumes/{commit_spec.rb → api/commit_spec.rb} +34 -24
  42. data/spec/codefumes/api/payload_spec.rb +148 -0
  43. data/spec/codefumes/api/project_spec.rb +286 -0
  44. data/spec/codefumes/api_spec.rb +38 -15
  45. data/spec/codefumes/config_file_spec.rb +69 -13
  46. data/spec/codefumes/harvester_spec.rb +118 -0
  47. data/spec/codefumes/source_control_spec.rb +199 -0
  48. data/spec/codefumes_service_helpers.rb +23 -19
  49. data/spec/fixtures/sample_project_dirs/no_scm/description +4 -0
  50. data/spec/spec_helper.rb +1 -0
  51. data/tasks/cucumber.rake +11 -0
  52. metadata +145 -60
  53. data/bin/cf_claim_project +0 -9
  54. data/bin/cf_release_project +0 -10
  55. data/bin/cf_store_credentials +0 -10
  56. data/lib/cf_claim_project/cli.rb +0 -95
  57. data/lib/cf_release_project/cli.rb +0 -76
  58. data/lib/cf_store_credentials/cli.rb +0 -50
  59. data/lib/codefumes/build.rb +0 -131
  60. data/lib/codefumes/claim.rb +0 -57
  61. data/lib/codefumes/commit.rb +0 -144
  62. data/lib/codefumes/payload.rb +0 -103
  63. data/lib/codefumes/project.rb +0 -129
  64. data/spec/cf_claim_project/cli_spec.rb +0 -17
  65. data/spec/cf_release_project/cli_spec.rb +0 -41
  66. data/spec/cf_store_credentials/cli_spec.rb +0 -28
  67. data/spec/codefumes/payload_spec.rb +0 -155
  68. data/spec/codefumes/project_spec.rb +0 -274
@@ -5,7 +5,7 @@ module CodeFumesServiceHelpers
5
5
  @project_name = "Project_Name(tm)"
6
6
  @pub_key = 'public_key_value'
7
7
  @priv_key = 'private_key_value'
8
- @project = CodeFumes::Project.new(:public_key => @pub_key, :private_key => @priv_key, :name => @project_name)
8
+ @project = Project.new(@pub_key, @priv_key, :name => @project_name)
9
9
 
10
10
  @anonymous_base_uri = "http://codefumes.com/api/v1/xml"
11
11
  @authenticated_base_uri = "http://#{@pub_key}:#{@priv_key}@codefumes.com/api/v1/xml"
@@ -16,6 +16,7 @@ module CodeFumesServiceHelpers
16
16
  @api_key = "USERS_API_KEY"
17
17
  @build_name = "IE7"
18
18
  @commit_identifier = "COMMIT_IDENTIFIER"
19
+ @commit = Commit.new(@project, @commit_identifier)
19
20
  end
20
21
 
21
22
  def fixtures
@@ -23,21 +24,16 @@ module CodeFumesServiceHelpers
23
24
  end
24
25
  end
25
26
 
26
- module Project
27
- def register_no_param_create_uri(status_code = ["200", "Ok"], body_content = fixtures[:project])
28
- FakeWeb.register_uri( :post, "#{@anonymous_base_uri}/projects?project[name]=&project[public_key]=",
29
- :status => status_code,
30
- :body => body_content)
31
- end
32
-
33
- def register_create_uri(status_code = ["200", "Ok"], body_content = fixtures[:project])
34
- FakeWeb.register_uri( :post, "#{@anonymous_base_uri}/projects?project[name]=#{@project_name}&project[public_key]=#{@pub_key}",
27
+ module ProjectHelpers
28
+ extend self
29
+ def register_create_uri(status_code = ["201", "Created"], body_content = fixtures[:project])
30
+ FakeWeb.register_uri( :post, "#{@anonymous_base_uri}/projects",
35
31
  :status => status_code,
36
32
  :body => body_content)
37
33
  end
38
34
 
39
35
  def register_update_uri(status_code = ["200", "Ok"], body_content = fixtures[:project])
40
- FakeWeb.register_uri(:put, "#{@authd_project_api_uri}?project[name]=#{@project_name}_updated",
36
+ FakeWeb.register_uri(:put, "#{@authd_project_api_uri}?project[name]=#{@updated_name}",
41
37
  :status => status_code,
42
38
  :body => body_content)
43
39
  end
@@ -55,7 +51,8 @@ module CodeFumesServiceHelpers
55
51
  end
56
52
  end
57
53
 
58
- module Commit
54
+ module CommitHelpers
55
+ extend self
59
56
  def register_latest_uri(status_code = ["200", "Ok"], body_content = fixtures[:commit])
60
57
  FakeWeb.register_uri(:get, "#{@anon_project_api_uri}/commits/latest",
61
58
  :status => status_code, :body => body_content)
@@ -68,19 +65,19 @@ module CodeFumesServiceHelpers
68
65
  end
69
66
 
70
67
  def register_find_uri(status_code = ["200", "Ok"], body_content = fixtures[:commit])
71
- FakeWeb.register_uri(:get, "#{@anonymous_base_uri}/commits/#{@identifier}",
68
+ FakeWeb.register_uri(:get, "#{@anon_project_api_uri}/commits/#{@identifier}",
72
69
  :status => status_code, :body => body_content)
73
70
  end
74
71
  end
75
72
 
76
- module Payload
73
+ module PayloadHelpers
77
74
  def register_create_uri(status_code = ["200", "Ok"], body_content = fixtures[:payload])
78
75
  FakeWeb.register_uri(:post, "#{@authd_project_api_uri}/payloads?payload[commits]=#{@commit_data}",
79
76
  :status => status_code, :body => body_content)
80
77
  end
81
78
  end
82
79
 
83
- module Claim
80
+ module ClaimHelpers
84
81
  def register_public_create_uri(status_code = ["200", "Ok"], body_content = "")
85
82
  register_create_uri(status_code, body_content, :public)
86
83
  end
@@ -101,7 +98,7 @@ module CodeFumesServiceHelpers
101
98
  end
102
99
  end
103
100
 
104
- module Build
101
+ module BuildHelpers
105
102
  def setup_build_fixtures
106
103
  @started_at = "2009-09-26 21:18:11 UTC"
107
104
  @esc_started_at = "2009-09-26%2021%3A18%3A11%20UTC"
@@ -115,19 +112,26 @@ module CodeFumesServiceHelpers
115
112
  end
116
113
 
117
114
  def register_update_uri(status_code = ["200", "Ok"], body_content = fixtures[:build])
118
- FakeWeb.register_uri(:put, "#{@authd_project_api_uri}/commits/#{@commit_identifier}/builds/#{@build_identifier}?build[state]=#{@state}&build[started_at]=#{@esc_started_at}&build[ended_at]=&build[name]=#{@build_name}",
115
+ FakeWeb.register_uri(:put, "#{@authd_project_api_uri}/commits/#{@commit_identifier}/builds/#{@build_name}?build[state]=#{@state}&build[started_at]=#{@esc_started_at}&build[ended_at]=&build[name]=#{@build_name}",
119
116
  :status => status_code, :body => body_content)
120
117
  end
121
118
 
122
119
  def register_show_uri(status_code = ["200", "Ok"], body_content = fixtures[:build])
123
- FakeWeb.register_uri(:get, "#{@anon_project_api_uri}/commits/#{@commit_identifier}/builds/#{@build_identifier}",
120
+ FakeWeb.register_uri(:get, "#{@anon_project_api_uri}/commits/#{@commit_identifier}/builds/#{@build_name}",
124
121
  :status => status_code, :body => body_content)
125
122
  end
126
123
 
127
124
  def register_delete_uri(status_code = ["200", "Ok"], body_content = fixtures[:project])
128
- FakeWeb.register_uri(:delete, "#{@authd_project_api_uri}/commits/#{@commit_identifier}/builds/#{@build_identifier}",
125
+ FakeWeb.register_uri(:delete, "#{@authd_project_api_uri}/commits/#{@commit_identifier}/builds/#{@build_name}",
129
126
  :status => status_code,
130
127
  :body => body_content)
131
128
  end
132
129
  end
130
+
131
+ module HarvesterHelpers
132
+ def register_update_uri(status_code = ["200", "Ok"], body_content = fixtures[:build])
133
+ FakeWeb.register_uri(:put, "#{@authd_project_api_uri}/commits/#{@commit_identifier}/builds/#{@build_name}?build[state]=#{@state}&build[started_at]=#{@esc_started_at}&build[ended_at]=&build[name]=#{@build_name}",
134
+ :status => status_code, :body => body_content)
135
+ end
136
+ end
133
137
  end
@@ -0,0 +1,4 @@
1
+ This is a directory put in place for testing with various
2
+ parts of the CodometerHarvester gem which depend on a
3
+ directory that is not under any sort of source code
4
+ management system.
data/spec/spec_helper.rb CHANGED
@@ -17,6 +17,7 @@ include CodeFumesServiceHelpers::Shared
17
17
  include CodeFumes
18
18
 
19
19
  ENV['CODEFUMES_CONFIG_FILE'] = File.expand_path(File.dirname(__FILE__) + '/sample_codefumes_config.tmp')
20
+ GIT_FIXTURE_REPO_PATH = File.expand_path(File.dirname(__FILE__) + "/fixtures/sample_project_dirs/git_repository")
20
21
 
21
22
  class ResponseFixtureSet
22
23
  def [](response_fixture)
@@ -0,0 +1,11 @@
1
+ begin
2
+ require 'cucumber/rake/task'
3
+
4
+ Cucumber::Rake::Task.new do |t|
5
+ t.cucumber_opts = %w{--tags ~@jruby} unless defined?(JRUBY_VERSION)
6
+ end
7
+ rescue LoadError
8
+ task :cucumber do
9
+ abort "Cucumber is not available. In order to run features, you must: sudo gem install cucumber"
10
+ end
11
+ end
metadata CHANGED
@@ -4,38 +4,35 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 1
8
- - 10
9
- version: 0.1.10
7
+ - 2
8
+ - 0
9
+ version: 0.2.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Tom Kersten
13
- - Joe Banks
14
13
  autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
17
16
 
18
- date: 2010-04-21 00:00:00 -05:00
17
+ date: 2010-08-22 00:00:00 -05:00
19
18
  default_executable:
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
- name: httparty
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
21
+ version_requirements: &id001 !ruby/object:Gem::Requirement
25
22
  requirements:
26
23
  - - ">="
27
24
  - !ruby/object:Gem::Version
28
25
  segments:
29
26
  - 0
30
- - 4
31
- - 3
32
- version: 0.4.3
27
+ - 6
28
+ - 1
29
+ version: 0.6.1
30
+ requirement: *id001
31
+ name: httparty
32
+ prerelease: false
33
33
  type: :runtime
34
- version_requirements: *id001
35
34
  - !ruby/object:Gem::Dependency
36
- name: caleb-chronic
37
- prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
35
+ version_requirements: &id002 !ruby/object:Gem::Requirement
39
36
  requirements:
40
37
  - - ">="
41
38
  - !ruby/object:Gem::Version
@@ -44,40 +41,82 @@ dependencies:
44
41
  - 3
45
42
  - 0
46
43
  version: 0.3.0
44
+ requirement: *id002
45
+ name: caleb-chronic
46
+ prerelease: false
47
47
  type: :runtime
48
- version_requirements: *id002
49
48
  - !ruby/object:Gem::Dependency
50
- name: metric_fu
49
+ version_requirements: &id003 !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "="
52
+ - !ruby/object:Gem::Version
53
+ segments:
54
+ - 1
55
+ - 1
56
+ - 1
57
+ version: 1.1.1
58
+ requirement: *id003
59
+ name: gli
51
60
  prerelease: false
52
- requirement: &id003 !ruby/object:Gem::Requirement
61
+ type: :runtime
62
+ - !ruby/object:Gem::Dependency
63
+ version_requirements: &id004 !ruby/object:Gem::Requirement
53
64
  requirements:
54
- - - ">="
65
+ - - "="
55
66
  - !ruby/object:Gem::Version
56
67
  segments:
57
68
  - 1
58
69
  - 3
59
70
  - 0
60
71
  version: 1.3.0
72
+ requirement: *id004
73
+ name: metric_fu
74
+ prerelease: false
61
75
  type: :development
62
- version_requirements: *id003
63
76
  - !ruby/object:Gem::Dependency
77
+ version_requirements: &id005 !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "="
80
+ - !ruby/object:Gem::Version
81
+ segments:
82
+ - 1
83
+ - 5
84
+ - 5
85
+ version: 1.5.5
86
+ requirement: *id005
64
87
  name: rubigen
65
88
  prerelease: false
66
- requirement: &id004 !ruby/object:Gem::Requirement
89
+ type: :development
90
+ - !ruby/object:Gem::Dependency
91
+ version_requirements: &id006 !ruby/object:Gem::Requirement
67
92
  requirements:
68
- - - ">="
93
+ - - "="
69
94
  - !ruby/object:Gem::Version
70
95
  segments:
71
96
  - 1
72
- - 5
73
97
  - 2
74
- version: 1.5.2
98
+ - 8
99
+ version: 1.2.8
100
+ requirement: *id006
101
+ name: fakeweb
102
+ prerelease: false
75
103
  type: :development
76
- version_requirements: *id004
77
104
  - !ruby/object:Gem::Dependency
78
- name: fakeweb
105
+ version_requirements: &id007 !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "="
108
+ - !ruby/object:Gem::Version
109
+ segments:
110
+ - 2
111
+ - 3
112
+ - 5
113
+ version: 2.3.5
114
+ requirement: *id007
115
+ name: activesupport
79
116
  prerelease: false
80
- requirement: &id005 !ruby/object:Gem::Requirement
117
+ type: :development
118
+ - !ruby/object:Gem::Dependency
119
+ version_requirements: &id008 !ruby/object:Gem::Requirement
81
120
  requirements:
82
121
  - - ">="
83
122
  - !ruby/object:Gem::Version
@@ -86,12 +125,40 @@ dependencies:
86
125
  - 2
87
126
  - 6
88
127
  version: 1.2.6
128
+ requirement: *id008
129
+ name: rspec
130
+ prerelease: false
89
131
  type: :development
90
- version_requirements: *id005
91
132
  - !ruby/object:Gem::Dependency
92
- name: hoe
133
+ version_requirements: &id009 !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "="
136
+ - !ruby/object:Gem::Version
137
+ segments:
138
+ - 0
139
+ - 8
140
+ - 5
141
+ version: 0.8.5
142
+ requirement: *id009
143
+ name: cucumber
144
+ prerelease: false
145
+ type: :development
146
+ - !ruby/object:Gem::Dependency
147
+ version_requirements: &id010 !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "="
150
+ - !ruby/object:Gem::Version
151
+ segments:
152
+ - 0
153
+ - 2
154
+ - 1
155
+ version: 0.2.1
156
+ requirement: *id010
157
+ name: aruba
93
158
  prerelease: false
94
- requirement: &id006 !ruby/object:Gem::Requirement
159
+ type: :development
160
+ - !ruby/object:Gem::Dependency
161
+ version_requirements: &id011 !ruby/object:Gem::Requirement
95
162
  requirements:
96
163
  - - ">="
97
164
  - !ruby/object:Gem::Version
@@ -100,14 +167,17 @@ dependencies:
100
167
  - 5
101
168
  - 0
102
169
  version: 2.5.0
170
+ requirement: *id011
171
+ name: hoe
172
+ prerelease: false
103
173
  type: :development
104
- version_requirements: *id006
105
174
  description: |-
106
175
  CodeFumes.com[http://codefumes.com] is a service intended to help people
107
176
  involved with software projects who are interested in tracking, sharing,
108
177
  and reviewing metrics/information about a project in relation to the
109
178
  commits of said project's repository. The site supports a small set of
110
- 'standard' metrics, but also provides a simple method of supplying
179
+ 'standard' metrics (# lines changed/commit, build status, build duration,
180
+ etc). Additionally, the service provides a simple method of supplying
111
181
  and retrieving custom metrics, allowing users to gather any metric they
112
182
  are interested in tracking.
113
183
 
@@ -115,52 +185,65 @@ description: |-
115
185
  CodeFumes.com[http://codefumes.com] API. The intention of the
116
186
  gem is to simplify integration with CodeFumes.com for developers of
117
187
  other libraries & and applications.
118
-
119
- For an example of another library using the current features of this
120
- gem, you can refer to the
121
- 'codefumes_harvester[http://codefumes.rubyforge.org/codefumes_harvester]' gem.
122
188
  email:
123
- - tom.kersten@cosyntech.com
124
- - freemarmoset@gmail.com
189
+ - tom.kersten@codefumes.com
125
190
  executables:
126
- - cf_claim_project
127
- - cf_release_project
128
- - cf_store_credentials
191
+ - fumes
129
192
  extensions: []
130
193
 
131
194
  extra_rdoc_files:
132
195
  - History.txt
133
196
  - Manifest.txt
134
197
  - README.txt
198
+ - LICENSE
135
199
  files:
200
+ - Gemfile
201
+ - Gemfile.lock
136
202
  - History.txt
203
+ - LICENSE
137
204
  - Manifest.txt
138
205
  - README.txt
139
206
  - Rakefile
140
- - bin/cf_claim_project
141
- - bin/cf_release_project
142
- - bin/cf_store_credentials
143
- - lib/cf_claim_project/cli.rb
144
- - lib/cf_release_project/cli.rb
145
- - lib/cf_store_credentials/cli.rb
207
+ - bin/fumes
208
+ - config/website.yml
209
+ - cucumber.yml
210
+ - features/claiming_a_project.feature
211
+ - features/deleting_a_project.feature
212
+ - features/releasing_a_project.feature
213
+ - features/step_definitions/cli_steps.rb
214
+ - features/step_definitions/common_steps.rb
215
+ - features/step_definitions/filesystem_steps.rb
216
+ - features/storing_user_api_key.feature
217
+ - features/support/common.rb
218
+ - features/support/env.rb
219
+ - features/support/matchers.rb
220
+ - features/synchronizing_repository_with_project.feature
146
221
  - lib/codefumes.rb
147
222
  - lib/codefumes/api.rb
148
- - lib/codefumes/build.rb
149
- - lib/codefumes/claim.rb
150
- - lib/codefumes/commit.rb
223
+ - lib/codefumes/api/build.rb
224
+ - lib/codefumes/api/claim.rb
225
+ - lib/codefumes/api/commit.rb
226
+ - lib/codefumes/api/payload.rb
227
+ - lib/codefumes/api/project.rb
228
+ - lib/codefumes/cli_helpers.rb
151
229
  - lib/codefumes/config_file.rb
152
- - lib/codefumes/payload.rb
153
- - lib/codefumes/project.rb
154
- - spec/cf_claim_project/cli_spec.rb
155
- - spec/cf_release_project/cli_spec.rb
156
- - spec/cf_store_credentials/cli_spec.rb
230
+ - lib/codefumes/errors.rb
231
+ - lib/codefumes/exit_codes.rb
232
+ - lib/codefumes/harvester.rb
233
+ - lib/codefumes/quick_build.rb
234
+ - lib/codefumes/quick_metric.rb
235
+ - lib/codefumes/source_control.rb
236
+ - lib/integrity_notifier/codefumes.haml
237
+ - lib/integrity_notifier/codefumes.rb
238
+ - spec/codefumes/api/build_spec.rb
239
+ - spec/codefumes/api/claim_spec.rb
240
+ - spec/codefumes/api/commit_spec.rb
241
+ - spec/codefumes/api/payload_spec.rb
242
+ - spec/codefumes/api/project_spec.rb
157
243
  - spec/codefumes/api_spec.rb
158
- - spec/codefumes/build_spec.rb
159
- - spec/codefumes/claim_spec.rb
160
- - spec/codefumes/commit_spec.rb
161
244
  - spec/codefumes/config_file_spec.rb
162
- - spec/codefumes/payload_spec.rb
163
- - spec/codefumes/project_spec.rb
245
+ - spec/codefumes/harvester_spec.rb
246
+ - spec/codefumes/source_control_spec.rb
164
247
  - spec/codefumes_service_helpers.rb
165
248
  - spec/fixtures/build.xml
166
249
  - spec/fixtures/commit.xml
@@ -169,8 +252,10 @@ files:
169
252
  - spec/fixtures/payload.xml
170
253
  - spec/fixtures/project.xml
171
254
  - spec/fixtures/project_update.xml
255
+ - spec/fixtures/sample_project_dirs/no_scm/description
172
256
  - spec/spec.opts
173
257
  - spec/spec_helper.rb
258
+ - tasks/cucumber.rake
174
259
  - tasks/rspec.rake
175
260
  has_rdoc: true
176
261
  homepage: http://codefumes.rubyforge.org/codefumes