Skip to content

td.replace CJS module-replacement gives bad message if item is not requireable #261

Open
@searls

Description

@searls

I had a depended-on module X that was in a not-requireable state because of a typo in one of its import statements. The symptom given to me by TD when I tried to td.replace() said module from its user's test was "module X not found".

This was not a useful message, because it sent me on a hunt to find a ../../ path screw-up, when the real root cause was that quibble failed to require it, so it just blew up. It's necessary for dependencies' to require cleanly so we can imitate their functions/constructors/etc, but the message should indicate that's what failed, not that the file was missing.

  stacktrace: Error: Cannot find module '../../src/wrap/log' from '/Users/justin/code/testdouble/testdouble.js' 
    at Function.module.exports [as sync] (/Users/justin/code/testdouble/testdouble.js/node_modules/resolve/lib/sync.js:37:15)
    at requireAt (/Users/justin/code/testdouble/testdouble.js/node_modules/testdouble/lib/replace/module.js:39:38) 
    at exports.default (/Users/justin/code/testdouble/testdouble.js/node_modules/testdouble/lib/replace/module.js:11:19) 
    at exports.default [as replace] (/Users/justin/code/testdouble/testdouble.js/node_modules/testdouble/lib/replace/index.js:9:29) 
    at undefined.beforeEach (/Users/justin/code/testdouble/testdouble.js/unit/when/ensure-rehearsal.test.js:4:14) 
    at /Users/justin/code/testdouble/testdouble.js/node_modules/teenytest/lib/plugins/callbackify.js:15:17 
    at runX (/Users/justin/code/testdouble/testdouble.js/node_modules/teenytest/lib/plugins/wrap.js:22:7) 
    at Object.userFunction [as wrap] (/Users/justin/code/testdouble/testdouble.js/node_modules/teenytest/plugins/uncaught-exception.js:16:9) 
    at callable (/Users/justin/code/testdouble/testdouble.js/node_modules/teenytest/lib/plugins/wrap.js:29:24) 
    at runX (/Users/justin/code/testdouble/testdouble.js/node_modules/teenytest/lib/plugins/wrap.js:22:7) ```

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions