module Oktest::SpecHelper
Attributes
__TODO[RW]
__at_end_blocks[RW]
Public Instance Methods
AND(*args)
click to toggle source
# File lib/oktest.rb, line 1384 def AND(*args) #; [!38jln] creates `AND` object. return JsonMatcher::AND.new(*args) end
Any()
click to toggle source
# File lib/oktest.rb, line 1394 def Any() #; [!dlo1o] creates an 'Any' object. return JsonMatcher::Any.new end
Bool()
click to toggle source
# File lib/oktest.rb, line 1374 def Bool() #; [!vub5j] creates a set of true and false. return Enum(true, false) end
Enum(*values)
click to toggle source
# File lib/oktest.rb, line 1369 def Enum(*values) #; [!fbfr0] creates Enum object which is a subclass of Set. return JsonMatcher::Enum.new(values) end
JSON(actual)
click to toggle source
# File lib/oktest.rb, line 1364 def JSON(actual) #; [!n0k03] creates JsonMatcher object. return JsonMatcher.new(actual) end
Length(n)
click to toggle source
# File lib/oktest.rb, line 1389 def Length(n) #; [!qqas3] creates Length object. return JsonMatcher::Length.new(n) end
OR(*args)
click to toggle source
# File lib/oktest.rb, line 1379 def OR(*args) #; [!9e8im] creates `OR` object. return JsonMatcher::OR.new(*args) end
TODO()
click to toggle source
# File lib/oktest.rb, line 1227 def TODO() location = caller(1).first # ex: "foo_test.rb:123:in ...." @__TODO = location end
at_end(&block)
click to toggle source
# File lib/oktest.rb, line 1232 def at_end(&block) #; [!x58eo] records clean-up block. (@__at_end_blocks ||= []) << block end
capture_sio(input="", tty: false) { |sout, serr| ... }
click to toggle source
# File lib/oktest.rb, line 1237 def capture_sio(input="", tty: false, &b) require 'stringio' unless defined?(StringIO) bkup = [$stdin, $stdout, $stderr] #; [!53mai] takes $stdin data. $stdin = sin = StringIO.new(input) #; [!1kbnj] captures $stdio and $stderr. $stdout = sout = StringIO.new $stderr = serr = StringIO.new #; [!6ik8b] can simulate tty. if tty def sin.tty?; true; end def sout.tty?; true; end def serr.tty?; true; end end #; [!4j494] returns outpouts of stdout and stderr. yield sout, serr return sout.string, serr.string ensure #; [!wq8a9] recovers stdio even when exception raised. $stdin, $stdout, $stderr = bkup end
dummy_attrs(object, **keyvals, &b)
click to toggle source
# File lib/oktest.rb, line 1325 def dummy_attrs(object, **keyvals, &b) #; [!4vd73] changes object attributes temporarily. prev_values = {} keyvals.each do |k, v| prev_values[k] = object.__send__(k) object.__send__("#{k}=", v) end #; [!fi0t3] recovers attribute values. recover = proc do prev_values.each {|k, v| object.__send__("#{k}=", v) } end #; [!27yeh] returns keyvals. #; [!j7tvp] can take block argument. return __do_dummy(keyvals, recover, &b) end
dummy_dir(dirname=nil, &b)
click to toggle source
# File lib/oktest.rb, line 1287 def dummy_dir(dirname=nil, &b) #; [!r14uy] generates temporary directory name if 1st arg is nil. dirname ||= "_tmpdir_#{rand().to_s[2...8]}" #; [!zypj6] raises error when dummy dir already exists. ! File.exist?(dirname) or raise ArgumentError, "dummy_dir('#{dirname}'): temporary directory already exists." #; [!l34d5] creates dummy directory. require 'fileutils' unless defined?(FileUtils) FileUtils.mkdir_p(dirname) #; [!01gt7] removes dummy directory even if it contains other files. recover = proc { FileUtils.rm_rf(dirname) if File.exist?(dirname) } #; [!jxh30] returns directory name. #; [!tfsqo] can take block argument. return __do_dummy(dirname, recover, &b) end
dummy_file(filename=nil, content=nil, encoding: 'utf-8', &b)
click to toggle source
# File lib/oktest.rb, line 1273 def dummy_file(filename=nil, content=nil, encoding: 'utf-8', &b) #; [!3mg26] generates temporary filename if 1st arg is nil. filename ||= "_tmpfile_#{rand().to_s[2...8]}" #; [!yvfxq] raises error when dummy file already exists. ! File.exist?(filename) or raise ArgumentError, "dummy_file('#{filename}'): temporary file already exists." #; [!7e0bo] creates dummy file. File.write(filename, content, encoding: encoding) recover = proc { File.unlink(filename) if File.exist?(filename) } #; [!nvlkq] returns filename. #; [!ky7nh] can take block argument. return __do_dummy(filename, recover, &b) end
dummy_ivars(object, **keyvals, &b)
click to toggle source
# File lib/oktest.rb, line 1341 def dummy_ivars(object, **keyvals, &b) #; [!rnqiv] changes instance variables temporarily. prev_values = {} keyvals.each do |k, v| prev_values[k] = object.instance_variable_get("@#{k}") object.instance_variable_set("@#{k}", v) end #; [!8oirn] recovers instance variables. recover = proc do prev_values.each {|k, v| object.instance_variable_set("@#{k}", v) } end #; [!01dc8] returns keyvals. #; [!myzk4] can take block argument. return __do_dummy(keyvals, recover, &b) end
dummy_values(hashobj, keyvals={}, &b)
click to toggle source
# File lib/oktest.rb, line 1303 def dummy_values(hashobj, keyvals={}, &b) # never use keyword args! #; [!hgwg2] changes hash value temporarily. prev_values = {} key_not_exists = {} keyvals.each do |k, v| if hashobj.key?(k) prev_values[k] = hashobj[k] else key_not_exists[k] = true end hashobj[k] = v end #; [!jw2kx] recovers hash values. recover = proc do key_not_exists.each {|k, _| hashobj.delete(k) } prev_values.each {|k, v| hashobj[k] = v } end #; [!w3r0p] returns keyvals. #; [!pwq6v] can take block argument. return __do_dummy(keyvals, recover, &b) end
fixture(name, *args)
click to toggle source
# File lib/oktest.rb, line 1209 def fixture(name, *args) #; [!zgfg9] finds fixture block in current or parent node. node = self.class.__node while node && (tuple = node.get_fixture_block(name)) == nil node = node.parent end #; [!wxcsp] raises error when fixture not found. unless tuple exc = FixtureNotFoundError.new("`#{name.inspect}`: fixture not found.") exc.set_backtrace([caller(1).first]) raise exc end #; [!m4ava] calls fixture block and returns result of it. #; [!l2mcx] accepts block arguments. block, _, _ = tuple return block.call(*args) end
not_ok() { || ... }
click to toggle source
# File lib/oktest.rb, line 1188 def not_ok() #; [!agmx8] records invoked location. #; [!a9508] not record invoked location when `Config.ok_location == false`. if Config.ok_location location = caller(1).first # caller() makes performance slower, but necessary. else location = nil end #; [!d332o] creates new assertion object for negative condition. actual = yield ass = Oktest::AssertionObject.new(actual, false, location) Oktest::AssertionObject::NOT_YET[ass.__id__] = ass return ass end
ok() { || ... }
click to toggle source
# File lib/oktest.rb, line 1173 def ok() #; [!bc3l2] records invoked location. #; [!mqtdy] not record invoked location when `Config.ok_location == false`. if Config.ok_location location = caller(1).first # caller() makes performance slower, but necessary. else location = nil end #; [!3jhg6] creates new assertion object. actual = yield ass = Oktest::AssertionObject.new(actual, true, location) Oktest::AssertionObject::NOT_YET[ass.__id__] = ass return ass end
recorder()
click to toggle source
# File lib/oktest.rb, line 1357 def recorder() #; [!qwrr8] loads 'benry/recorder' automatically. require 'benry/recorder' unless defined?(Benry::Recorder) #; [!glfvx] creates Benry::Recorder object. return Benry::Recorder.new end
skip_when(condition, reason)
click to toggle source
# File lib/oktest.rb, line 1203 def skip_when(condition, reason) #; [!3xqf4] raises SkipException if condition is truthy. #; [!r7cxx] not raise nothing if condition is falsy. raise SkipException, reason if condition end
Private Instance Methods
__do_dummy(val, recover) { |val| ... }
click to toggle source
# File lib/oktest.rb, line 1259 def __do_dummy(val, recover, &b) if block_given?() begin return yield val ensure recover.call end else at_end(&recover) return val end end