Class: Judges::Test
Overview
Test.
- Author
-
Yegor Bugayenko (yegor256@gmail.com)
- Copyright
-
Copyright © 2024 Yegor Bugayenko
- License
-
MIT
Instance Method Summary collapse
-
#initialize(loog) ⇒ Test
constructor
A new instance of Test.
- #run(opts, args) ⇒ Object
Constructor Details
#initialize(loog) ⇒ Test
Returns a new instance of Test.
36 37 38 |
# File 'lib/judges/commands/test.rb', line 36 def initialize(loog) @loog = loog end |
Instance Method Details
#run(opts, args) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/judges/commands/test.rb', line 40 def run(opts, args) raise 'Exactly one argument required' unless args.size == 1 dir = args[0] @loog.info("Testing judges in #{dir.to_rel}...") errors = [] done = 0 Judges::Packs.new(dir, @loog).each_with_index do |p, i| next unless include?(opts, p.name) @loog.info("\n👉 Testing #{p.script} (##{i}) in #{p.dir.to_rel}...") p.tests.each do |f| yaml = YAML.load_file(f, permitted_classes: [Time]) @loog.info("Testing #{f.to_rel}:") begin test_one(p, yaml) rescue StandardError => e @loog.warn(Backtrace.new(e)) errors << f end end done += 1 end raise 'No judges tested :(' if done.zero? && !opts['quiet'] if errors.empty? @loog.info("\nAll #{done} judges tested successfully") else @loog.info("\n#{done} judges tested, #{errors.size} of them failed") raise "#{errors.size} tests failed" unless errors.empty? end end |