mesa_test 0.0.6 → 0.0.7
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/bin/mesa_test +82 -5
- data/lib/mesa_test.rb +106 -87
- metadata +11 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c6bc6d6b90192e1bfd95d973de84b1ad786cbbe6
|
4
|
+
data.tar.gz: e5a9666a5fe7fd43f075e0b997f8d8896c202061
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6aa98742c529c1ac14b2565083da3598f7a91173300a3b08b9e621ea0ef32f6dfc4918227dc5e25feeadfaaf8dc0b0b15180f99ccfa22592324731902a65869e
|
7
|
+
data.tar.gz: 7658a4c416bf42afb70ca55d70ed97b53d3379eec2557b6e9edd216ff99296e712ae21fe10014b8053debb9545e4d1a9c8f154aa063119b0e30e103e58ce7e7b
|
data/bin/mesa_test
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
#! /usr/bin/env ruby
|
2
2
|
|
3
|
-
require_relative '../lib/mesa_test'
|
3
|
+
# require_relative '../lib/mesa_test'
|
4
|
+
require 'mesa_test'
|
4
5
|
require 'thor'
|
5
6
|
|
6
7
|
class MesaTest < Thor
|
7
|
-
|
8
8
|
desc "setup [CONFIG_FILE]", "Setup MesaTestHub config file."
|
9
9
|
long_desc <<-LONGDESC
|
10
10
|
If optional CONFIG_FILE is provided, search for that file and load it
|
@@ -16,8 +16,6 @@ class MesaTest < Thor
|
|
16
16
|
MesaTestSubmitter.new_from_config(config_file: config_file).setup
|
17
17
|
end
|
18
18
|
|
19
|
-
|
20
|
-
|
21
19
|
desc "test_one MESA_DIR TEST_CASE", "run, check, and submit one test case"
|
22
20
|
long_desc <<-LONGDESC
|
23
21
|
Run and check TEST_CASE, which resides in MESA_DIR/star/test_suite. Then
|
@@ -36,7 +34,6 @@ class MesaTest < Thor
|
|
36
34
|
option :log, type: :boolean, default: true
|
37
35
|
option :submit, type: :boolean, default: true
|
38
36
|
def test_one(mesa_dir, test_case_name)
|
39
|
-
|
40
37
|
if options[:submit]
|
41
38
|
s = MesaTestSubmitter.new_from_config
|
42
39
|
unless options[:force]
|
@@ -132,6 +129,86 @@ class MesaTest < Thor
|
|
132
129
|
s.submit_all(m) if options[:submit]
|
133
130
|
end
|
134
131
|
|
132
|
+
desc 'submit_one MESA_DIR TEST_CASE', 'submit one completed test case'
|
133
|
+
long_desc <<-LONGDESC
|
134
|
+
Load complete test case data from existing YAML file and submit to MESA
|
135
|
+
|
136
|
+
With --force option, skip confirmation of computer details, assuming values
|
137
|
+
in ~/.mesa_test.yml are correct.
|
138
|
+
LONGDESC
|
139
|
+
option :force, type: :boolean
|
140
|
+
def submit_one(mesa_dir, test_case_name)
|
141
|
+
s = MesaTestSubmitter.new_from_config
|
142
|
+
unless options[:force]
|
143
|
+
s.setup unless s.confirm_computer_data
|
144
|
+
end
|
145
|
+
|
146
|
+
check_user_and_computer s
|
147
|
+
|
148
|
+
# set up and check mesa directory (doesn't really check to see if it's
|
149
|
+
# installed, just to see if it has a version number and a test suite
|
150
|
+
# directory)
|
151
|
+
m = Mesa.new mesa_dir: mesa_dir
|
152
|
+
unless m.installed?
|
153
|
+
raise MesaDirError, "Invalid MESA_DIR: #{mesa_dir}. Please download " \
|
154
|
+
'and install a valid MESA version or provide the path to one.'
|
155
|
+
end
|
156
|
+
m.load_test_source_data
|
157
|
+
|
158
|
+
# make sure the test case is valid
|
159
|
+
t = m.find_test_case test_case_name: test_case_name
|
160
|
+
if t.nil?
|
161
|
+
msg = "No such test case, #{test_case_name} found in any of "
|
162
|
+
msg << MesaTestCase.modules.map do |mod|
|
163
|
+
File.join(m.test_suite_dir(mod: mod), 'do1_test_source')
|
164
|
+
end.join(' or ')
|
165
|
+
msg << '.'
|
166
|
+
raise TestCaseDirError, msg
|
167
|
+
end
|
168
|
+
|
169
|
+
# load test results
|
170
|
+
t.load_results
|
171
|
+
|
172
|
+
# submit results
|
173
|
+
print 'Submitting results to ' + s.base_uri + '... '
|
174
|
+
s.submit(t)
|
175
|
+
puts "Done.\n"
|
176
|
+
end
|
177
|
+
|
178
|
+
desc 'submit_all MESA_DIR', 'submit all [previously run] test cases'
|
179
|
+
long_desc <<-LONGDESC
|
180
|
+
Load results for all test cases residing in MESA_DIR/star/test_suite. Then
|
181
|
+
submit results to MesaTestHub. Specifically, loads and submits all tests
|
182
|
+
detailed in MESA_DIR/star/test_suite/do1_test_source.
|
183
|
+
|
184
|
+
With --force option, skip confirmation of computer details, assuming values
|
185
|
+
in ~/.mesa_test.yml are correct.
|
186
|
+
LONGDESC
|
187
|
+
option :force, type: :boolean
|
188
|
+
def submit_all(mesa_dir)
|
189
|
+
s = MesaTestSubmitter.new_from_config
|
190
|
+
unless options[:force]
|
191
|
+
s.setup unless s.confirm_computer_data
|
192
|
+
end
|
193
|
+
check_user_and_computer s
|
194
|
+
|
195
|
+
# set up and check mesa directory (doesn't really check to see if it's
|
196
|
+
# installed, just to see if it has a version number and a test suite
|
197
|
+
# directory)
|
198
|
+
m = Mesa.new mesa_dir: mesa_dir
|
199
|
+
unless m.installed?
|
200
|
+
raise MesaDirError, "Invalid MESA_DIR: #{mesa_dir}. Please download " \
|
201
|
+
'and install a valid MESA version or provide the path to one.'
|
202
|
+
end
|
203
|
+
m.load_test_source_data
|
204
|
+
|
205
|
+
# run all tests
|
206
|
+
m.each_test_load_results
|
207
|
+
|
208
|
+
# submit all tests
|
209
|
+
s.submit_all(m)
|
210
|
+
end
|
211
|
+
|
135
212
|
|
136
213
|
desc "install VERSION_NUMBER MESA_DIR", 'download and install mesa release '+
|
137
214
|
'VERSION_NUMBER to directory MESA_DIR'
|
data/lib/mesa_test.rb
CHANGED
@@ -13,12 +13,11 @@ class TestCaseDirError < StandardError; end
|
|
13
13
|
class InvalidDataType < StandardError; end
|
14
14
|
|
15
15
|
class MesaTestSubmitter
|
16
|
-
|
17
16
|
# set up config file for computer
|
18
17
|
def setup
|
19
18
|
update do |s|
|
20
|
-
|
21
|
-
and default data for test case submissions to MESATestHub. You
|
19
|
+
shell.say 'This wizard will guide you through setting up a computer
|
20
|
+
profile and default data for test case submissions to MESATestHub. You
|
22
21
|
will be able to confirm entries at the end. Default/current values are always
|
23
22
|
shown in parentheses at the end of a prompt. Pressing enter will accept the
|
24
23
|
default values.
|
@@ -26,8 +25,7 @@ default values.
|
|
26
25
|
To submit to MESATestHub, a valid computer name, email address, and password
|
27
26
|
are all required. All other data are useful, but optional. Any data
|
28
27
|
transferred to MESATestHub will be encrypted via HTTPS, but be warned that your
|
29
|
-
e-mail and password will be stored in plain text.
|
30
|
-
"
|
28
|
+
e-mail and password will be stored in plain text.'
|
31
29
|
# Get computer name
|
32
30
|
response = shell.ask("What is the name of this computer (required)? "+
|
33
31
|
"(#{s.computer_name}):", color = :blue)
|
@@ -122,13 +120,14 @@ e-mail and password will be stored in plain text.
|
|
122
120
|
@password = password || ''
|
123
121
|
@platform = platform
|
124
122
|
if @platform.nil?
|
125
|
-
@platform =
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
123
|
+
@platform =
|
124
|
+
if OS.osx?
|
125
|
+
'macOS'
|
126
|
+
elsif OS.linux?
|
127
|
+
'Linux'
|
128
|
+
else
|
129
|
+
''
|
130
|
+
end
|
132
131
|
end
|
133
132
|
@platform_version = platform_version || ''
|
134
133
|
@processor = processor || ''
|
@@ -182,7 +181,7 @@ e-mail and password will be stored in plain text.
|
|
182
181
|
# if you try different compilers
|
183
182
|
#
|
184
183
|
# Note this is NOT checked! The server really only uses the test-by-test
|
185
|
-
# quantities (platform version, compiler,
|
184
|
+
# quantities (platform version, compiler, compiler version) and the
|
186
185
|
# computer name. Once the computer is found (by the name) all the other
|
187
186
|
# data is assumed to be fixed. The others... probably shouldn't be here,
|
188
187
|
# but remain so you can confirm that the computer on the web server is the
|
@@ -257,32 +256,33 @@ e-mail and password will be stored in plain text.
|
|
257
256
|
computer_name: computer_name
|
258
257
|
}.to_json
|
259
258
|
|
260
|
-
JSON.
|
259
|
+
JSON.parse(https.request(request).body).to_hash
|
261
260
|
end
|
262
261
|
|
263
262
|
# attempt to post to MesaTestHub with test_case parameters
|
264
263
|
# returns true if the id is in the returned JSON (indicating success)
|
265
264
|
# otherwise returns false (maybe failed in authorization or in finding
|
266
265
|
# computer or test case) No error thrown for failure, though.
|
267
|
-
def submit(test_case, verbose=
|
266
|
+
def submit(test_case, verbose = false)
|
268
267
|
uri = URI.parse(base_uri + '/test_instances/submit.json')
|
269
268
|
https = Net::HTTP.new(uri.hostname, uri.port)
|
270
269
|
https.use_ssl = true if base_uri.include? 'https'
|
271
270
|
|
272
|
-
request = Net::HTTP::Post.new(
|
273
|
-
|
271
|
+
request = Net::HTTP::Post.new(
|
272
|
+
uri,
|
273
|
+
initheader = { 'Content-Type' => 'application/json' }
|
274
|
+
)
|
274
275
|
request.body = submit_params(test_case).to_json
|
275
276
|
|
276
|
-
puts "\n" if verbose
|
277
|
-
puts JSON.
|
277
|
+
# puts "\n" if verbose
|
278
|
+
# puts JSON.parse(request.body).to_hash if verbose
|
278
279
|
|
279
280
|
response = https.request request
|
280
|
-
puts JSON.
|
281
|
-
|
281
|
+
# puts JSON.parse(response.body).to_hash if verbose
|
282
|
+
!response.is_a? Net::HTTPUnprocessableEntity
|
282
283
|
end
|
283
284
|
|
284
285
|
def submit_all(mesa)
|
285
|
-
uri=URI.parse(base_uri + '/test_instances/submit.json')
|
286
286
|
submitted_cases = []
|
287
287
|
unsubmitted_cases = []
|
288
288
|
mesa.test_names.each do |mod, test_names|
|
@@ -317,10 +317,8 @@ e-mail and password will be stored in plain text.
|
|
317
317
|
# return true if all cases were submitted
|
318
318
|
submitted_cases.length == mesa.test_names.length
|
319
319
|
end
|
320
|
-
|
321
320
|
end
|
322
321
|
|
323
|
-
|
324
322
|
class Mesa
|
325
323
|
attr_reader :mesa_dir, :test_data, :test_names, :test_cases, :shell
|
326
324
|
|
@@ -329,7 +327,7 @@ class Mesa
|
|
329
327
|
success = system("svn co -r #{version_number} "+
|
330
328
|
"svn://svn.code.sf.net/p/mesa/code/trunk #{new_mesa_dir}")
|
331
329
|
unless success
|
332
|
-
raise MesaDirError, "Encountered a problem in
|
330
|
+
raise MesaDirError, "Encountered a problem in download mesa " +
|
333
331
|
"revision #{version_number}."
|
334
332
|
end
|
335
333
|
Mesa.new(mesa_dir: new_mesa_dir)
|
@@ -378,7 +376,6 @@ class Mesa
|
|
378
376
|
FileUtils.rm_rf mesa_dir
|
379
377
|
end
|
380
378
|
|
381
|
-
|
382
379
|
## TEST SUITE METHODS
|
383
380
|
|
384
381
|
def check_mod(mod)
|
@@ -452,9 +449,9 @@ class Mesa
|
|
452
449
|
if mod == :all
|
453
450
|
# look through all loaded modules for desired test case name, return
|
454
451
|
# FIRST found (assuming no name duplication across modules)
|
455
|
-
@test_names.each do |
|
456
|
-
if
|
457
|
-
return @test_cases[
|
452
|
+
@test_names.each do |this_mod, mod_names|
|
453
|
+
if mod_names.include? test_case_name
|
454
|
+
return @test_cases[this_mod][test_case_name]
|
458
455
|
end
|
459
456
|
end
|
460
457
|
# didn't find any matches, return nil
|
@@ -484,9 +481,8 @@ class Mesa
|
|
484
481
|
each_test_clean(mod: mod)
|
485
482
|
|
486
483
|
if mod == :all
|
487
|
-
MesaTestCase.modules.each do
|
488
|
-
|
489
|
-
log_results: log_results)
|
484
|
+
MesaTestCase.modules.each do |this_mod|
|
485
|
+
each_test_run_and_diff(mod: this_mod, log_results: log_results)
|
490
486
|
end
|
491
487
|
else
|
492
488
|
test_names[mod].each do |test_name|
|
@@ -497,6 +493,18 @@ class Mesa
|
|
497
493
|
end
|
498
494
|
end
|
499
495
|
|
496
|
+
def each_test_load_results(mod: :all)
|
497
|
+
if mod == :all
|
498
|
+
MesaTestCase.modules.each do |this_mod|
|
499
|
+
each_test_load_results(mod: this_mod)
|
500
|
+
end
|
501
|
+
else
|
502
|
+
test_names[mod].each do |test_name|
|
503
|
+
test_cases[mod][test_name].load_results
|
504
|
+
end
|
505
|
+
end
|
506
|
+
end
|
507
|
+
|
500
508
|
# note that this only changes MESA_DIR for subprocesses launched from ruby
|
501
509
|
# the old value of MESA_DIR will persist after the ruby process ends
|
502
510
|
def set_mesa_dir
|
@@ -547,7 +555,6 @@ class Mesa
|
|
547
555
|
end
|
548
556
|
end
|
549
557
|
|
550
|
-
|
551
558
|
class MesaTestCase
|
552
559
|
attr_reader :test_name, :mesa_dir, :mesa, :success_string, :final_model,
|
553
560
|
:failure_msg, :success_msg, :photo, :runtime_seconds,
|
@@ -631,8 +638,10 @@ class MesaTestCase
|
|
631
638
|
end
|
632
639
|
|
633
640
|
def add_datum(datum_name, datum_type)
|
634
|
-
|
635
|
-
|
641
|
+
unless data_types.include? datum_type.to_sym
|
642
|
+
raise InvalidDataType, "Invalid data type: #{datum_type}. Must be one "\
|
643
|
+
'of ' + data_types.join(', ') + '.'
|
644
|
+
end
|
636
645
|
@data[datum_name] = datum_type
|
637
646
|
@data_names << datum_name
|
638
647
|
end
|
@@ -667,8 +676,8 @@ class MesaTestCase
|
|
667
676
|
FileUtils.rm_f 'binary_history.data'
|
668
677
|
FileUtils.rm_f 'out.txt'
|
669
678
|
if File.directory? File.join('star_history','history_out')
|
670
|
-
shell.say
|
671
|
-
|
679
|
+
shell.say 'Removing all files of the form history_out* from ' \
|
680
|
+
'star_history', :blue
|
672
681
|
FileUtils.rm_f Dir.glob(File.join('star_history', 'history_out', '*'))
|
673
682
|
end
|
674
683
|
if File.directory? File.join('star_profile', 'profiles_out')
|
@@ -686,7 +695,7 @@ class MesaTestCase
|
|
686
695
|
@test_omp_num_threads = omp_num_threads
|
687
696
|
in_dir do
|
688
697
|
FileUtils.touch '.running'
|
689
|
-
shell.say("building and running #{test_name}",
|
698
|
+
shell.say("building and running #{test_name}", :blue)
|
690
699
|
puts ''
|
691
700
|
build_and_run
|
692
701
|
FileUtils.rm '.running'
|
@@ -772,13 +781,13 @@ class MesaTestCase
|
|
772
781
|
def write_failure_message
|
773
782
|
msg = "******************** #{failure_msg[@failure_type]} " +
|
774
783
|
"********************"
|
775
|
-
log_message(msg,
|
784
|
+
log_message(msg, :red)
|
776
785
|
end
|
777
786
|
|
778
787
|
# write success message to log file
|
779
788
|
def write_success_msg(success_type)
|
780
789
|
msg = 'PASS ' + success_msg[success_type]
|
781
|
-
log_message(msg,
|
790
|
+
log_message(msg, :green)
|
782
791
|
end
|
783
792
|
|
784
793
|
# used as return value for run or photo test. Logs failure to text file, and
|
@@ -810,8 +819,8 @@ class MesaTestCase
|
|
810
819
|
# report runtime and clean up
|
811
820
|
run_finish = Time.now
|
812
821
|
@runtime_seconds = (run_finish - run_start).to_i
|
813
|
-
shell.say
|
814
|
-
|
822
|
+
shell.say("Finished with ./rn; runtime = #{@runtime_seconds} seconds.",
|
823
|
+
:blue)
|
815
824
|
append_and_rm_err
|
816
825
|
|
817
826
|
|
@@ -855,7 +864,6 @@ class MesaTestCase
|
|
855
864
|
else
|
856
865
|
return succeed(:run_test_string)
|
857
866
|
end
|
858
|
-
|
859
867
|
end
|
860
868
|
|
861
869
|
# prepare for and do restart, check results, and return pass/fail status
|
@@ -893,88 +901,98 @@ class MesaTestCase
|
|
893
901
|
# assumes we are in the test case directory. Should only be called
|
894
902
|
# in the context of an `in_dir` block.
|
895
903
|
|
896
|
-
|
897
904
|
# first clean and make... worried about shell compatibility since we
|
898
905
|
# aren't forcing bash. Hopefully '>' for redirecting output is pretty
|
899
906
|
# universal
|
907
|
+
simple_clean
|
908
|
+
mk
|
909
|
+
|
910
|
+
# remove old final model if it exists
|
911
|
+
remove_final_model
|
912
|
+
|
913
|
+
# only check restart/photo if we get through run successfully
|
914
|
+
check_restart if check_run
|
915
|
+
end
|
916
|
+
|
917
|
+
# append contents of err.txt to end of out.txt, then delete err.txt
|
918
|
+
def append_and_rm_err(outfile = 'out.txt', errfile = 'err.txt')
|
919
|
+
err_contents = File.read(errfile)
|
920
|
+
display_errors(err_contents)
|
921
|
+
log_errors(err_contents, outfile)
|
922
|
+
FileUtils.rm errfile
|
923
|
+
end
|
924
|
+
|
925
|
+
def display_errors(err_contents)
|
926
|
+
return unless err_contents.strip.empty?
|
927
|
+
shell.say("\nERRORS", :red)
|
928
|
+
puts err_contents
|
929
|
+
shell.say("END OF ERRORS", :red)
|
930
|
+
end
|
931
|
+
|
932
|
+
def log_errors(err_contents, outfile)
|
933
|
+
File.open(outfile, 'a') { |f_out| f_out.write(err_contents) }
|
934
|
+
shell.say("appended to #{outfile})\n", :red)
|
935
|
+
end
|
936
|
+
|
937
|
+
def simple_clean
|
900
938
|
puts './clean'
|
901
939
|
unless system('./clean')
|
902
|
-
raise TestCaseDirError,
|
940
|
+
raise TestCaseDirError, 'Encountered an error when running `clean` in ' +
|
903
941
|
"#{Dir.getwd} for test case #{test_name}."
|
904
942
|
end
|
943
|
+
end
|
905
944
|
|
945
|
+
def mk
|
906
946
|
puts './mk > mk.txt'
|
907
947
|
unless system('./mk > mk.txt')
|
908
|
-
raise TestCaseDirError,
|
948
|
+
raise TestCaseDirError, 'Encountered an error when running `mk` in ' +
|
909
949
|
"#{Dir.getwd} for test case #{test_name}."
|
910
950
|
end
|
911
951
|
FileUtils.rm 'mk.txt'
|
912
|
-
|
913
|
-
# remove final model if it already exists
|
914
|
-
unless final_model.nil?
|
915
|
-
FileUtils.rm final_model if File.exist? final_model
|
916
|
-
end
|
917
|
-
|
918
|
-
if check_run
|
919
|
-
# only check restart/photo if we get through run successfully
|
920
|
-
check_restart
|
921
|
-
end
|
922
952
|
end
|
923
953
|
|
924
|
-
|
925
|
-
|
926
|
-
|
927
|
-
|
928
|
-
|
929
|
-
shell.say "\nERRORS", color = :red
|
930
|
-
puts err_contents
|
931
|
-
shell.say "END OF ERRORS (appended to #{outfile})", color = :red
|
932
|
-
puts ''
|
933
|
-
f_out.write(err_contents)
|
934
|
-
end
|
935
|
-
end
|
936
|
-
FileUtils.rm errfile
|
954
|
+
def remove_final_model
|
955
|
+
# remove final model if it already exists
|
956
|
+
return unless final_model
|
957
|
+
return unless File.exist?(final_model)
|
958
|
+
FileUtils.rm(final_model)
|
937
959
|
end
|
938
|
-
|
939
960
|
end
|
940
961
|
|
941
|
-
|
942
962
|
################################
|
943
963
|
# GENERAL METHODS #
|
944
964
|
################################
|
945
965
|
|
946
|
-
|
947
966
|
# cd into a new directory, execute a block whose return value is either
|
948
967
|
# true or false. Either way, cd back to original directory. Raise an
|
949
968
|
# exception if the block failed (returned false or nil)
|
950
969
|
def visit_and_check(new_dir, exception, message)
|
951
970
|
cwd = Dir.getwd
|
952
|
-
shell.say "Leaving #{cwd}",
|
953
|
-
puts
|
954
|
-
shell.say "Entering #{new_dir}.",
|
971
|
+
shell.say "Leaving #{cwd}", :blue
|
972
|
+
puts ''
|
973
|
+
shell.say "Entering #{new_dir}.", :blue
|
955
974
|
Dir.chdir(new_dir)
|
956
975
|
success = yield if block_given?
|
957
|
-
shell.say "Leaving #{new_dir}",
|
958
|
-
puts
|
959
|
-
shell.say "Entering #{cwd}.",
|
976
|
+
shell.say "Leaving #{new_dir}", :blue
|
977
|
+
puts ''
|
978
|
+
shell.say "Entering #{cwd}.", :blue
|
960
979
|
Dir.chdir(cwd)
|
961
|
-
unless success
|
962
|
-
|
963
|
-
end
|
980
|
+
return unless success
|
981
|
+
raise exception, message
|
964
982
|
end
|
965
983
|
|
966
984
|
# cd into a new directory, execute a block, then cd back into original
|
967
985
|
# directory
|
968
986
|
def visit_dir(new_dir)
|
969
987
|
cwd = Dir.getwd
|
970
|
-
shell.say "Leaving #{cwd}",
|
988
|
+
shell.say "Leaving #{cwd}", :blue
|
971
989
|
puts ""
|
972
|
-
shell.say "Entering #{new_dir}.",
|
990
|
+
shell.say "Entering #{new_dir}.", :blue
|
973
991
|
Dir.chdir(new_dir)
|
974
992
|
yield if block_given?
|
975
|
-
shell.say "Leaving #{new_dir}",
|
993
|
+
shell.say "Leaving #{new_dir}", :blue
|
976
994
|
puts ""
|
977
|
-
shell.say "Entering #{cwd}.",
|
995
|
+
shell.say "Entering #{cwd}.", :blue
|
978
996
|
Dir.chdir(cwd)
|
979
997
|
end
|
980
998
|
|
@@ -991,12 +1009,13 @@ def generate_seeds_rb(mesa_dir, outfile)
|
|
991
1009
|
f.puts " version_added: #{m.version_number},"
|
992
1010
|
# no comma on last one
|
993
1011
|
if test_case_name == m.test_names[-1]
|
994
|
-
f.puts
|
1012
|
+
f.puts(' }')
|
995
1013
|
else
|
996
|
-
f.puts
|
1014
|
+
f.puts(' }')
|
997
1015
|
end
|
998
1016
|
end
|
999
1017
|
f.puts ' ]'
|
1000
1018
|
f.puts ')'
|
1001
1019
|
end
|
1002
1020
|
end
|
1021
|
+
|
metadata
CHANGED
@@ -1,57 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mesa_test
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
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-
|
11
|
+
date: 2017-11-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: json
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '2.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: os
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0
|
33
|
+
version: '1.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0
|
40
|
+
version: '1.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: thor
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '0.19'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '0.19'
|
55
55
|
description: mesa_test is a command-line interface for running the test suites in
|
56
56
|
MESA and submitting them to the companion website MESATestHub.
|
57
57
|
email: wmwolf@asu.edu
|