codefumes 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/.rvmrc ADDED
@@ -0,0 +1,2 @@
1
+ rvm_install_on_use_flag=1
2
+ rvm ruby-1.8.7-p299@cf_gem
data/Gemfile CHANGED
@@ -10,10 +10,12 @@ gem 'gherkin', '2.1.5'
10
10
  gem 'gli', '1.1.1'
11
11
  gem 'grit', '2.0'
12
12
  gem 'hanna', '0.1.12'
13
- gem 'hoe', '2.5.0'
13
+ gem 'hoe', '2.6.2'
14
14
  gem 'hoe-git', '1.3.0'
15
15
  gem 'httparty', '0.6.1'
16
+ gem 'launchy', '0.3.7'
16
17
  gem 'rake', '0.8.7'
17
18
  gem 'rspec', '1.3.0'
18
19
  gem 'rubigen', '1.5.5'
19
20
  gem 'ruby-debug'
21
+ gem 'ZenTest'
@@ -1,135 +1,81 @@
1
- ---
2
- dependencies:
3
- ruby-debug:
4
- group:
5
- - :default
6
- version: ">= 0"
7
- fakeweb:
8
- group:
9
- - :default
10
- version: = 1.2.8
11
- httparty:
12
- group:
13
- - :default
14
- version: = 0.6.1
15
- rake:
16
- group:
17
- - :default
18
- version: = 0.8.7
19
- rspec:
20
- group:
21
- - :default
22
- version: = 1.3.0
23
- grit:
24
- group:
25
- - :default
26
- version: = 2.0
27
- crack:
28
- group:
29
- - :default
30
- version: = 0.1.8
31
- gli:
32
- group:
33
- - :default
34
- version: = 1.1.1
35
- aruba:
36
- group:
37
- - :default
38
- version: = 0.2.1
39
- gherkin:
40
- group:
41
- - :default
42
- version: = 2.1.5
43
- caleb-chronic:
44
- group:
45
- - :default
46
- version: = 0.3.0
47
- hoe-git:
48
- group:
49
- - :default
50
- version: = 1.3.0
51
- hoe:
52
- group:
53
- - :default
54
- version: = 2.5.0
55
- cucumber:
56
- group:
57
- - :default
58
- version: = 0.8.5
59
- activesupport:
60
- group:
61
- - :default
62
- version: = 2.3.5
63
- hanna:
64
- group:
65
- - :default
66
- version: = 0.1.12
67
- rubigen:
68
- group:
69
- - :default
70
- version: = 1.5.5
71
- specs:
72
- - rake:
73
- version: 0.8.7
74
- - activesupport:
75
- version: 2.3.5
76
- - aruba:
77
- version: 0.2.1
78
- - builder:
79
- version: 2.1.2
80
- - caleb-chronic:
81
- version: 0.3.0
82
- - columnize:
83
- version: 0.3.1
84
- - crack:
85
- version: 0.1.8
86
- - diff-lcs:
87
- version: 1.1.2
88
- - trollop:
89
- version: 1.16.2
90
- - gherkin:
91
- version: 2.1.5
92
- - json_pure:
93
- version: 1.4.6
94
- - term-ansicolor:
95
- version: 1.0.5
96
- - cucumber:
97
- version: 0.8.5
98
- - fakeweb:
99
- version: 1.2.8
100
- - gemcutter:
101
- version: 0.6.1
102
- - gli:
103
- version: 1.1.1
104
- - mime-types:
105
- version: "1.16"
106
- - grit:
107
- version: 2.0.0
108
- - haml:
109
- version: 2.2.24
110
- - rdoc:
111
- version: 2.3.0
112
- - hanna:
113
- version: 0.1.12
114
- - rubyforge:
115
- version: 2.0.4
116
- - hoe:
117
- version: 2.5.0
118
- - hoe-git:
119
- version: 1.3.0
120
- - httparty:
121
- version: 0.6.1
122
- - linecache:
123
- version: "0.43"
124
- - rspec:
125
- version: 1.3.0
126
- - rubigen:
127
- version: 1.5.5
128
- - ruby-debug-base:
129
- version: 0.10.3
130
- - ruby-debug:
131
- version: 0.10.3
132
- hash: 3b81c08f31e7b6fea59ef7782384b348c7d2609a
133
- sources:
134
- - Rubygems:
135
- uri: http://gemcutter.org
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ ZenTest (4.4.0)
5
+ activesupport (2.3.5)
6
+ aruba (0.2.1)
7
+ builder (2.1.2)
8
+ caleb-chronic (0.3.0)
9
+ columnize (0.3.1)
10
+ configuration (1.1.0)
11
+ crack (0.1.8)
12
+ cucumber (0.8.5)
13
+ builder (~> 2.1.2)
14
+ diff-lcs (~> 1.1.2)
15
+ gherkin (~> 2.1.4)
16
+ json_pure (~> 1.4.3)
17
+ term-ansicolor (~> 1.0.4)
18
+ diff-lcs (1.1.2)
19
+ fakeweb (1.2.8)
20
+ gherkin (2.1.5)
21
+ trollop (~> 1.16.2)
22
+ gli (1.1.1)
23
+ grit (2.0.0)
24
+ diff-lcs (>= 1.1.2)
25
+ mime-types (>= 1.15)
26
+ haml (2.2.24)
27
+ hanna (0.1.12)
28
+ haml (~> 2.2.8)
29
+ rake (~> 0.8.2)
30
+ rdoc (~> 2.3.0)
31
+ hoe (2.6.2)
32
+ rake (>= 0.8.7)
33
+ rubyforge (>= 2.0.4)
34
+ hoe-git (1.3.0)
35
+ hoe (>= 2.2.0)
36
+ httparty (0.6.1)
37
+ crack (= 0.1.8)
38
+ json_pure (1.4.6)
39
+ launchy (0.3.7)
40
+ configuration (>= 0.0.5)
41
+ rake (>= 0.8.1)
42
+ linecache (0.43)
43
+ mime-types (1.16)
44
+ rake (0.8.7)
45
+ rdoc (2.3.0)
46
+ rspec (1.3.0)
47
+ rubigen (1.5.5)
48
+ activesupport (~> 2.3.5)
49
+ ruby-debug (0.10.3)
50
+ columnize (>= 0.1)
51
+ ruby-debug-base (~> 0.10.3.0)
52
+ ruby-debug-base (0.10.3)
53
+ linecache (>= 0.3)
54
+ rubyforge (2.0.4)
55
+ json_pure (>= 1.1.7)
56
+ term-ansicolor (1.0.5)
57
+ trollop (1.16.2)
58
+
59
+ PLATFORMS
60
+ ruby
61
+
62
+ DEPENDENCIES
63
+ ZenTest
64
+ activesupport (= 2.3.5)
65
+ aruba (= 0.2.1)
66
+ caleb-chronic (= 0.3.0)
67
+ crack (= 0.1.8)
68
+ cucumber (= 0.8.5)
69
+ fakeweb (= 1.2.8)
70
+ gherkin (= 2.1.5)
71
+ gli (= 1.1.1)
72
+ grit (= 2.0)
73
+ hanna (= 0.1.12)
74
+ hoe (= 2.6.2)
75
+ hoe-git (= 1.3.0)
76
+ httparty (= 0.6.1)
77
+ launchy (= 0.3.7)
78
+ rake (= 0.8.7)
79
+ rspec (= 1.3.0)
80
+ rubigen (= 1.5.5)
81
+ ruby-debug
@@ -1,3 +1,30 @@
1
+ === 0.3.0 / 2010-09-12
2
+
3
+ NEW FEATURES:
4
+ * Added Commit#builds, which returns all associated builds of a commit
5
+ * Implemented initial form of 'fumes build' command
6
+ * Allows you to manage the state of builds associated with a project
7
+ [thanks Roy Kolak]
8
+ Examples:
9
+ # starts a build named 'specs' with the latest commit on the
10
+ # CodeFumes project (sets state to 'running' & start time to 'now')
11
+ fumes build --start specs
12
+
13
+ # Set the resulting build status of 'specs' build (end time is set to 'now')
14
+ fumes build --finished=successful specs
15
+ fumes build --finished=failure specs
16
+
17
+ # Retrieve the status of a specific build associated with latest commit
18
+ fumes build --status specs
19
+
20
+ # Retrieve the status of all builds associated with latest commit
21
+ fumes build --status --all
22
+
23
+ BUG FIXES/UPDATES:
24
+ * Moved away from hard-coded exit codes in features
25
+ * Slight refactoring of build state validation
26
+ * Added rvmrc/cucumber:wip task [thanks Roy Kolak]
27
+
1
28
  === 0.2.2 / 2010-08-23
2
29
 
3
30
  * Fixed integrity notifier namespacing issue
@@ -1,3 +1,4 @@
1
+ .rvmrc
1
2
  Gemfile
2
3
  Gemfile.lock
3
4
  History.txt
@@ -10,6 +11,7 @@ config/website.yml
10
11
  cucumber.yml
11
12
  features/claiming_a_project.feature
12
13
  features/deleting_a_project.feature
14
+ features/managing_project_build_status.feature
13
15
  features/releasing_a_project.feature
14
16
  features/step_definitions/cli_steps.rb
15
17
  features/step_definitions/common_steps.rb
@@ -47,9 +49,11 @@ spec/codefumes/harvester_spec.rb
47
49
  spec/codefumes/source_control_spec.rb
48
50
  spec/codefumes_service_helpers.rb
49
51
  spec/fixtures/build.xml
52
+ spec/fixtures/builds.xml
50
53
  spec/fixtures/commit.xml
51
54
  spec/fixtures/commit_with_custom_attrs.xml
52
55
  spec/fixtures/multiple_commits.xml
56
+ spec/fixtures/no_builds.xml
53
57
  spec/fixtures/payload.xml
54
58
  spec/fixtures/project.xml
55
59
  spec/fixtures/project_update.xml
data/bin/fumes CHANGED
@@ -155,10 +155,76 @@ command :open do |c|
155
155
  end
156
156
  end
157
157
 
158
+ desc "Set/read the build status of a project"
159
+ command :build do |c|
160
+ c.desc 'Start the specified build'
161
+ c.default_value false
162
+ c.switch [:start]
163
+
164
+ c.desc 'Mark the specified build with the supplied result'
165
+ c.arg_name "successful-or-failure"
166
+ c.default_value nil
167
+ c.flag [:finished]
168
+
169
+ c.desc 'Retrieve the build status of the specified build'
170
+ c.default_value false
171
+ c.switch [:status, :s]
172
+
173
+ c.desc 'Retrieve the the status of all builds associated with the latest commit'
174
+ c.default_value false
175
+ c.switch [:all, :a]
176
+
177
+ c.action do |global_options, options, args|
178
+ project_public_key = options[:public_key] || SourceControl.new('./').public_key
179
+ build_name = args.first
180
+
181
+ if build_name.nil? && options[:status] && !options[:all]
182
+ puts "You must specify a build name or the --all/-a switch."
183
+ raise Errors::InvalidCommandSyntax
184
+ end
185
+
186
+ if options[:status]
187
+ puts "Retrieving build status for '#{project_public_key}' project..."
188
+ project = Project.find(project_public_key)
189
+ commit = Commit.latest(project)
190
+
191
+ puts "Commit: #{commit.id[0..8]} (#{commit.short_message[0..49]})"
192
+ builds = options[:all] ? commit.builds : [Build.find(commit, build_name)].compact
193
+
194
+ if builds.empty?
195
+ puts "No builds found!"
196
+ puts "Exiting..."
197
+ else
198
+ builds.each do |build|
199
+ puts "\t'#{build.name}' build: #{build.state}"
200
+ end
201
+ end
202
+ elsif options[:start] || options[:finished]
203
+ new_status = options[:finished] ? options[:finished] : "started"
204
+ msg = "Setting '#{build_name}' build status to '#{new_status}'"
205
+
206
+ issue_project_commands(msg, [project_public_key]) do |project|
207
+ if options[:start] && QuickBuild.start(build_name)
208
+ puts "'#{build_name}' build successfully marked as '#{new_status}'"
209
+ elsif options[:finished] && QuickBuild.finish(build_name, options[:finished])
210
+ puts "'#{build_name}' build successfully marked as '#{new_status}'"
211
+ end
212
+ end
213
+ else
214
+ commands[:help].execute(global_options, options, ['build'])
215
+ end
216
+ end
217
+ end
218
+
158
219
  pre do |global,command,options,args|
159
220
  unless API.mode?(:production) || command_doesnt_use_api?(command)
160
221
  print_api_mode_notification
161
222
  end
223
+
224
+ if issuing_build_command?(command) && multiple_build_states?(options)
225
+ puts "Specifying multiple states in the same command is not allowed"
226
+ raise CodeFumes::Errors::InvalidCommandSyntax
227
+ end
162
228
  true
163
229
  end
164
230
 
@@ -168,11 +234,13 @@ end
168
234
  on_error do |exception|
169
235
  case exception
170
236
  when CodeFumes::Errors::UnsupportedScmToolError
171
- puts "Unsupported repository type. Exiting..."
237
+ puts "Unsupported repository type."
238
+ puts "Exiting..."
172
239
  exit(ExitCodes::UNSUPPORTED_SCM)
173
240
  when CodeFumes::Errors::UnknownProjectError
174
- msg = "Could not find specified project on CodeFumes. "
175
- msg << "Please verify the key and try again. Exiting..."
241
+ msg = "Could not find specified project on CodeFumes.\n"
242
+ msg << "Please verify the key and try again.\n"
243
+ msg << "Exiting..."
176
244
  puts msg
177
245
  exit(ExitCodes::PROJECT_NOT_FOUND)
178
246
  when CodeFumes::Errors::NoUserApiKeyError
@@ -180,7 +248,7 @@ on_error do |exception|
180
248
  msg << "your CodeFumes config file.\n"
181
249
  msg << "Log into your CodeFumes account, grab your API key, and run:\n"
182
250
  msg << "\tfumes setup YOUR-API-KEY-HERE\n\n"
183
- msg << "Exiting."
251
+ msg << "Exiting..."
184
252
  puts msg
185
253
  exit(ExitCodes::NO_USER_CREDENTIALS)
186
254
  when CodeFumes::Errors::InsufficientCredentials
@@ -188,18 +256,27 @@ on_error do |exception|
188
256
  msg << "associated with the specified project. Please verify "
189
257
  msg << "your API key is identical to what is listed on your "
190
258
  msg << "CodeFumes.com account page"
191
- msg << "Exiting."
259
+ msg << "Exiting..."
192
260
  puts msg
193
261
  exit(ExitCodes::INCORRECT_USER_CREDENTIALS)
194
262
  when Errors::NoApiKeySpecified
195
- puts "No API key specified. To clear your api-key, use the '-c/--clear' flag.\nExiting."
263
+ puts "No API key specified. To clear your api-key, use the '-c/--clear' flag."
264
+ puts "Exiting..."
196
265
  exit(ExitCodes::NO_API_KEY_SPECIFIED)
197
266
  when Errors::MissingLaunchyGem
198
267
  puts ""
199
268
  puts ""
200
269
  puts "Sorry, you need to install launchy: `gem install launchy`"
201
- puts "Exiting."
270
+ puts "Exiting..."
202
271
  exit(ExitCodes::MISSING_DEPENDENCY)
272
+ when Errors::InvalidBuildState
273
+ puts "Invalid build state specified."
274
+ puts "Valid --finished values are: #{API::Build::VALID_BUILD_RESULT_STATES.join(",")}"
275
+ puts "Exiting..."
276
+ exit(ExitCodes::INVALID_BUILD_STATE)
277
+ when Errors::InvalidCommandSyntax
278
+ puts "Exiting..."
279
+ exit(ExitCodes::INVALID_COMMAND_SYNTAX)
203
280
  when RuntimeError
204
281
  # allow default handler to take over when invalid arguments are passed in
205
282
  else
@@ -9,7 +9,7 @@ Feature: Claiming a project
9
9
  Given valid user credentials have been stored in the CodeFumes config file
10
10
  When I run "#{@bin_path}/fumes claim -p bad-public-key"
11
11
  Then the output should contain "Not Found"
12
- And the exit status should be 0
12
+ And the exit status should be "SUCCESS"
13
13
 
14
14
  Scenario: Attempting to claim a project without having an API key entry in the CodeFumes config file
15
15
  Given I have cloned and synchronized 1 project
@@ -22,25 +22,25 @@ Feature: Claiming a project
22
22
  And I have cloned and synchronized 1 project
23
23
  When I claim the project
24
24
  Then the output should contain "Denied"
25
- And the exit status should be 0
25
+ And the exit status should be "SUCCESS"
26
26
 
27
27
  Scenario: Claim a project using the key stored in a CodeFumes project directory
28
28
  Given valid user credentials have been stored in the CodeFumes config file
29
29
  And I have cloned and synchronized 1 project
30
30
  When I claim the project
31
31
  Then the output should contain "Success"
32
- And the exit status should be 0
32
+ And the exit status should be "SUCCESS"
33
33
 
34
34
  Scenario: Claiming one of multiple projects in your CodeFumes config file
35
35
  Given valid user credentials have been stored in the CodeFumes config file
36
36
  And I have cloned and synchronized 2 projects
37
37
  When I claim the 1st project
38
38
  Then the output should contain 1 successful claim message
39
- And the exit status should be 0
39
+ And the exit status should be "SUCCESS"
40
40
 
41
41
  Scenario: Claim all projects in your CodeFumes config file
42
42
  Given valid user credentials have been stored in the CodeFumes config file
43
43
  And I have cloned and synchronized 2 projects
44
44
  And I run "#{@bin_path}/fumes claim -a"
45
45
  Then the output should contain 2 successful claim messages
46
- And the exit status should be 0
46
+ And the exit status should be "SUCCESS"