More URI encoding and decoding. Addresses #1406
This commit is contained in:
parent
17eb54b9dc
commit
29693e4533
|
@ -9,7 +9,6 @@ Feature: Builder
|
|||
| static.html |
|
||||
| services/index.html |
|
||||
| stylesheets/static.css |
|
||||
| spaces in file.html |
|
||||
| images/blank.gif |
|
||||
| images/Read me (example).txt |
|
||||
| images/Child folder/regular_file(example).txt |
|
||||
|
@ -27,7 +26,6 @@ Feature: Builder
|
|||
And the file "static.html" should contain "Static, no code!"
|
||||
And the file "services/index.html" should contain "Services"
|
||||
And the file "stylesheets/static.css" should contain "body"
|
||||
And the file "spaces in file.html" should contain "spaces"
|
||||
|
||||
Scenario: Build glob
|
||||
Given a successfully built app at "glob-app" with flags "--glob '*.css'"
|
||||
|
|
|
@ -25,8 +25,7 @@ Feature: Directory Index
|
|||
And the file "a_folder/needs_index/index.html" should contain "Indexable"
|
||||
And the file "leave_me_alone.html" should contain "Stay away"
|
||||
And the file "regular/index.html" should contain "Regular"
|
||||
And the file "evil spaces/index.html" should contain "Spaces"
|
||||
|
||||
And the file "evil spaces/index.html" should contain "Filled with Evil Spaces"
|
||||
|
||||
Scenario: Preview normal file
|
||||
Given the Server is running at "indexable-app"
|
||||
|
@ -35,8 +34,8 @@ Feature: Directory Index
|
|||
|
||||
Scenario: Preview normal file with spaces in filename
|
||||
Given the Server is running at "indexable-app"
|
||||
When I go to "/evil%20spaces/"
|
||||
Then I should see "Spaces"
|
||||
When I go to "/evil spaces/"
|
||||
Then I should see "Filled with Evil Spaces"
|
||||
|
||||
Scenario: Preview normal file subdirectory
|
||||
Given the Server is running at "indexable-app"
|
||||
|
|
|
@ -1 +1 @@
|
|||
Spaces
|
||||
Filled with Evil Spaces
|
||||
|
|
|
@ -1 +1 @@
|
|||
<%= "spaces" %>
|
||||
<%= "correctly found spaces in file data" %>
|
|
@ -40,7 +40,7 @@ module Middleman
|
|||
def initialize(store, path, source_file=nil)
|
||||
@store = store
|
||||
@app = @store.app
|
||||
@path = path.gsub(' ', '%20') # handle spaces in filenames
|
||||
@path = path
|
||||
@source_file = source_file
|
||||
@destination_path = @path
|
||||
|
||||
|
|
|
@ -72,13 +72,13 @@ end
|
|||
|
||||
When /^I go to "([^\"]*)"$/ do |url|
|
||||
in_current_dir do
|
||||
@browser.get(URI.escape(url))
|
||||
@browser.get(URI.encode(url))
|
||||
end
|
||||
end
|
||||
|
||||
Then /^going to "([^\"]*)" should not raise an exception$/ do |url|
|
||||
in_current_dir do
|
||||
expect{ @browser.get(URI.escape(url)) }.to_not raise_exception
|
||||
expect{ @browser.get(URI.encode(url)) }.to_not raise_exception
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -68,7 +68,7 @@ module Middleman
|
|||
# @return [String]
|
||||
def normalize_path(path)
|
||||
# The tr call works around a bug in Ruby's Unicode handling
|
||||
path.sub(%r{^/}, '').tr('', '')
|
||||
URI.decode(path).sub(%r{^/}, '').tr('', '')
|
||||
end
|
||||
|
||||
# This is a separate method from normalize_path in case we
|
||||
|
@ -144,7 +144,7 @@ module Middleman
|
|||
path_or_resource.url
|
||||
else
|
||||
path_or_resource.dup
|
||||
end.gsub(' ', '%20')
|
||||
end
|
||||
|
||||
# Try to parse URL
|
||||
begin
|
||||
|
@ -182,7 +182,7 @@ module Middleman
|
|||
end
|
||||
|
||||
if resource
|
||||
uri.path = relative_path_from_resource(this_resource, resource_url, effective_relative)
|
||||
uri.path = URI.encode(relative_path_from_resource(this_resource, resource_url, effective_relative))
|
||||
else
|
||||
# If they explicitly asked for relative links but we can't find a resource...
|
||||
raise "No resource exists at #{url}" if relative
|
||||
|
|
Loading…
Reference in a new issue