[{ "manifest": { "__info": [], "dependencyTreeRoots": [{ "name": "root", "reference": "workspace:." }], "ignorePatternData": null, "enableTopLevelFallback": false, "fallbackPool": [], "fallbackExclusionList": [], "packageRegistryData": [ [null, [ [null, { "packageLocation": "./", "packageDependencies": [["test", "npm:1.0.0"]], "linkType": "SOFT" }] ]], ["root", [ ["workspace:.", { "packageLocation": "./", "packageDependencies": [["test", "npm:1.0.0"]], "linkType": "SOFT" }] ]], ["workspace-alias-dependency", [ ["workspace:workspace-alias-dependency", { "packageLocation": "./workspace-alias-dependency/", "packageDependencies": [["alias", ["test", "npm:1.0.0"]]], "linkType": "SOFT" }] ]], ["workspace-self-dependency", [ ["workspace:workspace-self-dependency", { "packageLocation": "./workspace-self-dependency/", "packageDependencies": [["workspace-self-dependency", "workspace:workspace-self-dependency"]], "linkType": "SOFT" }] ]], ["workspace-unfulfilled-peer-dependency", [ ["workspace:workspace-unfulfilled-peer-dependency", { "packageLocation": "./workspace-unfulfilled-peer-dependency/", "packageDependencies": [["test", null]], "linkType": "SOFT" }] ]], ["longer", [ ["workspace:longer", { "packageLocation": "./longer/", "packageDependencies": [["test", "npm:2.0.0"]], "linkType": "SOFT" }] ]], ["long", [ ["workspace:long", { "packageLocation": "./long/", "packageDependencies": [["test", "npm:1.0.0"]], "linkType": "SOFT" }] ]], ["longerer", [ ["workspace:longerer", { "packageLocation": "./longerer/", "packageDependencies": [["test", "npm:3.0.0"]], "linkType": "SOFT" }] ]], ["test", [ ["npm:1.0.0", { "packageLocation": "./test-1.0.0/", "packageDependencies": [], "linkType": "HARD" }], ["npm:2.0.0", { "packageLocation": "./test-2.0.0/", "packageDependencies": [], "linkType": "HARD" }], ["npm:3.0.0", { "packageLocation": "./test-3.0.0/", "packageDependencies": [], "linkType": "HARD" }] ]] ] }, "tests": [{ "it": "should allow a package to import one of its dependencies", "imported": "test", "importer": "/path/to/project/", "expected": "/path/to/project/test-1.0.0/" }, { "it": "should allow a package to import itself, if specified in its own dependencies", "imported": "workspace-self-dependency", "importer": "/path/to/project/workspace-self-dependency/", "expected": "/path/to/project/workspace-self-dependency/" }, { "it": "should allow a package to import an aliased dependency", "imported": "alias", "importer": "/path/to/project/workspace-alias-dependency/", "expected": "/path/to/project/test-1.0.0/" }, { "it": "shouldn't allow a package to import something that isn't one of its dependencies", "imported": "missing-dependency", "importer": "/path/to/project/", "expected": "error!" }, { "it": "shouldn't accidentally discard the trailing slash from the package locations", "imported": "test", "importer": "/path/to/project/long/", "expected": "/path/to/project/test-1.0.0/" }, { "it": "should throw an exception when trying to access an unfulfilled peer dependency", "imported": "test", "importer": "/path/to/project/workspace-unfulfilled-peer-dependency/", "expected": "error!" }] }, { "manifest": { "__info": [], "dependencyTreeRoots": [{ "name": "root", "reference": "workspace:." }], "ignorePatternData": null, "enableTopLevelFallback": true, "fallbackPool": [ ["test-2", "npm:1.0.0"], ["alias", ["test-1", "npm:1.0.0"]] ], "fallbackExclusionList": [[ "workspace-no-fallbacks", ["workspace:workspace-no-fallbacks"] ]], "packageRegistryData": [ [null, [ [null, { "packageLocation": "./", "packageDependencies": [["test-1", "npm:1.0.0"]], "linkType": "SOFT" }] ]], ["root", [ ["workspace:.", { "packageLocation": "./", "packageDependencies": [["test-1", "npm:1.0.0"]], "linkType": "SOFT" }] ]], ["workspace-no-fallbacks", [ ["workspace:workspace-no-fallbacks", { "packageLocation": "./workspace-no-fallbacks/", "packageDependencies": [], "linkType": "SOFT" }] ]], ["workspace-with-fallbacks", [ ["workspace:workspace-with-fallbacks", { "packageLocation": "./workspace-with-fallbacks/", "packageDependencies": [], "linkType": "SOFT" }] ]], ["workspace-unfulfilled-peer-dependency", [ ["workspace:workspace-unfulfilled-peer-dependency", { "packageLocation": "./workspace-unfulfilled-peer-dependency/", "packageDependencies": [ ["test-1", null], ["test-2", null] ], "linkType": "SOFT" }] ]], ["test-1", [ ["npm:1.0.0", { "packageLocation": "./test-1/", "packageDependencies": [], "linkType": "HARD" }] ]], ["test-2", [ ["npm:1.0.0", { "packageLocation": "./test-2/", "packageDependencies": [], "linkType": "HARD" }] ]] ] }, "tests": [{ "it": "should allow resolution coming from the fallback pool if enableTopLevelFallback is set to true", "imported": "test-1", "importer": "/path/to/project/", "expected": "/path/to/project/test-1/" }, { "it": "should allow the fallback pool to contain aliases", "imported": "alias", "importer": "/path/to/project/", "expected": "/path/to/project/test-1/" }, { "it": "shouldn't use the fallback pool when the importer package is listed in fallbackExclusionList", "imported": "test-1", "importer": "/path/to/project/workspace-no-fallbacks/", "expected": "error!" }, { "it": "should implicitly use the top-level package dependencies as part of the fallback pool", "imported": "test-2", "importer": "/path/to/project/workspace-with-fallbacks/", "expected": "/path/to/project/test-2/" }, { "it": "should throw an error if a resolution isn't in in the package dependencies, nor inside the fallback pool", "imported": "test-3", "importer": "/path/to/project/workspace-with-fallbacks/", "expected": "error!" }, { "it": "should use the top-level fallback if a dependency is missing because of an unfulfilled peer dependency", "imported": "test-1", "importer": "/path/to/project/workspace-unfulfilled-peer-dependency/", "expected": "/path/to/project/test-1/" }, { "it": "should use the fallback pool if a dependency is missing because of an unfulfilled peer dependency", "imported": "test-2", "importer": "/path/to/project/workspace-unfulfilled-peer-dependency/", "expected": "/path/to/project/test-2/" }] }, { "manifest": { "__info": [], "dependencyTreeRoots": [{ "name": "root", "reference": "workspace:." }], "ignorePatternData": null, "enableTopLevelFallback": false, "fallbackPool": [ ["test", "npm:1.0.0"] ], "fallbackExclusionList": [], "packageRegistryData": [ [null, [ [null, { "packageLocation": "./", "packageDependencies": [], "linkType": "SOFT" }] ]], ["root", [ ["workspace:.", { "packageLocation": "./", "packageDependencies": [], "linkType": "SOFT" }] ]], ["test", [ ["npm:1.0.0", { "packageLocation": "./test-1/", "packageDependencies": [], "linkType": "HARD" }] ]] ] }, "tests": [{ "it": "should ignore the fallback pool if enableTopLevelFallback is set to false", "imported": "test", "importer": "/path/to/project/", "expected": "error!" }] }, { "manifest": { "__info": [], "dependencyTreeRoots": [{ "name": "root", "reference": "workspace:." }], "ignorePatternData": "^not-a-workspace(/|$)", "enableTopLevelFallback": false, "fallbackPool": [], "fallbackExclusionList": [], "packageRegistryData": [ [null, [ [null, { "packageLocation": "./", "packageDependencies": [], "linkType": "SOFT" }] ]], ["root", [ ["workspace:.", { "packageLocation": "./", "packageDependencies": [["test", "npm:1.0.0"]], "linkType": "SOFT" }] ]], ["test", [ ["npm:1.0.0", { "packageLocation": "./test/", "packageDependencies": [], "linkType": "HARD" }] ]] ] }, "tests": [{ "it": "shouldn't go through PnP when trying to resolve dependencies from packages covered by ignorePatternData", "imported": "test", "importer": "/path/to/project/not-a-workspace/", "expected": "error!" }] }]