mesa_test 0.0.24 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/bin/mesa_test +193 -278
- data/lib/mesa_test.rb +92 -19
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e42b738498fdc133b5bb6a6f79e669042a635df47b13bc0447c96b0f1695f369
|
4
|
+
data.tar.gz: 52fb25fcb3561cf196459422c54c339c6d7500026c487448017a7c7878726276
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d3bfa26356589fa5201c765916179164f23cfc3dd928e13a18cd2b4ba923c8d18f4cf4a73b97d86826106cd39813f258f62f929d97791f653141b3d50c20e7d
|
7
|
+
data.tar.gz: fcf9b6814d87ab717388e93f6fce7425673d4287e14cadef00242a3657c64777bb3dc869a7c527ea387a5c49838987715114c076b55e4522b693fb732c15971c
|
data/bin/mesa_test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
# if true, submit cases to localhost:3000 and load local mesa_test library
|
4
4
|
# rather than system version
|
5
|
-
DEVELOPMENT_MODE =
|
5
|
+
DEVELOPMENT_MODE = true
|
6
6
|
|
7
7
|
if DEVELOPMENT_MODE
|
8
8
|
require_relative '../lib/mesa_test'
|
@@ -11,6 +11,7 @@ else
|
|
11
11
|
end
|
12
12
|
|
13
13
|
require 'thor'
|
14
|
+
require 'yaml'
|
14
15
|
|
15
16
|
class MesaTest < Thor
|
16
17
|
DEVELOPMENT_URI = 'http://localhost:3000'.freeze
|
@@ -36,31 +37,33 @@ class MesaTest < Thor
|
|
36
37
|
searched/concatenated in this order:
|
37
38
|
|
38
39
|
#{MesaTestCase.modules.map { |mod| ' ' + mod.to_s }.join(', ')}
|
39
|
-
|
40
|
-
With --diff option, assume the checksums are up-to-date (behave like
|
41
|
-
each_test_run_and_diff), off by default.
|
42
|
-
|
43
|
-
With --force option, skip confirmation of computer details, assuming values
|
44
|
-
in ~/.mesa_test.yml are correct.
|
45
|
-
|
46
|
-
With --module option, select which module to search through, with the default
|
47
|
-
being "all" (search all modules in order). Example: --module=star.
|
48
|
-
|
49
|
-
With --log option, save yml file of test results in test directory, on
|
50
|
-
by default. Shut off with --no-log.
|
51
|
-
|
52
|
-
With --submit option, upload results to MESATestHub. By default, this is on.
|
53
|
-
To run without submission, use --no-submit.
|
54
40
|
LONGDESC
|
55
|
-
option :
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
option :submit,
|
41
|
+
option :force, desc: 'When submitting, assume submission data in ' +
|
42
|
+
'~/.mesa_test.yml are correct rather than checking ' +
|
43
|
+
'with user.', type: :boolean, default: false,
|
44
|
+
aliases: '-f'
|
45
|
+
option :submit, desc: 'Submit results (if any) to MesaTestHub.',
|
46
|
+
type: :boolean, default: true
|
47
|
+
option :diff, type: :boolean, default: false, desc: 'Assume checksums are ' +
|
48
|
+
'up to date and perform diff', aliases: '-d'
|
49
|
+
option :svn, desc: 'Use svn to gather log/version data. Safe to use when ' +
|
50
|
+
'also using --no-submit; else may give bad version numbers.',
|
51
|
+
type: :boolean, default: true
|
52
|
+
option :set_sdk, desc: 'Override user- and test-generated data to deterine' +
|
53
|
+
' if the SDK is used and instead use value of --using_sdk.',
|
54
|
+
type: :boolean, default: false
|
55
|
+
option :using_sdk, desc: 'Assume we are using the SDK and automatically ' +
|
56
|
+
'determine SDK version. Ignored unless using --set-sdk).',
|
57
|
+
type: :boolean, default: true
|
58
|
+
option :module, desc: 'Which module to test and/or submit, if applicable.',
|
59
|
+
type: :string, default: 'all', aliases: '-m'
|
60
|
+
option :log, type: :boolean, default: true, desc: 'Save yml file of test ' \
|
61
|
+
'results in test case directory.'
|
60
62
|
def test_one(mesa_dir, test_case_name)
|
61
63
|
s = create_and_check_submitter(force: options[:force]) if options[:submit]
|
62
64
|
m = create_and_check_mesa(mesa_dir: mesa_dir, diff: options[:diff],
|
63
|
-
mod: options[:module].downcase.to_sym
|
65
|
+
mod: options[:module].downcase.to_sym,
|
66
|
+
use_svn: options[:svn], using_sdk: using_sdk?(s))
|
64
67
|
t = create_and_check_test_case(mesa: m, test_case_name: test_case_name,
|
65
68
|
mod: options[:module].downcase.to_sym)
|
66
69
|
|
@@ -80,52 +83,6 @@ class MesaTest < Thor
|
|
80
83
|
puts "Done.\n"
|
81
84
|
end
|
82
85
|
|
83
|
-
desc 'test_all MESA_DIR', 'run, check, and submit all test cases'
|
84
|
-
long_desc <<-LONGDESC
|
85
|
-
Run and check all test cases residing in MESA_DIR/star/test_suite. Then
|
86
|
-
report results to MesaTestHub. Specifically, runs and checks all tests
|
87
|
-
detailed in MESA_DIR/star/test_suite/do1_test_source.
|
88
|
-
|
89
|
-
With --diff option, assume the checksums are up-to-date (behave like
|
90
|
-
each_test_run_and_diff), off by default.
|
91
|
-
|
92
|
-
With --force option, skip confirmation of computer details, assuming values
|
93
|
-
in ~/.mesa_test.yml are correct. Only relevant if --submit option is on
|
94
|
-
(by default it is).
|
95
|
-
|
96
|
-
With --module option, select which module to search through, with the default
|
97
|
-
being "all" (search all modules in order). Example: --module=star.
|
98
|
-
|
99
|
-
With --log option, save yml file of test results in test directory and a
|
100
|
-
summary in the test suite directory. On by default. Shut off with --no-log.
|
101
|
-
|
102
|
-
With --submit option, upload results to MESATestHub. By default, this is on.
|
103
|
-
To run without submission, use --no-submit.
|
104
|
-
|
105
|
-
With --svn option, confirm version number with svn rather than trusting
|
106
|
-
self-reported version number. By default, this is on. To run without using
|
107
|
-
svn, use --no-svn.
|
108
|
-
LONGDESC
|
109
|
-
option :diff, type: :boolean, default: false
|
110
|
-
option :force, type: :boolean, aliases: '-f'
|
111
|
-
option :log, type: :boolean, default: true
|
112
|
-
option :module, type: :string, default: :all
|
113
|
-
option :submit, type: :boolean, default: true
|
114
|
-
option :svn, type: :boolean, default: true
|
115
|
-
def test_all(mesa_dir)
|
116
|
-
s = create_and_check_submitter(force: options[:force]) if options[:submit]
|
117
|
-
m = create_and_check_mesa(mesa_dir: mesa_dir, diff: options[:diff],
|
118
|
-
mod: options[:module].downcase.to_sym,
|
119
|
-
use_svn: options[:svn])
|
120
|
-
|
121
|
-
# run all tests
|
122
|
-
m.each_test_run_and_diff(log_results: options[:log],
|
123
|
-
mod: options[:module].downcase.to_sym)
|
124
|
-
|
125
|
-
# submit all tests
|
126
|
-
s.submit_all(m, options[:module].downcase.to_sym) if options[:submit]
|
127
|
-
end
|
128
|
-
|
129
86
|
desc 'test_revision MESA_DIR', 'test and submit all tests as a packaged version'
|
130
87
|
long_desc <<-LONGDESC
|
131
88
|
Run and check all test cases residing in MESA_DIR/star/test_suite. Then
|
@@ -133,38 +90,34 @@ class MesaTest < Thor
|
|
133
90
|
detailed in MESA_DIR/star/test_suite/do1_test_source. Also submit version
|
134
91
|
information with test instances. Submits all test instances and version data
|
135
92
|
in a single request rather than case-by-case in `test_all`.
|
136
|
-
|
137
|
-
With --diff option, assume the checksums are up-to-date (behave like
|
138
|
-
each_test_run_and_diff), off by default.
|
139
|
-
|
140
|
-
With --force option, skip confirmation of computer details, assuming values
|
141
|
-
in ~/.mesa_test.yml are correct. Only relevant if --submit option is on
|
142
|
-
(by default it is).
|
143
|
-
|
144
|
-
With --module option, select which module to search through, with the default
|
145
|
-
being "all" (search all modules in order). Example: --module=star.
|
146
|
-
|
147
|
-
With --log option, save yml file of test results in test directory and a
|
148
|
-
summary in the test suite directory. On by default. Shut off with --no-log.
|
149
|
-
|
150
|
-
With --submit option, upload results to MESATestHub. By default, this is on.
|
151
|
-
To run without submission, use --no-submit.
|
152
|
-
|
153
|
-
With --svn option, get version info (number, author, commit message) from
|
154
|
-
svn. By default, this is on. To shut off, use --no-svn. If off, no author or
|
155
|
-
commit message are saved.
|
156
93
|
LONGDESC
|
157
|
-
|
158
|
-
option :force,
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
option :
|
94
|
+
|
95
|
+
option :force, desc: 'When submitting, assume submission data in ' +
|
96
|
+
'~/.mesa_test.yml are correct rather than checking ' +
|
97
|
+
'with user.', type: :boolean, default: false,
|
98
|
+
aliases: '-f'
|
99
|
+
option :submit, desc: 'Submit results (if any) to MesaTestHub.',
|
100
|
+
type: :boolean, default: true
|
101
|
+
option :diff, type: :boolean, default: false, desc: 'Assume checksums are ' +
|
102
|
+
'up to date and perform diff', aliases: '-d'
|
103
|
+
option :svn, desc: 'Use svn to gather log/version data. Safe to use when ' +
|
104
|
+
'also using --no-submit; else may give bad version numbers.',
|
105
|
+
type: :boolean, default: true
|
106
|
+
option :set_sdk, desc: 'Override user- and test-generated data to deterine' +
|
107
|
+
' if the SDK is used and instead use value of --using_sdk.',
|
108
|
+
type: :boolean, default: false
|
109
|
+
option :using_sdk, desc: 'Assume we are using the SDK and automatically ' +
|
110
|
+
'determine SDK version. Ignored unless using --set-sdk).',
|
111
|
+
type: :boolean, default: true
|
112
|
+
option :module, desc: 'Which module to test and/or submit, if applicable.',
|
113
|
+
type: :string, default: 'all', aliases: '-m'
|
114
|
+
option :log, type: :boolean, default: true, desc: 'Save yml file of test ' \
|
115
|
+
'results in test case directory.'
|
163
116
|
def test_revision(mesa_dir)
|
164
117
|
s = create_and_check_submitter(force: options[:force]) if options[:submit]
|
165
118
|
m = create_and_check_mesa(mesa_dir: mesa_dir, diff: options[:diff],
|
166
119
|
mod: options[:module].downcase.to_sym,
|
167
|
-
use_svn: options[:svn])
|
120
|
+
use_svn: options[:svn], using_sdk: using_sdk?(s))
|
168
121
|
|
169
122
|
# run all tests
|
170
123
|
m.each_test_run_and_diff(log_results: options[:log],
|
@@ -183,19 +136,27 @@ class MesaTest < Thor
|
|
183
136
|
no module is specified). Modules are searched/concatenated in this order:
|
184
137
|
|
185
138
|
#{MesaTestCase.modules.map { |mod| ' ' + mod.to_s }.join(', ')}
|
186
|
-
|
187
|
-
With --force option, skip confirmation of computer details, assuming values
|
188
|
-
in ~/.mesa_test.yml are correct.
|
189
|
-
|
190
|
-
With --module option, select which module to search through, with the default
|
191
|
-
being "all". Example: --module=star.
|
192
139
|
LONGDESC
|
193
|
-
|
194
|
-
option :
|
140
|
+
|
141
|
+
option :force, desc: 'When submitting, assume submission data in ' +
|
142
|
+
'~/.mesa_test.yml are correct rather than checking ' +
|
143
|
+
'with user.', type: :boolean, default: false,
|
144
|
+
aliases: '-f'
|
145
|
+
option :svn, desc: 'Use svn to gather log/version data. NECESSARY TO GET ' +
|
146
|
+
'ACCURATE VERSION NUMBER.', type: :boolean, default: true
|
147
|
+
option :set_sdk, desc: 'Override user- and test-generated data to deterine' +
|
148
|
+
' if the SDK is used and instead use value of --using_sdk.',
|
149
|
+
type: :boolean, default: false
|
150
|
+
option :using_sdk, desc: 'Assume we are using the SDK and automatically ' +
|
151
|
+
'determine SDK version. Ignored unless using --set-sdk).',
|
152
|
+
type: :boolean, default: true
|
153
|
+
option :module, desc: 'Which module to test and/or submit, if applicable.',
|
154
|
+
type: :string, default: 'all', aliases: '-m'
|
195
155
|
def submit_one(mesa_dir, test_case_name)
|
196
156
|
s = create_and_check_submitter(force: options[:force])
|
197
157
|
m = create_and_check_mesa(mesa_dir: mesa_dir,
|
198
|
-
mod: options[:module].downcase.to_sym
|
158
|
+
mod: options[:module].downcase.to_sym,
|
159
|
+
using_sdk: using_sdk?(s), use_svn: options[:svn])
|
199
160
|
t = create_and_check_test_case(mesa: m, test_case_name: test_case_name,
|
200
161
|
mod: options[:module].downcase.to_sym)
|
201
162
|
# load test results
|
@@ -207,38 +168,6 @@ class MesaTest < Thor
|
|
207
168
|
puts "Done.\n"
|
208
169
|
end
|
209
170
|
|
210
|
-
desc 'submit_all MESA_DIR', 'submit all [previously run] test cases'
|
211
|
-
long_desc <<-LONGDESC
|
212
|
-
Load results for all test cases residing in MESA_DIR/star/test_suite. Then
|
213
|
-
submit results to MesaTestHub. Specifically, loads and submits all tests
|
214
|
-
detailed in MESA_DIR/star/test_suite/do1_test_source.
|
215
|
-
|
216
|
-
With --force option, skip confirmation of computer details, assuming values
|
217
|
-
in ~/.mesa_test.yml are correct.
|
218
|
-
|
219
|
-
With --module option, select which module to search through, with the default
|
220
|
-
being "all" (search all modules in order). Example: --module=star.
|
221
|
-
|
222
|
-
With --svn option, confirm version number with svn rather than trusting
|
223
|
-
self-reported version number. By default, this is on. To run without using
|
224
|
-
svn, use --no-svn.
|
225
|
-
LONGDESC
|
226
|
-
option :force, type: :boolean, aliases: '-f'
|
227
|
-
option :module, type: :string, aliases: '-m', default: 'all'
|
228
|
-
option :svn, type: :boolean, default: true
|
229
|
-
def submit_all(mesa_dir)
|
230
|
-
s = create_and_check_submitter(force: options[:force])
|
231
|
-
m = create_and_check_mesa(mesa_dir: mesa_dir,
|
232
|
-
mod: options[:module].downcase.to_sym,
|
233
|
-
use_svn: options[:svn])
|
234
|
-
|
235
|
-
# load all test data
|
236
|
-
m.each_test_load_results(mod: options[:module].downcase.to_sym)
|
237
|
-
|
238
|
-
# submit all tests
|
239
|
-
s.submit_all(m, options[:module].downcase.to_sym)
|
240
|
-
end
|
241
|
-
|
242
171
|
desc 'submit_revision MESA_DIR', 'submit version with pre-run test cases'
|
243
172
|
long_desc <<-LONGDESC
|
244
173
|
Load results for all test cases residing in MESA_DIR/star/test_suite. Then
|
@@ -247,31 +176,38 @@ class MesaTest < Thor
|
|
247
176
|
(number, author, and commit message). Unlike submit_all, this submits all
|
248
177
|
test cases AND version info in a single request rather than just the cases
|
249
178
|
in series.
|
250
|
-
|
251
|
-
With --force option, skip confirmation of computer details, assuming values
|
252
|
-
in ~/.mesa_test.yml are correct.
|
253
|
-
|
254
|
-
With --module option, select which module to search through, with the default
|
255
|
-
being "all" (search all modules in order). Example: --module=star.
|
256
|
-
|
257
|
-
With --svn option, get version info (number, author, commit message) from
|
258
|
-
svn. By default, this is on. To shut off, use --no-svn. If off, no author or
|
259
|
-
commit message are submitted.
|
260
179
|
LONGDESC
|
261
|
-
option :force,
|
262
|
-
|
263
|
-
|
180
|
+
option :force, desc: 'When submitting, assume submission data in ' +
|
181
|
+
'~/.mesa_test.yml are correct rather than checking ' +
|
182
|
+
'with user.', type: :boolean, default: false,
|
183
|
+
aliases: '-f'
|
184
|
+
option :module, desc: 'Which module to test and/or submit, if applicable.',
|
185
|
+
type: :string, default: 'all', aliases: '-m'
|
186
|
+
option :svn, desc: 'Use svn to gather log/version data. NECESSARY TO GET ' +
|
187
|
+
'ACCURATE VERSION NUMBER.', type: :boolean, default: true
|
188
|
+
option :set_sdk, desc: 'Override user- and test-generated data to deterine' +
|
189
|
+
' if the SDK is used and instead use value of --using_sdk.',
|
190
|
+
type: :boolean, default: false
|
191
|
+
option :using_sdk, desc: 'Assume we are using the SDK and automatically ' +
|
192
|
+
'determine SDK version. Ignored unless using --set-sdk).',
|
193
|
+
type: :boolean, default: true
|
264
194
|
def submit_revision(mesa_dir)
|
265
195
|
s = create_and_check_submitter(force: options[:force])
|
266
196
|
m = create_and_check_mesa(mesa_dir: mesa_dir,
|
267
197
|
mod: options[:module].downcase.to_sym,
|
268
|
-
use_svn: options[:svn])
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
198
|
+
use_svn: options[:svn], using_sdk: using_sdk?(s))
|
199
|
+
begin
|
200
|
+
m.check_installation
|
201
|
+
rescue MesaDirError
|
202
|
+
shell.say %q{This MESA installation doesn't seem to be compiled } \
|
203
|
+
'properly. Submitting a compilation failure to MESATestHub.', :red
|
204
|
+
else
|
205
|
+
# load all test data
|
206
|
+
m.each_test_load_results(mod: options[:module].downcase.to_sym)
|
207
|
+
ensure
|
208
|
+
# submit all tests
|
209
|
+
s.submit_revision(m)
|
210
|
+
end
|
275
211
|
end
|
276
212
|
|
277
213
|
|
@@ -289,76 +225,6 @@ class MesaTest < Thor
|
|
289
225
|
m.install
|
290
226
|
end
|
291
227
|
|
292
|
-
desc 'install_and_test_all VERSION_NUMBER MESA_DIR', 'download and install '\
|
293
|
-
'mesa release VERSION_NUMBER to directory MESA_DIR and run/submit all tests'
|
294
|
-
long_desc <<-LONGDESC
|
295
|
-
Calls to svn to install mesa release VERSION_NUMBER into the directory
|
296
|
-
MESA_DIR. Basically just an svn checkout followed by going into the directory
|
297
|
-
and running ./clean and ./install. SDK or compilers must be set up prior.
|
298
|
-
Once installation is complete, run the test suite, and report results to
|
299
|
-
MesaTestHub. Does not affect the user's MESA_DIR or other environment
|
300
|
-
variables. This is basically a shortcut for running
|
301
|
-
|
302
|
-
`mesa_test install SOME_VERSION SOME_DIR`
|
303
|
-
|
304
|
-
followed by
|
305
|
-
|
306
|
-
`mesa_test test_all SOME_DIR`
|
307
|
-
|
308
|
-
If VERSION_NUMBER is 'non-paxton' or 'non_paxton', then the most recent
|
309
|
-
commit by anyone other than Bill Paxton ('bill_paxton') is tested and the
|
310
|
-
--diff flag is ignored and set to false. Note that using 'HEAD' for version
|
311
|
-
number will automatically select the most recent release, regardless of the
|
312
|
-
author.
|
313
|
-
|
314
|
-
With --diff option, assume the checksums are up-to-date (behave like
|
315
|
-
each_test_run_and_diff), off by default.
|
316
|
-
|
317
|
-
Use flag --destroy to self destruct MESA_DIR after successful test
|
318
|
-
submission. Essentially does rm -rf MESA_DIR after the test suite. Useful
|
319
|
-
for automated testing without piling up disk space.
|
320
|
-
|
321
|
-
Use flag --force to skip confirmation of computer details if they can be
|
322
|
-
read from ~/.mesa_test.yml.
|
323
|
-
|
324
|
-
With --log option, save yml file of test results in test directory and a
|
325
|
-
summary in the test suite directory. On by default. Shut off with --no-log.
|
326
|
-
|
327
|
-
With --module option, select which module to search through, with the default
|
328
|
-
being "all". Example: --module=star.
|
329
|
-
LONGDESC
|
330
|
-
option :diff, type: :boolean, default: false
|
331
|
-
option :destroy, type: :boolean
|
332
|
-
option :log, type: :boolean, default: true
|
333
|
-
option :force, type: :boolean, aliases: '-f'
|
334
|
-
option :module, type: :string, aliases: '-m', default: 'all'
|
335
|
-
def install_and_test_all(version, mesa_dir)
|
336
|
-
s = create_and_check_submitter(force: options[:force])
|
337
|
-
mesa_version, diff = filter_version_and_diff(version, s)
|
338
|
-
if mesa_version.nil?
|
339
|
-
puts 'No commits by anyone other than Bill Paxton since '\
|
340
|
-
"r#{s.last_tested}. Exiting."
|
341
|
-
return
|
342
|
-
end
|
343
|
-
m = Mesa.download(version_number: mesa_version, new_mesa_dir: mesa_dir)
|
344
|
-
m.clean
|
345
|
-
m.install
|
346
|
-
|
347
|
-
m = create_and_check_mesa(mesa_dir: mesa_dir, diff: diff,
|
348
|
-
mod: options[:module].downcase.to_sym)
|
349
|
-
|
350
|
-
# run all tests. Don't be fooled, whether or not a diff happens is set
|
351
|
-
# by the diff attribute of the mesa object, set above.
|
352
|
-
m.each_test_run_and_diff(mod: options[:module].downcase.to_sym,
|
353
|
-
log_results: options[:log])
|
354
|
-
|
355
|
-
# submit all tests
|
356
|
-
successfully_submitted = s.submit_all(m, options[:module].downcase.to_sym)
|
357
|
-
|
358
|
-
# if requested, and if submission successful, destroy the directory
|
359
|
-
m.destroy if successfully_submitted && options[:destroy]
|
360
|
-
end
|
361
|
-
|
362
228
|
desc 'install_and_test_revision VERSION_NUMBER MESA_DIR', 'download and '\
|
363
229
|
'install mesa release VERSION_NUMBER to directory MESA_DIR, run all tests,'\
|
364
230
|
'and submit version and test data in single request.'
|
@@ -383,35 +249,37 @@ class MesaTest < Thor
|
|
383
249
|
--diff flag is ignored and set to false. Note that using 'HEAD' for version
|
384
250
|
number will automatically select the most recent release, regardless of the
|
385
251
|
author.
|
386
|
-
|
387
|
-
With --diff option, assume the checksums are up-to-date (behave like
|
388
|
-
each_test_run_and_diff), off by default.
|
389
|
-
|
390
|
-
Use flag --destroy to self destruct MESA_DIR after successful test
|
391
|
-
submission. Essentially does rm -rf MESA_DIR after the test suite. Useful
|
392
|
-
for automated testing without piling up disk space.
|
393
|
-
|
394
|
-
Use flag --force to skip confirmation of computer details if they can be
|
395
|
-
read from ~/.mesa_test.yml.
|
396
|
-
|
397
|
-
With --log option, save yml file of test results in test directory and a
|
398
|
-
summary in the test suite directory. On by default. Shut off with --no-log.
|
399
|
-
|
400
|
-
With --module option, select which module to search through, with the default
|
401
|
-
being "all". Example: --module=star.
|
402
|
-
|
403
|
-
With --svn option, get version info (number, author, commit message) from
|
404
|
-
svn. By default, this is on. To shut off, use --no-svn. If off, no author or
|
405
|
-
commit message are submitted.
|
406
252
|
LONGDESC
|
407
|
-
|
408
|
-
option :
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
option :
|
253
|
+
|
254
|
+
option :force, desc: 'When submitting, assume submission data in ' +
|
255
|
+
'~/.mesa_test.yml are correct rather than checking ' +
|
256
|
+
'with user.', type: :boolean, default: false,
|
257
|
+
aliases: '-f'
|
258
|
+
option :submit, desc: 'Submit results (if any) to MesaTestHub.',
|
259
|
+
type: :boolean, default: true
|
260
|
+
option :diff, type: :boolean, default: false, desc: 'Assume checksums are ' +
|
261
|
+
'up to date and perform diff', aliases: '-d'
|
262
|
+
option :svn, desc: 'Use svn to gather log/version data. Safe to use when ' +
|
263
|
+
'also using --no-submit; else may give bad version numbers.',
|
264
|
+
type: :boolean, default: true
|
265
|
+
option :set_sdk, desc: 'Override user- and test-generated data to deterine' +
|
266
|
+
' if the SDK is used and instead use value of --using_sdk.',
|
267
|
+
type: :boolean, default: false
|
268
|
+
option :using_sdk, desc: 'Assume we are using the SDK and automatically ' +
|
269
|
+
'determine SDK version. Ignored unless using --set-sdk).',
|
270
|
+
type: :boolean, default: true
|
271
|
+
option :module, desc: 'Which module to test and/or submit, if applicable.',
|
272
|
+
type: :string, default: 'all', aliases: '-m'
|
273
|
+
option :destroy, type: :boolean, desc: 'Delete mesa installation upon ' \
|
274
|
+
'submission of complete results.', default: false
|
275
|
+
option :log, type: :boolean, default: true, desc: 'Save yml file of test ' \
|
276
|
+
'results in test case directory.'
|
277
|
+
# option :force, type: :boolean, aliases: '-f'
|
278
|
+
# option :module, type: :string, aliases: '-m', default: 'all'
|
279
|
+
# option :svn, type: :boolean, default: true
|
413
280
|
def install_and_test_revision(version, mesa_dir)
|
414
|
-
s =
|
281
|
+
s = nil # to make sure using_sdk? below will work properly
|
282
|
+
s = create_and_check_submitter(force: options[:force]) if options[:submit]
|
415
283
|
mesa_version, diff = filter_version_and_diff(version, s)
|
416
284
|
if mesa_version.nil?
|
417
285
|
puts 'No commits by anyone other than Bill Paxton since '\
|
@@ -419,24 +287,33 @@ class MesaTest < Thor
|
|
419
287
|
return
|
420
288
|
end
|
421
289
|
m = Mesa.download(version_number: mesa_version, new_mesa_dir: mesa_dir,
|
422
|
-
use_svn: options[:svn])
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
290
|
+
use_svn: options[:svn], using_sdk: using_sdk?(s))
|
291
|
+
begin
|
292
|
+
m.clean
|
293
|
+
m.install
|
294
|
+
rescue MesaDirError
|
295
|
+
shell.say "\nFailed in compiling MESA r-#{m.version_number}.", :red
|
296
|
+
else
|
297
|
+
check_mesa(m)
|
298
|
+
update_mesa(mesa: m, diff: diff, mod: options[:module].downcase.to_sym)
|
299
|
+
|
300
|
+
# m = create_and_check_mesa(mesa_dir: mesa_dir, diff: diff,
|
301
|
+
# mod: options[:module].downcase.to_sym,
|
302
|
+
# use_svn: options[:svn])
|
303
|
+
|
304
|
+
# run all tests. Don't be fooled, whether or not a diff happens is set
|
305
|
+
# by the diff attribute of the mesa object, set above.
|
306
|
+
m.each_test_run_and_diff(mod: options[:module].downcase.to_sym,
|
307
|
+
log_results: options[:log])
|
308
|
+
ensure
|
309
|
+
# submit all version and test data
|
310
|
+
successfully_submitted = false
|
311
|
+
successfully_submitted = s.submit_revision(m) if options[:submit]
|
312
|
+
|
313
|
+
# if requested, installation and submission are successful, destroy the
|
314
|
+
# directory
|
315
|
+
m.destroy if successfully_submitted && options[:destroy] && m.installed?
|
316
|
+
end
|
440
317
|
end
|
441
318
|
|
442
319
|
private
|
@@ -464,17 +341,25 @@ class MesaTest < Thor
|
|
464
341
|
s
|
465
342
|
end
|
466
343
|
|
467
|
-
def create_and_check_mesa(mesa_dir:, diff: true, mod: :all,
|
468
|
-
|
469
|
-
|
344
|
+
def create_and_check_mesa(mesa_dir:, use_svn: true, diff: true, mod: :all,
|
345
|
+
using_sdk: true)
|
346
|
+
m = Mesa.new(mesa_dir: mesa_dir, use_svn: use_svn, using_sdk: using_sdk)
|
347
|
+
check_mesa(m)
|
348
|
+
update_mesa(mesa: m, diff: diff, mod: mod)
|
349
|
+
m
|
350
|
+
end
|
351
|
+
|
352
|
+
def check_mesa(mesa)
|
353
|
+
unless mesa.downloaded?
|
470
354
|
raise MesaDirError, "Invalid MESA_DIR: #{mesa_dir}. Please download " \
|
471
355
|
'and install a valid MESA version or provide the path to one.'
|
472
356
|
end
|
473
|
-
|
357
|
+
end
|
474
358
|
|
359
|
+
def update_mesa(mesa:, diff: true, mod: :all)
|
360
|
+
mesa.load_test_source_data(mod: mod)
|
475
361
|
# choose whether to update checksums
|
476
|
-
|
477
|
-
m
|
362
|
+
mesa.update_checksums = !diff
|
478
363
|
end
|
479
364
|
|
480
365
|
def create_and_check_test_case(mesa:, test_case_name:, mod: :all)
|
@@ -486,7 +371,7 @@ class MesaTest < Thor
|
|
486
371
|
# this should care about the value in `mod`. Current behavior is only
|
487
372
|
# appropriate if `mod` is :all.
|
488
373
|
msg << MesaTestCase.modules.map do |this_mod|
|
489
|
-
File.join(
|
374
|
+
File.join(mesa.test_suite_dir(mod: this_mod), 'do1_test_source')
|
490
375
|
end.join(' or ')
|
491
376
|
msg << '.'
|
492
377
|
raise TestCaseDirError, msg
|
@@ -499,6 +384,36 @@ class MesaTest < Thor
|
|
499
384
|
[version, options[:diff]]
|
500
385
|
end
|
501
386
|
end
|
387
|
+
|
388
|
+
# determine whether or not we can assume the test should be / was run with
|
389
|
+
# the SDK. This results should only be relevant if a test is GOING TO BE RUN.
|
390
|
+
# If it has already been run, then the compiler and compiler version have
|
391
|
+
# already been set (or the opportunity was lost, either way this won't help.)
|
392
|
+
#
|
393
|
+
# This gets used in a lot of places where it probably isn't necessary, just
|
394
|
+
# to prevent problems later on if things change, as it does no harm when it
|
395
|
+
# doesn't help.
|
396
|
+
#
|
397
|
+
# The only parameter is a submitter, if there is one to lean on. If there
|
398
|
+
# isn't, it's no problem.
|
399
|
+
def using_sdk?(s = nil)
|
400
|
+
# did user specify so? Trust them
|
401
|
+
if options[:set_sdk]
|
402
|
+
options[:using_sdk]
|
403
|
+
# are we submitting? scrape compiler info from that
|
404
|
+
elsif s
|
405
|
+
s.compiler == 'SDK'
|
406
|
+
# we don't have a submitter... need to read config file (same thing
|
407
|
+
# submitter is doing)
|
408
|
+
elsif File.exist?(File.join(ENV['HOME'], '.mesa_test.yml'))
|
409
|
+
data = YAML.load(File.read(File.join(ENV['HOME'], '.mesa_test.yml')))
|
410
|
+
data['compiler'] == 'SDK'
|
411
|
+
# nothing works. Don't tell mesa that we are using SDK (we could still be
|
412
|
+
# using it, but it's up to a future submitter to tell the web site so.)
|
413
|
+
else
|
414
|
+
false
|
415
|
+
end
|
416
|
+
end
|
502
417
|
end
|
503
418
|
|
504
419
|
# actually start the CLI
|
data/lib/mesa_test.rb
CHANGED
@@ -231,6 +231,8 @@ e-mail and password will be stored in plain text.'
|
|
231
231
|
end
|
232
232
|
|
233
233
|
# create and return hash of parameters for a TestInstance submission
|
234
|
+
# Note: prefer test case's self-reported compiler and compiler version over
|
235
|
+
# user reported
|
234
236
|
def submit_params(test_case)
|
235
237
|
res = {
|
236
238
|
test_case: test_case.test_name,
|
@@ -241,8 +243,8 @@ e-mail and password will be stored in plain text.'
|
|
241
243
|
runtime_seconds: test_case.runtime_seconds,
|
242
244
|
mesa_version: test_case.mesa_version,
|
243
245
|
passed: test_case.passed? ? 1 : 0,
|
244
|
-
compiler: compiler,
|
245
|
-
compiler_version: compiler_version,
|
246
|
+
compiler: test_case.compiler || compiler,
|
247
|
+
compiler_version: test_case.compiler_version || compiler_version,
|
246
248
|
platform_version: platform_version,
|
247
249
|
omp_num_threads: test_case.test_omp_num_threads,
|
248
250
|
success_type: test_case.success_type,
|
@@ -268,7 +270,7 @@ e-mail and password will be stored in plain text.'
|
|
268
270
|
# user gives data about the user and computer submitting information
|
269
271
|
# instances is array of hashes that identify test instances (more below)
|
270
272
|
res = {
|
271
|
-
version: {number: mesa.version_number},
|
273
|
+
version: {number: mesa.version_number, compiled: mesa.installed?},
|
272
274
|
user: {email: email, password: password, computer: computer_name},
|
273
275
|
instances: []
|
274
276
|
}
|
@@ -277,6 +279,11 @@ e-mail and password will be stored in plain text.'
|
|
277
279
|
res[:version][:log] = mesa.svn_log
|
278
280
|
end
|
279
281
|
|
282
|
+
# bail out if installation failed (and we care)
|
283
|
+
return [res, []] unless res[:version][:compiled]
|
284
|
+
|
285
|
+
# Successfully compiled, now gather test instance data.
|
286
|
+
|
280
287
|
# hold on to test case names that fail in synthesizing params
|
281
288
|
has_errors = []
|
282
289
|
|
@@ -380,7 +387,7 @@ e-mail and password will be stored in plain text.'
|
|
380
387
|
unsubmitted_cases << test_name
|
381
388
|
end
|
382
389
|
end
|
383
|
-
puts "\
|
390
|
+
puts "\nSubmission results for #{mod} module:"
|
384
391
|
puts '#####################################'
|
385
392
|
if !submitted_cases.empty?
|
386
393
|
shell.say 'Submitted the following cases:', :green
|
@@ -418,7 +425,7 @@ e-mail and password will be stored in plain text.'
|
|
418
425
|
initheader = { 'Content-Type' => 'application/json' }
|
419
426
|
)
|
420
427
|
request_data, error_cases = revision_submit_params(mesa)
|
421
|
-
if request_data[:instances].empty?
|
428
|
+
if request_data[:instances].empty? && mesa.installed?
|
422
429
|
shell.say "No completed test data found in #{mesa.mesa_dir}. Aborting.",
|
423
430
|
:red
|
424
431
|
return false
|
@@ -439,8 +446,13 @@ e-mail and password will be stored in plain text.'
|
|
439
446
|
shell.say "\nFailed to gather data for the following cases:", :red
|
440
447
|
error_cases.each { |tc| shell.say " #{tc.test_name}", :red }
|
441
448
|
false
|
449
|
+
else
|
450
|
+
shell.say "\nSuccessfully submitted revision #{mesa.version_number}.", :green
|
451
|
+
@last_tested = mesa.version_number
|
452
|
+
shell.say "\n\nUpdating last tested revision to #{last_tested}."
|
453
|
+
save_computer_data
|
454
|
+
true
|
442
455
|
end
|
443
|
-
true
|
444
456
|
end
|
445
457
|
end
|
446
458
|
|
@@ -448,7 +460,7 @@ class Mesa
|
|
448
460
|
SVN_URI = 'svn://svn.code.sf.net/p/mesa/code/trunk'.freeze
|
449
461
|
|
450
462
|
attr_reader :mesa_dir, :test_data, :test_names, :test_cases, :shell,
|
451
|
-
:svn_version, :svn_author, :svn_log
|
463
|
+
:svn_version, :svn_author, :svn_log, :using_sdk
|
452
464
|
attr_accessor :update_checksums
|
453
465
|
|
454
466
|
def self.download(version_number: nil, new_mesa_dir: nil, use_svn: true)
|
@@ -458,8 +470,9 @@ class Mesa
|
|
458
470
|
"svn://svn.code.sf.net/p/mesa/code/trunk #{new_mesa_dir}"
|
459
471
|
)
|
460
472
|
unless success
|
461
|
-
raise MesaDirError, 'Encountered a problem in
|
462
|
-
"revision #{version_number}."
|
473
|
+
raise MesaDirError, 'Encountered a problem in downloading mesa ' \
|
474
|
+
"revision #{version_number}. Perhaps svn isn't " \
|
475
|
+
'working properly?'
|
463
476
|
end
|
464
477
|
Mesa.new(mesa_dir: new_mesa_dir, use_svn: use_svn)
|
465
478
|
end
|
@@ -510,11 +523,12 @@ class Mesa
|
|
510
523
|
nil
|
511
524
|
end
|
512
525
|
|
513
|
-
def initialize(mesa_dir: ENV['MESA_DIR'], use_svn: true)
|
526
|
+
def initialize(mesa_dir: ENV['MESA_DIR'], use_svn: true, using_sdk: false)
|
514
527
|
# absolute_path ensures that it doesn't matter where commands are executed
|
515
528
|
# from
|
516
529
|
@mesa_dir = File.absolute_path(mesa_dir)
|
517
530
|
@use_svn = use_svn
|
531
|
+
@using_sdk = using_sdk
|
518
532
|
@update_checksums = false
|
519
533
|
|
520
534
|
# these get populated by calling #load_test_data
|
@@ -544,7 +558,7 @@ class Mesa
|
|
544
558
|
end
|
545
559
|
|
546
560
|
def log_entry
|
547
|
-
`svn log #{
|
561
|
+
`svn log #{mesa_dir} -r #{version_number}`
|
548
562
|
end
|
549
563
|
|
550
564
|
def load_svn_data
|
@@ -559,7 +573,9 @@ class Mesa
|
|
559
573
|
|
560
574
|
# get version number from svn (preferred method)
|
561
575
|
def svn_version_number
|
562
|
-
|
576
|
+
# match output of svn info to a line with the revision, capturing the
|
577
|
+
# number, and defaulting to 0 if none is found.
|
578
|
+
return (/Revision\:\s+(\d+)/.match(`svn info #{mesa_dir}`)[1] || 0).to_i
|
563
579
|
rescue Errno::ENOENT
|
564
580
|
return 0
|
565
581
|
end
|
@@ -594,9 +610,19 @@ class Mesa
|
|
594
610
|
bash_execute('./install')
|
595
611
|
end
|
596
612
|
end
|
613
|
+
# this should never happen if visit_and_check works properly.
|
614
|
+
check_installation
|
597
615
|
self
|
598
616
|
end
|
599
617
|
|
618
|
+
# throw an error unless it seems like it's properly compiled
|
619
|
+
def check_installation
|
620
|
+
unless installed?
|
621
|
+
raise MesaDirError, 'Installation check failed (no .mod files found ' \
|
622
|
+
'in the last compiled module).'
|
623
|
+
end
|
624
|
+
end
|
625
|
+
|
600
626
|
def destroy
|
601
627
|
FileUtils.rm_rf mesa_dir
|
602
628
|
end
|
@@ -694,6 +720,7 @@ class Mesa
|
|
694
720
|
end
|
695
721
|
|
696
722
|
def each_test_run_and_diff(mod: :all, log_results: false)
|
723
|
+
check_installation
|
697
724
|
each_test_clean(mod: mod)
|
698
725
|
|
699
726
|
if mod == :all
|
@@ -721,10 +748,29 @@ class Mesa
|
|
721
748
|
end
|
722
749
|
end
|
723
750
|
|
724
|
-
def
|
751
|
+
def downloaded?
|
725
752
|
check_mesa_dir
|
726
753
|
end
|
727
754
|
|
755
|
+
def installed?
|
756
|
+
# look for output files in the last-installed module
|
757
|
+
# this isn't perfect, but it's a pretty good indicator of completing
|
758
|
+
# installation
|
759
|
+
install_file = File.join(mesa_dir, 'install')
|
760
|
+
# match last line of things like "do_one SOME_MODULE" or "do_one_parallel
|
761
|
+
# SOME_MODULE", after which the "SOME_MODULE" will be stored in $1
|
762
|
+
# that is the last module to be compiled by ./install.
|
763
|
+
IO.readlines(install_file).select do |line|
|
764
|
+
line =~ /^\s*do_one\w*\s+\w+/
|
765
|
+
end.last =~ /^\s*do_one\w*\s+(\w+)/
|
766
|
+
# module is "installed" if there is a nonzero number of files in the
|
767
|
+
# module's make directory of the form SOMETHING.mod
|
768
|
+
!Dir.entries(File.join(mesa_dir, $1, 'make')).select do |file|
|
769
|
+
File.extname(file) == '.mod'
|
770
|
+
end.empty?
|
771
|
+
end
|
772
|
+
|
773
|
+
|
728
774
|
private
|
729
775
|
|
730
776
|
# verify that mesa_dir is valid by checking for version number and test_suite
|
@@ -847,7 +893,8 @@ class MesaTestCase
|
|
847
893
|
attr_reader :test_name, :mesa_dir, :mesa, :success_string, :final_model,
|
848
894
|
:failure_msg, :success_msg, :photo, :runtime_seconds,
|
849
895
|
:test_omp_num_threads, :mesa_version, :shell, :mod, :retries,
|
850
|
-
:backups, :steps, :runtime_minutes, :summary_text
|
896
|
+
:backups, :steps, :runtime_minutes, :summary_text, :compiler,
|
897
|
+
:compiler_version
|
851
898
|
attr_accessor :data_names, :data_types, :failure_type, :success_type,
|
852
899
|
:outcome
|
853
900
|
|
@@ -874,13 +921,19 @@ class MesaTestCase
|
|
874
921
|
@backups = 0
|
875
922
|
@steps = 0
|
876
923
|
@summary_text = ''
|
924
|
+
|
925
|
+
# this overrides the submitters choice if it is non-nil
|
926
|
+
@compiler = mesa.using_sdk ? 'SDK' : nil
|
927
|
+
# only relevant if @compiler is SDK. Gets set during do_one
|
928
|
+
@compiler_version = nil
|
929
|
+
|
877
930
|
unless MesaTestCase.modules.include? mod
|
878
931
|
raise TestCaseDirError, "Invalid module: #{mod}. Must be one of: " +
|
879
932
|
MesaTestCase.modules.join(', ')
|
880
933
|
end
|
881
934
|
@mod = mod
|
882
935
|
@failure_msg = {
|
883
|
-
run_test_string: "#{test_name} failed: does not match test string",
|
936
|
+
run_test_string: "#{test_name} run failed: does not match test string",
|
884
937
|
run_checksum: "#{test_name} run failed: checksum for #{final_model} " \
|
885
938
|
'does not match after ./rn',
|
886
939
|
run_diff: "#{test_name} run failed: diff #{final_model} " \
|
@@ -889,7 +942,9 @@ class MesaTestCase
|
|
889
942
|
photo_checksum: "#{test_name} restart failed: checksum for " \
|
890
943
|
"#{final_model} does not match after ./re",
|
891
944
|
photo_diff: "#{test_name} restart failed: diff #{final_model} " \
|
892
|
-
'final_check.mod after ./re'
|
945
|
+
'final_check.mod after ./re',
|
946
|
+
compilation: "#{test_name} compilation failed"
|
947
|
+
|
893
948
|
}
|
894
949
|
@success_msg = {
|
895
950
|
run_test_string: "#{test_name} run: found test string: " \
|
@@ -987,6 +1042,14 @@ class MesaTestCase
|
|
987
1042
|
# based on $MESA_DIR/star/test_suite/each_test_run_and_diff, revision 10000
|
988
1043
|
def do_one
|
989
1044
|
@test_omp_num_threads = omp_num_threads
|
1045
|
+
if mesa.using_sdk
|
1046
|
+
version_bin = File.join(ENV['MESASDK_ROOT'], 'bin', 'mesasdk_version.sh')
|
1047
|
+
# can't use bash_execute because the return value of bash_execute is the
|
1048
|
+
# exit status of the commmand (true or false), whereas backticks give the
|
1049
|
+
# output (the version string) as the output
|
1050
|
+
@compiler_version = `bash -c #{version_bin}`.strip
|
1051
|
+
shell.say("Using version #{@compiler_version} of the SDK.", :blue)
|
1052
|
+
end
|
990
1053
|
in_dir do
|
991
1054
|
FileUtils.touch '.running'
|
992
1055
|
shell.say("building and running #{test_name}", :blue)
|
@@ -1017,6 +1080,10 @@ class MesaTestCase
|
|
1017
1080
|
'steps' => steps,
|
1018
1081
|
'summary_text' => summary_text
|
1019
1082
|
}
|
1083
|
+
if compiler == 'SDK'
|
1084
|
+
res['compiler'] = 'SDK'
|
1085
|
+
res['compiler_version'] = compiler_version
|
1086
|
+
end
|
1020
1087
|
File.open(save_file, 'w') { |f| f.write(YAML.dump(res)) }
|
1021
1088
|
shell.say "Successfully saved results to file #{save_file}.\n", :green
|
1022
1089
|
end
|
@@ -1043,6 +1110,8 @@ class MesaTestCase
|
|
1043
1110
|
@backups = data['backups'] || @backups
|
1044
1111
|
@steps = data['steps'] || @steps
|
1045
1112
|
@summary_text = data['summary_text'] || @summary_text
|
1113
|
+
@compiler = data['compiler'] || @compiler
|
1114
|
+
@compiler_version = data['compiler_version'] || @compiler_version
|
1046
1115
|
|
1047
1116
|
# convert select data to symbols since that is how they are used
|
1048
1117
|
@outcome = @outcome.to_sym if @outcome
|
@@ -1188,8 +1257,8 @@ class MesaTestCase
|
|
1188
1257
|
# if this is false, behave like each_test_run_and_diff. assume
|
1189
1258
|
# the checksum is up-to-date and check it matches after rn and re.
|
1190
1259
|
if @mesa.update_checksums
|
1191
|
-
bash_execute("md5sum \"#{final_model}\" > checks.md5")
|
1192
1260
|
puts "md5sum \"#{final_model}\" > checks.md5"
|
1261
|
+
bash_execute("md5sum \"#{final_model}\" > checks.md5")
|
1193
1262
|
FileUtils.cp final_model, 'final_check.mod'
|
1194
1263
|
|
1195
1264
|
# if there's no photo, we won't check the checksum, so we've succeeded
|
@@ -1243,7 +1312,11 @@ class MesaTestCase
|
|
1243
1312
|
# first clean and make... Should be compatible with any shell since
|
1244
1313
|
# redirection is always wrapped in 'bash -c "{STUFF}"'
|
1245
1314
|
simple_clean
|
1246
|
-
|
1315
|
+
begin
|
1316
|
+
mk
|
1317
|
+
rescue TestCaseDirError
|
1318
|
+
return fail_test(:compilation)
|
1319
|
+
end
|
1247
1320
|
|
1248
1321
|
# remove old final model if it exists
|
1249
1322
|
remove_final_model
|
@@ -1334,7 +1407,7 @@ class MesaTestCase
|
|
1334
1407
|
end
|
1335
1408
|
|
1336
1409
|
def get_summary_text
|
1337
|
-
|
1410
|
+
IO.readlines(out_file).select do |line|
|
1338
1411
|
line =~ /^\s*runtime/
|
1339
1412
|
end.join
|
1340
1413
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mesa_test
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- William Wolf
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-03-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -82,7 +82,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
82
82
|
version: '0'
|
83
83
|
requirements: []
|
84
84
|
rubyforge_project:
|
85
|
-
rubygems_version: 2.6
|
85
|
+
rubygems_version: 2.7.6
|
86
86
|
signing_key:
|
87
87
|
specification_version: 4
|
88
88
|
summary: Command line tool for running and reporting the MESA test suites.
|