Skip to content

Commit

Permalink
add minitest framework (#846)
Browse files Browse the repository at this point in the history
Add the minitest framework to start refactoring tests from rspec into minitest.
  • Loading branch information
johrstrom authored Aug 26, 2024
1 parent e6ba866 commit d8ecfb0
Show file tree
Hide file tree
Showing 5 changed files with 88 additions and 1 deletion.
5 changes: 4 additions & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,5 +36,8 @@ jobs:
- name: install gems
run: bundle install

- name: test
- name: rspec test
run: bundle exec rake spec

- name: mini test
run: bundle exec rake test
9 changes: 9 additions & 0 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@
require "bundler/gem_tasks"
require "rspec/core/rake_task"
require "minitest/test_task"

require_relative 'lib/tasks/slurm'

RSpec::Core::RakeTask.new(:spec)


Minitest::TestTask.create(:test) do |t|
t.libs << "test"
t.libs << "lib"
t.warning = false
t.test_globs = ["test/**/*_test.rb"]
end

task :default => :spec
2 changes: 2 additions & 0 deletions ood_core.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,6 @@ Gem::Specification.new do |spec|
spec.add_development_dependency "pry", "~> 0.10"
spec.add_development_dependency "timecop", "~> 0.8"
spec.add_development_dependency "climate_control", "~> 1.2.0"
spec.add_development_dependency "minitest", "~> 5"
spec.add_development_dependency "mocha", "~> 2.4"
end
24 changes: 24 additions & 0 deletions test/job/adapters/slurm_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
require 'test_helper'

class TestSlurm < Minitest::Test
include TestHelper

def slurm_instance(config = {})
OodCore::Job::Factory.build({ adapter: 'slurm' }.merge(config))
end

def test_submit_interface
slurm = slurm_instance

assert(slurm.respond_to?(:submit))
veryify_keywords(slurm, :submit, [:after, :afterok, :afternotok, :afterany])
verify_args(slurm, :submit, 1)
end

def test_submitting_with_hold
slurm = slurm_instance
stub_submit
OodCore::Job::Adapters::Slurm::Batch.any_instance.expects(:submit_string).with(script_content, args: ["-H", "--export", "NONE"], env: {})
slurm.submit(build_script(submit_as_hold: true))
end
end
49 changes: 49 additions & 0 deletions test/test_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
require 'ood_core'
require 'mocha/minitest'

module TestHelper

# verify the keywords of an objects interface.
# Example: given the interface - def foo(bar: nil)
# veryify_keywords(object, :foo, [:bar])
# to verify that the method foo takes only one keyword :bar.
def veryify_keywords(object, method, keywords)
parameters = object.method(method.to_sym).parameters
actual_keywords = parameters.select do |key, _value|
key.to_sym == :key
end.map do |_key, value|
value
end.sort

assert_equal(keywords.sort, actual_keywords)
end

def verify_args(object, method, num_of_args)
parameters = object.method(method.to_sym).parameters
actual_num_of_args = parameters.select do |key, _value|
key.to_sym == :req || key.to_sym == :opt
end.count

assert_equal(actual_num_of_args, num_of_args)
end

def build_script(opts = {})
OodCore::Job::Script.new(
**{
content: script_content
}.merge(opts)
)
end

def script_content
"my job script"
end

def stub_submit(jobid = '123')
Open3.stubs(:capture3).returns([jobid, '', exit_success])
end

def exit_success
OpenStruct.new(:success? => true, :exitstatus => 0)
end
end

0 comments on commit d8ecfb0

Please sign in to comment.