Adds support for dependencies that are resolved by calling out to third-party binaries. The invocation is expected to return the transitive dependency sub-graph as a lock file, which is deserialized and merged into the main graph.
Externally resolved dependencies can appear in manifests but not lock files, and it is an error for a package to appear in the outputs of multiple resolvers (including the internal resolver). To differentiate this case from the previous case where the internal resolver encounters the same package via another path, packages in the DependencyGraph track their resolver via an optional field (None for internally resolved packages).
Another consequence of this change is that the check that a dependency's name matches its package name moves from the creation of DependencyGraph to the creation of ResolvedGraph, to pick up cases where the name mismatch occurs in an externally resolved dependency.
Clean-ups
Also adds support for "progress" tests (snapshot tests for progress output).
Stricter warnings during dependency parsing, e.g. warning when a rev field is supplied for a local dependency and other similar cases.
Delete a stale (unused) snapshot file.
Test Plan
New tests, including unit tests for the merging operation, and snapshot tests for external resolution lock file and resolved graph output:
Adds support for dependencies that are resolved by calling out to third-party binaries. The invocation is expected to return the transitive dependency sub-graph as a lock file, which is deserialized and merged into the main graph.
Externally resolved dependencies can appear in manifests but not lock files, and it is an error for a package to appear in the outputs of multiple resolvers (including the internal resolver). To differentiate this case from the previous case where the internal resolver encounters the same package via another path, packages in the
DependencyGraph
track their resolver via an optional field (None
for internally resolved packages).Another consequence of this change is that the check that a dependency's name matches its package name moves from the creation of
DependencyGraph
to the creation ofResolvedGraph
, to pick up cases where the name mismatch occurs in an externally resolved dependency.Clean-ups
rev
field is supplied for a local dependency and other similar cases.Test Plan
New tests, including unit tests for the merging operation, and snapshot tests for external resolution lock file and resolved graph output:
Stack
741
745
753
754
759
760
854
855
856
857
858
859
See also: #789 for main.