broccolijs / broccoli-funnel

MIT License
66 stars 37 forks source link

Funnel with missing inputNode fails if include and/or exclude are set #105

Closed chriskrycho closed 5 years ago

chriskrycho commented 5 years ago

Creating a Funnel with an inputNode pointing to a directory that doesn't exist on the file system, and with the include or exclude options are set, causes processFilters to run whether or not the inputPath derived from that inputNode exists on the system:

https://github.com/broccolijs/broccoli-funnel/blob/bfea8d4c79e624b02a248efdfa345e5055fbc0ea/index.js#L258-L260

This in turn always invokes walkSync.entries with the specified inputPath:

https://github.com/broccolijs/broccoli-funnel/blob/bfea8d4c79e624b02a248efdfa345e5055fbc0ea/index.js#L320-L324

The result is an error like broccoliBuilderErrorStack: Error: ENOENT: no such file or directory, scandir '<bad path>'.

full stack trace ``` ================================================================================= ENV Summary: TIME: Tue Jan 22 2019 13:04:24 GMT-0700 (MST) TITLE: ember ARGV: - /Users/chris/.nodenv/versions/8.11.4/bin/node - /Users/chris/.nodenv/versions/8.11.4/bin/ember - s EXEC_PATH: /Users/chris/.nodenv/versions/8.11.4/bin/node TMPDIR: /var/folders/l2/3r6d4lps0w7gnxf95w0kgfxw0000gn/T SHELL: /usr/local/bin/fish PATH: - /Users/chris/.nodenv/versions/8.11.4/bin - /usr/local/Cellar/nodenv/1.2.0/libexec - /Users/chris/.nodenv/shims - /Users/chris/bin - /Users/chris/.cargo/bin - /usr/local/miniconda3/bin - /usr/local/bin - /usr/bin - /bin - /usr/sbin - /sbin - /usr/local/share/dotnet - ~/.dotnet/tools - /usr/local/MacGPG2/bin PLATFORM: darwin x64 FREEMEM: 131371008 TOTALMEM: 17179869184 UPTIME: 597434 LOADAVG: 6.083984375,3.72802734375,2.65869140625 CPUS: - Intel(R) Core(TM) i7-4980HQ CPU @ 2.80GHz - 2800 - Intel(R) Core(TM) i7-4980HQ CPU @ 2.80GHz - 2800 - Intel(R) Core(TM) i7-4980HQ CPU @ 2.80GHz - 2800 - Intel(R) Core(TM) i7-4980HQ CPU @ 2.80GHz - 2800 - Intel(R) Core(TM) i7-4980HQ CPU @ 2.80GHz - 2800 - Intel(R) Core(TM) i7-4980HQ CPU @ 2.80GHz - 2800 - Intel(R) Core(TM) i7-4980HQ CPU @ 2.80GHz - 2800 - Intel(R) Core(TM) i7-4980HQ CPU @ 2.80GHz - 2800 ENDIANNESS: LE VERSIONS: - ares: 1.10.1-DEV - cldr: 32.0 - http_parser: 2.8.0 - icu: 60.1 - modules: 57 - napi: 3 - nghttp2: 1.32.0 - node: 8.11.4 - openssl: 1.0.2p - tz: 2017c - unicode: 10.0 - uv: 1.19.1 - v8: 6.2.414.54 - zlib: 1.2.11 ERROR Summary: - broccoliBuilderErrorStack: Error: ENOENT: no such file or directory, scandir '/Users/chris/dev/oss/ember/freestyle/addon/styles/app/styles/' at Object.fs.readdirSync (fs.js:904:18) at _walkSync (/Users/chris/dev/oss/ember/freestyle/node_modules/walk-sync/index.js:74:18) at Function.entries (/Users/chris/dev/oss/ember/freestyle/node_modules/walk-sync/index.js:50:10) at Funnel.processFilters (/Users/chris/dev/oss/ember/freestyle/node_modules/broccoli-funnel/index.js:320:26) at Funnel.build (/Users/chris/dev/oss/ember/freestyle/node_modules/broccoli-funnel/index.js:258:10) at resolve (/Users/chris/dev/olo/web-client/node_modules/broccoli/lib/wrappers/transform-node.js:29:35) at new Promise () at TransformNodeWrapper.build (/Users/chris/dev/olo/web-client/node_modules/broccoli/lib/wrappers/transform-node.js:21:12) at Promise.resolve.then.then.then (/Users/chris/dev/olo/web-client/node_modules/broccoli/lib/builder.js:111:28) at at process._tickDomainCallback (internal/process/next_tick.js:228:7) - codeFrame: ENOENT: no such file or directory, scandir '/Users/chris/dev/oss/ember/freestyle/addon/styles/app/styles/' - errorMessage: ENOENT: no such file or directory, scandir '/Users/chris/dev/oss/ember/freestyle/addon/styles/app/styles/' at Funnel -~- created here: -~- at Funnel.Plugin (/Users/chris/dev/oss/ember/freestyle/node_modules/broccoli-plugin/index.js:7:31) at new Funnel (/Users/chris/dev/oss/ember/freestyle/node_modules/broccoli-funnel/index.js:58:10) at SASSPlugin.toTree (/Users/chris/dev/oss/ember/freestyle/node_modules/ember-cli-sass/index.js:42:16) at /Users/chris/dev/olo/web-client/node_modules/ember-cli-preprocess-registry/preprocessors.js:180:26 at Array.forEach () at processPlugins (/Users/chris/dev/olo/web-client/node_modules/ember-cli-preprocess-registry/preprocessors.js:178:11) at module.exports.preprocessCss (/Users/chris/dev/olo/web-client/node_modules/ember-cli-preprocess-registry/preprocessors.js:148:10) at Class.compileStyles (/Users/chris/dev/olo/web-client/node_modules/ember-cli/lib/models/addon.js:981:33) at Class.treeForAddon (/Users/chris/dev/olo/web-client/node_modules/ember-cli/lib/models/addon.js:860:27) at Class._treeFor (/Users/chris/dev/olo/web-client/node_modules/ember-cli/lib/models/addon.js:616:33) at Class.treeFor (/Users/chris/dev/olo/web-client/node_modules/ember-cli/lib/models/addon.js:576:21) at project.addons.reduce (/Users/chris/dev/olo/web-client/node_modules/ember-cli/lib/broccoli/ember-app.js:699:26) at Array.reduce () at EmberApp._addonTreesFor (/Users/chris/dev/olo/web-client/node_modules/ember-cli/lib/broccoli/ember-app.js:697:32) at EmberApp._addonBundles (/Users/chris/dev/olo/web-client/node_modules/ember-cli/lib/broccoli/ember-app.js:1160:31) at EmberApp.createAddonTree (/Users/chris/dev/olo/web-client/node_modules/ember-cli/lib/broccoli/ember-app.js:1193:29) at EmberApp.addonTree (/Users/chris/dev/olo/web-client/node_modules/ember-cli/lib/broccoli/ember-app.js:1208:36) at EmberApp.getExternalTree (/Users/chris/dev/olo/web-client/node_modules/ember-cli/lib/broccoli/ember-app.js:1264:25) at EmberApp.toArray (/Users/chris/dev/olo/web-client/node_modules/ember-cli/lib/broccoli/ember-app.js:1619:12) at EmberApp.toTree (/Users/chris/dev/olo/web-client/node_modules/ember-cli/lib/broccoli/ember-app.js:1747:22) at module.exports (/Users/chris/dev/olo/web-client/ember-cli-build.js:88:14) at Builder.readBuildFile (/Users/chris/dev/olo/web-client/node_modules/ember-cli/lib/models/builder.js:52:14) -~- (end) -~- - errorType: Build Error - location: - column: [undefined] - file: [undefined] - line: [undefined] - treeDir: [undefined] - message: ENOENT: no such file or directory, scandir '/Users/chris/dev/oss/ember/freestyle/addon/styles/app/styles/' at Funnel -~- created here: -~- at Funnel.Plugin (/Users/chris/dev/oss/ember/freestyle/node_modules/broccoli-plugin/index.js:7:31) at new Funnel (/Users/chris/dev/oss/ember/freestyle/node_modules/broccoli-funnel/index.js:58:10) at SASSPlugin.toTree (/Users/chris/dev/oss/ember/freestyle/node_modules/ember-cli-sass/index.js:42:16) at /Users/chris/dev/olo/web-client/node_modules/ember-cli-preprocess-registry/preprocessors.js:180:26 at Array.forEach () at processPlugins (/Users/chris/dev/olo/web-client/node_modules/ember-cli-preprocess-registry/preprocessors.js:178:11) at module.exports.preprocessCss (/Users/chris/dev/olo/web-client/node_modules/ember-cli-preprocess-registry/preprocessors.js:148:10) at Class.compileStyles (/Users/chris/dev/olo/web-client/node_modules/ember-cli/lib/models/addon.js:981:33) at Class.treeForAddon (/Users/chris/dev/olo/web-client/node_modules/ember-cli/lib/models/addon.js:860:27) at Class._treeFor (/Users/chris/dev/olo/web-client/node_modules/ember-cli/lib/models/addon.js:616:33) at Class.treeFor (/Users/chris/dev/olo/web-client/node_modules/ember-cli/lib/models/addon.js:576:21) at project.addons.reduce (/Users/chris/dev/olo/web-client/node_modules/ember-cli/lib/broccoli/ember-app.js:699:26) at Array.reduce () at EmberApp._addonTreesFor (/Users/chris/dev/olo/web-client/node_modules/ember-cli/lib/broccoli/ember-app.js:697:32) at EmberApp._addonBundles (/Users/chris/dev/olo/web-client/node_modules/ember-cli/lib/broccoli/ember-app.js:1160:31) at EmberApp.createAddonTree (/Users/chris/dev/olo/web-client/node_modules/ember-cli/lib/broccoli/ember-app.js:1193:29) at EmberApp.addonTree (/Users/chris/dev/olo/web-client/node_modules/ember-cli/lib/broccoli/ember-app.js:1208:36) at EmberApp.getExternalTree (/Users/chris/dev/olo/web-client/node_modules/ember-cli/lib/broccoli/ember-app.js:1264:25) at EmberApp.toArray (/Users/chris/dev/olo/web-client/node_modules/ember-cli/lib/broccoli/ember-app.js:1619:12) at EmberApp.toTree (/Users/chris/dev/olo/web-client/node_modules/ember-cli/lib/broccoli/ember-app.js:1747:22) at module.exports (/Users/chris/dev/olo/web-client/ember-cli-build.js:88:14) at Builder.readBuildFile (/Users/chris/dev/olo/web-client/node_modules/ember-cli/lib/models/builder.js:52:14) -~- (end) -~- - name: BuildError - nodeAnnotation: [undefined] - nodeName: Funnel - originalErrorMessage: ENOENT: no such file or directory, scandir '/Users/chris/dev/oss/ember/freestyle/addon/styles/app/styles/' - stack: Error: ENOENT: no such file or directory, scandir '/Users/chris/dev/oss/ember/freestyle/addon/styles/app/styles/' at Object.fs.readdirSync (fs.js:904:18) at _walkSync (/Users/chris/dev/oss/ember/freestyle/node_modules/walk-sync/index.js:74:18) at Function.entries (/Users/chris/dev/oss/ember/freestyle/node_modules/walk-sync/index.js:50:10) at Funnel.processFilters (/Users/chris/dev/oss/ember/freestyle/node_modules/broccoli-funnel/index.js:320:26) at Funnel.build (/Users/chris/dev/oss/ember/freestyle/node_modules/broccoli-funnel/index.js:258:10) at resolve (/Users/chris/dev/olo/web-client/node_modules/broccoli/lib/wrappers/transform-node.js:29:35) at new Promise () at TransformNodeWrapper.build (/Users/chris/dev/olo/web-client/node_modules/broccoli/lib/wrappers/transform-node.js:21:12) at Promise.resolve.then.then.then (/Users/chris/dev/olo/web-client/node_modules/broccoli/lib/builder.js:111:28) at at process._tickDomainCallback (internal/process/next_tick.js:228:7) ================================================================================= ```

I'll get a PR opened first thing tomorrow!

rwjblue commented 5 years ago

Thank you for reporting! Definitely seems like a bug here....