mesa_test 1.0.0 → 1.0.5
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 +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.
|