1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
require 'test_helper'
class LoaderTest < Test::Unit::TestCase
def capture_output(code = "")
requires = @requires.map { |lib| "require '#{lib}';" }.join(' ')
samuel_dir = "#{File.dirname(__FILE__)}/../lib"
`#{ruby_path} -I#{samuel_dir} -e "#{requires} #{code}" 2>&1`
end
context "loading Samuel" do
setup do
start_test_server
@requires = ['samuel']
end
context "when no HTTP drivers are loaded" do
should "automatically load Net::HTTP" do
output = capture_output "puts defined?(Net::HTTP)"
assert_equal "constant", output.strip
end
should "successfully log a Net::HTTP request" do
output = capture_output "Net::HTTP.get(URI.parse('http://localhost:8000'))"
assert_match %r[HTTP request], output
end
should "not load HTTPClient" do
output = capture_output "puts 'good' unless defined?(HTTPClient)"
assert_equal "good", output.strip
end
end
context "when Net::HTTP is already loaded" do
setup { @requires.unshift('net/http') }
should "successfully log a Net::HTTP request" do
output = capture_output "Net::HTTP.get(URI.parse('http://localhost:8000'))"
assert_match %r[HTTP request], output
end
should "not load HTTPClient" do
output = capture_output "puts 'good' unless defined?(HTTPClient)"
assert_match "good", output.strip
end
end
context "when HTTPClient is already loaded" do
setup { @requires.unshift('rubygems', 'httpclient') }
should "successfully log an HTTPClient request" do
output = capture_output "HTTPClient.get('http://localhost:8000')"
assert_match %r[HTTP request], output
end
should "not load Net::HTTP" do
output = capture_output "puts 'good' unless defined?(Net::HTTP)"
assert_match "good", output.strip
end
end
end
end
|