codefumes 0.1.10 → 0.2.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.
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