summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-11-08 15:38:33 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-11-08 15:38:33 +0000
commit742bbbb01b310440a7672fabddd016226d20bee7 (patch)
tree735522e7c5325517e91b5bbb3932d1596a4ec2b7
parent8222432c9db1432995538a5d355d014c6fd1a0e9 (diff)
* test/webrick: Examine log and use assert_join_threads.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48318 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--test/webrick/test_httpauth.rb18
-rw-r--r--test/webrick/test_httpresponse.rb6
-rw-r--r--test/webrick/test_httpserver.rb13
-rw-r--r--test/webrick/test_server.rb30
-rw-r--r--test/webrick/utils.rb22
6 files changed, 65 insertions, 28 deletions
diff --git a/ChangeLog b/ChangeLog
index 8d946cc..18d64f1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Sun Nov 9 00:37:44 2014 Tanaka Akira <akr@fsij.org>
+
+ * test/webrick: Examine log and use assert_join_threads.
+
Fri Nov 7 00:00:12 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
* template/unicode_norm_gen.tmpl: expand kompatible_table so that
diff --git a/test/webrick/test_httpauth.rb b/test/webrick/test_httpauth.rb
index 6668e1b..b0cb8a0 100644
--- a/test/webrick/test_httpauth.rb
+++ b/test/webrick/test_httpauth.rb
@@ -27,7 +27,7 @@ class TestWEBrickHTTPAuth < Test::Unit::TestCase
end
def test_basic_auth2
- TestWEBrick.start_httpserver{|server, addr, port, log|
+ log = TestWEBrick.start_httpserver{|server, addr, port, log|
realm = "WEBrick's realm"
path = "/basic_auth2"
@@ -61,6 +61,11 @@ class TestWEBrickHTTPAuth < Test::Unit::TestCase
http.request(g){|res| assert_not_equal("hoge", res.body, log.call)}
}
}
+ pat = /ERROR Basic WEBrick's realm: webrick: password unmatch\./
+ assert_match(pat, log); log.sub!(pat, '')
+ pat = /ERROR WEBrick::HTTPStatus::Unauthorized/
+ assert_match(pat, log); log.sub!(pat, '')
+ assert_not_match(/ERROR/, log)
end
def test_basic_auth3
@@ -92,7 +97,7 @@ class TestWEBrickHTTPAuth < Test::Unit::TestCase
)/x
def test_digest_auth
- TestWEBrick.start_httpserver{|server, addr, port, log|
+ log = TestWEBrick.start_httpserver{|server, addr, port, log|
realm = "WEBrick's realm"
path = "/digest_auth"
@@ -143,6 +148,15 @@ class TestWEBrickHTTPAuth < Test::Unit::TestCase
end
}
}
+ pat = /ERROR Digest WEBrick's realm: no credentials in the request\./
+ assert_match(pat, log); log.sub!(pat, '')
+ pat = /ERROR WEBrick::HTTPStatus::Unauthorized/
+ assert_match(pat, log); log.sub!(pat, '')
+ pat = /ERROR Digest WEBrick's realm: webrick: digest unmatch\./
+ assert_match(pat, log); log.sub!(pat, '')
+ pat = /ERROR WEBrick::HTTPStatus::Unauthorized/
+ assert_match(pat, log); log.sub!(pat, '')
+ assert_not_match(/ERROR/, log)
end
private
diff --git a/test/webrick/test_httpresponse.rb b/test/webrick/test_httpresponse.rb
index 1f85a92..c916ed5 100644
--- a/test/webrick/test_httpresponse.rb
+++ b/test/webrick/test_httpresponse.rb
@@ -63,6 +63,7 @@ module WEBrick
assert_equal 'hello', r.read
}
}
+ assert_equal 0, logger.messages.length
end
def test_send_body_string
@@ -75,6 +76,7 @@ module WEBrick
assert_equal 'hello', r.read
}
+ assert_equal 0, logger.messages.length
end
def test_send_body_string_io
@@ -87,6 +89,7 @@ module WEBrick
assert_equal 'hello', r.read
}
+ assert_equal 0, logger.messages.length
end
def test_send_body_io_chunked
@@ -108,6 +111,7 @@ module WEBrick
assert_equal "5\r\nhello\r\n0\r\n\r\n", r.read
}
}
+ assert_equal 0, logger.messages.length
end
def test_send_body_string_chunked
@@ -123,6 +127,7 @@ module WEBrick
r.binmode
assert_equal "5\r\nhello\r\n0\r\n\r\n", r.read
}
+ assert_equal 0, logger.messages.length
end
def test_send_body_string_io_chunked
@@ -138,6 +143,7 @@ module WEBrick
r.binmode
assert_equal "5\r\nhello\r\n0\r\n\r\n", r.read
}
+ assert_equal 0, logger.messages.length
end
end
end
diff --git a/test/webrick/test_httpserver.rb b/test/webrick/test_httpserver.rb
index 3e19a56..70ad302 100644
--- a/test/webrick/test_httpserver.rb
+++ b/test/webrick/test_httpserver.rb
@@ -4,9 +4,16 @@ require "webrick"
require_relative "utils"
class TestWEBrickHTTPServer < Test::Unit::TestCase
+ empty_log = Object.new
+ def empty_log.<<(str)
+ assert_equal('', str)
+ self
+ end
+ NoLog = WEBrick::Log.new(empty_log, WEBrick::BasicLog::WARN)
+
def test_mount
httpd = WEBrick::HTTPServer.new(
- :Logger => WEBrick::Log.new(TestWEBrick::NullWriter),
+ :Logger => NoLog,
:DoNotListen=>true
)
httpd.mount("/", :Root)
@@ -75,7 +82,7 @@ class TestWEBrickHTTPServer < Test::Unit::TestCase
def httpd(addr, port, host, ali)
config ={
- :Logger => WEBrick::Log.new(TestWEBrick::NullWriter),
+ :Logger => NoLog,
:DoNotListen => true,
:BindAddress => addr,
:Port => port,
@@ -229,7 +236,7 @@ class TestWEBrickHTTPServer < Test::Unit::TestCase
:BindAddress => addr,
:Port => port,
:DoNotListen => true,
- :Logger => WEBrick::Log.new(TestWEBrick::NullWriter),
+ :Logger => NoLog,
:AccessLog => [],
:RequestCallback => Proc.new{|req, res| requested1 += 1 },
}
diff --git a/test/webrick/test_server.rb b/test/webrick/test_server.rb
index 3f849a4..40afdb0 100644
--- a/test/webrick/test_server.rb
+++ b/test/webrick/test_server.rb
@@ -25,27 +25,29 @@ class TestWEBrickServer < Test::Unit::TestCase
def test_start_exception
stopped = 0
- config = {
- :StopCallback => Proc.new{ stopped += 1 },
- }
-
- assert_raises(SignalException) do
- TestWEBrick.start_server(Echo, config) { |server, addr, port, log|
- listener = server.listeners.first
- def listener.accept
- raise SignalException, 'SIGTERM' # simulate signal in main thread
- end
+ log = StringIO.new('')
+ logger = WEBrick::Log.new(log, WEBrick::BasicLog::WARN)
- Thread.pass while server.status != :Running
+ assert_raises(SignalException) do
+ listener = Object.new
+ def listener.to_io # IO.select invokes #to_io.
+ raise SignalException, 'SIGTERM' # simulate signal in main thread
+ end
- TCPSocket.open(addr, port) { |sock| sock << "foo\n" }
+ server = WEBrick::HTTPServer.new({
+ :BindAddress => "127.0.0.1", :Port => 0,
+ :StopCallback => Proc.new{ stopped += 1 },
+ :Logger => logger,
+ })
+ server.listeners[0].close
+ server.listeners[0] = listener
- Thread.pass until server.status == :Stop
- }
+ server.start
end
assert_equal(stopped, 1)
+ assert_match(/FATAL SignalException: SIGTERM/, log.string)
end
def test_callbacks
diff --git a/test/webrick/utils.rb b/test/webrick/utils.rb
index f1b24cc..667ae73 100644
--- a/test/webrick/utils.rb
+++ b/test/webrick/utils.rb
@@ -26,6 +26,9 @@ module TestWEBrick
RubyBin << " \"-I#{File.dirname(EnvUtil.rubybin)}/.ext/common\""
RubyBin << " \"-I#{File.dirname(EnvUtil.rubybin)}/.ext/#{RUBY_PLATFORM}\""
+ include Test::Unit::Assertions
+ extend Test::Unit::Assertions
+
module_function
def start_server(klass, config={}, &block)
@@ -41,15 +44,16 @@ module TestWEBrick
:Logger => WEBrick::Log.new(logger),
:AccessLog => [[logger, ""]]
}.update(config))
- begin
- server_thread = server.start
- addr = server.listeners[0].addr
- block.yield([server, addr[3], addr[1], log])
- ensure
- server.shutdown
-
- server_thread.join
- end
+ server_thread = server.start
+ addr = server.listeners[0].addr
+ client_thread = Thread.new {
+ begin
+ block.yield([server, addr[3], addr[1], log])
+ ensure
+ server.shutdown
+ end
+ }
+ assert_join_threads([client_thread, server_thread])
log_string
end