Module: XMP2Assert::Assertions
Overview
Helper module that implements assertions.
Instance Method Summary collapse
-
#assert_xmp(script, message = nil, stdin_data: '', **opts) ⇒ Object
Run a ruby script and assert for its comment.
-
#assert_xmp_raw(xmp, actual, message = nil) ⇒ Object
:TODO: tbw.
Methods included from Renderer
Methods included from XMP2Rexp
Instance Method Details
#assert_xmp(script, message = nil, stdin_data: '', **opts) ⇒ Object
Run a ruby script and assert for its comment. This is the main API.
assert_xmp "1 + 2 # => 3"
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/xmp2assert/assertions.rb', line 52 def assert_xmp script, = nil, stdin_data: '', **opts qscript = XMP2Assert::Quasifile.new script qf, qo, qe, qx = XMP2Assert::Converter.convert qscript render qf, qx do |f| XMP2Assert::Spawn.new f, **opts do |_, i, o, e, r, t| i.write stdin_data i.close out = Thread.new { o.read.force_encoding(qscript.__ENCODING__) } err = Thread.new { e.read.force_encoding(qscript.__ENCODING__) } while n = t.gets do x = t.read n.to_i expected, actual, bt = *Marshal.load(x) begin assert_xmp_raw expected, actual, rescue Test::Unit::AssertionFailedError => x r.close x.set_backtrace bt raise x else r.puts end end assert_xmp_raw qo, out.value, unless qo.empty? assert_xmp_raw qe, err.value, unless qe.empty? end end end |
#assert_xmp_raw(xmp, actual, message = nil) ⇒ Object
:TODO: tbw
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/xmp2assert/assertions.rb', line 81 def assert_xmp_raw xmp, actual, = nil expected = xmp2rexp xmp raise unless expected.match actual rescue # Regexp#match can raise. That should also be a failure. ix = Test::Unit::Assertions::AssertionMessage.convert xmp ia = Test::Unit::Assertions::AssertionMessage.convert actual ex = Test::Unit::AssertionFailedError.new(, expected: xmp, actual: actual, inspected_expected: ix, inspected_actual: ia, user_message: ) raise ex else return self # or...? end |