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');
}