test/test_from_readme.rb in jellyfish-1.1.1 vs test/test_from_readme.rb in jellyfish-1.2.0
- old
+ new
@@ -2,50 +2,53 @@
require 'jellyfish/test'
require 'uri'
require 'stringio'
describe 'from README.md' do
+ paste :stringio
+
after do
[:Tank, :Heater, :Protector].each do |const|
Object.send(:remove_const, const) if Object.const_defined?(const)
end
Muack.verify
end
- readme = File.read(
- "#{File.dirname(File.expand_path(__FILE__))}/../README.md")
+ readme = File.read("#{__dir__}/../README.md")
codes = readme.scan(
/### ([^\n]+).+?``` ruby\n(.+?)\n```\n\n<!---(.+?)-->/m)
codes.each.with_index do |(title, code, test), index|
- next if title =~ /NewRelic/i
-
would "pass from README.md #%02d #{title}" % index do
app = Rack::Builder.app{ eval(code) }
test.split("\n\n").each do |t|
method_path, expect = t.strip.split("\n", 2)
- method, path = method_path.split(' ')
+ method, path, host = method_path.split(' ')
uri = URI.parse(path)
pinfo, query = uri.path, uri.query
sock = nil
status, headers, body = File.open(File::NULL) do |input|
app.call(
'HTTP_VERSION' => 'HTTP/1.1',
- 'REQUEST_METHOD' => method, 'PATH_INFO' => pinfo,
- 'QUERY_STRING' => query , 'SCRIPT_NAME'=> '' ,
- 'rack.input' => input ,
+ 'REQUEST_METHOD' => method,
+ 'HTTP_HOST' => host,
+ 'PATH_INFO' => pinfo,
+ 'SCRIPT_NAME' => '',
+ 'QUERY_STRING' => query,
+ 'rack.input' => input,
+ 'rack.url_scheme'=> 'http',
'rack.hijack' => lambda{
- sock = StringIO.new
+ sock = new_stringio
# or TypeError: no implicit conversion of StringIO into IO
mock(IO).select([sock]){ [[sock], [], []] }
sock
})
end
if hijack = headers.delete('rack.hijack')
- sock = StringIO.new
+ sock = new_stringio
hijack.call(sock)
body = sock.string.each_line("\n\n")
end
body.extend(Enumerable)