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.



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

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.



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

def mesa
  @mesa
end

#modObject (readonly)

Returns the value of attribute mod.



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

def mod
  @mod
end

#positionObject (readonly)

Returns the value of attribute position.



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

def position
  @position
end

#shellObject (readonly)

Returns the value of attribute shell.



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

def shell
  @shell
end

#test_nameObject (readonly)

Returns the value of attribute test_name.



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

def test_name
  @test_name
end

Class Method Details

.modulesObject



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

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!



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

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



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

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



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

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



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

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)


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

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

#ran?Boolean

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

Returns:

  • (Boolean)


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

def ran?
  File.exist?(testhub_file)
end

#results_hashObject



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

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



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

def test_case_dir
  File.join(test_suite_dir, test_name)
end

#test_suite_dirObject



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

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

#testhub_fileObject



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

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