From dd548edd72821f1015b210d2680c4e36ce2ff435 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Mon, 29 Jun 2015 22:25:29 -0700 Subject: [PATCH] less: better error for unknown @import also, fix coffee/less self-test --- packages/less/plugin/compile-less.js | 16 +++++++++------- tools/compiler-plugin.js | 3 +++ tools/isopack.js | 6 +++--- .../tests/apps/coffee-and-less/.meteor/packages | 1 + tools/tests/batch-plugins.js | 5 +++++ 5 files changed, 21 insertions(+), 10 deletions(-) diff --git a/packages/less/plugin/compile-less.js b/packages/less/plugin/compile-less.js index 2b3469ab37..7bf65d7731 100644 --- a/packages/less/plugin/compile-less.js +++ b/packages/less/plugin/compile-less.js @@ -2,7 +2,6 @@ var fs = Npm.require('fs'); var path = Npm.require('path'); var less = Npm.require('less'); var util = Npm.require('util'); -var path = Npm.require('path'); var Future = Npm.require('fibers/future'); var LRU = Npm.require('lru-cache'); @@ -222,21 +221,24 @@ _.extend(MeteorImportLessFileManager.prototype, { } var currentPackagePrefix = packageMatch[1]; + var resolvedFilename; if (filename[0] === '/') { // Map `/foo/bar.less` onto `{thispackage}/foo/bar.less` - filename = currentPackagePrefix + filename; - } else if (filename[0] !== '{') { - filename = path.join(currentDirectory, filename); + resolvedFilename = currentPackagePrefix + filename; + } else if (filename[0] === '{') { + resolvedFilename = filename; + } else { + resolvedFilename = path.join(currentDirectory, filename); } - if (! _.has(self.filesByAbsoluteImportPath, filename)) { + if (! _.has(self.filesByAbsoluteImportPath, resolvedFilename)) { // XXX BBP better error handling? cb({type: "File", message: "Unknown import: " + filename}); return; } cb(null, { - contents: self.filesByAbsoluteImportPath[filename] + contents: self.filesByAbsoluteImportPath[resolvedFilename] .getContentsAsBuffer().toString('utf8'), - filename: filename + filename: resolvedFilename }); return; } diff --git a/tools/compiler-plugin.js b/tools/compiler-plugin.js index fa7dd3a171..5d515f783f 100644 --- a/tools/compiler-plugin.js +++ b/tools/compiler-plugin.js @@ -135,6 +135,9 @@ _.extend(InputFile.prototype, { getSourceHash: function () { return this._resourceSlot.inputResource.hash; }, + getExtension: function () { + return this._resourceSlot.inputResource.extension; + }, /** * @summary Returns a list of symbols declared as exports in this target. The diff --git a/tools/isopack.js b/tools/isopack.js index 690b653d56..03b68a3ff6 100644 --- a/tools/isopack.js +++ b/tools/isopack.js @@ -706,12 +706,12 @@ _.extend(Isopack.prototype, { // If a package is depending on a package that provides a minifier plugin, // the minifier plugin is not used anywhere. _doNotCallThisDirectly_registerMinifier: function (options, factory) { - var badUsedExtenssion = _.find(options.extensions, function (ext) { + var badUsedExtension = _.find(options.extensions, function (ext) { return ! _.contains(['js', 'css'], ext); }); - if (badUsedExtenssion !== undefined) { - buildmessage.error(badUsedExtenssion + ': Minifiers are only allowed to register "css" or "js" extensions.'); + if (badUsedExtension !== undefined) { + buildmessage.error(badUsedExtension + ': Minifiers are only allowed to register "css" or "js" extensions.'); return; } diff --git a/tools/tests/apps/coffee-and-less/.meteor/packages b/tools/tests/apps/coffee-and-less/.meteor/packages index 7f5b5883c1..54d0b6c074 100644 --- a/tools/tests/apps/coffee-and-less/.meteor/packages +++ b/tools/tests/apps/coffee-and-less/.meteor/packages @@ -7,3 +7,4 @@ meteor-platform coffeescript less local-pack +standard-minifiers diff --git a/tools/tests/batch-plugins.js b/tools/tests/batch-plugins.js index 7ec0b2884e..8f73b4f4e3 100644 --- a/tools/tests/batch-plugins.js +++ b/tools/tests/batch-plugins.js @@ -142,6 +142,11 @@ selftest.define("compiler plugin caching - coffee/less", function () { run.match('Coffeescript X is 2 Y is edited FromPackage is 5'); checkCSS(expectedBorderStyles); + s.write('bad-import.main.less', '@import "/foo/bad.less";\n'); + run.match('Errors prevented startup'); + run.match('bad-import.main.less:1: Unknown import: /foo/bad.less'); + run.match('Waiting for file change'); + run.stop(); });