Top Level Namespace

Defined Under Namespace

Classes: Mesa, MesaTestCase, MesaTestSubmitter

Constant Summary collapse

MesaDirError =
Class.new(StandardError)
TestCaseDirError =
Class.new(StandardError)
InvalidDataType =
Class.new(StandardError)
GitHubError =
Class.new(StandardError)
GITHUB_HTTPS =
'https://github.com/MESAHub/mesa.git'.freeze
GITHUB_SSH =
'git@github.com:MESAHub/mesa.git'.freeze

Instance Method Summary collapse

Instance Method Details

#b64_file(filename) ⇒ Object

encode the contents of a file as base-64



1228
1229
1230
# File 'lib/mesa_test.rb', line 1228

def b64_file(filename)
  Base64.encode64(File.open(filename).read)
end

#bash_execute(command, throw_exception = false) ⇒ Object

force the execution to happen with bash



1212
1213
1214
1215
1216
1217
1218
1219
# File 'lib/mesa_test.rb', line 1212

def bash_execute(command, throw_exception=false)
  res = system('bash -c "' + command + '"')
  if !res && throw_exception
    raise BashError('Encountered an error when executing the following '\
      "command in bash: #{command}.")
  end
  res
end

#bashticks(command) ⇒ Object

force execution to happen with bash, but return result rather than exit status (like backticks)



1223
1224
1225
# File 'lib/mesa_test.rb', line 1223

def bashticks(command)
  `bash -c "#{command}"`.chomp
end

Returns:

  • (Boolean)


1207
1208
1209
# File 'lib/mesa_test.rb', line 1207

def dir_or_symlink_exists?(path)
   File.directory?(path) || File.symlink?(path)
end

#generate_seeds_rb(mesa_dir, outfile) ⇒ Object

the next function probalby doesn’t belong here, but keep it anyway, please create seed data for test cases for MesaTestHub of a given mesa version



1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
# File 'lib/mesa_test.rb', line 1186

def generate_seeds_rb(mesa_dir, outfile)
  m = Mesa.new(mesa_dir: mesa_dir)
  m.load_test_source_data
  File.open(outfile, 'w') do |f|
    f.puts 'test_cases = TestCase.create!('
    f.puts '  ['
    m.test_names.each do |test_case_name|
      f.puts '    {'
      f.puts "      name: '#{test_case_name}',"
      # no comma on last one
      if test_case_name == m.test_names[-1]
        f.puts('    }')
      else
        f.puts('    },')
      end
    end
    f.puts '  ]'
    f.puts ')'
  end
end

#visit_and_check(new_dir, exception, message) ⇒ Object

cd into a new directory, execute a block whose return value is either true or false. Either way, cd back to original directory. Raise an exception if the block failed (returned false or nil)

Raises:

  • (exception)


1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
# File 'lib/mesa_test.rb', line 1158

def visit_and_check(new_dir, exception, message)
  cwd = Dir.getwd
  shell.say "Leaving  #{cwd}", :blue
  shell.say "\nEntering #{new_dir}.", :blue
  Dir.chdir(new_dir)
  success = yield if block_given?
  shell.say "Leaving  #{new_dir}", :blue
  shell.say "\nEntering #{cwd}.", :blue
  Dir.chdir(cwd)
  return if success
  raise exception, message
end

#visit_dir(new_dir, quiet: false) ⇒ Object

cd into a new directory, execute a block, then cd back into original directory



1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
# File 'lib/mesa_test.rb', line 1173

def visit_dir(new_dir, quiet: false)
  cwd = Dir.getwd
  shell.say "Leaving  #{cwd}\n", :blue unless quiet
  shell.say "\nEntering #{new_dir}.", :blue unless quiet
  Dir.chdir(new_dir)
  yield if block_given?
  shell.say "Leaving  #{new_dir}\n", :blue unless quiet
  shell.say "\nRe-entering #{cwd}.", :blue unless quiet
  Dir.chdir(cwd)
end