function (dir, helpers, done) {
            var main = require(nodePath.join(dir, 'test.js'));
            var dependencyProps = main.createDependency(dir);

            var pluginConfig = main.getPluginConfig ? main.getPluginConfig() : {};
            pluginConfig.rootDir = dir;

            var dependencyFactory = require('./mock/dependency-factory').create(pluginConfig);

            var dependency = dependencyFactory.depTransportRemap(dependencyProps);

            var lassoContext = new MockLassoContext();

            dependency.init(lassoContext);

            return Promise.resolve()
                .then(() => {
                    return dependency.read(lassoContext);
                })
                .then((src) => {
                    helpers.compare(src, '.js');
                    done();
                })
                .catch(done);
        });
        async function (dir, helpers) {
            var main = require(nodePath.join(dir, 'test.js'));
            var dependencyProps = main.createDependency(dir);

            var patchedSearchPath;
            if (main.searchPath) {
                patchedSearchPath = moduleSearchPath.patchSearchPath(main.searchPath);
            }

            var pluginConfig = main.getPluginConfig ? main.getPluginConfig() : {};
            pluginConfig.rootDir = dir;

            var dependencyFactory = require('./mock/dependency-factory').create(pluginConfig);

            var dependency = dependencyFactory.depRequire(dependencyProps);

            var lassoContext = createLassoContext();

            dependency.init(lassoContext);

            let dependencies = await dependency.getDependencies(lassoContext);

            if (dependencies.dependencies) {
                dependencies = dependencies.dependencies;
            }

            let src;

            try {
                for (var i=0; i<dependencies.length; i++) {
                    var d = dependencies[i];
                    if (d.type === 'commonjs-def') {
                        var defDependency = dependencyFactory.depTransportDefine(d);
                        src = await defDependency.read(lassoContext);
                        break;
                    }
                }

                if (!src) {
                    throw new Error('commonjs-def dependency not found');
                }

                if (patchedSearchPath) {
                    patchedSearchPath.restore();
                }

                src = normalizeOutput(src, dir);
                helpers.compare(src, '.js');
            } catch (err) {
                if (patchedSearchPath) {
                    patchedSearchPath.restore();
                }
                throw err;
            }
        });
        function (dir, helpers, done) {
            var main = require(nodePath.join(dir, 'test.js'));
            var dependencyProps = main.createDependency(dir);

            var patchedSearchPath;
            if (main.searchPath) {
                patchedSearchPath = moduleSearchPath.patchSearchPath(main.searchPath);
            }

            var pluginConfig = main.getPluginConfig ? main.getPluginConfig() : {};
            pluginConfig.rootDir = dir;

            var dependencyFactory = require('./mock/dependency-factory').create(pluginConfig);

            var dependency = dependencyFactory.depRequire(dependencyProps);

            var lassoContext = new MockLassoContext();

            dependency.init(lassoContext);

            return Promise.resolve()
                .then(() => {
                    return dependency.getDependencies(lassoContext);
                })
                .then((dependencies) => {
                    if (dependencies.dependencies) {
                        dependencies = dependencies.dependencies;
                    }

                    for (var i=0; i<dependencies.length; i++) {
                        var d = dependencies[i];
                        if (d.type === 'commonjs-def') {
                            var defDependency = dependencyFactory.depTransportDefine(d);
                            return defDependency.read(lassoContext);
                        }
                    }
                    throw new Error('commonjs-def dependency not found');
                })
                .then((src) => {
                    if (patchedSearchPath) {
                        patchedSearchPath.restore();
                    }
                    src = normalizeOutput(src, dir);

                    helpers.compare(src, '.js');
                    done();
                })
                .catch((err) => {
                    if (patchedSearchPath) {
                        patchedSearchPath.restore();
                    }
                    done(err);
                });
        });
        async function (dir, helpers) {
            var main = require(nodePath.join(dir, 'test.js'));
            var dependencyProps = main.createDependency(dir);

            var pluginConfig = main.getPluginConfig ? main.getPluginConfig() : {};
            pluginConfig.rootDir = dir;

            var dependencyFactory = require('./mock/dependency-factory').create(pluginConfig);
            var dependency = dependencyFactory.depTransportInstalled(dependencyProps);
            var lassoContext = new MockLassoContext();

            dependency.init(lassoContext);

            const src = await dependency.read(lassoContext);
            helpers.compare(src, '.js');
        });
        function (dir, helpers, done) {

            var main = require(nodePath.join(dir, 'test.js'));

            var pluginConfig = main.getPluginConfig ? main.getPluginConfig() : {};
            pluginConfig.rootDir = dir;

            var dependencyFactory = require('./mock/dependency-factory').create(pluginConfig);

            var patchedSearchPath;
            if (main.searchPath) {
                patchedSearchPath = moduleSearchPath.patchSearchPath(main.searchPath);
            }

            var dependencyDef = main.createDependency(dir);
            var dependency = dependencyFactory.depRequire(dependencyDef);

            var lassoContext = new MockLassoContext();
            dependency.init(lassoContext);

            return Promise.resolve()
                .then(() => {
                    return dependency.getDependencies(lassoContext);
                })
                .then((dependencies) => {
                    dependencies = normalizeOutput(dependencies, rootDir);
                    if (patchedSearchPath) {
                        patchedSearchPath.restore();
                    }

                    helpers.compare(dependencies, '.json');
                    done();
                })
                .catch((err) => {
                    if (patchedSearchPath) {
                        patchedSearchPath.restore();
                    }
                    done(err);
                });
        });