From: Siguršur Gušbrandsson Date: Mon, 16 Feb 2015 21:35:19 +0000 (+0000) Subject: Fixes #463 - relative remote @import URLs. X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=e9a667ccbf7cf0e9f98296c3d861e233366edc4d;p=clean-css.git Fixes #463 - relative remote @import URLs. Testcase: cleancss -d --root http://jeffwalker.com/wp-content/themes/salient-child/ http://jeffwalker.com/wp-content/themes/salient-child/style.css?ver=4.1.1 --- diff --git a/lib/imports/inliner.js b/lib/imports/inliner.js index e7babd73..ddb57d33 100644 --- a/lib/imports/inliner.js +++ b/lib/imports/inliner.js @@ -264,7 +264,7 @@ function inlineRemoteResource(importedFile, mediaQuery, context) { var newContext = override(context, { isRemote: true, - relativeTo: parsedUrl.protocol + '//' + parsedUrl.host + relativeTo: parsedUrl.protocol + '//' + parsedUrl.host + parsedUrl.pathname }); importFrom(importedData, newContext); diff --git a/test/protocol-imports-test.js b/test/protocol-imports-test.js index 5d5ba764..1c20a627 100644 --- a/test/protocol-imports-test.js +++ b/test/protocol-imports-test.js @@ -424,5 +424,29 @@ vows.describe('protocol imports').addBatch({ assert.isFalse(this.reqMocks.isDone()); nock.cleanAll(); } + }, + 'of a remote file that imports relative stylesheets': { + topic: function() { + var source = '@import url(http://127.0.0.1/test/folder/remote.css);'; + this.reqMocks = nock('http://127.0.0.1') + .get('/test/folder/remote.css') + .reply(200, '@import url(../otherfolder/remote.css);@import url(deepersubfolder/fonts.css);') + .get('/test/otherfolder/remote.css') + .reply(200, 'div{padding:0}') + .get('/test/folder/deepersubfolder/fonts.css') + .reply(200, 'a{color:red}'); + + new CleanCSS().minify(source, this.callback); + }, + 'should not raise errors': function (error, minified) { + assert.isEmpty(minified.errors); + }, + 'should process @import': function (error, minified) { + assert.equal(minified.styles, 'div{padding:0}a{color:red}'); + }, + teardown: function() { + assert.isTrue(this.reqMocks.isDone()); + nock.cleanAll(); + } } }).export(module);