mirror of
https://github.com/jekyll/jekyll.git
synced 2026-02-05 20:25:00 -05:00
return correct file in dir if dir has same name as file (#6569)
Merge pull request 6569
This commit is contained in:
committed by
jekyllbot
parent
c7c31e014c
commit
368fa1f723
1
test/fixtures/webrick/bar.html
vendored
Normal file
1
test/fixtures/webrick/bar.html
vendored
Normal file
@@ -0,0 +1 @@
|
||||
Content of bar.html
|
||||
1
test/fixtures/webrick/bar/baz.html
vendored
Normal file
1
test/fixtures/webrick/bar/baz.html
vendored
Normal file
@@ -0,0 +1 @@
|
||||
Content of baz.html
|
||||
@@ -44,6 +44,8 @@ require "shoulda"
|
||||
|
||||
include Jekyll
|
||||
|
||||
require "jekyll/commands/serve/servlet"
|
||||
|
||||
# Report with color.
|
||||
Minitest::Reporters.use! [
|
||||
Minitest::Reporters::DefaultReporter.new(
|
||||
@@ -194,3 +196,55 @@ class JekyllUnitTest < Minitest::Test
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class FakeLogger
|
||||
def <<(str); end
|
||||
end
|
||||
|
||||
module TestWEBrick
|
||||
|
||||
module_function
|
||||
|
||||
def mount_server(&block)
|
||||
server = WEBrick::HTTPServer.new(config)
|
||||
|
||||
begin
|
||||
server.mount("/", Jekyll::Commands::Serve::Servlet, document_root,
|
||||
document_root_options)
|
||||
|
||||
server.start
|
||||
addr = server.listeners[0].addr
|
||||
block.yield([server, addr[3], addr[1]])
|
||||
rescue StandardError => e
|
||||
raise e
|
||||
ensure
|
||||
server.shutdown
|
||||
sleep 0.1 until server.status == :Stop
|
||||
end
|
||||
end
|
||||
|
||||
def config
|
||||
logger = FakeLogger.new
|
||||
{
|
||||
:BindAddress => "127.0.0.1", :Port => 0,
|
||||
:ShutdownSocketWithoutClose => true,
|
||||
:ServerType => Thread,
|
||||
:Logger => WEBrick::Log.new(logger),
|
||||
:AccessLog => [[logger, ""]],
|
||||
:JekyllOptions => {},
|
||||
}
|
||||
end
|
||||
|
||||
def document_root
|
||||
"#{File.dirname(__FILE__)}/fixtures/webrick"
|
||||
end
|
||||
|
||||
def document_root_options
|
||||
WEBrick::Config::FileHandler.merge({
|
||||
:FancyIndexing => true,
|
||||
:NondisclosureName => [
|
||||
".ht*", "~*",
|
||||
],
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
38
test/test_commands_serve_servlet.rb
Normal file
38
test/test_commands_serve_servlet.rb
Normal file
@@ -0,0 +1,38 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "webrick"
|
||||
require "helper"
|
||||
require "net/http"
|
||||
|
||||
class TestCommandsServeServlet < JekyllUnitTest
|
||||
def get(path)
|
||||
TestWEBrick.mount_server do |_server, addr, port|
|
||||
http = Net::HTTP.new(addr, port)
|
||||
req = Net::HTTP::Get.new(path)
|
||||
|
||||
http.request(req) { |response| yield(response) }
|
||||
end
|
||||
end
|
||||
|
||||
context "with a directory and file with the same name" do
|
||||
should "find that file" do
|
||||
get("/bar/") do |response|
|
||||
assert_equal("200", response.code)
|
||||
assert_equal("Content of bar.html", response.body.strip)
|
||||
end
|
||||
end
|
||||
|
||||
should "find file in directory" do
|
||||
get("/bar/baz") do |response|
|
||||
assert_equal("200", response.code)
|
||||
assert_equal("Content of baz.html", response.body.strip)
|
||||
end
|
||||
end
|
||||
|
||||
should "return 404 for non-existing files" do
|
||||
get("/bar/missing") do |response|
|
||||
assert_equal("404", response.code)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user