@teambit/pnpm 1.0.1322 → 1.0.1323

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_path","data","_interopRequireDefault","require","_component","_objects","_lockfileDepsGraphConverter","_chai","e","__esModule","default","before","initLockfileDepsGraphConverter","describe","comp1Dir","comp2Dir","comp2","comp2FilePkgId","comp2FileDepPath","workspaceLockfile","lockfileVersion","importers","dependencies","version","specifier","react","packages","resolution","directory","type","peerDependencies","integrity","snapshots","foo","bit","depsRequiringBuild","toGraph","lockfile","convertLockfileToGraph","componentRelativeDir","componentIdByPkgName","Map","ComponentID","fromString","toLockfile","graph","comp2Version","resolve","failingResolver","convertGraphToLockfile","DependenciesGraph","deserialize","serialize","manifests","path","name","rootDir","process","cwd","Error","it","expect","has","to","equal","eql","not","have","property","resolved","alias","bareSpecifier","push","apolloVariant","graphql","edges","id","ROOT_EDGE_ID","neighbours","lifecycle","attr","pkgId","restore","lonely","component","scope","manifest","dist","map","optional","ssh2","nan","optionalDependencies","fsevents","Object","keys","bar","qar","markOptionalOnlyEntries"],"sources":["lockfile-deps-graph-converter.restore.spec.ts"],"sourcesContent":["import path from 'path';\nimport { ComponentID } from '@teambit/component';\nimport { DependenciesGraph } from '@teambit/objects';\nimport {\n convertLockfileToGraph,\n convertGraphToLockfile,\n markOptionalOnlyEntries,\n init as initLockfileDepsGraphConverter,\n} from './lockfile-deps-graph-converter';\nimport { type BitLockfileFile } from './lynx';\nimport { expect } from 'chai';\n\nbefore(async () => {\n await initLockfileDepsGraphConverter();\n});\n\ndescribe('workspace components in a restored lockfile', () => {\n const comp1Dir = 'comps/comp1';\n const comp2Dir = 'comps/comp2';\n const comp2 = '@my-org/my-scope.comp2';\n const comp2FilePkgId = `${comp2}@file:${comp2Dir}`;\n const comp2FileDepPath = `${comp2FilePkgId}(react@18.3.1)`;\n\n /** A workspace lockfile where comp1 depends on the injected comp2, which has a peer. */\n function workspaceLockfile(): BitLockfileFile {\n return {\n lockfileVersion: '9.0',\n importers: {\n [comp1Dir]: {\n dependencies: {\n [comp2]: { version: `file:${comp2Dir}(react@18.3.1)`, specifier: '2.0.0' },\n react: { version: '18.3.1', specifier: '18.3.1' },\n },\n },\n },\n packages: {\n [comp2FilePkgId]: {\n resolution: { directory: comp2Dir, type: 'directory' },\n peerDependencies: { react: '*' },\n },\n 'foo@1.0.0': { resolution: { integrity: 'sha512-foo' } },\n 'react@18.3.1': { resolution: { integrity: 'sha512-react' } },\n },\n snapshots: {\n [comp2FileDepPath]: { dependencies: { foo: '1.0.0', react: '18.3.1' } },\n 'foo@1.0.0': {},\n 'react@18.3.1': {},\n },\n bit: { depsRequiringBuild: [comp2FilePkgId] },\n } as BitLockfileFile;\n }\n\n function toGraph(lockfile: BitLockfileFile) {\n return convertLockfileToGraph(lockfile, {\n componentRelativeDir: comp1Dir,\n componentIdByPkgName: new Map([[comp2, ComponentID.fromString('my-org.my-scope/comp2@2.0.0')]]),\n });\n }\n\n function toLockfile(graph: DependenciesGraph, comp2Version: string, resolve = failingResolver) {\n return convertGraphToLockfile(DependenciesGraph.deserialize(graph.serialize())!, {\n manifests: {\n [path.resolve(comp1Dir)]: { dependencies: { [comp2]: '2.0.0', react: '18.3.1' } },\n [path.resolve(comp2Dir)]: { name: comp2, version: comp2Version },\n },\n rootDir: process.cwd(),\n resolve,\n });\n }\n\n function failingResolver(): never {\n throw new Error('a workspace component must not be resolved from the registry');\n }\n\n it('should restore the file: package and snapshot of a workspace component, peer suffix included', async () => {\n const graph = toGraph(workspaceLockfile());\n expect(graph.packages.has(`${comp2}@2.0.0`)).to.equal(true);\n\n const lockfile = await toLockfile(graph, '2.0.0');\n\n expect(lockfile.importers![comp1Dir].dependencies![comp2]).to.eql({\n version: `file:${comp2Dir}(react@18.3.1)`,\n specifier: '2.0.0',\n });\n expect(lockfile.packages![comp2FilePkgId]).to.eql({\n resolution: { directory: comp2Dir, type: 'directory' },\n peerDependencies: { react: '*' },\n });\n expect(lockfile.packages).not.to.have.property(`${comp2}@2.0.0`);\n expect(lockfile.snapshots![comp2FileDepPath]).to.eql({ dependencies: { foo: '1.0.0', react: '18.3.1' } });\n expect(lockfile.snapshots).not.to.have.property(`${comp2}@2.0.0(react@18.3.1)`);\n expect(lockfile.packages!['foo@1.0.0']).to.eql({ resolution: { integrity: 'sha512-foo' } });\n expect(lockfile.bit?.depsRequiringBuild).to.eql([comp2FilePkgId]);\n });\n\n it('should keep a dependency on another version of a workspace component as a registry package', async () => {\n const graph = toGraph(workspaceLockfile());\n const resolved: string[] = [];\n\n const lockfile = await toLockfile(graph, '3.0.0', (async ({ alias, bareSpecifier }) => {\n resolved.push(`${alias}@${bareSpecifier}`);\n return { resolution: { integrity: 'sha512-comp2' } };\n }) as any);\n\n expect(resolved).to.eql([`${comp2}@2.0.0`]);\n expect(lockfile.importers![comp1Dir].dependencies![comp2]).to.eql({\n version: '2.0.0(react@18.3.1)',\n specifier: '2.0.0',\n });\n expect(lockfile.packages![`${comp2}@2.0.0`]).to.eql({\n resolution: { integrity: 'sha512-comp2' },\n peerDependencies: { react: '*' },\n });\n expect(lockfile.packages).not.to.have.property(comp2FilePkgId);\n });\n});\n\ndescribe('importer entries of a restored lockfile', () => {\n const comp1Dir = 'comps/comp1';\n const apolloVariant = '@apollo/client@3.3.21(graphql@15.8.0)';\n const graph = new DependenciesGraph({\n packages: new Map([\n ['@babel/runtime@7.20.0', { resolution: { integrity: 'sha512-runtime' } }],\n ['@teambit/ui.app@0.0.110', { resolution: { integrity: 'sha512-app' } }],\n ['@apollo/client@3.3.21', { resolution: { integrity: 'sha512-apollo' }, peerDependencies: { graphql: '*' } }],\n ['graphql@15.8.0', { resolution: { integrity: 'sha512-graphql' } }],\n ['graphql@16.0.0', { resolution: { integrity: 'sha512-graphql16' } }],\n ['lonely@1.0.0', { resolution: { integrity: 'sha512-lonely' } }],\n ] as any),\n edges: [\n {\n id: DependenciesGraph.ROOT_EDGE_ID,\n neighbours: [\n { id: '@babel/runtime@7.20.0', name: '@babel/runtime', specifier: '*', lifecycle: 'runtime' },\n {\n id: `@teambit/ui.app@0.0.110(${apolloVariant})`,\n name: '@teambit/ui.app',\n specifier: '0.0.110',\n lifecycle: 'runtime',\n },\n ],\n },\n {\n id: `@teambit/ui.app@0.0.110(${apolloVariant})`,\n attr: { pkgId: '@teambit/ui.app@0.0.110' },\n neighbours: [{ id: apolloVariant }],\n },\n { id: apolloVariant, attr: { pkgId: '@apollo/client@3.3.21' }, neighbours: [{ id: 'graphql@15.8.0' }] },\n {\n id: '@apollo/client@3.3.21(graphql@16.0.0)',\n attr: { pkgId: '@apollo/client@3.3.21' },\n neighbours: [{ id: 'graphql@16.0.0' }],\n },\n ],\n });\n\n function restore(dependencies: Record<string, string>) {\n return convertGraphToLockfile(DependenciesGraph.deserialize(graph.serialize())!, {\n manifests: { [path.resolve(comp1Dir)]: { dependencies } },\n rootDir: process.cwd(),\n resolve: () => {\n throw new Error('nothing here needs the registry');\n },\n });\n }\n\n it('matches a range specifier against the version the graph resolved', async () => {\n const lockfile = await restore({ '@babel/runtime': '^7.8.4' });\n expect(lockfile.importers![comp1Dir].dependencies!['@babel/runtime']).to.eql({\n version: '7.20.0',\n specifier: '^7.8.4',\n });\n });\n\n it('leaves a range specifier the resolved version does not satisfy without an entry', async () => {\n const lockfile = await restore({ '@babel/runtime': '^8.0.0' });\n expect(lockfile.importers![comp1Dir].dependencies).not.to.have.property('@babel/runtime');\n });\n\n it('points a version the graph holds only deeper in the tree at the variant the direct dependencies use', async () => {\n const lockfile = await restore({ '@apollo/client': '3.3.21', '@teambit/ui.app': '0.0.110' });\n expect(lockfile.importers![comp1Dir].dependencies!['@apollo/client']).to.eql({\n version: '3.3.21(graphql@15.8.0)',\n specifier: '3.3.21',\n });\n expect(lockfile.snapshots![apolloVariant]).to.eql({ dependencies: { graphql: '15.8.0' } });\n });\n\n it('points a version the graph holds only as a package at that package', async () => {\n const lockfile = await restore({ lonely: '1.0.0' });\n expect(lockfile.importers![comp1Dir].dependencies!.lonely).to.eql({ version: '1.0.0', specifier: '1.0.0' });\n expect(lockfile.snapshots!['lonely@1.0.0']).to.eql({});\n });\n\n it('leaves a version the graph does not hold without an entry', async () => {\n const lockfile = await restore({ '@apollo/client': '3.3.7' });\n expect(lockfile.importers![comp1Dir].dependencies).not.to.have.property('@apollo/client');\n });\n});\n\ndescribe('resolving a workspace-component package from the registry on restore', () => {\n const comp1Dir = 'comps/comp1';\n const pkgId = '@my-org/my-scope.comp2@1.0.0';\n\n function restore(resolve: (...args: any[]) => any) {\n const graph = new DependenciesGraph({\n packages: new Map([[pkgId, { component: { scope: 'my-org.my-scope', name: 'comp2' } } as any]]),\n edges: [\n {\n id: DependenciesGraph.ROOT_EDGE_ID,\n neighbours: [{ id: pkgId, name: '@my-org/my-scope.comp2', specifier: '1.0.0', lifecycle: 'runtime' }],\n },\n { id: pkgId, neighbours: [] },\n ],\n });\n return convertGraphToLockfile(graph, {\n manifests: { [path.resolve(comp1Dir)]: { dependencies: { '@my-org/my-scope.comp2': '1.0.0' } } },\n rootDir: process.cwd(),\n resolve,\n });\n }\n\n // `@pnpm/napi`'s resolveDependency reports a registry package's integrity in\n // the manifest's `dist`, and no `resolution` at all.\n it(\"takes the integrity from the resolved manifest's dist when the resolver reports no resolution\", async () => {\n const lockfile = await restore(() => ({ manifest: { dist: { integrity: 'sha512-fromdist' } } }));\n expect(lockfile.packages![pkgId]).to.eql({ resolution: { integrity: 'sha512-fromdist' } });\n expect(lockfile.importers![comp1Dir].dependencies!['@my-org/my-scope.comp2']).to.eql({\n version: '1.0.0',\n specifier: '1.0.0',\n });\n });\n\n it('prefers the integrity of a resolution the resolver reports', async () => {\n const lockfile = await restore(() => ({\n resolution: { integrity: 'sha512-fromresolution' },\n manifest: { dist: { integrity: 'sha512-fromdist' } },\n }));\n expect(lockfile.packages![pkgId]).to.eql({ resolution: { integrity: 'sha512-fromresolution' } });\n });\n});\n\ndescribe('optional flags of a restored lockfile', () => {\n const comp1Dir = 'comps/comp1';\n\n it('marks the entries only optional edges reach, and leaves one a required path reaches alone', async () => {\n const graph = new DependenciesGraph({\n packages: new Map(\n ['ssh2@1.0.0', 'cpu-features@0.0.10', 'nan@2.29.0', 'fsevents@2.3.3'].map((id) => [\n id,\n { resolution: { integrity: `sha512-${id}` } } as any,\n ])\n ),\n edges: [\n {\n id: DependenciesGraph.ROOT_EDGE_ID,\n neighbours: [\n { id: 'ssh2@1.0.0', name: 'ssh2', specifier: '1.0.0', lifecycle: 'runtime' },\n { id: 'nan@2.29.0', name: 'nan', specifier: '2.29.0', lifecycle: 'runtime' },\n { id: 'fsevents@2.3.3', name: 'fsevents', specifier: '2.3.3', lifecycle: 'runtime', optional: true },\n ],\n },\n { id: 'ssh2@1.0.0', neighbours: [{ id: 'cpu-features@0.0.10', optional: true }] },\n { id: 'cpu-features@0.0.10', neighbours: [{ id: 'nan@2.29.0' }] },\n ],\n });\n const lockfile = await convertGraphToLockfile(graph, {\n manifests: {\n [path.resolve(comp1Dir)]: {\n dependencies: { ssh2: '1.0.0', nan: '2.29.0' },\n optionalDependencies: { fsevents: '2.3.3' },\n },\n },\n rootDir: process.cwd(),\n resolve: () => {\n throw new Error('nothing here needs the registry');\n },\n });\n expect(lockfile.snapshots!['cpu-features@0.0.10'].optional).to.equal(true);\n expect(lockfile.snapshots!['fsevents@2.3.3'].optional).to.equal(true);\n expect(lockfile.snapshots!['ssh2@1.0.0']).not.to.have.property('optional');\n // nan is reached optionally through cpu-features and directly as well.\n expect(lockfile.snapshots!['nan@2.29.0']).not.to.have.property('optional');\n });\n});\n\ndescribe('workspace: specifiers in a restored lockfile', () => {\n const comp1Dir = 'comps/comp1';\n const comp2Dir = 'comps/comp2';\n const comp2 = '@my-org/my-scope.comp2';\n // A merged graph can hold the sibling at two versions as direct dependencies.\n const graph = new DependenciesGraph({\n packages: new Map([\n [`${comp2}@1.0.0`, { resolution: { integrity: 'sha512-one' } }],\n [`${comp2}@2.0.0`, { resolution: { integrity: 'sha512-two' } }],\n ] as any),\n edges: [\n {\n id: DependenciesGraph.ROOT_EDGE_ID,\n neighbours: [\n { id: `${comp2}@1.0.0`, name: comp2, specifier: '1.0.0', lifecycle: 'runtime' },\n { id: `${comp2}@2.0.0`, name: comp2, specifier: '2.0.0', lifecycle: 'runtime' },\n ],\n },\n ],\n });\n\n function restore(specifier: string, comp2Version: string) {\n return convertGraphToLockfile(DependenciesGraph.deserialize(graph.serialize())!, {\n manifests: {\n [path.resolve(comp1Dir)]: { dependencies: { [comp2]: specifier } },\n [path.resolve(comp2Dir)]: { name: comp2, version: comp2Version },\n },\n rootDir: process.cwd(),\n resolve: () => ({ resolution: { integrity: 'sha512-other' } }) as any,\n });\n }\n\n it('points at the version the workspace holds, not the first same-name neighbour', async () => {\n const lockfile = await restore('workspace:^2', '2.0.0');\n expect(lockfile.importers![comp1Dir].dependencies![comp2]).to.eql({\n version: `file:${comp2Dir}`,\n specifier: 'workspace:^2',\n });\n });\n\n it('leaves the entry out when the range rejects the version the workspace holds', async () => {\n const lockfile = await restore('workspace:^3', '2.0.0');\n expect(lockfile.importers![comp1Dir].dependencies).not.to.have.property(comp2);\n });\n\n it('leaves the entry out when the graph lacks the version the workspace holds', async () => {\n const lockfile = await restore('workspace:*', '3.0.0');\n expect(lockfile.importers![comp1Dir].dependencies).not.to.have.property(comp2);\n });\n});\n\ndescribe('several direct dependencies of the same name in a restored lockfile', () => {\n const comp1Dir = 'comps/comp1';\n // A merged graph keeps one root neighbour per distinct specifier of foo.\n const graph = new DependenciesGraph({\n packages: new Map([\n ['foo@1.5.0', { resolution: { integrity: 'sha512-five' } }],\n ['foo@1.2.0', { resolution: { integrity: 'sha512-two' } }],\n ['foo@1.9.0', { resolution: { integrity: 'sha512-nine' } }],\n ] as any),\n edges: [\n {\n id: DependenciesGraph.ROOT_EDGE_ID,\n neighbours: [\n { id: 'foo@1.5.0', name: 'foo', specifier: '^1.5.0', lifecycle: 'runtime' },\n { id: 'foo@1.2.0', name: 'foo', specifier: '^1.0.0', lifecycle: 'runtime' },\n { id: 'foo@1.9.0', name: 'foo', specifier: '*', lifecycle: 'runtime' },\n ],\n },\n ],\n });\n\n function restore(specifier: string) {\n return convertGraphToLockfile(DependenciesGraph.deserialize(graph.serialize())!, {\n manifests: { [path.resolve(comp1Dir)]: { dependencies: { foo: specifier } } },\n rootDir: process.cwd(),\n resolve: () => {\n throw new Error('nothing here needs the registry');\n },\n });\n }\n\n it('takes the dependency recorded for the very specifier over one that merely satisfies it', async () => {\n const lockfile = await restore('^1.0.0');\n expect(lockfile.importers![comp1Dir].dependencies!.foo).to.eql({ version: '1.2.0', specifier: '^1.0.0' });\n });\n\n it('takes the dependency recorded at the very version', async () => {\n const lockfile = await restore('1.5.0');\n expect(lockfile.importers![comp1Dir].dependencies!.foo).to.eql({ version: '1.5.0', specifier: '1.5.0' });\n });\n\n it('takes the highest satisfying resolution when none was recorded for the specifier', async () => {\n const lockfile = await restore('^1.1.0');\n expect(lockfile.importers![comp1Dir].dependencies!.foo).to.eql({ version: '1.9.0', specifier: '^1.1.0' });\n });\n});\n\ndescribe('entries no importer reaches in a restored lockfile', () => {\n it('are dropped before anything is resolved from the registry', async () => {\n const graph = new DependenciesGraph({\n packages: new Map([\n ['foo@1.0.0', { resolution: { integrity: 'sha512-foo' } }],\n // An attached extension's dev dependency: no resolution, and nothing reaches it.\n ['@org/dev-only@1.0.0', { component: { scope: 'org', name: 'dev-only' } }],\n ] as any),\n edges: [\n {\n id: DependenciesGraph.ROOT_EDGE_ID,\n neighbours: [{ id: 'foo@1.0.0', name: 'foo', specifier: '1.0.0', lifecycle: 'runtime' }],\n },\n ],\n });\n const lockfile = await convertGraphToLockfile(graph, {\n manifests: { [path.resolve('comps/comp1')]: { dependencies: { foo: '1.0.0' } } },\n rootDir: process.cwd(),\n resolve: () => {\n throw new Error('an unreachable entry must not be resolved');\n },\n });\n expect(Object.keys(lockfile.packages!)).to.eql(['foo@1.0.0']);\n });\n});\n\ndescribe('optional flags under an aliased dependency', () => {\n it('walks into the package an alias names', () => {\n const lockfile = {\n importers: {\n 'comps/comp1': {\n dependencies: { foo: { version: 'real-foo@1.0.0', specifier: 'npm:real-foo@1.0.0' } },\n optionalDependencies: { bar: { version: '1.0.0', specifier: '1.0.0' } },\n },\n },\n snapshots: {\n 'real-foo@1.0.0': { optionalDependencies: { qar: '1.0.0' }, dependencies: { bar: '1.0.0' } },\n 'bar@1.0.0': { optional: true },\n 'qar@1.0.0': {},\n },\n };\n markOptionalOnlyEntries(lockfile as any);\n expect(lockfile.snapshots['real-foo@1.0.0']).not.to.have.property('optional');\n // Reached optionally from the importer, but required through the alias.\n expect(lockfile.snapshots['bar@1.0.0']).not.to.have.property('optional');\n expect(lockfile.snapshots['qar@1.0.0']).to.have.property('optional', true);\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1590,7 +1590,12 @@ describe('convertGraphToLockfile on invalid graph', () => {
1590
1590
  (0, _chai().expect)(Object.keys(lockfile.snapshots).sort()).to.eql(['foo@1.0.0']);
1591
1591
  (0, _chai().expect)(lockfile.snapshots['foo@1.0.0']).to.eql({});
1592
1592
  });
1593
- it('should keep workspace-component pkgs that already have a valid resolution', async () => {
1593
+
1594
+ // pnpm links a dependency on the version the workspace holds to the
1595
+ // workspace component, so the registry resolution the graph carries for it
1596
+ // would only be resolved again. The restored lockfile records the component
1597
+ // the way pnpm does, as a `file:` directory package.
1598
+ it('should link workspace-component pkgs at the version the workspace holds, whatever resolution they carry', async () => {
1594
1599
  const componentPkgId = '@my-org/my-scope.comp2@1.0.0';
1595
1600
  const packages = new Map([[componentPkgId, {
1596
1601
  component: {
@@ -1634,25 +1639,26 @@ describe('convertGraphToLockfile on invalid graph', () => {
1634
1639
  }
1635
1640
  });
1636
1641
  (0, _chai().expect)(lockfile.importers['comps/comp1'].dependencies['@my-org/my-scope.comp2']).to.eql({
1637
- version: '1.0.0',
1642
+ version: 'file:comps/comp2',
1638
1643
  specifier: '1.0.0'
1639
1644
  });
1640
- (0, _chai().expect)(lockfile.packages[componentPkgId]).to.eql({
1645
+ (0, _chai().expect)(Object.keys(lockfile.packages)).to.eql(['@my-org/my-scope.comp2@file:comps/comp2']);
1646
+ (0, _chai().expect)(lockfile.packages['@my-org/my-scope.comp2@file:comps/comp2']).to.eql({
1641
1647
  resolution: {
1642
- integrity: 'sha512-comp2'
1648
+ directory: 'comps/comp2',
1649
+ type: 'directory'
1643
1650
  }
1644
1651
  });
1645
- (0, _chai().expect)(lockfile.snapshots[componentPkgId]).to.eql({});
1652
+ (0, _chai().expect)(Object.keys(lockfile.snapshots)).to.eql(['@my-org/my-scope.comp2@file:comps/comp2']);
1653
+ (0, _chai().expect)(lockfile.snapshots['@my-org/my-scope.comp2@file:comps/comp2']).to.eql({});
1646
1654
  });
1647
1655
 
1648
- // A workspace-component snap reaches lockfile validation with no resolution
1649
- // even though resolve() never threw NO_MATCHING_VERSION, because
1650
- // getPkgsToResolve skips any pkgId whose name+version matches a manifest in
1651
- // the sign/capsule set. The snap is a seeder being signed, so it is in the
1652
- // manifests, never sent to the resolver, and would surface as
1653
- // `packages['...button-base@0.0.0-<snap>'] entry doesn't have a "resolution"
1654
- // field`. It must be scrubbed so pnpm links it from the manifest instead.
1655
- it('should drop workspace-component snaps skipped by the resolver (seeder in manifests)', async () => {
1656
+ // A workspace-component snap whose name+version matches a manifest in the
1657
+ // sign/capsule set is a seeder being signed. Its snap version was never
1658
+ // published, so it is never sent to the resolver; pnpm links it from the
1659
+ // manifest, transitive dependencies on it included, so the restored lockfile
1660
+ // records it as a `file:` directory package and points the dependency at it.
1661
+ it('should link workspace-component snaps that are seeders in the manifests', async () => {
1656
1662
  const snapPkgId = '@my-org/my-scope.components.button-base@0.0.0-e1613079b55eabc19ad484478b769d929986c124';
1657
1663
  const packages = new Map([[snapPkgId, {
1658
1664
  component: {
@@ -1711,9 +1717,20 @@ describe('convertGraphToLockfile on invalid graph', () => {
1711
1717
  }
1712
1718
  });
1713
1719
  (0, _chai().expect)(resolverCalled).to.equal(false);
1714
- (0, _chai().expect)(Object.keys(lockfile.packages).sort()).to.eql(['foo@1.0.0']);
1715
- (0, _chai().expect)(Object.keys(lockfile.snapshots).sort()).to.eql(['foo@1.0.0']);
1716
- (0, _chai().expect)(lockfile.snapshots['foo@1.0.0']).to.eql({});
1720
+ const linkedPkgId = '@my-org/my-scope.components.button-base@file:comps/button-base';
1721
+ (0, _chai().expect)(Object.keys(lockfile.packages).sort()).to.eql([linkedPkgId, 'foo@1.0.0']);
1722
+ (0, _chai().expect)(lockfile.packages[linkedPkgId]).to.eql({
1723
+ resolution: {
1724
+ directory: 'comps/button-base',
1725
+ type: 'directory'
1726
+ }
1727
+ });
1728
+ (0, _chai().expect)(Object.keys(lockfile.snapshots).sort()).to.eql([linkedPkgId, 'foo@1.0.0']);
1729
+ (0, _chai().expect)(lockfile.snapshots['foo@1.0.0']).to.eql({
1730
+ dependencies: {
1731
+ '@my-org/my-scope.components.button-base': 'file:comps/button-base'
1732
+ }
1733
+ });
1717
1734
  });
1718
1735
 
1719
1736
  // Sibling of the above: even when the resolver IS called for a