cider_ci-support 1.0.0.pre.beta.2 → 1.0.0.pre.beta.3
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.
- checksums.yaml +4 -4
- data/README.md +14 -9
- data/bin/cider-ci_coverage +55 -35
- data/cider_ci-support.gemspec +1 -1
- data/lib/cider_ci/support/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 641dd67b2153a83498378c4be26221537b512584
|
4
|
+
data.tar.gz: e4a14b1eb982f3f29107cd1c8672d78fbd3668f6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 07acab8d1d9d399c3236c8d6efc5407c0d34df5ebf749775ead6012f280150b25acf4f15ed821637cfeb34204ee709ca860bc61eb6a78f99a4cfd2c4db285c0c
|
7
|
+
data.tar.gz: faf94688042a57f38438b5ebea929d6c628f9ef5fb7f16fe753010f7761a0f4224b645817152bdd461782b14a0cd53398b6b1d85ac798e88bfe59b2b5956e1b6
|
data/README.md
CHANGED
@@ -8,17 +8,13 @@ This gem provides convenience executables to work with Cider-CI.
|
|
8
8
|
Add this line to your application's Gemfile:
|
9
9
|
|
10
10
|
```ruby
|
11
|
-
gem 'cider_ci-support'
|
11
|
+
gem 'cider_ci-support', '= 1.0.0.pre.beta.3'
|
12
12
|
```
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
$ bundle
|
17
|
-
|
18
|
-
Or install it yourself as:
|
19
|
-
|
20
|
-
$ gem install cider_ci-rails
|
14
|
+
Read [this][] if you want to know why the version looks strange and why
|
15
|
+
you should use `=`.
|
21
16
|
|
17
|
+
[this]: https://github.com/json-roa/json-roa_ruby-client#semantic-versioning-and-rubygems-versioning
|
22
18
|
|
23
19
|
## Usage
|
24
20
|
|
@@ -40,7 +36,16 @@ Or install it yourself as:
|
|
40
36
|
|
41
37
|
4. Within the top level directory of you project, e.g.
|
42
38
|
|
43
|
-
|
39
|
+
~~~
|
40
|
+
cider-ci_coverage
|
41
|
+
~~~
|
42
|
+
|
43
|
+
which will create the coverage output in `./coverage/`. Alternatively
|
44
44
|
|
45
|
+
~~~
|
46
|
+
cider-ci_coverage --upload
|
47
|
+
~~~
|
45
48
|
|
49
|
+
will additionally upload the files `./coverage/**/*`
|
50
|
+
as tree-attachments.
|
46
51
|
|
data/bin/cider-ci_coverage
CHANGED
@@ -23,7 +23,7 @@ require 'thread/pool'
|
|
23
23
|
require 'mime/types'
|
24
24
|
require 'open-uri'
|
25
25
|
|
26
|
-
|
26
|
+
require 'pry'
|
27
27
|
|
28
28
|
###############################################################################
|
29
29
|
# Download from Cider-CI
|
@@ -40,33 +40,35 @@ def get_execution_resource root, execution_id
|
|
40
40
|
root.relation('execution').get('id' => execution_id )
|
41
41
|
end
|
42
42
|
|
43
|
-
|
44
|
-
def get_and_convert_resultset_attachments execution, thread_pool_size
|
43
|
+
def get_and_convert_resultset_attachments root, tree_id, thread_pool_size
|
45
44
|
print "download_resultset_attachments"; STDOUT.flush
|
46
45
|
pool = Thread.pool thread_pool_size
|
47
|
-
|
48
|
-
.map do |
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
.get("state" => "passed").collection.map(&:get).map do |trial|
|
46
|
+
root.relation("executions").get('treeid' => tree_id).collection \
|
47
|
+
.map(&:get).map do |execution|
|
48
|
+
execution.relation('tasks').get("state" => "passed").collection\
|
49
|
+
.map do |task_relation|
|
50
|
+
Thread.future pool do
|
53
51
|
print "."; STDOUT.flush
|
54
|
-
|
55
|
-
.get.collection.map do |
|
56
|
-
trial_attachment_resource= tar.get
|
52
|
+
task_relation.get().relation('trials') \
|
53
|
+
.get("state" => "passed").collection.map(&:get).map do |trial|
|
57
54
|
print "."; STDOUT.flush
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
print "
|
62
|
-
|
63
|
-
|
64
|
-
|
55
|
+
trial.relation('trial-attachments') \
|
56
|
+
.get.collection.map do |tar|
|
57
|
+
trial_attachment_resource= tar.get
|
58
|
+
print "."; STDOUT.flush
|
59
|
+
if (working_dir= trial.data['scripts'] \
|
60
|
+
.map{|k,v| v["working_dir"]}.compact.first) \
|
61
|
+
and (trial_attachment_resource.data['path'] =~ /resultset\.json/)
|
62
|
+
print "*"; STDOUT.flush
|
63
|
+
resultset= trial_attachment_resource \
|
64
|
+
.relation('trial-attachment-data-stream').get.response.body
|
65
|
+
convert_resultset resultset, working_dir
|
66
|
+
end
|
65
67
|
end
|
66
68
|
end
|
67
69
|
end
|
68
|
-
end
|
69
|
-
end.
|
70
|
+
end.map(&:~)
|
71
|
+
end.flatten.compact
|
70
72
|
end
|
71
73
|
|
72
74
|
|
@@ -74,14 +76,15 @@ end
|
|
74
76
|
# Upload
|
75
77
|
###############################################################################
|
76
78
|
|
77
|
-
|
79
|
+
# TODO add tree-attachments relation at cider root
|
80
|
+
def upload_as_tree_attachments root, tree_id
|
78
81
|
print "upload_as_tree_attachments"; STDOUT.flush
|
79
|
-
|
80
|
-
.relation("data-stream")
|
82
|
+
|
81
83
|
Dir.glob("coverage/**/*").each do |filename|
|
82
84
|
if content_type= MIME::Types.of(filename).first.content_type rescue nil
|
83
85
|
payload= Faraday::UploadIO.new(filename, content_type)
|
84
|
-
|
86
|
+
root.relation("tree-attachment-data-stream").put({"treeid" => tree_id,
|
87
|
+
"path" => filename},
|
85
88
|
File.open(filename, "rb").read,
|
86
89
|
{"content-type" => content_type})
|
87
90
|
print "*"; STDOUT.flush
|
@@ -135,11 +138,12 @@ end
|
|
135
138
|
# Run
|
136
139
|
###############################################################################
|
137
140
|
|
138
|
-
def run_coverage
|
139
|
-
get_and_convert_resultset_attachments(
|
141
|
+
def run_coverage root, tree_id, thrad_pool_size
|
142
|
+
get_and_convert_resultset_attachments(root,tree_id,thrad_pool_size) \
|
140
143
|
.instance_eval do
|
141
144
|
reduce_resultsets self
|
142
145
|
end.instance_eval do
|
146
|
+
raise ScriptError, "the collected and reduced coverage result is empty" if self.empty?
|
143
147
|
init_simple_cov
|
144
148
|
SimpleCov::Result.new self
|
145
149
|
end.instance_eval do
|
@@ -180,6 +184,10 @@ def parse_options options
|
|
180
184
|
options.password= p
|
181
185
|
end
|
182
186
|
|
187
|
+
opts.on('-u', '--upload') do
|
188
|
+
options.upload= true
|
189
|
+
end
|
190
|
+
|
183
191
|
end.parse!
|
184
192
|
|
185
193
|
options
|
@@ -192,16 +200,28 @@ def assert_correct_tree_id execution
|
|
192
200
|
end
|
193
201
|
end
|
194
202
|
|
203
|
+
def get_current_tree_id
|
204
|
+
begin
|
205
|
+
tree_id= `"git" "log" "-n" "1" "--pretty=%T"`.strip
|
206
|
+
rescue _
|
207
|
+
raise ScriptError, "could not determine the current tree_id"
|
208
|
+
end
|
209
|
+
|
210
|
+
if $?.exitstatus != 0
|
211
|
+
raise ScriptError, "could not determine the current tree_id"
|
212
|
+
else
|
213
|
+
tree_id
|
214
|
+
end
|
215
|
+
end
|
216
|
+
|
195
217
|
def main
|
196
218
|
options = OpenStruct.new
|
197
219
|
options.thread_pool_size= 50
|
198
|
-
options.execution_id= nil
|
199
220
|
options.username= ENV['CIDER_CI_USERNAME']
|
200
221
|
options.password= ENV['CIDER_CI_PASSWORD']
|
201
222
|
options.api_url= ENV['CIDER_CI_API_URL']
|
223
|
+
options.upload= false
|
202
224
|
parse_options options
|
203
|
-
options.execution_id || raise(OptionParser::MissingArgument \
|
204
|
-
, "execution_id is required")
|
205
225
|
options.api_url || raise(OptionParser::MissingArgument \
|
206
226
|
, "api_url is required, set CIDER_CI_API_URL or provide -a option")
|
207
227
|
options.username || raise(OptionParser::MissingArgument \
|
@@ -209,13 +229,13 @@ def main
|
|
209
229
|
options.password || raise(OptionParser::MissingArgument \
|
210
230
|
, "password is required, set CIDER_CI_PASSWORD")
|
211
231
|
|
212
|
-
|
213
232
|
root = connect(options.api_url, options.username, options.password).get()
|
214
|
-
|
215
|
-
assert_correct_tree_id execution
|
233
|
+
tree_id = get_current_tree_id
|
216
234
|
FileUtils.rm_rf('coverage')
|
217
|
-
run_coverage
|
218
|
-
|
235
|
+
run_coverage root, tree_id, options.thread_pool_size
|
236
|
+
if options.upload
|
237
|
+
upload_as_tree_attachments root, tree_id
|
238
|
+
end
|
219
239
|
end
|
220
240
|
|
221
241
|
main
|
data/cider_ci-support.gemspec
CHANGED
@@ -24,5 +24,5 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.add_runtime_dependency 'mime-types'
|
25
25
|
spec.add_runtime_dependency 'thread', '= 0.1.4'
|
26
26
|
spec.add_runtime_dependency 'simplecov', '~> 0.9'
|
27
|
-
spec.add_runtime_dependency 'json_roa-client', "
|
27
|
+
spec.add_runtime_dependency 'json_roa-client', ">= 1.0.0.pre.beta.2"
|
28
28
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cider_ci-support
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.pre.beta.
|
4
|
+
version: 1.0.0.pre.beta.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Schank
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-12-
|
11
|
+
date: 2014-12-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -84,16 +84,16 @@ dependencies:
|
|
84
84
|
name: json_roa-client
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 1.0.0.pre.beta.
|
89
|
+
version: 1.0.0.pre.beta.2
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 1.0.0.pre.beta.
|
96
|
+
version: 1.0.0.pre.beta.2
|
97
97
|
description: ''
|
98
98
|
email:
|
99
99
|
- DrTom@schank.ch
|