Class: MesaTestCase

Inherits:
Object
  • Object
show all
Defined in:
lib/mesa_test.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(test: nil, mesa: nil, mod: nil, position: nil) ⇒ MesaTestCase

Returns a new instance of MesaTestCase.



955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
# File 'lib/mesa_test.rb', line 955

def initialize(test: nil, mesa: nil, mod: nil, position: nil)
  @test_name = test
  @mesa = mesa
  unless MesaTestCase.modules.include? mod
    raise TestCaseDirError, "Invalid module: #{mod}. Must be one of: " +
                            MesaTestCase.modules.join(', ')
  end
  @mod = mod
  @position = position

  # way to output colored text to shell
  @shell = Thor::Shell::Color.new

  # validate stuff
  check_mesa_dir
  check_test_case

end

Instance Attribute Details

#mesaObject (readonly)

Returns the value of attribute mesa.



949
950
951
# File 'lib/mesa_test.rb', line 949

def mesa
  @mesa
end

#modObject (readonly)

Returns the value of attribute mod.



949
950
951
# File 'lib/mesa_test.rb', line 949

def mod
  @mod
end

#positionObject (readonly)

Returns the value of attribute position.



949
950
951
# File 'lib/mesa_test.rb', line 949

def position
  @position
end

#shellObject (readonly)

Returns the value of attribute shell.



949
950
951
# File 'lib/mesa_test.rb', line 949

def shell
  @shell
end

#test_nameObject (readonly)

Returns the value of attribute test_name.



949
950
951
# File 'lib/mesa_test.rb', line 949

def test_name
  @test_name
end

Class Method Details

.modulesObject



951
952
953
# File 'lib/mesa_test.rb', line 951

def self.modules
  %i[star binary astero]
end

Instance Method Details

#do_oneObject

just punt to each_test_run in the test_suite directory. It’s your problem now, sucker!



988
989
990
991
992
993
# File 'lib/mesa_test.rb', line 988

def do_one
  shell.say("Testing #{test_name}", :yellow)
  visit_dir(test_suite_dir) do
    bash_execute("./each_test_run #{position}")
  end
end

#err_64Object

Base-64 encoded contents of err.txt file



1023
1024
1025
1026
1027
1028
# File 'lib/mesa_test.rb', line 1023

def err_64
  err_file = File.join(test_case_dir, 'err.txt')
  return '' unless File.exist?(err_file)

  b64_file(err_file)
end

#mk_64Object

Base-64 encoded contents of mk.txt file



1015
1016
1017
1018
1019
1020
# File 'lib/mesa_test.rb', line 1015

def mk_64
  mk_file = File.join(test_case_dir, 'mk.txt')
  return '' unless File.exist?(mk_file)

  b64_file(mk_file)
end

#out_64Object

Base-64 encoded contents of out.txt file



1031
1032
1033
1034
1035
1036
# File 'lib/mesa_test.rb', line 1031

def out_64
  out_file = File.join(test_case_dir, 'out.txt')
  return '' unless File.exist?(out_file)

  b64_file(out_file)
end

#passed?Boolean

whether or not a test case has passed; only has meaning if we can load the results hash, though

Returns:

  • (Boolean)


1010
1011
1012
# File 'lib/mesa_test.rb', line 1010

def passed?
  results_hash['outcome'] == :pass
end

#ran?Boolean

rough proxy for whether or not the test has even been run

Returns:

  • (Boolean)


1004
1005
1006
# File 'lib/mesa_test.rb', line 1004

def ran?
  File.exist?(testhub_file)
end

#results_hashObject



995
996
997
998
999
1000
1001
# File 'lib/mesa_test.rb', line 995

def results_hash
  unless ran?
    raise TestCaseDirError.new('No results found for test case '\
                               "#{test_name}.")
  end
  YAML.load(File.read(testhub_file))
end

#test_case_dirObject



978
979
980
# File 'lib/mesa_test.rb', line 978

def test_case_dir
  File.join(test_suite_dir, test_name)
end

#test_suite_dirObject



974
975
976
# File 'lib/mesa_test.rb', line 974

def test_suite_dir
  mesa.test_suite_dir(mod: @mod)
end

#testhub_fileObject



982
983
984
# File 'lib/mesa_test.rb', line 982

def testhub_file
  File.join(test_case_dir, 'testhub.yml')
end