ci_in_a_can 0.0.23 → 0.0.24

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 043cc0ae6caa1df792a1730f08d85d1f9b08bd53
4
+ data.tar.gz: 2c244f084ed20982bac7f0fe169081f1c8306e5f
5
+ SHA512:
6
+ metadata.gz: 9665974ac60bf64f78bc182158102dee3152a9489240025c9563479e3b2cb6094ce0fd8b49085d0721307a9f2fe2d92bb17a63b04a841202827aa180a19bf97b
7
+ data.tar.gz: 85fa6850a938e65d65e62c4320d91ffd086dda0e6347c68bd6999ab579eaba5b2c92e5eab82d190138978567c4256bc88941057f31d18c7258983648c5ec4aa3
@@ -12,6 +12,33 @@ module CiInACan
12
12
  CiInACan::TestResult.find(params[:id]).to_json
13
13
  end
14
14
 
15
+ post %r{/repo/(.+)} do
16
+ params[:id] = params[:captures].first
17
+ commands = params[:commands].gsub("\r\n", "\n").split("\n")
18
+ commands = commands.map { |x| x.strip }.select { |x| x != '' }
19
+ data = CiInACan::Persistence.find('build_commands', params[:id]) || {}
20
+ data[:commands] = commands
21
+ CiInACan::Persistence.save('build_commands', params[:id], data)
22
+ redirect "/repo/#{params[:id]}"
23
+ end
24
+
25
+ get %r{/repo/(.+)} do
26
+ params[:id] = params[:captures].first
27
+ data = CiInACan::Persistence.find('build_commands', params[:id]) || {}
28
+ commands = data[:commands] || []
29
+ commands = commands.join("\n")
30
+ CiInACan::WebContent.full_page_of(
31
+ <<EOF
32
+ <form action="/repo/#{params[:id]}" method="post">
33
+ <textarea name="commands">
34
+ #{commands}
35
+ </textarea>
36
+ <input type="submit">Submit</inputk
37
+ </form>
38
+ EOF
39
+ )
40
+ end
41
+
15
42
  get '/test_result/:id' do
16
43
  test_result = CiInACan::TestResult.find(params[:id])
17
44
 
@@ -15,7 +15,8 @@ module CiInACan
15
15
  end
16
16
 
17
17
  def commands
18
- ['bundle install', 'bundle exec rake']
18
+ commands = CiInACan::BuildSetting.commands_for self
19
+ commands.count > 0 ? commands : ['bundle install', 'bundle exec rake']
19
20
  end
20
21
 
21
22
  end
@@ -0,0 +1,13 @@
1
+ module CiInACan
2
+
3
+ module BuildSetting
4
+
5
+ def self.commands_for build
6
+ CiInACan::Persistence.find('build_commands', build.repo)[:commands]
7
+ rescue
8
+ []
9
+ end
10
+
11
+ end
12
+
13
+ end
@@ -1,3 +1,3 @@
1
1
  module CiInACan
2
- VERSION = "0.0.23"
2
+ VERSION = "0.0.24"
3
3
  end
@@ -0,0 +1,44 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe CiInACan::BuildSetting do
4
+
5
+ let(:persistence_type) { 'build_commands' }
6
+
7
+ before do
8
+ clear_all_persisted_data
9
+ end
10
+
11
+ describe "commands for a build" do
12
+
13
+ describe "bad build" do
14
+ it "should default to nothing" do
15
+ CiInACan::BuildSetting.commands_for(nil).must_equal []
16
+ end
17
+ end
18
+
19
+ [:repo, :commands].to_objects {[
20
+ ['abc', ['1', '2', '3']],
21
+ ['def', ['4', '5', '6']]
22
+ ]}.each do |test|
23
+
24
+ describe "settings for the build repo exist" do
25
+
26
+ it "should return the settings" do
27
+
28
+ CiInACan::Persistence.save(persistence_type, test.repo, { commands: test.commands } )
29
+
30
+ build = CiInACan::Build.new(repo: test.repo)
31
+
32
+ commands = CiInACan::BuildSetting.commands_for build
33
+
34
+ commands.must_equal test.commands
35
+
36
+ end
37
+
38
+ end
39
+
40
+ end
41
+
42
+ end
43
+
44
+ end
@@ -18,11 +18,42 @@ describe CiInACan::Build do
18
18
  build.created_at.must_be_same_as now
19
19
  end
20
20
 
21
- it "should default commands to the basic ruby conventions" do
22
- result = CiInACan::Build.new.commands
23
- result.count.must_equal 2
24
- result[0].must_equal 'bundle install'
25
- result[1].must_equal 'bundle exec rake'
21
+ describe "commands" do
22
+
23
+ describe "when no build settings exist for the build" do
24
+
25
+ let(:build) { CiInACan::Build.new }
26
+
27
+ before do
28
+ CiInACan::BuildSetting.stubs(:commands_for).with(build).returns []
29
+ end
30
+
31
+ it "should default commands to the basic ruby conventions" do
32
+ result = build.commands
33
+ result.count.must_equal 2
34
+ result[0].must_equal 'bundle install'
35
+ result[1].must_equal 'bundle exec rake'
36
+ end
37
+
38
+ end
39
+
40
+ describe "when a build setting exists" do
41
+
42
+ let(:build) { CiInACan::Build.new }
43
+ let(:commands_for_build) { [Object.new] }
44
+
45
+ before do
46
+ CiInACan::BuildSetting.stubs(:commands_for)
47
+ .with(build)
48
+ .returns commands_for_build
49
+ end
50
+
51
+ it "should return those commands" do
52
+ build.commands.must_be_same_as commands_for_build
53
+ end
54
+
55
+ end
56
+
26
57
  end
27
58
 
28
59
  describe "parse" do
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ci_in_a_can
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.23
5
- prerelease:
4
+ version: 0.0.24
6
5
  platform: ruby
7
6
  authors:
8
7
  - Darren Cauthon
@@ -14,7 +13,6 @@ dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: bundler
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,209 +27,183 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: mocha
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: subtle
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: contrast
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: '0'
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: '0'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: timecop
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - '>='
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - '>='
92
81
  - !ruby/object:Gem::Version
93
82
  version: '0'
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: rake
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ! '>='
87
+ - - '>='
100
88
  - !ruby/object:Gem::Version
101
89
  version: '0'
102
90
  type: :runtime
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ! '>='
94
+ - - '>='
108
95
  - !ruby/object:Gem::Version
109
96
  version: '0'
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: sinatra
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
- - - ! '>='
101
+ - - '>='
116
102
  - !ruby/object:Gem::Version
117
103
  version: '0'
118
104
  type: :runtime
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
- - - ! '>='
108
+ - - '>='
124
109
  - !ruby/object:Gem::Version
125
110
  version: '0'
126
111
  - !ruby/object:Gem::Dependency
127
112
  name: json
128
113
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
114
  requirements:
131
- - - ! '>='
115
+ - - '>='
132
116
  - !ruby/object:Gem::Version
133
117
  version: '0'
134
118
  type: :runtime
135
119
  prerelease: false
136
120
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
121
  requirements:
139
- - - ! '>='
122
+ - - '>='
140
123
  - !ruby/object:Gem::Version
141
124
  version: '0'
142
125
  - !ruby/object:Gem::Dependency
143
126
  name: uuid
144
127
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
128
  requirements:
147
- - - ! '>='
129
+ - - '>='
148
130
  - !ruby/object:Gem::Version
149
131
  version: '0'
150
132
  type: :runtime
151
133
  prerelease: false
152
134
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
135
  requirements:
155
- - - ! '>='
136
+ - - '>='
156
137
  - !ruby/object:Gem::Version
157
138
  version: '0'
158
139
  - !ruby/object:Gem::Dependency
159
140
  name: listen
160
141
  requirement: !ruby/object:Gem::Requirement
161
- none: false
162
142
  requirements:
163
- - - ! '>='
143
+ - - '>='
164
144
  - !ruby/object:Gem::Version
165
145
  version: '0'
166
146
  type: :runtime
167
147
  prerelease: false
168
148
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
149
  requirements:
171
- - - ! '>='
150
+ - - '>='
172
151
  - !ruby/object:Gem::Version
173
152
  version: '0'
174
153
  - !ruby/object:Gem::Dependency
175
154
  name: octokit
176
155
  requirement: !ruby/object:Gem::Requirement
177
- none: false
178
156
  requirements:
179
- - - ! '>='
157
+ - - '>='
180
158
  - !ruby/object:Gem::Version
181
159
  version: '0'
182
160
  type: :runtime
183
161
  prerelease: false
184
162
  version_requirements: !ruby/object:Gem::Requirement
185
- none: false
186
163
  requirements:
187
- - - ! '>='
164
+ - - '>='
188
165
  - !ruby/object:Gem::Version
189
166
  version: '0'
190
167
  - !ruby/object:Gem::Dependency
191
168
  name: daemons
192
169
  requirement: !ruby/object:Gem::Requirement
193
- none: false
194
170
  requirements:
195
- - - ! '>='
171
+ - - '>='
196
172
  - !ruby/object:Gem::Version
197
173
  version: '0'
198
174
  type: :runtime
199
175
  prerelease: false
200
176
  version_requirements: !ruby/object:Gem::Requirement
201
- none: false
202
177
  requirements:
203
- - - ! '>='
178
+ - - '>='
204
179
  - !ruby/object:Gem::Version
205
180
  version: '0'
206
181
  - !ruby/object:Gem::Dependency
207
182
  name: subtle
208
183
  requirement: !ruby/object:Gem::Requirement
209
- none: false
210
184
  requirements:
211
- - - ! '>='
185
+ - - '>='
212
186
  - !ruby/object:Gem::Version
213
187
  version: '0'
214
188
  type: :runtime
215
189
  prerelease: false
216
190
  version_requirements: !ruby/object:Gem::Requirement
217
- none: false
218
191
  requirements:
219
- - - ! '>='
192
+ - - '>='
220
193
  - !ruby/object:Gem::Version
221
194
  version: '0'
222
195
  - !ruby/object:Gem::Dependency
223
196
  name: systemu
224
197
  requirement: !ruby/object:Gem::Requirement
225
- none: false
226
198
  requirements:
227
- - - ! '>='
199
+ - - '>='
228
200
  - !ruby/object:Gem::Version
229
201
  version: '0'
230
202
  type: :runtime
231
203
  prerelease: false
232
204
  version_requirements: !ruby/object:Gem::Requirement
233
- none: false
234
205
  requirements:
235
- - - ! '>='
206
+ - - '>='
236
207
  - !ruby/object:Gem::Version
237
208
  version: '0'
238
209
  description: Fast CI. Still a WIP.
@@ -255,6 +226,7 @@ files:
255
226
  - lib/ci_in_a_can/bash.rb
256
227
  - lib/ci_in_a_can/bash_result.rb
257
228
  - lib/ci_in_a_can/build.rb
229
+ - lib/ci_in_a_can/build_setting.rb
258
230
  - lib/ci_in_a_can/cloner.rb
259
231
  - lib/ci_in_a_can/daemon.rb
260
232
  - lib/ci_in_a_can/github.rb
@@ -271,6 +243,7 @@ files:
271
243
  - sample.json
272
244
  - spec/ci_in_a_can/bash_result_spec.rb
273
245
  - spec/ci_in_a_can/bash_spec.rb
246
+ - spec/ci_in_a_can/build_setting_spec.rb
274
247
  - spec/ci_in_a_can/build_spec.rb
275
248
  - spec/ci_in_a_can/cloner_spec.rb
276
249
  - spec/ci_in_a_can/github_build_parser_spec.rb
@@ -286,37 +259,31 @@ files:
286
259
  homepage: ''
287
260
  licenses:
288
261
  - MIT
262
+ metadata: {}
289
263
  post_install_message:
290
264
  rdoc_options: []
291
265
  require_paths:
292
266
  - lib
293
267
  required_ruby_version: !ruby/object:Gem::Requirement
294
- none: false
295
268
  requirements:
296
- - - ! '>='
269
+ - - '>='
297
270
  - !ruby/object:Gem::Version
298
271
  version: '0'
299
- segments:
300
- - 0
301
- hash: -117443188495740805
302
272
  required_rubygems_version: !ruby/object:Gem::Requirement
303
- none: false
304
273
  requirements:
305
- - - ! '>='
274
+ - - '>='
306
275
  - !ruby/object:Gem::Version
307
276
  version: '0'
308
- segments:
309
- - 0
310
- hash: -117443188495740805
311
277
  requirements: []
312
278
  rubyforge_project:
313
- rubygems_version: 1.8.24
279
+ rubygems_version: 2.1.11
314
280
  signing_key:
315
- specification_version: 3
281
+ specification_version: 4
316
282
  summary: Fast CI. Still a WIP.
317
283
  test_files:
318
284
  - spec/ci_in_a_can/bash_result_spec.rb
319
285
  - spec/ci_in_a_can/bash_spec.rb
286
+ - spec/ci_in_a_can/build_setting_spec.rb
320
287
  - spec/ci_in_a_can/build_spec.rb
321
288
  - spec/ci_in_a_can/cloner_spec.rb
322
289
  - spec/ci_in_a_can/github_build_parser_spec.rb