Class | Test::Spec::Should |
In: |
lib/test/spec/should-output.rb
lib/test/spec.rb |
Parent: | Object |
# File lib/test/spec.rb, line 45 45: def initialize(object, message=nil) 46: @object = object 47: @message = message 48: end
# File lib/test/spec.rb, line 162 162: def <(value) 163: assert_operator @object, :<, value, @message 164: end
# File lib/test/spec.rb, line 166 166: def <=(value) 167: assert_operator @object, :<=, value, @message 168: end
# File lib/test/spec.rb, line 170 170: def ===(value) 171: assert_operator @object, :===, value, @message 172: end
# File lib/test/spec.rb, line 154 154: def >(value) 155: assert_operator @object, :>, value, @message 156: end
# File lib/test/spec.rb, line 158 158: def >=(value) 159: assert_operator @object, :>=, value, @message 160: end
# File lib/test/spec.rb, line 131 131: def _raise(*args, &block) 132: args = [RuntimeError] if args.empty? 133: block ||= @object 134: args << @message if @message 135: assert_raise(*args, &block) 136: end
# File lib/test/spec.rb, line 51 51: def add_assertion 52: $TEST_SPEC_TESTCASE && $TEST_SPEC_TESTCASE.__send__(:add_assertion) 53: end
# File lib/test/spec.rb, line 97 97: def be(*value) 98: case value.size 99: when 0 100: self 101: when 1 102: if CustomShould === value.first 103: pass value.first 104: else 105: assert_same value.first, @object, @message 106: end 107: else 108: raise ArgumentError, "should.be needs zero or one argument" 109: end 110: end
# File lib/test/spec.rb, line 92 92: def close(value, delta) 93: assert_in_delta value, @object, delta, @message 94: end
# File lib/test/spec.rb, line 87 87: def equal(value) 88: assert_equal value, @object, @message 89: end
# File lib/test/spec.rb, line 148 148: def include(value) 149: msg = build_message(@message, "<?> expected to include ?, but it didn't.", 150: @object, value) 151: assert_block(msg) { @object.include?(value) } 152: end
# File lib/test/spec.rb, line 117 117: def instance_of(klass) 118: assert_instance_of klass, @object, @message 119: end
# File lib/test/spec.rb, line 122 122: def kind_of(klass) 123: assert_kind_of klass, @object, @message 124: end
# File lib/test/spec.rb, line 112 112: def match(value) 113: assert_match value, @object, @message 114: end
# File lib/test/spec.rb, line 75 75: def messaging(message) 76: @message = message.to_s 77: self 78: end
# File lib/test/spec.rb, line 183 183: def method_missing(name, *args, &block) 184: # This will make raise call Kernel.raise, and self.raise call _raise. 185: return _raise(*args, &block) if name == :raise 186: 187: if @object.respond_to?("#{name}?") 188: assert @object.__send__("#{name}?", *args), 189: "#{name}? expected to be true. #{@message}" 190: else 191: if @object.respond_to?(name) 192: assert @object.__send__(name, *args), 193: "#{name} expected to be true. #{@message}" 194: else 195: super 196: end 197: end 198: end
# File lib/test/spec.rb, line 64 64: def not(*args) 65: case args.size 66: when 0 67: ShouldNot.new(@object, @message) 68: when 1 69: ShouldNot.new(@object, @message).pass(args.first) 70: else 71: raise ArgumentError, "#not takes zero or one argument(s)." 72: end 73: 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 174 174: def pass(custom) 175: _wrap_assertion { 176: assert_nothing_raised(Test::Unit::AssertionFailedError, 177: @message || custom.failure_message) { 178: assert custom.matches?(@object), @message || custom.failure_message 179: } 180: } 181: end
# File lib/test/spec.rb, line 127 127: def respond_to(method) 128: assert_respond_to @object, method, @message 129: end
# File lib/test/spec.rb, line 81 81: def satisfy(&block) 82: assert_block(@message || "satisfy block failed.") { 83: yield @object 84: } 85: end