-
Notifications
You must be signed in to change notification settings - Fork 29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add minitest framework #846
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,15 @@ | ||
require "bundler/gem_tasks" | ||
require "rspec/core/rake_task" | ||
require "minitest/test_task" | ||
|
||
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 |
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 | ||||||||||||||
Comment on lines
+18
to
+23
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This test replaces this rspec test below, and just reinforces my issue with rspec. Here in mintest we see what I have to stub Open3 because at some point calling I guess I just like the explicit nature of Minitest. How is rspec stubbing Open3? I guess it doesn't need to? Like somehow calling ood_core/spec/job/adapters/slurm_spec.rb Lines 72 to 77 in 65f8ac5
|
||||||||||||||
end |
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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This replaces this line from rspec. Minitest doesn't have the same facility, but I've added some helper methods to do the same.
ood_core/spec/job/adapters/slurm_spec.rb
Line 11 in 65f8ac5