Class | Test::Spec::Should |
In: |
lib/test/spec.rb
lib/test/spec/should-output.rb |
Parent: | Object |
# File lib/test/spec.rb, line 44 44: def initialize(object, message=nil) 45: @object = object 46: @message = message 47: end
# File lib/test/spec.rb, line 159 159: def <(value) 160: assert_operator @object, :<, value, @message 161: end
# File lib/test/spec.rb, line 163 163: def <=(value) 164: assert_operator @object, :<=, value, @message 165: end
# File lib/test/spec.rb, line 167 167: def ===(value) 168: assert_operator @object, :===, value, @message 169: end
# File lib/test/spec.rb, line 151 151: def >(value) 152: assert_operator @object, :>, value, @message 153: end
# File lib/test/spec.rb, line 155 155: def >=(value) 156: assert_operator @object, :>=, value, @message 157: end
# File lib/test/spec.rb, line 130 130: def _raise(*args) 131: args = [RuntimeError] if args.empty? 132: assert_raise(*(args + [@message]), &@object) 133: end
# File lib/test/spec.rb, line 50 50: def add_assertion 51: $TEST_SPEC_TESTCASE && $TEST_SPEC_TESTCASE.__send__(:add_assertion) 52: end
# File lib/test/spec.rb, line 96 96: def be(*value) 97: case value.size 98: when 0 99: self 100: when 1 101: if CustomShould === value.first 102: pass value.first 103: else 104: assert_same value.first, @object, @message 105: end 106: else 107: raise ArgumentError, "should.be needs zero or one argument" 108: end 109: end
# File lib/test/spec.rb, line 91 91: def close(value, delta) 92: assert_in_delta value, @object, delta, @message 93: end
# File lib/test/spec.rb, line 86 86: def equal(value) 87: assert_equal value, @object, @message 88: end
# File lib/test/spec.rb, line 145 145: def include(value) 146: msg = build_message(@message, "<?> expected to include ?, but it didn't.", 147: @object, value) 148: assert_block(msg) { @object.include?(value) } 149: end
# File lib/test/spec.rb, line 116 116: def instance_of(klass) 117: assert_instance_of klass, @object, @message 118: end
# File lib/test/spec.rb, line 121 121: def kind_of(klass) 122: assert_kind_of klass, @object, @message 123: end
# File lib/test/spec.rb, line 111 111: def match(value) 112: assert_match value, @object, @message 113: end
# File lib/test/spec.rb, line 74 74: def messaging(message) 75: @message = message.to_s 76: self 77: end
# File lib/test/spec.rb, line 180 180: def method_missing(name, *args) 181: # This will make raise call Kernel.raise, and self.raise call _raise. 182: return _raise(*args) if name == :raise 183: 184: if @object.respond_to?("#{name}?") 185: assert @object.__send__("#{name}?", *args), 186: "#{name}? expected to be true. #{@message}" 187: else 188: super 189: end 190: end
# File lib/test/spec.rb, line 63 63: def not(*args) 64: case args.size 65: when 0 66: ShouldNot.new(@object, @message) 67: when 1 68: ShouldNot.new(@object, @message).pass(args.first) 69: else 70: raise ArgumentError, "#not takes zero or one argument(s)." 71: end 72: end
Captures output from the IO given as the second argument (STDIN by default) and matches it against a String or Regexp given as the first argument.
# File lib/test/spec/should-output.rb, line 10 10: def output(expected, to = STDOUT) 11: # Store the old stream 12: old_to = to.dup 13: 14: # Obtain a filehandle to replace (works with Readline) 15: to.reopen File.open(File.join(Dir.tmpdir, "should_output_#{$$}"), "w+") 16: 17: # Execute 18: @object.call 19: 20: # Restore 21: out = to.dup 22: to.reopen old_to 23: 24: # Grab the data 25: out.rewind 26: output = out.read 27: 28: # Match up 29: case expected 30: when Regexp 31: output.should.match expected 32: else 33: output.should.equal expected 34: end # case expected 35: 36: # Clean up 37: ensure 38: out.close 39: 40: # STDIO redirection will break else 41: begin 42: to.seek 0, IO::SEEK_END 43: rescue Errno::ESPIPE 44: rescue Errno::EPIPE 45: end 46: 47: FileUtils.rm_f out.path 48: end
# File lib/test/spec.rb, line 171 171: def pass(custom) 172: _wrap_assertion { 173: assert_nothing_raised(Test::Unit::AssertionFailedError, 174: @message || custom.failure_message) { 175: assert custom.matches?(@object), @message || custom.failure_message 176: } 177: } 178: end
# File lib/test/spec.rb, line 126 126: def respond_to(method) 127: assert_respond_to @object, method, @message 128: end
# File lib/test/spec.rb, line 80 80: def satisfy(&block) 81: assert_block(@message || "satisfy block failed.") { 82: yield @object 83: } 84: end