diff --git a/middleman-core/lib/middleman-core/step_definitions/builder_steps.rb b/middleman-core/lib/middleman-core/step_definitions/builder_steps.rb index e52c57bd..b6b7b954 100644 --- a/middleman-core/lib/middleman-core/step_definitions/builder_steps.rb +++ b/middleman-core/lib/middleman-core/step_definitions/builder_steps.rb @@ -44,3 +44,8 @@ Given /^a successfully built app at "([^\"]*)" with flags "([^\"]*)"$/ do |path, step %Q{a built app at "#{path}" with flags "#{flags}"} step %Q{was successfully built} end + +# Provide this Aruba overload in case we're matching something with quotes in it +Then /^the file "([^"]*)" should contain '([^']*)'$/ do |file, partial_content| + check_file_content(file, partial_content, true) +end diff --git a/middleman-more/features/asset_hash.feature b/middleman-more/features/asset_hash.feature new file mode 100644 index 00000000..8012c891 --- /dev/null +++ b/middleman-more/features/asset_hash.feature @@ -0,0 +1,55 @@ +Feature: Assets get a file hash appended to their and references to them are updated + Scenario: Hashed-asset files are produced, and HTML, CSS, and JavaScript gets rewritten to reference the new files + Given a successfully built app at "asset-hash-app" + When I cd to "build" + Then the following files should exist: + | index.html | + | images/100px-1242c368.png | + | images/100px-5fd6fb90.jpg | + | images/100px-5fd6fb90.gif | + | javascripts/application-1d8d5276.js | + | stylesheets/site-92072d15.css | + | index.html | + | subdir/index.html | + | other/index.html | + And the following files should not exist: + | images/100px.png | + | images/100px.jpg | + | images/100px.gif | + | javascripts/application.js | + | stylesheets/site.css | + + And the file "javascripts/application-1d8d5276.js" should contain "img.src = '/images/100px-5fd6fb90.jpg'" + # TODO: This stylesheet should use the SASS "image-url" helper but can't because of https://github.com/middleman/middleman/issues/283 + And the file "stylesheets/site-92072d15.css" should contain 'background-image: url("/images/100px-5fd6fb90.jpg")' + And the file "index.html" should contain 'link href="stylesheets/site-92072d15.css"' + And the file "index.html" should contain 'script src="javascripts/application-1d8d5276.js"' + And the file "index.html" should contain 'img src="images/100px-5fd6fb90.jpg"' + And the file "subdir/index.html" should contain 'link href="../stylesheets/site-92072d15.css"' + And the file "subdir/index.html" should contain 'script src="../javascripts/application-1d8d5276.js"' + And the file "subdir/index.html" should contain 'img src="../images/100px-5fd6fb90.jpg"' + And the file "other/index.html" should contain 'link href="../stylesheets/site-92072d15.css"' + And the file "other/index.html" should contain 'script src="../javascripts/application-1d8d5276.js"' + And the file "other/index.html" should contain 'img src="../images/100px-5fd6fb90.jpg"' + + Scenario: Hashed assets work in preview server + Given the Server is running at "asset-hash-app" + When I go to "/" + Then I should see 'link href="stylesheets/site-92072d15.css"' + And I should see 'script src="javascripts/application-1d8d5276.js"' + And I should see 'img src="images/100px-5fd6fb90.jpg"' + When I go to "/subdir/" + Then I should see 'link href="../stylesheets/site-92072d15.css"' + And I should see 'script src="../javascripts/application-1d8d5276.js"' + And I should see 'img src="../images/100px-5fd6fb90.jpg"' + When I go to "/other/" + Then I should see 'link href="../stylesheets/site-92072d15.css"' + And I should see 'script src="../javascripts/application-1d8d5276.js"' + And I should see 'img src="../images/100px-5fd6fb90.jpg"' + When I go to "/javascripts/application-1d8d5276.js" + Then I should see "img.src = '/images/100px-5fd6fb90.jpg'" + When I go to "/stylesheets/site-92072d15.css" + Then I should see 'background-image: url("/images/100px-5fd6fb90.jpg")' + + Scenario: Enabling an asset host still produces hashed files and references + diff --git a/middleman-more/fixtures/asset-hash-app/config.rb b/middleman-more/fixtures/asset-hash-app/config.rb new file mode 100644 index 00000000..cee0d36f --- /dev/null +++ b/middleman-more/fixtures/asset-hash-app/config.rb @@ -0,0 +1,8 @@ + +activate :asset_hash + +activate :relative_assets + +activate :directory_indexes + +#page '/foo.html', :directory_index => false diff --git a/middleman-more/fixtures/asset-hash-app/source/images/100px.gif b/middleman-more/fixtures/asset-hash-app/source/images/100px.gif new file mode 100644 index 00000000..557d0278 Binary files /dev/null and b/middleman-more/fixtures/asset-hash-app/source/images/100px.gif differ diff --git a/middleman-more/fixtures/asset-hash-app/source/images/100px.jpg b/middleman-more/fixtures/asset-hash-app/source/images/100px.jpg new file mode 100644 index 00000000..557d0278 Binary files /dev/null and b/middleman-more/fixtures/asset-hash-app/source/images/100px.jpg differ diff --git a/middleman-more/fixtures/asset-hash-app/source/images/100px.png b/middleman-more/fixtures/asset-hash-app/source/images/100px.png new file mode 100644 index 00000000..a78f68b8 Binary files /dev/null and b/middleman-more/fixtures/asset-hash-app/source/images/100px.png differ diff --git a/middleman-more/fixtures/asset-hash-app/source/index.html.erb b/middleman-more/fixtures/asset-hash-app/source/index.html.erb new file mode 100644 index 00000000..14d71d26 --- /dev/null +++ b/middleman-more/fixtures/asset-hash-app/source/index.html.erb @@ -0,0 +1,308 @@ +<% content_for :head do %> +
images/100px.jpg
+/images/100px.jpg
+../images/100px.jpg
+../../images/100px.jpg
+../../../images/100px.jpg
+http://example.com/images/100px.jpg
+aimages/100px.jpga
+1images/100px.jpg1
+.images/100px.jpg.
+-images/100px.jpg-
+_images/100px.jpg_
+'images/100px.jpg'
+'/images/100px.jpg'
+'../images/100px.jpg'
+'../../images/100px.jpg'
+'../../../images/100px.jpg'
+'http://example.com/images/100px.jpg'
+'aimages/100px.jpga'
+'1images/100px.jpg1'
+'.images/100px.jpg.'
+'-images/100px.jpg-'
+'_images/100px.jpg_'
+"images/100px.jpg"
+"/images/100px.jpg"
+"../images/100px.jpg"
+"../../images/100px.jpg"
+"../../../images/100px.jpg"
+"http://example.com/images/100px.jpg"
+"aimages/100px.jpga"
+"1images/100px.jpg1"
+".images/100px.jpg."
+"-images/100px.jpg-"
+"_images/100px.jpg_"
+<img src=images/100px.jpg />
+<img src=/images/100px.jpg />
+<img src=../images/100px.jpg />
+<img src=../../images/100px.jpg />
+<img src=../../../images/100px.jpg />
+<img src=http://example.com/images/100px.jpg />
+<img src=aimages/100px.jpga />
+<img src=1images/100px.jpg1 />
+<img src=.images/100px.jpg. />
+<img src=-images/100px.jpg- />
+<img src=_images/100px.jpg_ />
+<img src='images/100px.jpg' />
+<img src='/images/100px.jpg' />
+<img src='../images/100px.jpg' />
+<img src='../../images/100px.jpg' />
+<img src='../../../images/100px.jpg' />
+<img src='http://example.com/images/100px.jpg' />
+<img src='aimages/100px.jpga' />
+<img src='1images/100px.jpg1' />
+<img src='.images/100px.jpg.' />
+<img src='-images/100px.jpg-' />
+<img src='_images/100px.jpg_' />
+<img src="images/100px.jpg" />
+<img src="/images/100px.jpg" />
+<img src="../images/100px.jpg" />
+<img src="../../images/100px.jpg" />
+<img src="../../../images/100px.jpg" />
+<img src="http://example.com/images/100px.jpg" />
+<img src="aimages/100px.jpga" />
+<img src="1images/100px.jpg1" />
+<img src=".images/100px.jpg." />
+<img src="-images/100px.jpg-" />
+<img src="_images/100px.jpg_" />
+background-image:url(images/100px.jpg);
+background-image:url(/images/100px.jpg);
+background-image:url(../images/100px.jpg);
+background-image:url(../../images/100px.jpg);
+background-image:url(../../../images/100px.jpg);
+background-image:url(http://example.com/images/100px.jpg);
+background-image:url(aimages/100px.jpga);
+background-image:url(1images/100px.jpg1);
+background-image:url(.images/100px.jpg.);
+background-image:url(-images/100px.jpg-);
+background-image:url(_images/100px.jpg_);
+background-image:url('images/100px.jpg');
+background-image:url('/images/100px.jpg');
+background-image:url('../images/100px.jpg');
+background-image:url('../../images/100px.jpg');
+background-image:url('../../../images/100px.jpg');
+background-image:url('http://example.com/images/100px.jpg');
+background-image:url('aimages/100px.jpga');
+background-image:url('1images/100px.jpg1');
+background-image:url('.images/100px.jpg.');
+background-image:url('-images/100px.jpg-');
+background-image:url('_images/100px.jpg_');
+background-image:url("images/100px.jpg");
+background-image:url("/images/100px.jpg");
+background-image:url("../images/100px.jpg");
+background-image:url("../../images/100px.jpg");
+background-image:url("../../../images/100px.jpg");
+background-image:url("http://example.com/images/100px.jpg");
+background-image:url("aimages/100px.jpga");
+background-image:url("1images/100px.jpg1");
+background-image:url(".images/100px.jpg.");
+background-image:url("-images/100px.jpg-");
+background-image:url("_images/100px.jpg_");
+images/100px.png
+/images/100px.png
+../images/100px.png
+../../images/100px.png
+../../../images/100px.png
+http://example.com/images/100px.png
+aimages/100px.pnga
+1images/100px.png1
+.images/100px.png.
+-images/100px.png-
+_images/100px.png_
+'images/100px.png'
+'/images/100px.png'
+'../images/100px.png'
+'../../images/100px.png'
+'../../../images/100px.png'
+'http://example.com/images/100px.png'
+'aimages/100px.pnga'
+'1images/100px.png1'
+'.images/100px.png.'
+'-images/100px.png-'
+'_images/100px.png_'
+"images/100px.png"
+"/images/100px.png"
+"../images/100px.png"
+"../../images/100px.png"
+"../../../images/100px.png"
+"http://example.com/images/100px.png"
+"aimages/100px.pnga"
+"1images/100px.png1"
+".images/100px.png."
+"-images/100px.png-"
+"_images/100px.png_"
+<img src=images/100px.png />
+<img src=/images/100px.png />
+<img src=../images/100px.png />
+<img src=../../images/100px.png />
+<img src=../../../images/100px.png />
+<img src=http://example.com/images/100px.png />
+<img src=aimages/100px.pnga />
+<img src=1images/100px.png1 />
+<img src=.images/100px.png. />
+<img src=-images/100px.png- />
+<img src=_images/100px.png_ />
+<img src='images/100px.png' />
+<img src='/images/100px.png' />
+<img src='../images/100px.png' />
+<img src='../../images/100px.png' />
+<img src='../../../images/100px.png' />
+<img src='http://example.com/images/100px.png' />
+<img src='aimages/100px.pnga' />
+<img src='1images/100px.png1' />
+<img src='.images/100px.png.' />
+<img src='-images/100px.png-' />
+<img src='_images/100px.png_' />
+<img src="images/100px.png" />
+<img src="/images/100px.png" />
+<img src="../images/100px.png" />
+<img src="../../images/100px.png" />
+<img src="../../../images/100px.png" />
+<img src="http://example.com/images/100px.png" />
+<img src="aimages/100px.pnga" />
+<img src="1images/100px.png1" />
+<img src=".images/100px.png." />
+<img src="-images/100px.png-" />
+<img src="_images/100px.png_" />
+background-image:url(images/100px.png);
+background-image:url(/images/100px.png);
+background-image:url(../images/100px.png);
+background-image:url(../../images/100px.png);
+background-image:url(../../../images/100px.png);
+background-image:url(http://example.com/images/100px.png);
+background-image:url(aimages/100px.pnga);
+background-image:url(1images/100px.png1);
+background-image:url(.images/100px.png.);
+background-image:url(-images/100px.png-);
+background-image:url(_images/100px.png_);
+background-image:url('images/100px.png');
+background-image:url('/images/100px.png');
+background-image:url('../images/100px.png');
+background-image:url('../../images/100px.png');
+background-image:url('../../../images/100px.png');
+background-image:url('http://example.com/images/100px.png');
+background-image:url('aimages/100px.pnga');
+background-image:url('1images/100px.png1');
+background-image:url('.images/100px.png.');
+background-image:url('-images/100px.png-');
+background-image:url('_images/100px.png_');
+background-image:url("images/100px.png");
+background-image:url("/images/100px.png");
+background-image:url("../images/100px.png");
+background-image:url("../../images/100px.png");
+background-image:url("../../../images/100px.png");
+background-image:url("http://example.com/images/100px.png");
+background-image:url("aimages/100px.pnga");
+background-image:url("1images/100px.png1");
+background-image:url(".images/100px.png.");
+background-image:url("-images/100px.png-");
+background-image:url("_images/100px.png_");
+images/100px.gif
+/images/100px.gif
+../images/100px.gif
+../../images/100px.gif
+../../../images/100px.gif
+http://example.com/images/100px.gif
+aimages/100px.gifa
+1images/100px.gif1
+.images/100px.gif.
+-images/100px.gif-
+_images/100px.gif_
+'images/100px.gif'
+'/images/100px.gif'
+'../images/100px.gif'
+'../../images/100px.gif'
+'../../../images/100px.gif'
+'http://example.com/images/100px.gif'
+'aimages/100px.gifa'
+'1images/100px.gif1'
+'.images/100px.gif.'
+'-images/100px.gif-'
+'_images/100px.gif_'
+"images/100px.gif"
+"/images/100px.gif"
+"../images/100px.gif"
+"../../images/100px.gif"
+"../../../images/100px.gif"
+"http://example.com/images/100px.gif"
+"aimages/100px.gifa"
+"1images/100px.gif1"
+".images/100px.gif."
+"-images/100px.gif-"
+"_images/100px.gif_"
+<img src=images/100px.gif />
+<img src=/images/100px.gif />
+<img src=../images/100px.gif />
+<img src=../../images/100px.gif />
+<img src=../../../images/100px.gif />
+<img src=http://example.com/images/100px.gif />
+<img src=aimages/100px.gifa />
+<img src=1images/100px.gif1 />
+<img src=.images/100px.gif. />
+<img src=-images/100px.gif- />
+<img src=_images/100px.gif_ />
+<img src='images/100px.gif' />
+<img src='/images/100px.gif' />
+<img src='../images/100px.gif' />
+<img src='../../images/100px.gif' />
+<img src='../../../images/100px.gif' />
+<img src='http://example.com/images/100px.gif' />
+<img src='aimages/100px.gifa' />
+<img src='1images/100px.gif1' />
+<img src='.images/100px.gif.' />
+<img src='-images/100px.gif-' />
+<img src='_images/100px.gif_' />
+<img src="images/100px.gif" />
+<img src="/images/100px.gif" />
+<img src="../images/100px.gif" />
+<img src="../../images/100px.gif" />
+<img src="../../../images/100px.gif" />
+<img src="http://example.com/images/100px.gif" />
+<img src="aimages/100px.gifa" />
+<img src="1images/100px.gif1" />
+<img src=".images/100px.gif." />
+<img src="-images/100px.gif-" />
+<img src="_images/100px.gif_" />
+background-image:url(images/100px.gif);
+background-image:url(/images/100px.gif);
+background-image:url(../images/100px.gif);
+background-image:url(../../images/100px.gif);
+background-image:url(../../../images/100px.gif);
+background-image:url(http://example.com/images/100px.gif);
+background-image:url(aimages/100px.gifa);
+background-image:url(1images/100px.gif1);
+background-image:url(.images/100px.gif.);
+background-image:url(-images/100px.gif-);
+background-image:url(_images/100px.gif_);
+background-image:url('images/100px.gif');
+background-image:url('/images/100px.gif');
+background-image:url('../images/100px.gif');
+background-image:url('../../images/100px.gif');
+background-image:url('../../../images/100px.gif');
+background-image:url('http://example.com/images/100px.gif');
+background-image:url('aimages/100px.gifa');
+background-image:url('1images/100px.gif1');
+background-image:url('.images/100px.gif.');
+background-image:url('-images/100px.gif-');
+background-image:url('_images/100px.gif_');
+background-image:url("images/100px.gif");
+background-image:url("/images/100px.gif");
+background-image:url("../images/100px.gif");
+background-image:url("../../images/100px.gif");
+background-image:url("../../../images/100px.gif");
+background-image:url("http://example.com/images/100px.gif");
+background-image:url("aimages/100px.gifa");
+background-image:url("1images/100px.gif1");
+background-image:url(".images/100px.gif.");
+background-image:url("-images/100px.gif-");
+background-image:url("_images/100px.gif_");
+<%= image_path('100px.jpg') %>
+ +images/100px.jpg
+/images/100px.jpg
+../images/100px.jpg
+../../images/100px.jpg
+../../../images/100px.jpg
+http://example.com/images/100px.jpg
+aimages/100px.jpga
+1images/100px.jpg1
+.images/100px.jpg.
+-images/100px.jpg-
+_images/100px.jpg_
+'images/100px.jpg'
+'/images/100px.jpg'
+'../images/100px.jpg'
+'../../images/100px.jpg'
+'../../../images/100px.jpg'
+'http://example.com/images/100px.jpg'
+'aimages/100px.jpga'
+'1images/100px.jpg1'
+'.images/100px.jpg.'
+'-images/100px.jpg-'
+'_images/100px.jpg_'
+"images/100px.jpg"
+"/images/100px.jpg"
+"../images/100px.jpg"
+"../../images/100px.jpg"
+"../../../images/100px.jpg"
+"http://example.com/images/100px.jpg"
+"aimages/100px.jpga"
+"1images/100px.jpg1"
+".images/100px.jpg."
+"-images/100px.jpg-"
+"_images/100px.jpg_"
+<img src=images/100px.jpg />
+<img src=/images/100px.jpg />
+<img src=../images/100px.jpg />
+<img src=../../images/100px.jpg />
+<img src=../../../images/100px.jpg />
+<img src=http://example.com/images/100px.jpg />
+<img src=aimages/100px.jpga />
+<img src=1images/100px.jpg1 />
+<img src=.images/100px.jpg. />
+<img src=-images/100px.jpg- />
+<img src=_images/100px.jpg_ />
+<img src='images/100px.jpg' />
+<img src='/images/100px.jpg' />
+<img src='../images/100px.jpg' />
+<img src='../../images/100px.jpg' />
+<img src='../../../images/100px.jpg' />
+<img src='http://example.com/images/100px.jpg' />
+<img src='aimages/100px.jpga' />
+<img src='1images/100px.jpg1' />
+<img src='.images/100px.jpg.' />
+<img src='-images/100px.jpg-' />
+<img src='_images/100px.jpg_' />
+<img src="images/100px.jpg" />
+<img src="/images/100px.jpg" />
+<img src="../images/100px.jpg" />
+<img src="../../images/100px.jpg" />
+<img src="../../../images/100px.jpg" />
+<img src="http://example.com/images/100px.jpg" />
+<img src="aimages/100px.jpga" />
+<img src="1images/100px.jpg1" />
+<img src=".images/100px.jpg." />
+<img src="-images/100px.jpg-" />
+<img src="_images/100px.jpg_" />
+background-image:url(images/100px.jpg);
+background-image:url(/images/100px.jpg);
+background-image:url(../images/100px.jpg);
+background-image:url(../../images/100px.jpg);
+background-image:url(../../../images/100px.jpg);
+background-image:url(http://example.com/images/100px.jpg);
+background-image:url(aimages/100px.jpga);
+background-image:url(1images/100px.jpg1);
+background-image:url(.images/100px.jpg.);
+background-image:url(-images/100px.jpg-);
+background-image:url(_images/100px.jpg_);
+background-image:url('images/100px.jpg');
+background-image:url('/images/100px.jpg');
+background-image:url('../images/100px.jpg');
+background-image:url('../../images/100px.jpg');
+background-image:url('../../../images/100px.jpg');
+background-image:url('http://example.com/images/100px.jpg');
+background-image:url('aimages/100px.jpga');
+background-image:url('1images/100px.jpg1');
+background-image:url('.images/100px.jpg.');
+background-image:url('-images/100px.jpg-');
+background-image:url('_images/100px.jpg_');
+background-image:url("images/100px.jpg");
+background-image:url("/images/100px.jpg");
+background-image:url("../images/100px.jpg");
+background-image:url("../../images/100px.jpg");
+background-image:url("../../../images/100px.jpg");
+background-image:url("http://example.com/images/100px.jpg");
+background-image:url("aimages/100px.jpga");
+background-image:url("1images/100px.jpg1");
+background-image:url(".images/100px.jpg.");
+background-image:url("-images/100px.jpg-");
+background-image:url("_images/100px.jpg_");
+images/100px.png
+/images/100px.png
+../images/100px.png
+../../images/100px.png
+../../../images/100px.png
+http://example.com/images/100px.png
+aimages/100px.pnga
+1images/100px.png1
+.images/100px.png.
+-images/100px.png-
+_images/100px.png_
+'images/100px.png'
+'/images/100px.png'
+'../images/100px.png'
+'../../images/100px.png'
+'../../../images/100px.png'
+'http://example.com/images/100px.png'
+'aimages/100px.pnga'
+'1images/100px.png1'
+'.images/100px.png.'
+'-images/100px.png-'
+'_images/100px.png_'
+"images/100px.png"
+"/images/100px.png"
+"../images/100px.png"
+"../../images/100px.png"
+"../../../images/100px.png"
+"http://example.com/images/100px.png"
+"aimages/100px.pnga"
+"1images/100px.png1"
+".images/100px.png."
+"-images/100px.png-"
+"_images/100px.png_"
+<img src=images/100px.png />
+<img src=/images/100px.png />
+<img src=../images/100px.png />
+<img src=../../images/100px.png />
+<img src=../../../images/100px.png />
+<img src=http://example.com/images/100px.png />
+<img src=aimages/100px.pnga />
+<img src=1images/100px.png1 />
+<img src=.images/100px.png. />
+<img src=-images/100px.png- />
+<img src=_images/100px.png_ />
+<img src='images/100px.png' />
+<img src='/images/100px.png' />
+<img src='../images/100px.png' />
+<img src='../../images/100px.png' />
+<img src='../../../images/100px.png' />
+<img src='http://example.com/images/100px.png' />
+<img src='aimages/100px.pnga' />
+<img src='1images/100px.png1' />
+<img src='.images/100px.png.' />
+<img src='-images/100px.png-' />
+<img src='_images/100px.png_' />
+<img src="images/100px.png" />
+<img src="/images/100px.png" />
+<img src="../images/100px.png" />
+<img src="../../images/100px.png" />
+<img src="../../../images/100px.png" />
+<img src="http://example.com/images/100px.png" />
+<img src="aimages/100px.pnga" />
+<img src="1images/100px.png1" />
+<img src=".images/100px.png." />
+<img src="-images/100px.png-" />
+<img src="_images/100px.png_" />
+background-image:url(images/100px.png);
+background-image:url(/images/100px.png);
+background-image:url(../images/100px.png);
+background-image:url(../../images/100px.png);
+background-image:url(../../../images/100px.png);
+background-image:url(http://example.com/images/100px.png);
+background-image:url(aimages/100px.pnga);
+background-image:url(1images/100px.png1);
+background-image:url(.images/100px.png.);
+background-image:url(-images/100px.png-);
+background-image:url(_images/100px.png_);
+background-image:url('images/100px.png');
+background-image:url('/images/100px.png');
+background-image:url('../images/100px.png');
+background-image:url('../../images/100px.png');
+background-image:url('../../../images/100px.png');
+background-image:url('http://example.com/images/100px.png');
+background-image:url('aimages/100px.pnga');
+background-image:url('1images/100px.png1');
+background-image:url('.images/100px.png.');
+background-image:url('-images/100px.png-');
+background-image:url('_images/100px.png_');
+background-image:url("images/100px.png");
+background-image:url("/images/100px.png");
+background-image:url("../images/100px.png");
+background-image:url("../../images/100px.png");
+background-image:url("../../../images/100px.png");
+background-image:url("http://example.com/images/100px.png");
+background-image:url("aimages/100px.pnga");
+background-image:url("1images/100px.png1");
+background-image:url(".images/100px.png.");
+background-image:url("-images/100px.png-");
+background-image:url("_images/100px.png_");
+images/100px.gif
+/images/100px.gif
+../images/100px.gif
+../../images/100px.gif
+../../../images/100px.gif
+http://example.com/images/100px.gif
+aimages/100px.gifa
+1images/100px.gif1
+.images/100px.gif.
+-images/100px.gif-
+_images/100px.gif_
+'images/100px.gif'
+'/images/100px.gif'
+'../images/100px.gif'
+'../../images/100px.gif'
+'../../../images/100px.gif'
+'http://example.com/images/100px.gif'
+'aimages/100px.gifa'
+'1images/100px.gif1'
+'.images/100px.gif.'
+'-images/100px.gif-'
+'_images/100px.gif_'
+"images/100px.gif"
+"/images/100px.gif"
+"../images/100px.gif"
+"../../images/100px.gif"
+"../../../images/100px.gif"
+"http://example.com/images/100px.gif"
+"aimages/100px.gifa"
+"1images/100px.gif1"
+".images/100px.gif."
+"-images/100px.gif-"
+"_images/100px.gif_"
+<img src=images/100px.gif />
+<img src=/images/100px.gif />
+<img src=../images/100px.gif />
+<img src=../../images/100px.gif />
+<img src=../../../images/100px.gif />
+<img src=http://example.com/images/100px.gif />
+<img src=aimages/100px.gifa />
+<img src=1images/100px.gif1 />
+<img src=.images/100px.gif. />
+<img src=-images/100px.gif- />
+<img src=_images/100px.gif_ />
+<img src='images/100px.gif' />
+<img src='/images/100px.gif' />
+<img src='../images/100px.gif' />
+<img src='../../images/100px.gif' />
+<img src='../../../images/100px.gif' />
+<img src='http://example.com/images/100px.gif' />
+<img src='aimages/100px.gifa' />
+<img src='1images/100px.gif1' />
+<img src='.images/100px.gif.' />
+<img src='-images/100px.gif-' />
+<img src='_images/100px.gif_' />
+<img src="images/100px.gif" />
+<img src="/images/100px.gif" />
+<img src="../images/100px.gif" />
+<img src="../../images/100px.gif" />
+<img src="../../../images/100px.gif" />
+<img src="http://example.com/images/100px.gif" />
+<img src="aimages/100px.gifa" />
+<img src="1images/100px.gif1" />
+<img src=".images/100px.gif." />
+<img src="-images/100px.gif-" />
+<img src="_images/100px.gif_" />
+background-image:url(images/100px.gif);
+background-image:url(/images/100px.gif);
+background-image:url(../images/100px.gif);
+background-image:url(../../images/100px.gif);
+background-image:url(../../../images/100px.gif);
+background-image:url(http://example.com/images/100px.gif);
+background-image:url(aimages/100px.gifa);
+background-image:url(1images/100px.gif1);
+background-image:url(.images/100px.gif.);
+background-image:url(-images/100px.gif-);
+background-image:url(_images/100px.gif_);
+background-image:url('images/100px.gif');
+background-image:url('/images/100px.gif');
+background-image:url('../images/100px.gif');
+background-image:url('../../images/100px.gif');
+background-image:url('../../../images/100px.gif');
+background-image:url('http://example.com/images/100px.gif');
+background-image:url('aimages/100px.gifa');
+background-image:url('1images/100px.gif1');
+background-image:url('.images/100px.gif.');
+background-image:url('-images/100px.gif-');
+background-image:url('_images/100px.gif_');
+background-image:url("images/100px.gif");
+background-image:url("/images/100px.gif");
+background-image:url("../images/100px.gif");
+background-image:url("../../images/100px.gif");
+background-image:url("../../../images/100px.gif");
+background-image:url("http://example.com/images/100px.gif");
+background-image:url("aimages/100px.gifa");
+background-image:url("1images/100px.gif1");
+background-image:url(".images/100px.gif.");
+background-image:url("-images/100px.gif-");
+background-image:url("_images/100px.gif_");
+", "
"], ["background-image:url(", ");
"]].each do |outer| +# [["",""], ["'", "'"], ['"','"']].each do |inner| +# [["", ""], ["/", ""], ["../", ""], ["../../", ""], ["../../../", ""], ["http://example.com/", ""], ["a","a"], ["1","1"], [".", "."], ["-","-"], ["_","_"]].each do |path_parts| +# name = 'images/100px.' +# puts outer[0] + inner[0] + path_parts[0] + name + ext + path_parts[1] + inner[1] + outer[1] +# end +# end +# end +# puts "