diff --git a/lib/fingerprint.js b/lib/fingerprint.js index b53a423..70faa51 100644 --- a/lib/fingerprint.js +++ b/lib/fingerprint.js @@ -61,7 +61,11 @@ function Fingerprint(inputNode, options) { Fingerprint.prototype = Object.create(Filter.prototype); Fingerprint.prototype.constructor = Fingerprint; -Fingerprint.prototype.canProcessFile = function (relativePath) { +Fingerprint.prototype.canFingerprintFile = function (relativePath) { + if (this.customHash === null) { + return false; + } + for (var i = 0; i < this.exclude.matchers.length; i++) { if (relativePath.indexOf(this.exclude.matchers[i].pattern) !== -1) { return false; @@ -72,51 +76,40 @@ Fingerprint.prototype.canProcessFile = function (relativePath) { return false; } - return Filter.prototype.getDestFilePath.apply(this, arguments) != null; + return true; }; Fingerprint.prototype.baseDir = function () { return path.resolve(__dirname, '..'); }; -Fingerprint.prototype.processFile = function (srcDir, destDir, relativePath) { - var file = fs.readFileSync(srcDir + '/' + relativePath); - var self = this; - - return Promise.resolve().then(function () { - var outputPath = self.getDestFilePath(relativePath); - fs.writeFileSync(destDir + '/' + outputPath, file); - }); -}; - -Fingerprint.prototype.getDestFilePath = function (relativePath) { - var destFilePath = Filter.prototype.getDestFilePath.apply(this, arguments); - if (destFilePath) { - if (this.assetMap[relativePath]) { - return this.assetMap[relativePath]; - } - if (this.customHash === null) { - return this.assetMap[relativePath] = destFilePath; - } +Fingerprint.prototype.processString = function (contents, relativePath) { + if (this.assetMap[relativePath]) { + return contents; + } + if (this.canFingerprintFile(relativePath)) { var tmpPath = path.join(this.inputPaths[0], relativePath); - var file = fs.readFileSync(tmpPath, { encoding: null }); var hash; if (this.customHash) { hash = this.customHash; } else { - hash = this.hashFn(file, tmpPath); + hash = this.hashFn(contents, tmpPath); } var ext = path.extname(relativePath); var newPath = relativePath.replace(new RegExp(ext+'$'), '-' + hash + ext); this.assetMap[relativePath] = newPath; - - return newPath; + } else { + this.assetMap[relativePath] = relativePath; } - return null; + return contents; +}; + +Fingerprint.prototype.getDestFilePath = function (relativePath) { + return this.assetMap[relativePath] || Filter.prototype.getDestFilePath.apply(this, arguments); }; Fingerprint.prototype.writeAssetMap = function (destDir) { diff --git a/tests/filter-tests.js b/tests/filter-tests.js index 0dd0f60..709cb51 100644 --- a/tests/filter-tests.js +++ b/tests/filter-tests.js @@ -5,10 +5,25 @@ var assert = require('assert'); var walkSync = require('walk-sync'); var broccoli = require('broccoli'); var MergeTrees = require('broccoli-merge-trees'); -var AssetRev = require('../lib/asset-rev'); +var _AssetRev = require('../lib/asset-rev'); var sinon = require('sinon'); var builder; +// NOTE: don't persist broccoli-persistent-filter's cache during tests. +// Because many fixture dirs share the same file structure, and tests are setup +// in such a way that the parent of the fixture dir isn't passed to the filter, +// having one test populate the cache sometimes breaks it for subsequent tests +// that need to process a file with the same name and contents in a sibilng +// fixture directory. Besides, that the persistent cache works correctly, +// should be tested in broccoli-persistent-filter, not here. +function AssetRev(inputTree, options) { + if (options.persist === undefined) { + options.persist = false; + } + + return new _AssetRev(inputTree, options); +} + function confirmOutput(actualPath, expectedPath) { var actualFiles = walkSync(actualPath); var expectedFiles = walkSync(expectedPath); diff --git a/tests/fixtures/basic/output/images/icons/favicon-9243e67fccd0c5e08a3d2c158af6500d.png b/tests/fixtures/basic/output/images/icons/favicon-63c59ffade880971af3567086267e69a.png similarity index 100% rename from tests/fixtures/basic/output/images/icons/favicon-9243e67fccd0c5e08a3d2c158af6500d.png rename to tests/fixtures/basic/output/images/icons/favicon-63c59ffade880971af3567086267e69a.png diff --git a/tests/fixtures/basic/output/images/sample-1f6b78f1b4667adc7e397f7bf94041ab.png b/tests/fixtures/basic/output/images/sample-b7caf246e908cd00d8011f370e3dd992.png similarity index 100% rename from tests/fixtures/basic/output/images/sample-1f6b78f1b4667adc7e397f7bf94041ab.png rename to tests/fixtures/basic/output/images/sample-b7caf246e908cd00d8011f370e3dd992.png diff --git a/tests/fixtures/basic/output/index.html b/tests/fixtures/basic/output/index.html index b7e05ba..dec659b 100644 --- a/tests/fixtures/basic/output/index.html +++ b/tests/fixtures/basic/output/index.html @@ -6,7 +6,7 @@ Application - + diff --git a/tests/fixtures/basic/output/styles-daff78e51cc77ea97e75a7fd9c5f6fae.css b/tests/fixtures/basic/output/styles-daff78e51cc77ea97e75a7fd9c5f6fae.css index a40610c..3a1cd8e 100644 --- a/tests/fixtures/basic/output/styles-daff78e51cc77ea97e75a7fd9c5f6fae.css +++ b/tests/fixtures/basic/output/styles-daff78e51cc77ea97e75a7fd9c5f6fae.css @@ -1,11 +1,11 @@ .sample-img { width: 50px; height: 50px; - background-image: url(images/sample-1f6b78f1b4667adc7e397f7bf94041ab.png); + background-image: url(images/sample-b7caf246e908cd00d8011f370e3dd992.png); } .sample-img2 { width: 50px; height: 50px; - background-image: url('images/sample-1f6b78f1b4667adc7e397f7bf94041ab.png'); + background-image: url('images/sample-b7caf246e908cd00d8011f370e3dd992.png'); } diff --git a/tests/fixtures/customHash-function/output/images/icons/favicon-aa86317c1876afeaced38d576edc58ab20d31a60.png b/tests/fixtures/customHash-function/output/images/icons/favicon-5f44ed4e0d18a4212b41dafb9f1bf22b558d0a78.png similarity index 100% rename from tests/fixtures/customHash-function/output/images/icons/favicon-aa86317c1876afeaced38d576edc58ab20d31a60.png rename to tests/fixtures/customHash-function/output/images/icons/favicon-5f44ed4e0d18a4212b41dafb9f1bf22b558d0a78.png diff --git a/tests/fixtures/customHash-function/output/images/sample-2c57d0d404fa94fd22023242d1f36faaaa7ad792.png b/tests/fixtures/customHash-function/output/images/sample-a3eba6f18695684fa6df5d80f157d82277e93172.png similarity index 100% rename from tests/fixtures/customHash-function/output/images/sample-2c57d0d404fa94fd22023242d1f36faaaa7ad792.png rename to tests/fixtures/customHash-function/output/images/sample-a3eba6f18695684fa6df5d80f157d82277e93172.png diff --git a/tests/fixtures/customHash-function/output/index.html b/tests/fixtures/customHash-function/output/index.html index 545cc1c..b25d145 100644 --- a/tests/fixtures/customHash-function/output/index.html +++ b/tests/fixtures/customHash-function/output/index.html @@ -6,7 +6,7 @@ Application - + diff --git a/tests/fixtures/customHash-function/output/styles-6c275657b4c8042d38718e75d8356f627bd58fe8.css b/tests/fixtures/customHash-function/output/styles-6c275657b4c8042d38718e75d8356f627bd58fe8.css index d1a5cdc..a3835a4 100644 --- a/tests/fixtures/customHash-function/output/styles-6c275657b4c8042d38718e75d8356f627bd58fe8.css +++ b/tests/fixtures/customHash-function/output/styles-6c275657b4c8042d38718e75d8356f627bd58fe8.css @@ -1,11 +1,11 @@ .sample-img { width: 50px; height: 50px; - background-image: url(images/sample-2c57d0d404fa94fd22023242d1f36faaaa7ad792.png); + background-image: url(images/sample-a3eba6f18695684fa6df5d80f157d82277e93172.png); } .sample-img2 { width: 50px; height: 50px; - background-image: url('images/sample-2c57d0d404fa94fd22023242d1f36faaaa7ad792.png'); + background-image: url('images/sample-a3eba6f18695684fa6df5d80f157d82277e93172.png'); } diff --git a/tests/fixtures/exclude/output/images/icons/favicon-9243e67fccd0c5e08a3d2c158af6500d.png b/tests/fixtures/exclude/output/images/icons/favicon-63c59ffade880971af3567086267e69a.png similarity index 100% rename from tests/fixtures/exclude/output/images/icons/favicon-9243e67fccd0c5e08a3d2c158af6500d.png rename to tests/fixtures/exclude/output/images/icons/favicon-63c59ffade880971af3567086267e69a.png diff --git a/tests/fixtures/exclude/output/images/sample-1f6b78f1b4667adc7e397f7bf94041ab.png b/tests/fixtures/exclude/output/images/sample-b7caf246e908cd00d8011f370e3dd992.png similarity index 100% rename from tests/fixtures/exclude/output/images/sample-1f6b78f1b4667adc7e397f7bf94041ab.png rename to tests/fixtures/exclude/output/images/sample-b7caf246e908cd00d8011f370e3dd992.png diff --git a/tests/fixtures/exclude/output/index.html b/tests/fixtures/exclude/output/index.html index b7e05ba..dec659b 100644 --- a/tests/fixtures/exclude/output/index.html +++ b/tests/fixtures/exclude/output/index.html @@ -6,7 +6,7 @@ Application - + diff --git a/tests/fixtures/exclude/output/styles-daff78e51cc77ea97e75a7fd9c5f6fae.css b/tests/fixtures/exclude/output/styles-daff78e51cc77ea97e75a7fd9c5f6fae.css index a40610c..3a1cd8e 100644 --- a/tests/fixtures/exclude/output/styles-daff78e51cc77ea97e75a7fd9c5f6fae.css +++ b/tests/fixtures/exclude/output/styles-daff78e51cc77ea97e75a7fd9c5f6fae.css @@ -1,11 +1,11 @@ .sample-img { width: 50px; height: 50px; - background-image: url(images/sample-1f6b78f1b4667adc7e397f7bf94041ab.png); + background-image: url(images/sample-b7caf246e908cd00d8011f370e3dd992.png); } .sample-img2 { width: 50px; height: 50px; - background-image: url('images/sample-1f6b78f1b4667adc7e397f7bf94041ab.png'); + background-image: url('images/sample-b7caf246e908cd00d8011f370e3dd992.png'); } diff --git a/tests/fixtures/existing-manifest/output/images/icons/favicon-9243e67fccd0c5e08a3d2c158af6500d.png b/tests/fixtures/existing-manifest/output/images/icons/favicon-63c59ffade880971af3567086267e69a.png similarity index 100% rename from tests/fixtures/existing-manifest/output/images/icons/favicon-9243e67fccd0c5e08a3d2c158af6500d.png rename to tests/fixtures/existing-manifest/output/images/icons/favicon-63c59ffade880971af3567086267e69a.png diff --git a/tests/fixtures/existing-manifest/output/images/sample-1f6b78f1b4667adc7e397f7bf94041ab.png b/tests/fixtures/existing-manifest/output/images/sample-b7caf246e908cd00d8011f370e3dd992.png similarity index 100% rename from tests/fixtures/existing-manifest/output/images/sample-1f6b78f1b4667adc7e397f7bf94041ab.png rename to tests/fixtures/existing-manifest/output/images/sample-b7caf246e908cd00d8011f370e3dd992.png diff --git a/tests/fixtures/existing-manifest/output/index.html b/tests/fixtures/existing-manifest/output/index.html index b7e05ba..dec659b 100644 --- a/tests/fixtures/existing-manifest/output/index.html +++ b/tests/fixtures/existing-manifest/output/index.html @@ -6,7 +6,7 @@ Application - + diff --git a/tests/fixtures/existing-manifest/output/styles-daff78e51cc77ea97e75a7fd9c5f6fae.css b/tests/fixtures/existing-manifest/output/styles-daff78e51cc77ea97e75a7fd9c5f6fae.css index a40610c..3a1cd8e 100644 --- a/tests/fixtures/existing-manifest/output/styles-daff78e51cc77ea97e75a7fd9c5f6fae.css +++ b/tests/fixtures/existing-manifest/output/styles-daff78e51cc77ea97e75a7fd9c5f6fae.css @@ -1,11 +1,11 @@ .sample-img { width: 50px; height: 50px; - background-image: url(images/sample-1f6b78f1b4667adc7e397f7bf94041ab.png); + background-image: url(images/sample-b7caf246e908cd00d8011f370e3dd992.png); } .sample-img2 { width: 50px; height: 50px; - background-image: url('images/sample-1f6b78f1b4667adc7e397f7bf94041ab.png'); + background-image: url('images/sample-b7caf246e908cd00d8011f370e3dd992.png'); } diff --git a/tests/fixtures/extensions/output/images/icons/favicon-9243e67fccd0c5e08a3d2c158af6500d.png b/tests/fixtures/extensions/output/images/icons/favicon-63c59ffade880971af3567086267e69a.png similarity index 100% rename from tests/fixtures/extensions/output/images/icons/favicon-9243e67fccd0c5e08a3d2c158af6500d.png rename to tests/fixtures/extensions/output/images/icons/favicon-63c59ffade880971af3567086267e69a.png diff --git a/tests/fixtures/extensions/output/images/sample-1f6b78f1b4667adc7e397f7bf94041ab.png b/tests/fixtures/extensions/output/images/sample-b7caf246e908cd00d8011f370e3dd992.png similarity index 100% rename from tests/fixtures/extensions/output/images/sample-1f6b78f1b4667adc7e397f7bf94041ab.png rename to tests/fixtures/extensions/output/images/sample-b7caf246e908cd00d8011f370e3dd992.png diff --git a/tests/fixtures/extensions/output/index.html b/tests/fixtures/extensions/output/index.html index ae29ca9..2dc5809 100644 --- a/tests/fixtures/extensions/output/index.html +++ b/tests/fixtures/extensions/output/index.html @@ -6,7 +6,7 @@ Application - + diff --git a/tests/fixtures/extensions/output/styles-107bca768dc01cba6b2c0d102c977586.css b/tests/fixtures/extensions/output/styles-107bca768dc01cba6b2c0d102c977586.css index 73bca52..89f4799 100644 --- a/tests/fixtures/extensions/output/styles-107bca768dc01cba6b2c0d102c977586.css +++ b/tests/fixtures/extensions/output/styles-107bca768dc01cba6b2c0d102c977586.css @@ -1,13 +1,13 @@ .sample-img { width: 50px; height: 50px; - background-image: url(images/sample-1f6b78f1b4667adc7e397f7bf94041ab.png); + background-image: url(images/sample-b7caf246e908cd00d8011f370e3dd992.png); } .sample-img2 { width: 50px; height: 50px; - background-image: url('images/sample-1f6b78f1b4667adc7e397f7bf94041ab.png'); + background-image: url('images/sample-b7caf246e908cd00d8011f370e3dd992.png'); } @font-face { diff --git a/tests/fixtures/manifest/output/images/icons/favicon-9243e67fccd0c5e08a3d2c158af6500d.png b/tests/fixtures/manifest/output/images/icons/favicon-63c59ffade880971af3567086267e69a.png similarity index 100% rename from tests/fixtures/manifest/output/images/icons/favicon-9243e67fccd0c5e08a3d2c158af6500d.png rename to tests/fixtures/manifest/output/images/icons/favicon-63c59ffade880971af3567086267e69a.png diff --git a/tests/fixtures/manifest/output/images/sample-1f6b78f1b4667adc7e397f7bf94041ab.png b/tests/fixtures/manifest/output/images/sample-b7caf246e908cd00d8011f370e3dd992.png similarity index 100% rename from tests/fixtures/manifest/output/images/sample-1f6b78f1b4667adc7e397f7bf94041ab.png rename to tests/fixtures/manifest/output/images/sample-b7caf246e908cd00d8011f370e3dd992.png diff --git a/tests/fixtures/manifest/output/index.html b/tests/fixtures/manifest/output/index.html index b7e05ba..dec659b 100644 --- a/tests/fixtures/manifest/output/index.html +++ b/tests/fixtures/manifest/output/index.html @@ -6,7 +6,7 @@ Application - + diff --git a/tests/fixtures/manifest/output/styles-daff78e51cc77ea97e75a7fd9c5f6fae.css b/tests/fixtures/manifest/output/styles-daff78e51cc77ea97e75a7fd9c5f6fae.css index a40610c..3a1cd8e 100644 --- a/tests/fixtures/manifest/output/styles-daff78e51cc77ea97e75a7fd9c5f6fae.css +++ b/tests/fixtures/manifest/output/styles-daff78e51cc77ea97e75a7fd9c5f6fae.css @@ -1,11 +1,11 @@ .sample-img { width: 50px; height: 50px; - background-image: url(images/sample-1f6b78f1b4667adc7e397f7bf94041ab.png); + background-image: url(images/sample-b7caf246e908cd00d8011f370e3dd992.png); } .sample-img2 { width: 50px; height: 50px; - background-image: url('images/sample-1f6b78f1b4667adc7e397f7bf94041ab.png'); + background-image: url('images/sample-b7caf246e908cd00d8011f370e3dd992.png'); } diff --git a/tests/fixtures/prepend/output/images/icons/favicon-9243e67fccd0c5e08a3d2c158af6500d.png b/tests/fixtures/prepend/output/images/icons/favicon-63c59ffade880971af3567086267e69a.png similarity index 100% rename from tests/fixtures/prepend/output/images/icons/favicon-9243e67fccd0c5e08a3d2c158af6500d.png rename to tests/fixtures/prepend/output/images/icons/favicon-63c59ffade880971af3567086267e69a.png diff --git a/tests/fixtures/prepend/output/images/sample-1f6b78f1b4667adc7e397f7bf94041ab.png b/tests/fixtures/prepend/output/images/sample-b7caf246e908cd00d8011f370e3dd992.png similarity index 100% rename from tests/fixtures/prepend/output/images/sample-1f6b78f1b4667adc7e397f7bf94041ab.png rename to tests/fixtures/prepend/output/images/sample-b7caf246e908cd00d8011f370e3dd992.png diff --git a/tests/fixtures/prepend/output/index.html b/tests/fixtures/prepend/output/index.html index c5e94d7..f3096b2 100644 --- a/tests/fixtures/prepend/output/index.html +++ b/tests/fixtures/prepend/output/index.html @@ -6,7 +6,7 @@ Application - + diff --git a/tests/fixtures/prepend/output/styles-daff78e51cc77ea97e75a7fd9c5f6fae.css b/tests/fixtures/prepend/output/styles-daff78e51cc77ea97e75a7fd9c5f6fae.css index 01a0988..c2da002 100644 --- a/tests/fixtures/prepend/output/styles-daff78e51cc77ea97e75a7fd9c5f6fae.css +++ b/tests/fixtures/prepend/output/styles-daff78e51cc77ea97e75a7fd9c5f6fae.css @@ -1,11 +1,11 @@ .sample-img { width: 50px; height: 50px; - background-image: url(https://foobar.cloudfront.net/images/sample-1f6b78f1b4667adc7e397f7bf94041ab.png); + background-image: url(https://foobar.cloudfront.net/images/sample-b7caf246e908cd00d8011f370e3dd992.png); } .sample-img2 { width: 50px; height: 50px; - background-image: url('https://foobar.cloudfront.net/images/sample-1f6b78f1b4667adc7e397f7bf94041ab.png'); + background-image: url('https://foobar.cloudfront.net/images/sample-b7caf246e908cd00d8011f370e3dd992.png'); }