mesa_test 1.0.0 → 1.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/mesa_test +16 -9
- data/lib/mesa_test.rb +46 -25
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a826fba7ff75a9e70bc48f382a695dd97c901d4fb592b62c12efc71815228166
|
4
|
+
data.tar.gz: bcfcc756505119163a4a9fd26a33a6e7ec1f93a866b0fcda0fbe1e5d4d0b73cc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8f08733e96c142a057741a888b7ff0db782c305e77596bee2bc8b888b42b9874f5905fb22c1a81bb7e2bed6e27afa60cf025107b9dc3805141769eff20e8527f
|
7
|
+
data.tar.gz: c58df66933472bef5f6849837272c599bc5480446119a946362e900c0b4e995409cd5b72db6bd56cd6b912c2480a0eb5746c2a12dad0c3ce89a075d24e7170bd
|
data/bin/mesa_test
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
#! /usr/bin/env ruby
|
2
2
|
|
3
|
-
# if
|
4
|
-
# rather than system version
|
3
|
+
# if :development, submit cases to localhost:3000 and load local mesa_test library
|
4
|
+
# rather than system version and run out of local lib, not installed
|
5
|
+
# if :staging, submit to beta version and run out of local lib, not installed
|
6
|
+
# anything else: trust rubygems to get lib and submit to real deal testhub
|
5
7
|
MODE = :production
|
6
8
|
|
7
9
|
case MODE
|
@@ -67,7 +69,6 @@ class MesaTest < Thor
|
|
67
69
|
# submit results
|
68
70
|
shell.say 'Submitting results to ' + s.base_uri + '... ', :blue
|
69
71
|
s.submit_instance(m, t)
|
70
|
-
shell.say "Done.\n", :green
|
71
72
|
else
|
72
73
|
# run all tests
|
73
74
|
m.each_test_run(mod: options[:module].downcase.to_sym)
|
@@ -77,8 +78,8 @@ class MesaTest < Thor
|
|
77
78
|
|
78
79
|
shell.say 'Submitting results to ' + s.base_uri + '... ', :blue
|
79
80
|
s.submit_commit(m)
|
80
|
-
shell.say "Done.\n", :green
|
81
81
|
end
|
82
|
+
shell.say "Done.\n", :green
|
82
83
|
end
|
83
84
|
|
84
85
|
desc 'submit [TEST CASE]', 'submit a test case or commit'
|
@@ -146,18 +147,20 @@ class MesaTest < Thor
|
|
146
147
|
end
|
147
148
|
end
|
148
149
|
|
149
|
-
desc 'checkout SHA', 'checkout a commit'
|
150
|
+
desc 'checkout [SHA]', 'checkout a commit'
|
150
151
|
long_desc <<-LONGDESC
|
151
152
|
Checks out a particular commit to default mesa directory (mesa_work in
|
152
153
|
.mesa_test.yml). Uses git worktree magic to avoid re-downloading all of
|
153
154
|
mesa history if a mirror repo is already set up. Does not affect the
|
154
155
|
user's MESA_DIR or other environment variables.
|
156
|
+
|
157
|
+
If no sha is provided, defaults to main (if checkout is occuring).
|
155
158
|
LONGDESC
|
156
159
|
|
157
160
|
option :mesadir, desc: 'Location of mesa dir, if not relying on config data',
|
158
161
|
type: :string
|
159
162
|
|
160
|
-
def checkout(sha)
|
163
|
+
def checkout(sha = 'main')
|
161
164
|
# assuming config wizard has already been set (perhaps a little reckless)
|
162
165
|
# so that we can get at the work directory and mirror directory
|
163
166
|
s = create_submitter(force: true)
|
@@ -177,7 +180,7 @@ class MesaTest < Thor
|
|
177
180
|
set up prior. Does not affect the user's MESA_DIR or other environment
|
178
181
|
variables outside of execution.
|
179
182
|
|
180
|
-
If no sha is provided, defaults to
|
183
|
+
If no sha is provided, defaults to main (if checkout is occuring). SHA is
|
181
184
|
ignored if using option --no-checkout
|
182
185
|
LONGDESC
|
183
186
|
|
@@ -187,7 +190,7 @@ class MesaTest < Thor
|
|
187
190
|
option :mesadir, desc: 'Location of mesa dir, if not relying on config data',
|
188
191
|
type: :string
|
189
192
|
|
190
|
-
def install(sha = '
|
193
|
+
def install(sha = 'main')
|
191
194
|
# assuming config wizard has already been set (perhaps a little reckless)
|
192
195
|
# so that we can get at the work directory and mirror directory
|
193
196
|
s = create_submitter(force: true)
|
@@ -226,6 +229,10 @@ class MesaTest < Thor
|
|
226
229
|
followed by
|
227
230
|
|
228
231
|
`mesa_test test`
|
232
|
+
|
233
|
+
If no sha is provided, defaults to main (if checkout is occuring). SHA is
|
234
|
+
ignored if using option --no-checkout
|
235
|
+
|
229
236
|
LONGDESC
|
230
237
|
|
231
238
|
option :checkout, desc: 'Whether a checkout needs to happen. Use '\
|
@@ -244,7 +251,7 @@ class MesaTest < Thor
|
|
244
251
|
option :destroy, type: :boolean, desc: 'Delete mesa installation upon ' \
|
245
252
|
'submission of complete results.', default: false
|
246
253
|
|
247
|
-
def install_and_test(sha)
|
254
|
+
def install_and_test(sha='main')
|
248
255
|
s = if options[:submit]
|
249
256
|
create_and_check_submitter(force: options[:force])
|
250
257
|
else
|
data/lib/mesa_test.rb
CHANGED
@@ -13,7 +13,6 @@ TestCaseDirError = Class.new(StandardError)
|
|
13
13
|
InvalidDataType = Class.new(StandardError)
|
14
14
|
GitHubError = Class.new(StandardError)
|
15
15
|
|
16
|
-
DEFAULT_REVISION = 10_000
|
17
16
|
GITHUB_HTTPS = 'https://github.com/MESAHub/mesa.git'.freeze
|
18
17
|
GITHUB_SSH = 'git@github.com:MESAHub/mesa.git'.freeze
|
19
18
|
|
@@ -76,10 +75,12 @@ e-mail and password will be stored in plain text.'
|
|
76
75
|
"Ubuntu 16.04)? (#{s.platform_version}):", :blue
|
77
76
|
s.platform_version = response unless response.empty?
|
78
77
|
|
79
|
-
#
|
80
|
-
|
81
|
-
|
82
|
-
s.config_file
|
78
|
+
# we are powerless to do change the location for now, so stop asking
|
79
|
+
# about it
|
80
|
+
# # Confirm save location
|
81
|
+
# response = shell.ask "This will be saved in #{s.config_file}. Press " \
|
82
|
+
# 'enter to accept or enter a new location:', :blue, path: true
|
83
|
+
# s.config_file = response unless response.empty?
|
83
84
|
end
|
84
85
|
|
85
86
|
# Confirm data. If not confirmed, restart whole wizard.
|
@@ -145,7 +146,6 @@ e-mail and password will be stored in plain text.'
|
|
145
146
|
@config_file = config_file || File.join(ENV['HOME'], '.mesa_test',
|
146
147
|
'config.yml')
|
147
148
|
@base_uri = base_uri
|
148
|
-
@last_tested = last_tested || DEFAULT_REVISION
|
149
149
|
|
150
150
|
# set up thor-proof way to get responses from user. Thor hijacks the
|
151
151
|
# gets command, so we have to use its built-in "ask" method, which is
|
@@ -170,7 +170,7 @@ e-mail and password will be stored in plain text.'
|
|
170
170
|
puts "MESA Mirror Location #{mesa_mirror}"
|
171
171
|
puts "MESA Work Location #{mesa_work}"
|
172
172
|
puts "Platform #{platform} #{platform_version}"
|
173
|
-
puts "Config location #{config_file}"
|
173
|
+
# puts "Config location #{config_file}"
|
174
174
|
puts '-------------------------------------------------------'
|
175
175
|
puts ''
|
176
176
|
response = shell.ask 'Is this correct? (y/Y = Yes, anything else = No):'
|
@@ -289,7 +289,7 @@ e-mail and password will be stored in plain text.'
|
|
289
289
|
https.use_ssl = base_uri.include? 'https'
|
290
290
|
|
291
291
|
request = Net::HTTP::Post.new(
|
292
|
-
uri, initheader = { 'Content-Type' => 'application/json' }
|
292
|
+
uri, initheader = { 'Accept' => 'application/json', 'Content-Type' => 'application/json' }
|
293
293
|
)
|
294
294
|
request.body = {
|
295
295
|
email: email,
|
@@ -302,13 +302,17 @@ e-mail and password will be stored in plain text.'
|
|
302
302
|
# submit entire commit's worth of test cases, OR submit compilation status
|
303
303
|
# and NO test cases
|
304
304
|
def submit_commit(mesa, empty: false)
|
305
|
+
unless mesa.install_attempted?
|
306
|
+
raise MesaDirError, 'No testhub.yml file found in installation; '\
|
307
|
+
'must attempt to install before subitting.'
|
308
|
+
end
|
305
309
|
uri = URI.parse(base_uri + '/submissions/create.json')
|
306
310
|
https = Net::HTTP.new(uri.hostname, uri.port)
|
307
311
|
https.use_ssl = true if base_uri.include? 'https'
|
308
312
|
|
309
313
|
request = Net::HTTP::Post.new(
|
310
314
|
uri,
|
311
|
-
initheader = { 'Content-Type' => 'application/json' }
|
315
|
+
initheader = { 'Accept' => 'application/json', 'Content-Type' => 'application/json' }
|
312
316
|
)
|
313
317
|
|
314
318
|
# create the request body for submission to the submissions API
|
@@ -341,13 +345,18 @@ e-mail and password will be stored in plain text.'
|
|
341
345
|
# submit results for a single test case instance. Does *not* report overall
|
342
346
|
# compilation status to testhub. Use an empty commit submission for that
|
343
347
|
def submit_instance(mesa, test_case)
|
348
|
+
unless mesa.install_attempted?
|
349
|
+
raise MesaDirError, 'No testhub.yml file found in installation; '\
|
350
|
+
'must attempt to install before subitting.'
|
351
|
+
end
|
352
|
+
|
344
353
|
uri = URI.parse(base_uri + '/submissions/create.json')
|
345
354
|
https = Net::HTTP.new(uri.hostname, uri.port)
|
346
355
|
https.use_ssl = true if base_uri.include? 'https'
|
347
356
|
|
348
357
|
request = Net::HTTP::Post.new(
|
349
358
|
uri,
|
350
|
-
initheader = { 'Content-Type' => 'application/json' }
|
359
|
+
initheader = { 'Accept' => 'application/json', 'Content-Type' => 'application/json' }
|
351
360
|
)
|
352
361
|
|
353
362
|
# create the request body for submission to the submissions API
|
@@ -443,7 +452,7 @@ class Mesa
|
|
443
452
|
bash_execute(command)
|
444
453
|
|
445
454
|
raise(GitHubError, 'Error while executing the following command:'\
|
446
|
-
"#{command}. Perhaps you haven't set up
|
455
|
+
"#{command}. Perhaps you haven't set up "\
|
447
456
|
'ssh keys with your GitHub account?')
|
448
457
|
end
|
449
458
|
when :https
|
@@ -557,14 +566,17 @@ class Mesa
|
|
557
566
|
# installation
|
558
567
|
def compiler_hash
|
559
568
|
data_file = File.join(mesa_dir, 'testhub.yml')
|
560
|
-
|
561
|
-
|
569
|
+
res = {
|
570
|
+
compiler: 'Unknown',
|
571
|
+
sdk_version: 'Unknown',
|
572
|
+
math_backend: 'Unknown'
|
573
|
+
}
|
574
|
+
if File.exist? data_file
|
575
|
+
res = res.merge(YAML.safe_load(File.read(data_file)) || {})
|
576
|
+
# currently version_number is reported, but we don't need that in Git land
|
577
|
+
res.delete('version_number') # returns the value, not the updated hash
|
578
|
+
res
|
562
579
|
end
|
563
|
-
|
564
|
-
res = YAML.safe_load(File.read(data_file))
|
565
|
-
# currently version_number is reported, but we don't need that in Git land
|
566
|
-
res.delete('version_number') # returns the value, not the updated hash
|
567
|
-
res
|
568
580
|
end
|
569
581
|
|
570
582
|
## TEST SUITE METHODS
|
@@ -602,12 +614,16 @@ class Mesa
|
|
602
614
|
num, tc_name = line.strip.split
|
603
615
|
@names_to_numbers[mod][tc_name.strip] = num.to_i
|
604
616
|
@test_case_names[mod] << tc_name.strip
|
605
|
-
|
606
|
-
|
607
|
-
|
608
|
-
|
609
|
-
|
610
|
-
|
617
|
+
begin
|
618
|
+
@test_cases[mod][tc_name.strip] = MesaTestCase.new(
|
619
|
+
test: tc_name.strip,
|
620
|
+
mod: mod,
|
621
|
+
position: num.to_i,
|
622
|
+
mesa: self
|
623
|
+
)
|
624
|
+
rescue TestCaseDirError
|
625
|
+
shell.say "No such test case #{tc_name.strip}. Skipping loading it.", :red
|
626
|
+
end
|
611
627
|
end
|
612
628
|
end
|
613
629
|
end
|
@@ -647,11 +663,16 @@ class Mesa
|
|
647
663
|
def installed?
|
648
664
|
# assume build log reflects installation status; does not account for
|
649
665
|
# mucking with modules after the fact
|
650
|
-
|
666
|
+
build_log = File.join(mesa_dir, 'build.log')
|
667
|
+
downloaded? && File.exist?(build_log) && File.read(build_log).include?(
|
651
668
|
'MESA installation was successful'
|
652
669
|
)
|
653
670
|
end
|
654
671
|
|
672
|
+
def install_attempted?
|
673
|
+
File.exist? File.join(mesa_dir, 'testhub.yml')
|
674
|
+
end
|
675
|
+
|
655
676
|
private
|
656
677
|
|
657
678
|
# verify that mesa_dir is valid by checking for existence of test_suite
|
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: 1.0.
|
4
|
+
version: 1.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- William Wolf
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -81,7 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
requirements: []
|
84
|
-
rubygems_version: 3.
|
84
|
+
rubygems_version: 3.0.4
|
85
85
|
signing_key:
|
86
86
|
specification_version: 4
|
87
87
|
summary: Command line tool for running and reporting the MESA test suites.
|