diff --git a/external-crates/move/tools/move-package/src/resolution/dependency_graph.rs b/external-crates/move/tools/move-package/src/resolution/dependency_graph.rs index f59088add611a..b1ed96cf9cf2f 100644 --- a/external-crates/move/tools/move-package/src/resolution/dependency_graph.rs +++ b/external-crates/move/tools/move-package/src/resolution/dependency_graph.rs @@ -42,6 +42,29 @@ use super::{ /// /// In order to be `BuildConfig` agnostic, it contains `dev-dependencies` as well as `dependencies` /// and labels edges in the graph accordingly, as `DevOnly`, or `Always` dependencies. +/// +/// When building a dependency graph, different versions of the same (transitively) dependent +/// package can be encountered. If this is indeed the case, a single version must be chosen by the +/// developer to be the override, and this override must be specified in a manifest file whose +/// package dominates all the conflicting "uses" of the dependent package. These overrides are taken +/// into consideration during the dependency graph construction. +/// +/// When constructing the graph (top to bottom) for internal dependencies (external dependencies are +/// batch-processed at the end of the graph construction), we maintain a set of the current +/// overrides collected when processing dependencies (starting with an empty set at the root package). +/// +/// When processing dependencies of a given package, we process overrides first to collect a list of +/// overrides to be added to the set (if they are not yet in the set - outer overrides "win") and +/// then process non-overridden dependencies using a freshly updated overrides set. We use this +/// overrides set when attempting to insert a package into the graph (with an entry for this package +/// already existing or not) via the `process_graph_entry` function. After a package is fully +/// processed, remove its own overrides from the set. +/// +/// External dependencies are provided by external resolvers as fully formed dependency sub-graphs +/// that need to be inserted into the "main" dependency graph being constructed. Whenever an +/// external dependency is encountered, it's "recorded" along with the set of overrides available at +/// the point of sub-graph insertion, and batch-merged (using the `merge` function) after +/// construction of the entire internally resolved graph is completed. #[derive(Debug, Clone)] pub struct DependencyGraph { /// Path to the root package and its name (according to its manifest) @@ -61,12 +84,25 @@ pub struct DependencyGraph { pub always_deps: BTreeSet, } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, Eq)] pub struct Package { pub kind: PM::DependencyKind, pub version: Option, /// Optional field set if the package was externally resolved. resolver: Option, + /// Set if the package was inserted while some overrides were active. + overridden_path: bool, +} + +impl PartialEq for Package { + fn eq(&self, other: &Self) -> bool { + // comparison should neither contain overridden_path (as it's only used to determine if + // package should be re-inspected) nor the type of resolver (as it would actually lead to + // incorrect result when comparing packages during insertion of externally resolved ones - + // an internally resolved existing package in the graph would not be recognized as a + // potential different version of the externally resolved one) + self.kind == other.kind && self.version == other.version + } } #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)] @@ -74,6 +110,7 @@ pub struct Dependency { pub mode: DependencyMode, pub subst: Option, pub digest: Option, + pub dep_override: PM::DepOverride, } /// Indicates whether one package always depends on another, or only in dev-mode. @@ -91,6 +128,8 @@ pub struct ExternalRequest { to: Symbol, resolver: Symbol, pkg_path: PathBuf, + /// overrides at the point of external graph insertion + overrides: BTreeMap, } /// Wrapper struct to display a package as an inline table in the lock file (matching the @@ -135,6 +174,7 @@ impl DependencyGraph { &root_path, dependency_cache, &mut external_requests, + &mut BTreeMap::new(), progress_output, ) .with_context(|| { @@ -150,10 +190,19 @@ impl DependencyGraph { to, resolver, pkg_path, + overrides, } in external_requests { graph - .resolve_externally(mode, from, to, resolver, &pkg_path, progress_output) + .resolve_externally( + mode, + from, + to, + resolver, + &pkg_path, + &overrides, + progress_output, + ) .with_context(|| { format!( "Failed to resolve dependencies for package '{}'", @@ -202,6 +251,7 @@ impl DependencyGraph { mode: DependencyMode::Always, subst: subst.map(parse_substitution).transpose()?, digest: digest.map(Symbol::from), + dep_override: false, }, ); } @@ -219,6 +269,7 @@ impl DependencyGraph { mode: DependencyMode::DevOnly, subst: subst.map(parse_substitution).transpose()?, digest: digest.map(Symbol::from), + dep_override: false, }, ); } @@ -255,6 +306,7 @@ impl DependencyGraph { kind: source.kind, version: source.version, resolver: None, + overridden_path: false, }; match package_table.entry(pkg_name) { @@ -287,6 +339,7 @@ impl DependencyGraph { mode: DependencyMode::Always, subst: subst.map(parse_substitution).transpose()?, digest: digest.map(Symbol::from), + dep_override: false, }, ); } @@ -304,6 +357,7 @@ impl DependencyGraph { mode: DependencyMode::DevOnly, subst: subst.map(parse_substitution).transpose()?, digest: digest.map(Symbol::from), + dep_override: false, }, ); } @@ -385,15 +439,30 @@ impl DependencyGraph { Ok(()) } - /// Add the graph in `extension` to `self` consuming it in the process. Assumes the root of - /// `extension` is the only shared node between the two, and fails if this is not the case. - /// Labels packages coming from `extension` as being resolved by `resolver`. + /// A "root" function responsible for adding the graph in `extension` to `self` (the core of the + /// merging process is implemented recursively in the `merge_pkg` function). Packages can be + /// shared between the two as long as either: + /// - they are consistent (have the same name and the same set of dependencies) + /// - if a valid override exists for the otherwise conflicting packages + /// + /// Merging starts by creating an edge from the package containing the extension as its + /// dependency (`from` argument) to the package being the "root" of the extension + /// (`merged_pkg_name` argument). During merge, which happens on a per-package basis in the + /// `merge_pkg` function, packages coming from `extension` are labeled as being resolved by + /// `resolver`. /// /// It is an error to attempt to merge into `self` after its `always_deps` (the set of packages /// that are always transitive dependencies of its root, regardless of mode) has been /// calculated. This usually happens when the graph is created, so this function is intended /// primarily for internal use, but is exposed for testing. - pub fn merge(&mut self, extension: DependencyGraph, resolver: Symbol) -> Result<()> { + pub fn merge( + &mut self, + from: PM::PackageName, + merged_pkg_name: PM::PackageName, + extension: DependencyGraph, + resolver: Symbol, + overrides: &BTreeMap, + ) -> Result<()> { let DependencyGraph { root_package: ext_root, package_graph: ext_graph, @@ -415,45 +484,86 @@ impl DependencyGraph { bail!("Merging dependencies into a graph after calculating its 'always' dependencies"); } - for (ext_name, mut ext_pkg) in ext_table { - ext_pkg.resolver = Some(resolver); + if ext_table.is_empty() { + // the external graph is effectively empty - nothing to merge + return Ok(()); + } - // The root package is not present in the package table (because it doesn't have a - // source). If it appears in the other table, it indicates a cycle. - if ext_name == self.root_package { - bail!( - "Conflicting dependencies found:\n{0} = 'root'\n{0} = {1}", - ext_name, - PackageWithResolverTOML(&ext_pkg), - ); - } + // unwrap safe as the table must have the package if the graph has it + let merged_pkg = ext_table.get(&merged_pkg_name).unwrap(); + self.merge_pkg( + merged_pkg.clone(), + merged_pkg_name, + &ext_graph, + &ext_table, + resolver, + overrides, + )?; + // unwrap is safe as all edges have a Dependency weight + let merged_dep = ext_graph.edge_weight(from, merged_pkg_name).unwrap(); + self.package_graph + .add_edge(from, merged_pkg_name, merged_dep.clone()); - match self.package_table.entry(ext_name) { - Entry::Vacant(entry) => { - entry.insert(ext_pkg); - } + Ok(()) + } - // Seeing the same package in `extension` is OK only if it has the same set of - // dependencies as the existing one.i - Entry::Occupied(_) => { - let (self_deps, ext_deps) = - pkg_deps_equal(ext_name, &self.package_graph, &ext_graph); - if self_deps != ext_deps { - bail!( - "Conflicting dependencies found for '{ext_name}' during external resolution by '{resolver}':\n{}{}", - format_deps("\nExternal dependencies not found:", self_deps), - format_deps("\nNew external dependencies:", ext_deps), - ); - } - } - } + /// Recursively merge package from an `extension` graph (resolved by an external resolver) to + /// `self`. The extension graph is traversed in a depth-first manner, successively adding + /// packages and their connecting edges to `self` via the `process_graph_entry` + /// function. Additionally, during traversal the algorithm detects which of the sub-graph's + /// packages need to be overridden (in which case their dependencies in `extension` should no + /// longer be inserted into `self`). + fn merge_pkg( + &mut self, + mut ext_pkg: Package, + ext_name: PM::PackageName, + ext_graph: &DiGraphMap, + ext_table: &BTreeMap, + resolver: Symbol, + overrides: &BTreeMap, + ) -> Result<()> { + ext_pkg.resolver = Some(resolver); + + // The root package is not present in the package table (because it doesn't have a + // source). If it appears in the other table, it indicates a cycle. + if ext_name == self.root_package { + bail!( + "Conflicting dependencies found:\n{0} = 'root'\n{0} = {1}", + ext_name, + PackageWithResolverTOML(&ext_pkg), + ); } - // Because all the packages in `extensions`'s package table didn't exist in `self`'s, all - // `ext_graph`'s edges are known to not occur in `self.package_graph` and can be added - // without worrying about introducing duplicate edges. - for (from, to, dep) in ext_graph.all_edges() { - self.package_graph.add_edge(from, to, dep.clone()); + if self + .process_graph_entry( + &ext_pkg, + ext_name, + overrides, + Some(ext_graph), + Some(resolver), + )? + .is_some() + { + // existing entry was found + return Ok(()); + } + + // if we are here, it means that a new package has been inserted into the graph - we need to + // process its dependencies and add appropriate edges to them + for dst in ext_graph.neighbors_directed(ext_name, Direction::Outgoing) { + // unwrap safe as the table must have the package if the graph has it + let dst_pkg = ext_table.get(&dst).unwrap(); + self.merge_pkg( + dst_pkg.clone(), + dst, + ext_graph, + ext_table, + resolver, + overrides, + )?; + // unwrap is safe as all edges have a Dependency weight + let ext_dep = ext_graph.edge_weight(ext_name, dst).unwrap(); + self.package_graph.add_edge(ext_name, dst, ext_dep.clone()); } Ok(()) @@ -493,55 +603,169 @@ impl DependencyGraph { package_path: &Path, dependency_cache: &mut DependencyCache, external_requests: &mut Vec, + overrides: &mut BTreeMap, progress_output: &mut Progress, ) -> Result<()> { let from = package.package.name; - for (to, dep) in &package.dependencies { - match dep { - PM::Dependency::External(resolver) => external_requests.push(ExternalRequest { - mode: DependencyMode::Always, - from, - to: *to, - resolver: *resolver, - pkg_path: package_path.to_path_buf(), - }), - PM::Dependency::Internal(dep) => self.resolve_internally( - DependencyMode::Always, - from, - *to, - parent, - dep.clone(), - dependency_cache, - external_requests, - progress_output, - )?, + + self.extend_with_dependencies( + DependencyMode::Always, + &package.dependencies, + from, + parent, + package_path, + dependency_cache, + external_requests, + overrides, + progress_output, + )?; + + self.extend_with_dependencies( + DependencyMode::DevOnly, + &package.dev_dependencies, + from, + parent, + package_path, + dependency_cache, + external_requests, + overrides, + progress_output, + )?; + + Ok(()) + } + + /// Iterate over the set of a given package's dependencies (overridden dependencies first). to + /// add them to the dependency graph. + fn extend_with_dependencies( + &mut self, + mode: DependencyMode, + dependencies: &PM::Dependencies, + from: Symbol, + parent: &PM::DependencyKind, + package_path: &Path, + dependency_cache: &mut DependencyCache, + external_requests: &mut Vec, + overrides: &mut BTreeMap, + progress_output: &mut Progress, + ) -> Result<()> { + // partition dep into overrides and not + let (overridden_deps, deps): (Vec<_>, Vec<_>) = + dependencies.iter().partition(|(_, dep)| { + matches!( + dep, + PM::Dependency::Internal(PM::InternalDependency { + dep_override: true, + .. + }) + ) + }); + + // Process overrides first to include them in processing of non-overridden deps. It is + // important to do so as a dependency override may "prune" portions of a dependency graph + // that would otherwise prevent other dependencies from kicking in. In other words, a given + // override may be the dominant one only if another override eliminates some graph + // edges. See diamond_problem_dep_transitive_nested_override for an example (in tests) of + // such situation. + // + // It's also pretty important that we do not extend overrides with the override being + // currently processed. The reason for it is that in order to detect incorrect overrides + // (such that do not dominate all package "uses") we rely on the package being reachable via + // different paths: + // - if it's reached via an overridden path again for the same override, it's OK + // - if it's reached via an overridden path again for a different override, it's an error + // - if it's reached via a non-overridden path, it's an error (insufficient override) + // + // While the first type of error could still be detected if we injected the currently + // processed override into the overrides set, the second one would not. Consider + // diamond_problem_dep_incorrect_override_occupied example (in tests) to see a situation + // when a non-overridden path is chosen first to insert the package and then insufficient + // override could be considered correct if we injected it into the overrides set (as we will + // not have another path to explore that would disqualify it). + let mut local_overrides = BTreeMap::new(); + for (to, dep) in overridden_deps { + let inserted_pkg = self.extend_with_dep( + mode, + from, + *to, + dep, + parent, + package_path, + dependency_cache, + external_requests, + overrides, + progress_output, + )?; + // do not include already overridden overrides + if let Some(pkg) = inserted_pkg { + if !overrides.contains_key(to) { + local_overrides.insert(*to, pkg); + } } } - for (to, dep) in &package.dev_dependencies { - match dep { - PM::Dependency::External(resolver) => external_requests.push(ExternalRequest { - mode: DependencyMode::DevOnly, + // add new overrides to the set + overrides.extend(local_overrides.clone()); + + for (to, dep) in deps { + self.extend_with_dep( + mode, + from, + *to, + dep, + parent, + package_path, + dependency_cache, + external_requests, + overrides, + progress_output, + )?; + } + // remove locally added overrides from the set + overrides.retain(|k, _| !local_overrides.contains_key(k)); + Ok(()) + } + + /// Extend the dependency graph with a single dependent package. + fn extend_with_dep( + &mut self, + mode: DependencyMode, + from: Symbol, + to: Symbol, + dep: &PM::Dependency, + parent: &PM::DependencyKind, + package_path: &Path, + dependency_cache: &mut DependencyCache, + external_requests: &mut Vec, + overrides: &mut BTreeMap, + progress_output: &mut Progress, + ) -> Result> { + let inserted_pkg = match dep { + PM::Dependency::External(resolver) => { + external_requests.push(ExternalRequest { + mode, from, - to: *to, + to, resolver: *resolver, pkg_path: package_path.to_path_buf(), - }), - - PM::Dependency::Internal(dep) => self.resolve_internally( - DependencyMode::DevOnly, - from, - *to, - parent, - dep.clone(), - dependency_cache, - external_requests, - progress_output, - )?, + overrides: overrides.clone(), + }); + None } - } - Ok(()) + PM::Dependency::Internal(dep) => Some(self.resolve_internally( + mode, + from, + to, + parent, + dep.clone(), + dependency_cache, + external_requests, + overrides, + progress_output, + )?), + }; + Ok(inserted_pkg) } /// Resolve the packages described at dependency `to` of package `from` with manifest at path @@ -558,6 +782,7 @@ impl DependencyGraph { to: PM::PackageName, resolver: Symbol, package_path: &Path, + overrides: &BTreeMap, progress_output: &mut Progress, ) -> Result<()> { let mode_label = if mode == DependencyMode::DevOnly { @@ -614,9 +839,10 @@ impl DependencyGraph { format!("Parsing response from '{resolver}' for dependency '{to}' of package '{from}'") })?; - self.merge(sub_graph, resolver).with_context(|| { - format!("Adding dependencies from {resolver} for dependency '{to}' in '{from}'") - })?; + self.merge(from, to, sub_graph, resolver, overrides) + .with_context(|| { + format!("Adding dependencies from {resolver} for dependency '{to}' in '{from}'") + })?; Ok(()) } @@ -636,27 +862,33 @@ impl DependencyGraph { dep: PM::InternalDependency, dependency_cache: &mut DependencyCache, external_requests: &mut Vec, + overrides: &mut BTreeMap, progress_output: &mut Progress, - ) -> Result<()> { + ) -> Result { let PM::InternalDependency { kind, version, subst, digest, + dep_override, } = dep; + // are there active overrides for this path in the graph? + let overridden_path = !overrides.is_empty(); let mut pkg = Package { kind, version, resolver: None, + overridden_path, }; pkg.kind.reroot(parent)?; - self.process_dependency( + let inserted_pkg = self.process_dependency( pkg, to, dependency_cache, external_requests, + overrides, progress_output, )?; self.package_graph.add_edge( @@ -666,42 +898,32 @@ impl DependencyGraph { mode, subst, digest, + dep_override, }, ); - - Ok(()) + Ok(inserted_pkg) } - /// Ensures that package `pkg_name` and all its transitive dependencies are present in the - /// graph, all sourced from their respective packages, `pkg`. Fails if any of the packages in - /// the dependency sub-graph rooted at `pkg_name` are already present in `self` but sourced from - /// a different dependency. + /// Ensure that package `pkg_name` and all its transitive dependencies are present in the graph, + /// all sourced from their respective packages, `pkg`. Fails if any of the packages in the + /// dependency sub-graph rooted at `pkg_name` are already present in `self` but sourced from a + /// different dependency. fn process_dependency( &mut self, pkg: Package, name: PM::PackageName, dependency_cache: &mut DependencyCache, external_requests: &mut Vec, + overrides: &mut BTreeMap, progress_output: &mut Progress, - ) -> Result<()> { - let pkg = match self.package_table.entry(name) { - Entry::Vacant(entry) => entry.insert(pkg), - - // Seeing the same package again, pointing to the same dependency: OK, return early. - Entry::Occupied(entry) if entry.get() == &pkg => { - return Ok(()); - } - - // Seeing the same package again, but pointing to a different dependency: Not OK. - Entry::Occupied(entry) => { - bail!( - "Conflicting dependencies found:\n{0} = {1}\n{0} = {2}", - name, - PackageWithResolverTOML(entry.get()), - PackageWithResolverTOML(&pkg), - ); - } - }; + ) -> Result { + if let Some(existing_entry) = self.process_graph_entry( + &pkg, name, overrides, /* external_subgraph */ None, /* resolver */ None, + )? { + // existing entry was found + return Ok(existing_entry); + } + // a package has been inserted into the graph - process its dependencies dependency_cache .download_and_update_if_remote(name, &pkg.kind, progress_output) @@ -711,6 +933,7 @@ impl DependencyGraph { let manifest = parse_move_manifest_from_file(&pkg_path) .with_context(|| format!("Parsing manifest for '{}'", name))?; + let inserted_pkg = pkg.clone(); let kind = pkg.kind.clone(); self.extend_graph( &kind, @@ -718,9 +941,149 @@ impl DependencyGraph { &pkg_path, dependency_cache, external_requests, + overrides, progress_output, ) - .with_context(|| format!("Resolving dependencies for package '{}'", name)) + .with_context(|| format!("Resolving dependencies for package '{}'", name))?; + Ok(inserted_pkg) + } + + /// Attempt to insert a newly encountered package to the graph which may or may not already + /// contain an entry for the same package name: + /// - if no package exists in the graph, insert it + /// - if a conflicting package already exists in the graph, override it if an override can be + /// found in the set (if it does not, report an error) + /// - if the same package already exists in the graph, and this package is on the "override + /// path" keep checking its dependencies to make sure that previously used overrides are + /// correct (dominate all uses of the package); a package is marked to be on the "override + /// path" if it is inserted into the graph while the overrides set is non-empty, making this + /// mark into a coarse indicator of whether portions of the graph need to be (re)validated. + fn process_graph_entry( + &mut self, + pkg: &Package, + name: PM::PackageName, + overrides: &BTreeMap, + external_subgraph: Option<&DiGraphMap>, + resolver: Option, + ) -> Result> { + match self.package_table.entry(name) { + Entry::Vacant(entry) => { + // Note that we simply insert a dependent package here without checking the + // overrides set. The reason for it is that if there was an override for this entry, + // it would have already been inserted as the overrides are processed before + // non-overridden dependencies (and only after they are processed, the overrides set + // is populated). + entry.insert(pkg.clone()); + Ok(None) + } + + // Seeing the same package again, pointing to the same dependency: OK, return early but + // only if seeing a package that was not on an "override path" (was created when no + // override was active); otherwise we need to keep inspecting the graph to make sure + // that the overrides introduced on this path correctly dominate all "uses" of a given + // package + Entry::Occupied(entry) if entry.get() == pkg => { + if let Some(ext_graph) = external_subgraph { + // when trying to insert a package into the graph as part of merging an external + // subgraph it's not enough to check for package equality as it does not capture + // dependencies that may differ between the internally and externally resolved + // packages. + let (self_deps, ext_deps) = + pkg_deps_equal(name, &self.package_graph, ext_graph); + if self_deps != ext_deps { + bail!( + "Conflicting dependencies found for '{name}' during external resolution by '{}':\n{}{}", + resolver.unwrap(), // safe because external_subgraph exists + format_deps("\nExternal dependencies not found:", self_deps), + format_deps("\nNew external dependencies:", ext_deps), + ); + } + } + if entry.get().overridden_path { + // check if acyclic to avoid infinite recursion - see the + // diamond_problem_dep_incorrect_override_cycle (in tests) for an example of + // such situation + self.check_acyclic()?; + // inspect the rest of the graph and report error if a problem is found + self.override_verify(pkg, name, overrides)?; + } + Ok(Some(pkg.clone())) + } + + // Seeing the same package again, but pointing to a different dependency: Not OK unless + // there is an override. + Entry::Occupied(mut entry) => { + if let Some(overridden_pkg) = overrides.get(&name) { + // override found - use it and return - its dependencies have already been + // processed the first time override pkg was processed (before it was inserted + // into overrides set) + if overridden_pkg != entry.get() { + entry.insert(overridden_pkg.clone()); + } + Ok(Some(overridden_pkg.clone())) + } else { + bail!( + "Conflicting dependencies found:\n{0} = {1}\n{0} = {2}", + name, + PackageWithResolverTOML(entry.get()), + PackageWithResolverTOML(pkg), + ); + } + } + } + } + + /// Inspect a portion of the graph by simply following existing nodes and edges. If during + /// inspection we encounter a package inserted as a result of an override but this override is + /// not in the current overrides set (or a different override for the same package is in the + /// overrides set), then the previously used override was incorrect (insufficient) and an error + /// must be reported. + fn override_verify( + &self, + pkg: &Package, + name: PM::PackageName, + overrides: &BTreeMap, + ) -> Result<()> { + // check if any (should be 0 or 1) edges are the overrides of pkg + let pkg_overrides: Vec<_> = self + .package_graph + .neighbors_directed(name, Direction::Incoming) + .filter(|src| { + // unwrap is safe as all edges have a Dependency weight + self.package_graph + .edge_weight(*src, name) + .unwrap() + .dep_override + }) + .collect(); + + if !pkg_overrides.is_empty() { + let Some(overridden_pkg) = overrides.get(&name) else { + bail!("Incorrect override of {} in {} (an override should dominate all uses of the overridden package)", name, pkg_overrides[0]); + }; + if overridden_pkg != pkg { + // This should never happen as we process overridden dependencies first. Since the + // overridden dependency is omitted from the set of all overrides (see a comment in + // extend_with_dependencies to see why), a conflicting override will be caught as a + // "simple" conflicting dependency + bail!( + "Incorrect override of {} in {} (conflicting overrides)", + name, + pkg_overrides[0] + ); + } + } + + // recursively check all other packages in the subgraph + for dst in self + .package_graph + .neighbors_directed(name, Direction::Outgoing) + { + // unwrap is safe as dst is in the graph so it must also be in package table + let dst_pkg = self.package_table.get(&dst).unwrap(); + self.override_verify(dst_pkg, dst, overrides)?; + } + Ok(()) } /// Check that every dependency in the graph, excluding the root package, is present in the @@ -797,6 +1160,7 @@ impl<'a> fmt::Display for PackageTOML<'a> { kind, version, resolver: _, + overridden_path: _, } = self.0; f.write_str("{ ")?; @@ -871,6 +1235,7 @@ impl<'a> fmt::Display for DependencyTOML<'a> { mode: _, subst, digest, + dep_override: _, }, ) = self; @@ -959,8 +1324,7 @@ fn format_deps(msg: &str, dependencies: Vec<(&Dependency, PM::PackageName)>) -> s } -/// Checks if dependencies of a given package in two different dependency graph maps are the -/// same. +/// Check if dependencies of a given package in two different dependency graph maps are the same. fn pkg_deps_equal<'a>( pkg_name: Symbol, pkg_graph: &'a DiGraphMap, diff --git a/external-crates/move/tools/move-package/src/source_package/manifest_parser.rs b/external-crates/move/tools/move-package/src/source_package/manifest_parser.rs index 25971a49227ff..da082852a27f3 100644 --- a/external-crates/move/tools/move-package/src/source_package/manifest_parser.rs +++ b/external-crates/move/tools/move-package/src/source_package/manifest_parser.rs @@ -334,6 +334,11 @@ pub fn parse_dependency(dep_name: &str, mut tval: TV) -> Result .transpose()?; let version = table.remove("version").map(parse_version).transpose()?; let digest = table.remove("digest").map(parse_digest).transpose()?; + let dep_override = table + .remove("override") + .map(parse_dep_override) + .transpose()? + .map_or(false, |o| o); let kind = match ( table.remove("local"), @@ -350,7 +355,10 @@ pub fn parse_dependency(dep_name: &str, mut tval: TV) -> Result bail!("Local source path not a string") }; - PM::DependencyKind::Local(local) + PM::DependencyKind::Local( + // with allow_cwd_parent set to true, it never fails + PM::normalize_path(local, true /* allow_cwd_parent */).unwrap(), + ) } (None, subdir, Some(git_url), None) => { @@ -433,6 +441,7 @@ pub fn parse_dependency(dep_name: &str, mut tval: TV) -> Result subst, version, digest, + dep_override, })) } @@ -502,6 +511,13 @@ fn parse_digest(tval: TV) -> Result { Ok(PM::PackageDigest::from(digest_str)) } +fn parse_dep_override(tval: TV) -> Result { + if !tval.is_bool() { + bail!("Invalid dependency override value"); + } + Ok(tval.as_bool().unwrap()) +} + // check that only recognized names are provided at the top-level fn warn_if_unknown_field_names(table: &toml::map::Map, known_names: &[&str]) { let mut unknown_names = BTreeSet::new(); diff --git a/external-crates/move/tools/move-package/src/source_package/parsed_manifest.rs b/external-crates/move/tools/move-package/src/source_package/parsed_manifest.rs index 1337d9113b676..7ac1f38792bda 100644 --- a/external-crates/move/tools/move-package/src/source_package/parsed_manifest.rs +++ b/external-crates/move/tools/move-package/src/source_package/parsed_manifest.rs @@ -16,6 +16,7 @@ pub type NamedAddress = Symbol; pub type PackageName = Symbol; pub type FileName = Symbol; pub type PackageDigest = Symbol; +pub type DepOverride = bool; pub type AddressDeclarations = BTreeMap>; pub type DevAddressDeclarations = BTreeMap; @@ -55,6 +56,7 @@ pub struct InternalDependency { pub subst: Option, pub version: Option, pub digest: Option, + pub dep_override: DepOverride, } #[derive(Debug, Clone, Eq, PartialEq)] @@ -154,7 +156,7 @@ impl Default for DependencyKind { /// or is prefixed by accesses to parent directories when `allow_cwd_parent` is false. /// /// Returns the normalized path on success. -fn normalize_path(path: impl AsRef, allow_cwd_parent: bool) -> Result { +pub fn normalize_path(path: impl AsRef, allow_cwd_parent: bool) -> Result { use Component::*; let mut stack = Vec::new(); diff --git a/external-crates/move/tools/move-package/tests/test_dependency_graph.rs b/external-crates/move/tools/move-package/tests/test_dependency_graph.rs index 2b19b1da94e6e..caded4fac8784 100644 --- a/external-crates/move/tools/move-package/tests/test_dependency_graph.rs +++ b/external-crates/move/tools/move-package/tests/test_dependency_graph.rs @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 use std::{ - collections::BTreeSet, + collections::{BTreeMap, BTreeSet}, fs::{self, File}, io::Write, path::PathBuf, @@ -184,7 +184,15 @@ fn merge_simple() { ) .expect("Reading inner"); - assert!(outer.merge(inner, Symbol::from("")).is_ok()); + assert!(outer + .merge( + Symbol::from("A"), + Symbol::from("A"), + inner, + Symbol::from(""), + &BTreeMap::new(), + ) + .is_ok()); assert_eq!( outer.topological_order(), @@ -214,7 +222,15 @@ fn merge_into_root() { ) .expect("Reading inner"); - assert!(outer.merge(inner, Symbol::from("")).is_ok()); + assert!(outer + .merge( + Symbol::from("Root"), + Symbol::from("A"), + inner, + Symbol::from(""), + &BTreeMap::new(), + ) + .is_ok()); assert_eq!( outer.topological_order(), @@ -243,7 +259,7 @@ fn merge_detached() { ) .expect("Reading inner"); - let Err(err) = outer.merge(inner, Symbol::from("")) else { + let Err(err) = outer.merge(Symbol::from("OtherDep"), Symbol::from("A"), inner, Symbol::from(""), &BTreeMap::new()) else { panic!("Inner's root is not part of outer's graph, so this should fail"); }; @@ -267,7 +283,7 @@ fn merge_after_calculating_always_deps() { ) .expect("Reading inner"); - let Err(err) = outer.merge(inner, Symbol::from("")) else { + let Err(err) = outer.merge(Symbol::from("A"),Symbol::from("A"), inner, Symbol::from(""), &BTreeMap::new()) else { panic!("Outer's always deps have already been calculated so this should fail"); }; @@ -295,7 +311,15 @@ fn merge_overlapping() { ) .expect("Reading inner"); - assert!(outer.merge(inner, Symbol::from("")).is_ok()); + assert!(outer + .merge( + Symbol::from("B"), + Symbol::from("A"), + inner, + Symbol::from(""), + &BTreeMap::new(), + ) + .is_ok()); } #[test] @@ -319,7 +343,7 @@ fn merge_overlapping_different_deps() { ) .expect("Reading inner"); - let Err(err) = outer.merge(inner, Symbol::from("")) else { + let Err(err) = outer.merge(Symbol::from("B"),Symbol::from("A"), inner, Symbol::from(""), &BTreeMap::new()) else { panic!("Outer and inner mention package A which has different dependencies in both."); }; @@ -347,7 +371,7 @@ fn merge_cyclic() { ) .expect("Reading inner"); - let Err(err) = outer.merge(inner, Symbol::from("")) else { + let Err(err) = outer.merge(Symbol::from("B"), Symbol::from("Root"), inner, Symbol::from(""), &BTreeMap::new()) else { panic!("Inner refers back to outer's root"); }; diff --git a/external-crates/move/tools/move-package/tests/test_sources/dep_dev_dep_diamond/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/dep_dev_dep_diamond/Move.resolved index f5f4bc18b2d3a..5edc3e77e4210 100644 --- a/external-crates/move/tools/move-package/tests/test_sources/dep_dev_dep_diamond/Move.resolved +++ b/external-crates/move/tools/move-package/tests/test_sources/dep_dev_dep_diamond/Move.resolved @@ -69,6 +69,7 @@ ResolvedGraph { ), version: None, resolver: None, + overridden_path: false, }, "B": Package { kind: Local( @@ -76,6 +77,7 @@ ResolvedGraph { ), version: None, resolver: None, + overridden_path: false, }, "C": Package { kind: Local( @@ -83,6 +85,7 @@ ResolvedGraph { ), version: None, resolver: None, + overridden_path: false, }, "D": Package { kind: Local( @@ -90,6 +93,7 @@ ResolvedGraph { ), version: None, resolver: None, + overridden_path: false, }, }, always_deps: { @@ -142,6 +146,7 @@ ResolvedGraph { subst: None, version: None, digest: None, + dep_override: false, }, ), }, @@ -154,6 +159,7 @@ ResolvedGraph { subst: None, version: None, digest: None, + dep_override: false, }, ), }, @@ -189,6 +195,7 @@ ResolvedGraph { subst: None, version: None, digest: None, + dep_override: false, }, ), }, @@ -266,21 +273,23 @@ ResolvedGraph { "A": Internal( InternalDependency { kind: Local( - "./deps_only/A", + "deps_only/A", ), subst: None, version: None, digest: None, + dep_override: false, }, ), "C": Internal( InternalDependency { kind: Local( - "./deps_only/C", + "deps_only/C", ), subst: None, version: None, digest: None, + dep_override: false, }, ), }, @@ -288,11 +297,12 @@ ResolvedGraph { "B": Internal( InternalDependency { kind: Local( - "./deps_only/B", + "deps_only/B", ), subst: None, version: None, digest: None, + dep_override: false, }, ), }, diff --git a/external-crates/move/tools/move-package/tests/test_sources/dep_good_digest/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/dep_good_digest/Move.resolved index d9f0967f085f6..106a51f969f5d 100644 --- a/external-crates/move/tools/move-package/tests/test_sources/dep_good_digest/Move.resolved +++ b/external-crates/move/tools/move-package/tests/test_sources/dep_good_digest/Move.resolved @@ -23,6 +23,7 @@ ResolvedGraph { ), version: None, resolver: None, + overridden_path: false, }, }, always_deps: { @@ -104,7 +105,7 @@ ResolvedGraph { "OtherDep": Internal( InternalDependency { kind: Local( - "./deps_only/other_dep", + "deps_only/other_dep", ), subst: Some( { @@ -117,6 +118,7 @@ ResolvedGraph { digest: Some( "6A88B7888D6049EB0121900E22B6FA2C0E702F042C8C8D4FD62AD5C990B9F9A8", ), + dep_override: false, }, ), }, diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_backflow_resolution/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_backflow_resolution/Move.resolved index 692aa398ff5bf..357edc8d63d2d 100644 --- a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_backflow_resolution/Move.resolved +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_backflow_resolution/Move.resolved @@ -51,6 +51,7 @@ ResolvedGraph { ), version: None, resolver: None, + overridden_path: false, }, "B": Package { kind: Local( @@ -58,6 +59,7 @@ ResolvedGraph { ), version: None, resolver: None, + overridden_path: false, }, "C": Package { kind: Local( @@ -65,6 +67,7 @@ ResolvedGraph { ), version: None, resolver: None, + overridden_path: false, }, }, always_deps: { @@ -123,6 +126,7 @@ ResolvedGraph { ), version: None, digest: None, + dep_override: false, }, ), }, @@ -171,6 +175,7 @@ ResolvedGraph { ), version: None, digest: None, + dep_override: false, }, ), }, @@ -238,17 +243,18 @@ ResolvedGraph { "A": Internal( InternalDependency { kind: Local( - "./deps_only/A", + "deps_only/A", ), subst: None, version: None, digest: None, + dep_override: false, }, ), "B": Internal( InternalDependency { kind: Local( - "./deps_only/B", + "deps_only/B", ), subst: Some( { @@ -259,6 +265,7 @@ ResolvedGraph { ), version: None, digest: None, + dep_override: false, }, ), }, diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_conflict/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_conflict/Move.resolved new file mode 100644 index 0000000000000..c20fcea9f19af --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_conflict/Move.resolved @@ -0,0 +1,3 @@ +Failed to resolve dependencies for package 'Root': Resolving dependencies for package 'B': Conflicting dependencies found: +C = { local = "deps_only/C", version = "2.0.0" } +C = { local = "deps_only/C", version = "1.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_conflict/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_conflict/Move.toml new file mode 100644 index 0000000000000..69cc1e8ca1412 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_conflict/Move.toml @@ -0,0 +1,7 @@ +[package] +name = "Root" +version = "0.0.0" + +[dependencies] +A = { local = "./deps_only/A" } +B = { local = "./deps_only/B" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_conflict/deps_only/A/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_conflict/deps_only/A/Move.toml new file mode 100644 index 0000000000000..b4bded6d53fd6 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_conflict/deps_only/A/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "A" +version = "0.0.0" + +[dependencies] +C = { local = "../C", version = "2.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_conflict/deps_only/B/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_conflict/deps_only/B/Move.toml new file mode 100644 index 0000000000000..1ee8a9c06d7d9 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_conflict/deps_only/B/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "B" +version = "0.0.0" + +[dependencies] +C = { local = "../C", version = "1.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_conflict/deps_only/C/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_conflict/deps_only/C/Move.toml new file mode 100644 index 0000000000000..73ed83696146c --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_conflict/deps_only/C/Move.toml @@ -0,0 +1,3 @@ +[package] +name = "C" +version = "0.0.0" diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_conflict/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_conflict/Move.resolved new file mode 100644 index 0000000000000..e4b751a0e3d80 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_conflict/Move.resolved @@ -0,0 +1,3 @@ +Failed to resolve dependencies for package 'Root': Adding dependencies from ../resolvers/successful.sh for dependency 'A' in 'Root': Conflicting dependencies found: +ADep = { local = "deps_only/ADep", version = "1.0.0" } +ADep = { local = "deps_only/ADep" } # Resolved by ../resolvers/successful.sh diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_conflict/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_conflict/Move.toml new file mode 100644 index 0000000000000..3a04d8d3e69be --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_conflict/Move.toml @@ -0,0 +1,13 @@ +[package] +name = "Root" +version = "0.0.0" + +[dependencies] +B = { local = "./deps_only/B" } + +[dependencies.A] +resolver = "../resolvers/successful.sh" + +[dependencies.A.packages] +Contains = "Anything" +Has = { No = "Schema" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_conflict/deps_only/A/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_conflict/deps_only/A/Move.toml new file mode 100644 index 0000000000000..74ba633d5270d --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_conflict/deps_only/A/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "A" +version = "0.0.0" + +[dependencies] +ADep = { local = "../ADep" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_conflict/deps_only/ADep/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_conflict/deps_only/ADep/Move.toml new file mode 100644 index 0000000000000..27032db1a45f4 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_conflict/deps_only/ADep/Move.toml @@ -0,0 +1,3 @@ +[package] +name = "ADep" +version = "0.0.0" diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_conflict/deps_only/B/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_conflict/deps_only/B/Move.toml new file mode 100644 index 0000000000000..7b3d1f6cd2846 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_conflict/deps_only/B/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "B" +version = "0.0.0" + +[dependencies] +ADep = { local = "../ADep", version = "1.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v1/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v1/Move.resolved new file mode 100644 index 0000000000000..9a30327390b15 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v1/Move.resolved @@ -0,0 +1 @@ +Failed to resolve dependencies for package 'Root': Adding dependencies from ../../../resolvers/successful.sh for dependency 'A' in 'C': Incorrect override of ADep in B (an override should dominate all uses of the overridden package) diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v1/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v1/Move.toml new file mode 100644 index 0000000000000..183e027601d78 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v1/Move.toml @@ -0,0 +1,22 @@ +# Dependency graph and and override (ov) +# C's dependency on A and ADep is externally resolved (override is incorrect) +# +# +----+ +# +---->| C |----+ +# | +----+ | +# | | +# +----+ | +---->+----+------>+-------+ +# |Root|----| | A | | ADep | +# +----+ | +---->+----+ +-->+-------+ +# | | | +# | +----+----+ ov(1) | +# +---->| B |-------------------+ +# +----+ + +[package] +name = "Root" +version = "0.0.0" + +[dependencies] +B = { local = "./deps_only/B" } +C = { local = "./deps_only/C" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v1/deps_only/A/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v1/deps_only/A/Move.toml new file mode 100644 index 0000000000000..74ba633d5270d --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v1/deps_only/A/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "A" +version = "0.0.0" + +[dependencies] +ADep = { local = "../ADep" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v1/deps_only/ADep/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v1/deps_only/ADep/Move.toml new file mode 100644 index 0000000000000..27032db1a45f4 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v1/deps_only/ADep/Move.toml @@ -0,0 +1,3 @@ +[package] +name = "ADep" +version = "0.0.0" diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v1/deps_only/B/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v1/deps_only/B/Move.toml new file mode 100644 index 0000000000000..08d399ad8e5b5 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v1/deps_only/B/Move.toml @@ -0,0 +1,7 @@ +[package] +name = "B" +version = "0.0.0" + +[dependencies] +A = { local = "../A" } +ADep = { local = "../ADep", version = "1.0.0", override = true } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v1/deps_only/C/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v1/deps_only/C/Move.toml new file mode 100644 index 0000000000000..88e670eb24d9b --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v1/deps_only/C/Move.toml @@ -0,0 +1,10 @@ +[package] +name = "C" +version = "0.0.0" + +[dependencies.A] +resolver = "../../../resolvers/successful.sh" + +[dependencies.A.packages] +Contains = "Anything" +Has = { No = "Schema" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v2/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v2/Move.resolved new file mode 100644 index 0000000000000..e4b751a0e3d80 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v2/Move.resolved @@ -0,0 +1,3 @@ +Failed to resolve dependencies for package 'Root': Adding dependencies from ../resolvers/successful.sh for dependency 'A' in 'Root': Conflicting dependencies found: +ADep = { local = "deps_only/ADep", version = "1.0.0" } +ADep = { local = "deps_only/ADep" } # Resolved by ../resolvers/successful.sh diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v2/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v2/Move.toml new file mode 100644 index 0000000000000..49ff712b99511 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v2/Move.toml @@ -0,0 +1,28 @@ +# Dependency graph and and override (ov) +# Root's dependency on A and ADep is externally resolved (override is incorrect) +# +# +----+ +# +---->| A |------+ +# | +----+ | +# | | +# +----+ | +---------------->+-------+ +# |Root|----| +---------------->| ADep | +# +----+ | | +--->+-------+ +# | ov(1) | | +# | +----+------+ +----+ | +# +---->| B |--------->| C |---+ +# +----+ +----+ + +[package] +name = "Root" +version = "0.0.0" + +[dependencies] +B = { local = "./deps_only/B" } + +[dependencies.A] +resolver = "../resolvers/successful.sh" + +[dependencies.A.packages] +Contains = "Anything" +Has = { No = "Schema" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v2/deps_only/A/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v2/deps_only/A/Move.toml new file mode 100644 index 0000000000000..74ba633d5270d --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v2/deps_only/A/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "A" +version = "0.0.0" + +[dependencies] +ADep = { local = "../ADep" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v2/deps_only/ADep/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v2/deps_only/ADep/Move.toml new file mode 100644 index 0000000000000..27032db1a45f4 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v2/deps_only/ADep/Move.toml @@ -0,0 +1,3 @@ +[package] +name = "ADep" +version = "0.0.0" diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v2/deps_only/B/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v2/deps_only/B/Move.toml new file mode 100644 index 0000000000000..bf53f3f30b507 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v2/deps_only/B/Move.toml @@ -0,0 +1,7 @@ +[package] +name = "B" +version = "0.0.0" + +[dependencies] +ADep = { local = "../ADep", version = "1.0.0", override = true } +C = { local = "../C" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v2/deps_only/C/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v2/deps_only/C/Move.toml new file mode 100644 index 0000000000000..9c4cc80e09e32 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_incorrect_override_v2/deps_only/C/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "C" +version = "0.0.0" + +[dependencies] +ADep = { local = "../ADep" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_no_conflict/Move.locked b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_no_conflict/Move.locked new file mode 100644 index 0000000000000..1302689e4f633 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_no_conflict/Move.locked @@ -0,0 +1,29 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 0 + +dependencies = [ + { name = "A" }, + { name = "B" }, +] + +[[move.package]] +name = "A" +source = { local = "deps_only/A" } + +dependencies = [ + { name = "ADep" }, +] + +[[move.package]] +name = "ADep" +source = { local = "deps_only/ADep" } + +[[move.package]] +name = "B" +source = { local = "deps_only/B" } + +dependencies = [ + { name = "ADep" }, +] diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_no_conflict/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_no_conflict/Move.resolved new file mode 100644 index 0000000000000..5d4a38380acb7 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_no_conflict/Move.resolved @@ -0,0 +1,236 @@ +ResolvedGraph { + graph: DependencyGraph { + root_path: "tests/test_sources/diamond_problem_dep_external_no_conflict", + root_package: "Root", + package_graph: { + "Root": [ + ( + "B", + Outgoing, + ), + ( + "A", + Outgoing, + ), + ], + "B": [ + ( + "ADep", + Outgoing, + ), + ( + "Root", + Incoming, + ), + ], + "ADep": [ + ( + "B", + Incoming, + ), + ( + "A", + Incoming, + ), + ], + "A": [ + ( + "ADep", + Outgoing, + ), + ( + "Root", + Incoming, + ), + ], + }, + package_table: { + "A": Package { + kind: Local( + "deps_only/A", + ), + version: None, + resolver: Some( + "../resolvers/successful.sh", + ), + overridden_path: false, + }, + "ADep": Package { + kind: Local( + "deps_only/ADep", + ), + version: None, + resolver: None, + overridden_path: false, + }, + "B": Package { + kind: Local( + "deps_only/B", + ), + version: None, + resolver: None, + overridden_path: false, + }, + }, + always_deps: { + "A", + "ADep", + "B", + "Root", + }, + }, + build_options: BuildConfig { + dev_mode: true, + test_mode: false, + generate_docs: false, + generate_abis: false, + install_dir: Some( + "ELIDED_FOR_TEST", + ), + force_recompilation: false, + lock_file: Some( + "ELIDED_FOR_TEST", + ), + additional_named_addresses: {}, + architecture: None, + fetch_deps_only: false, + skip_fetch_latest_git_deps: false, + }, + package_table: { + "A": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "A", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "ADep": Internal( + InternalDependency { + kind: Local( + "../ADep", + ), + subst: None, + version: None, + digest: None, + dep_override: false, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "ADep": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "ADep", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: {}, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "B": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "B", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "ADep": Internal( + InternalDependency { + kind: Local( + "../ADep", + ), + subst: None, + version: None, + digest: None, + dep_override: false, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "Root": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "Root", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "A": External( + "../resolvers/successful.sh", + ), + "B": Internal( + InternalDependency { + kind: Local( + "deps_only/B", + ), + subst: None, + version: None, + digest: None, + dep_override: false, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + }, +} diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_no_conflict/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_no_conflict/Move.toml new file mode 100644 index 0000000000000..3a04d8d3e69be --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_no_conflict/Move.toml @@ -0,0 +1,13 @@ +[package] +name = "Root" +version = "0.0.0" + +[dependencies] +B = { local = "./deps_only/B" } + +[dependencies.A] +resolver = "../resolvers/successful.sh" + +[dependencies.A.packages] +Contains = "Anything" +Has = { No = "Schema" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_no_conflict/deps_only/A/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_no_conflict/deps_only/A/Move.toml new file mode 100644 index 0000000000000..74ba633d5270d --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_no_conflict/deps_only/A/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "A" +version = "0.0.0" + +[dependencies] +ADep = { local = "../ADep" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_no_conflict/deps_only/ADep/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_no_conflict/deps_only/ADep/Move.toml new file mode 100644 index 0000000000000..27032db1a45f4 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_no_conflict/deps_only/ADep/Move.toml @@ -0,0 +1,3 @@ +[package] +name = "ADep" +version = "0.0.0" diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_no_conflict/deps_only/B/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_no_conflict/deps_only/B/Move.toml new file mode 100644 index 0000000000000..9829975c15e96 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_no_conflict/deps_only/B/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "B" +version = "0.0.0" + +[dependencies] +ADep = { local = "../ADep" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override/Move.locked b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override/Move.locked new file mode 100644 index 0000000000000..a2c2956e760f3 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override/Move.locked @@ -0,0 +1,30 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 0 + +dependencies = [ + { name = "A" }, + { name = "ADep" }, + { name = "B" }, +] + +[[move.package]] +name = "A" +source = { local = "deps_only/A" } + +dependencies = [ + { name = "ADep" }, +] + +[[move.package]] +name = "ADep" +source = { local = "deps_only/ADep", version = "1.0.0" } + +[[move.package]] +name = "B" +source = { local = "deps_only/B" } + +dependencies = [ + { name = "ADep" }, +] diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override/Move.resolved new file mode 100644 index 0000000000000..708fb3ca06e21 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override/Move.resolved @@ -0,0 +1,273 @@ +ResolvedGraph { + graph: DependencyGraph { + root_path: "tests/test_sources/diamond_problem_dep_external_override", + root_package: "Root", + package_graph: { + "Root": [ + ( + "ADep", + Outgoing, + ), + ( + "B", + Outgoing, + ), + ( + "A", + Outgoing, + ), + ], + "ADep": [ + ( + "Root", + Incoming, + ), + ( + "B", + Incoming, + ), + ( + "A", + Incoming, + ), + ], + "B": [ + ( + "ADep", + Outgoing, + ), + ( + "Root", + Incoming, + ), + ], + "A": [ + ( + "ADep", + Outgoing, + ), + ( + "Root", + Incoming, + ), + ], + }, + package_table: { + "A": Package { + kind: Local( + "deps_only/A", + ), + version: None, + resolver: Some( + "../resolvers/successful.sh", + ), + overridden_path: false, + }, + "ADep": Package { + kind: Local( + "deps_only/ADep", + ), + version: Some( + ( + 1, + 0, + 0, + ), + ), + resolver: None, + overridden_path: false, + }, + "B": Package { + kind: Local( + "deps_only/B", + ), + version: None, + resolver: None, + overridden_path: true, + }, + }, + always_deps: { + "A", + "ADep", + "B", + "Root", + }, + }, + build_options: BuildConfig { + dev_mode: true, + test_mode: false, + generate_docs: false, + generate_abis: false, + install_dir: Some( + "ELIDED_FOR_TEST", + ), + force_recompilation: false, + lock_file: Some( + "ELIDED_FOR_TEST", + ), + additional_named_addresses: {}, + architecture: None, + fetch_deps_only: false, + skip_fetch_latest_git_deps: false, + }, + package_table: { + "A": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "A", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "ADep": Internal( + InternalDependency { + kind: Local( + "../ADep", + ), + subst: None, + version: None, + digest: None, + dep_override: false, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "ADep": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "ADep", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: {}, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "B": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "B", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "ADep": Internal( + InternalDependency { + kind: Local( + "../ADep", + ), + subst: None, + version: Some( + ( + 1, + 0, + 0, + ), + ), + digest: None, + dep_override: false, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "Root": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "Root", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "A": External( + "../resolvers/successful.sh", + ), + "ADep": Internal( + InternalDependency { + kind: Local( + "deps_only/ADep", + ), + subst: None, + version: Some( + ( + 1, + 0, + 0, + ), + ), + digest: None, + dep_override: true, + }, + ), + "B": Internal( + InternalDependency { + kind: Local( + "deps_only/B", + ), + subst: None, + version: None, + digest: None, + dep_override: false, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + }, +} diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override/Move.toml new file mode 100644 index 0000000000000..ec66c555ab896 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override/Move.toml @@ -0,0 +1,14 @@ +[package] +name = "Root" +version = "0.0.0" + +[dependencies] +B = { local = "./deps_only/B" } +ADep = { local = "./deps_only/ADep", version = "1.0.0", override = true } + +[dependencies.A] +resolver = "../resolvers/successful.sh" + +[dependencies.A.packages] +Contains = "Anything" +Has = { No = "Schema" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override/deps_only/A/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override/deps_only/A/Move.toml new file mode 100644 index 0000000000000..74ba633d5270d --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override/deps_only/A/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "A" +version = "0.0.0" + +[dependencies] +ADep = { local = "../ADep" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override/deps_only/ADep/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override/deps_only/ADep/Move.toml new file mode 100644 index 0000000000000..27032db1a45f4 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override/deps_only/ADep/Move.toml @@ -0,0 +1,3 @@ +[package] +name = "ADep" +version = "0.0.0" diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override/deps_only/B/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override/deps_only/B/Move.toml new file mode 100644 index 0000000000000..7b3d1f6cd2846 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override/deps_only/B/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "B" +version = "0.0.0" + +[dependencies] +ADep = { local = "../ADep", version = "1.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override_root/Move.locked b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override_root/Move.locked new file mode 100644 index 0000000000000..6baaa304eb164 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override_root/Move.locked @@ -0,0 +1,38 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 0 + +dependencies = [ + { name = "A" }, + { name = "B" }, + { name = "C" }, +] + +[[move.package]] +name = "A" +source = { local = "deps_only/A", version = "1.0.0" } + +dependencies = [ + { name = "ADep" }, +] + +[[move.package]] +name = "ADep" +source = { local = "deps_only/ADep" } + +[[move.package]] +name = "B" +source = { local = "deps_only/B" } + +dependencies = [ + { name = "A" }, +] + +[[move.package]] +name = "C" +source = { local = "deps_only/C" } + +dependencies = [ + { name = "A" }, +] diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override_root/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override_root/Move.resolved new file mode 100644 index 0000000000000..1df8add04cb6f --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override_root/Move.resolved @@ -0,0 +1,320 @@ +ResolvedGraph { + graph: DependencyGraph { + root_path: "tests/test_sources/diamond_problem_dep_external_override_root", + root_package: "Root", + package_graph: { + "Root": [ + ( + "A", + Outgoing, + ), + ( + "B", + Outgoing, + ), + ( + "C", + Outgoing, + ), + ], + "A": [ + ( + "ADep", + Outgoing, + ), + ( + "Root", + Incoming, + ), + ( + "B", + Incoming, + ), + ( + "C", + Incoming, + ), + ], + "ADep": [ + ( + "A", + Incoming, + ), + ], + "B": [ + ( + "A", + Outgoing, + ), + ( + "Root", + Incoming, + ), + ], + "C": [ + ( + "Root", + Incoming, + ), + ( + "A", + Outgoing, + ), + ], + }, + package_table: { + "A": Package { + kind: Local( + "deps_only/A", + ), + version: Some( + ( + 1, + 0, + 0, + ), + ), + resolver: None, + overridden_path: false, + }, + "ADep": Package { + kind: Local( + "deps_only/ADep", + ), + version: None, + resolver: None, + overridden_path: false, + }, + "B": Package { + kind: Local( + "deps_only/B", + ), + version: None, + resolver: None, + overridden_path: true, + }, + "C": Package { + kind: Local( + "deps_only/C", + ), + version: None, + resolver: None, + overridden_path: true, + }, + }, + always_deps: { + "A", + "ADep", + "B", + "C", + "Root", + }, + }, + build_options: BuildConfig { + dev_mode: true, + test_mode: false, + generate_docs: false, + generate_abis: false, + install_dir: Some( + "ELIDED_FOR_TEST", + ), + force_recompilation: false, + lock_file: Some( + "ELIDED_FOR_TEST", + ), + additional_named_addresses: {}, + architecture: None, + fetch_deps_only: false, + skip_fetch_latest_git_deps: false, + }, + package_table: { + "A": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "A", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "ADep": Internal( + InternalDependency { + kind: Local( + "../ADep", + ), + subst: None, + version: None, + digest: None, + dep_override: false, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "ADep": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "ADep", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: {}, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "B": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "B", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "A": Internal( + InternalDependency { + kind: Local( + "../A", + ), + subst: None, + version: None, + digest: None, + dep_override: false, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "C": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "C", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "A": External( + "../../../resolvers/successful.sh", + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "Root": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "Root", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "A": Internal( + InternalDependency { + kind: Local( + "deps_only/A", + ), + subst: None, + version: Some( + ( + 1, + 0, + 0, + ), + ), + digest: None, + dep_override: true, + }, + ), + "B": Internal( + InternalDependency { + kind: Local( + "deps_only/B", + ), + subst: None, + version: None, + digest: None, + dep_override: false, + }, + ), + "C": Internal( + InternalDependency { + kind: Local( + "deps_only/C", + ), + subst: None, + version: None, + digest: None, + dep_override: false, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + }, +} diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override_root/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override_root/Move.toml new file mode 100644 index 0000000000000..d67cc93e50ddd --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override_root/Move.toml @@ -0,0 +1,23 @@ +# Dependency graph and and override (ov) +# C's dependency on A and ADep is externally resolved (override should kick in) +# +# +----+ +# +---->| C |----+ +# | +----+ | +# | | +# +----+ | ov(1) +---->+----+ +-------+ +# |Root|----+-------------------->| A |------>| ADep | +# +----+ | +---->+----+ +-------+ +# | | +# | +----+ | +# +---->| B |----+ +# +----+ + +[package] +name = "Root" +version = "0.0.0" + +[dependencies] +A = { local = "./deps_only/A", version = "1.0.0", override = true } +B = { local = "./deps_only/B" } +C = { local = "./deps_only/C" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override_root/deps_only/A/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override_root/deps_only/A/Move.toml new file mode 100644 index 0000000000000..74ba633d5270d --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override_root/deps_only/A/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "A" +version = "0.0.0" + +[dependencies] +ADep = { local = "../ADep" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override_root/deps_only/ADep/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override_root/deps_only/ADep/Move.toml new file mode 100644 index 0000000000000..27032db1a45f4 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override_root/deps_only/ADep/Move.toml @@ -0,0 +1,3 @@ +[package] +name = "ADep" +version = "0.0.0" diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override_root/deps_only/B/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override_root/deps_only/B/Move.toml new file mode 100644 index 0000000000000..45e755ee23049 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override_root/deps_only/B/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "B" +version = "0.0.0" + +[dependencies] +A = { local = "../A" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override_root/deps_only/C/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override_root/deps_only/C/Move.toml new file mode 100644 index 0000000000000..88e670eb24d9b --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_external_override_root/deps_only/C/Move.toml @@ -0,0 +1,10 @@ +[package] +name = "C" +version = "0.0.0" + +[dependencies.A] +resolver = "../../../resolvers/successful.sh" + +[dependencies.A.packages] +Contains = "Anything" +Has = { No = "Schema" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_conflicting_overrides/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_conflicting_overrides/Move.resolved new file mode 100644 index 0000000000000..d571d314713bf --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_conflicting_overrides/Move.resolved @@ -0,0 +1,3 @@ +Failed to resolve dependencies for package 'Root': Resolving dependencies for package 'B': Conflicting dependencies found: +D = { local = "deps_only/D", version = "2.0.0" } +D = { local = "deps_only/D", version = "3.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_conflicting_overrides/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_conflicting_overrides/Move.toml new file mode 100644 index 0000000000000..780de5c60d2f1 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_conflicting_overrides/Move.toml @@ -0,0 +1,20 @@ +# Dependency graph and and override (ov) - incorrect conflicting overrides. +# +# +----+ ov(3) +# +---->| B |----------------------+ +# | +----+----+ | +# | | | +# +----+ | | +----+ v1 +--->+----+ +# |Root|----+ +---->| C |---------->| D | +# +----+ | | +----+ +--->+----+ +# | | | +# | +----+----+ ov(2) | +# +---->| A |----------------------+ +# +----+ +[package] +name = "Root" +version = "0.0.0" + +[dependencies] +A = { local = "./deps_only/A" } +B = { local = "./deps_only/B" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_conflicting_overrides/deps_only/A/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_conflicting_overrides/deps_only/A/Move.toml new file mode 100644 index 0000000000000..380fa3b664fe8 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_conflicting_overrides/deps_only/A/Move.toml @@ -0,0 +1,7 @@ +[package] +name = "A" +version = "0.0.0" + +[dependencies] +C = { local = "../C" } +D = { local = "../D", version = "2.0.0", override = true } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_conflicting_overrides/deps_only/B/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_conflicting_overrides/deps_only/B/Move.toml new file mode 100644 index 0000000000000..d84c576b12150 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_conflicting_overrides/deps_only/B/Move.toml @@ -0,0 +1,7 @@ +[package] +name = "B" +version = "0.0.0" + +[dependencies] +C = { local = "../C" } +D = { local = "../D", version = "3.0.0", override = true } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_conflicting_overrides/deps_only/C/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_conflicting_overrides/deps_only/C/Move.toml new file mode 100644 index 0000000000000..af684071a34e4 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_conflicting_overrides/deps_only/C/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "C" +version = "0.0.0" + +[dependencies] +D = { local = "../D", version = "1.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_conflicting_overrides/deps_only/D/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_conflicting_overrides/deps_only/D/Move.toml new file mode 100644 index 0000000000000..c9cc6294601eb --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_conflicting_overrides/deps_only/D/Move.toml @@ -0,0 +1,3 @@ +[package] +name = "D" +version = "0.0.0" diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_cycle/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_cycle/Move.resolved new file mode 100644 index 0000000000000..91218b07cac86 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_cycle/Move.resolved @@ -0,0 +1 @@ +Failed to resolve dependencies for package 'Root': Found cycle between packages: D -> B -> C -> D diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_cycle/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_cycle/Move.toml new file mode 100644 index 0000000000000..61b7959a76d31 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_cycle/Move.toml @@ -0,0 +1,27 @@ +# Dependency graph and override (ov) - when override is processed there is no entry in the graph +# yet (override is incorrect). This part is the same as in the +# diamond_problem_dep_incorrect_override_empty test. Additionally, a cycle introduced during graph +# construction interferes with part of the algorithm responsible for validating potentially +# incorrect overrides (dependency_graph::override_verify) and if not explicitly handled would +# trigger infinite recursion. +# +# +--------------------------------------------+ +# | | +# +---->+----+ | +# +---->| B |----+ | +# | +----+ | | +# | | | +# +----+ | | +----+ +----+--+ v1 +----+ +# |Root|----+ +---->| C |-------->| D |--------->| E | +# +----+ | | +----+ +----+ +--->+----+ +# | | | +# | +----+----+ ov(2) | +# +---->| A |------------------------------------+ +# +----+ +[package] +name = "Root" +version = "0.0.0" + +[dependencies] +A = { local = "./deps_only/A" } +B = { local = "./deps_only/B" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_cycle/deps_only/A/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_cycle/deps_only/A/Move.toml new file mode 100644 index 0000000000000..d7457fe927682 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_cycle/deps_only/A/Move.toml @@ -0,0 +1,7 @@ +[package] +name = "A" +version = "0.0.0" + +[dependencies] +C = { local = "../C" } +E = { local = "../E", version = "2.0.0", override = true } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_cycle/deps_only/B/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_cycle/deps_only/B/Move.toml new file mode 100644 index 0000000000000..f3a7a12b0d29f --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_cycle/deps_only/B/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "B" +version = "0.0.0" + +[dependencies] +C = { local = "../C" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_cycle/deps_only/C/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_cycle/deps_only/C/Move.toml new file mode 100644 index 0000000000000..af684071a34e4 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_cycle/deps_only/C/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "C" +version = "0.0.0" + +[dependencies] +D = { local = "../D", version = "1.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_cycle/deps_only/D/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_cycle/deps_only/D/Move.toml new file mode 100644 index 0000000000000..70eceb166c90c --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_cycle/deps_only/D/Move.toml @@ -0,0 +1,7 @@ +[package] +name = "D" +version = "0.0.0" + +[dependencies] +B = { local = "../B" } +E = { local = "../E", version = "1.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_cycle/deps_only/E/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_cycle/deps_only/E/Move.toml new file mode 100644 index 0000000000000..dc97c6690fb60 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_cycle/deps_only/E/Move.toml @@ -0,0 +1,3 @@ +[package] +name = "E" +version = "0.0.0" diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_empty/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_empty/Move.resolved new file mode 100644 index 0000000000000..801ffc7a9a333 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_empty/Move.resolved @@ -0,0 +1 @@ +Failed to resolve dependencies for package 'Root': Resolving dependencies for package 'B': Incorrect override of D in A (an override should dominate all uses of the overridden package) diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_empty/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_empty/Move.toml new file mode 100644 index 0000000000000..24c3a4c93a8d7 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_empty/Move.toml @@ -0,0 +1,20 @@ +# Dependency graph and and override (ov) - when override is processed there is no entry in the graph +# yet (override is incorrect). +# +----+ +# +---->| B |----+ +# | +----+ | +# | | +# +----+ | | +----+ v1 +----+ +# |Root|----+ +---->| C |-------->| D | +# +----+ | | +----+ +--->+----+ +# | | | +# | +----+----+ ov(2) | +# +---->| A |--------------------+ +# +----+ +[package] +name = "Root" +version = "0.0.0" + +[dependencies] +A = { local = "./deps_only/A" } +B = { local = "./deps_only/B" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_empty/deps_only/A/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_empty/deps_only/A/Move.toml new file mode 100644 index 0000000000000..380fa3b664fe8 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_empty/deps_only/A/Move.toml @@ -0,0 +1,7 @@ +[package] +name = "A" +version = "0.0.0" + +[dependencies] +C = { local = "../C" } +D = { local = "../D", version = "2.0.0", override = true } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_empty/deps_only/B/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_empty/deps_only/B/Move.toml new file mode 100644 index 0000000000000..f3a7a12b0d29f --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_empty/deps_only/B/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "B" +version = "0.0.0" + +[dependencies] +C = { local = "../C" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_empty/deps_only/C/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_empty/deps_only/C/Move.toml new file mode 100644 index 0000000000000..af684071a34e4 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_empty/deps_only/C/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "C" +version = "0.0.0" + +[dependencies] +D = { local = "../D", version = "1.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_empty/deps_only/D/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_empty/deps_only/D/Move.toml new file mode 100644 index 0000000000000..c9cc6294601eb --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_empty/deps_only/D/Move.toml @@ -0,0 +1,3 @@ +[package] +name = "D" +version = "0.0.0" diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_occupied/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_occupied/Move.resolved new file mode 100644 index 0000000000000..0e703bc74cd14 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_occupied/Move.resolved @@ -0,0 +1,3 @@ +Failed to resolve dependencies for package 'Root': Resolving dependencies for package 'B': Conflicting dependencies found: +D = { local = "deps_only/D", version = "1.0.0" } +D = { local = "deps_only/D", version = "2.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_occupied/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_occupied/Move.toml new file mode 100644 index 0000000000000..a46cda48364b5 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_occupied/Move.toml @@ -0,0 +1,20 @@ +# Dependency graph and and override (ov) - when override is processed there is already an entry in +# the graph (override is incorrect). +# +----+ ov(2) +# +---->| B |----------------------+ +# | +----+----+ | +# | | | +# +----+ | | +----+ v1 +--->+----+ +# |Root|----+ +---->| C |---------->| D | +# +----+ | | +----+ +----+ +# | | +# | +----+----+ +# +---->| A | +# +----+ +[package] +name = "Root" +version = "0.0.0" + +[dependencies] +A = { local = "./deps_only/A" } +B = { local = "./deps_only/B" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_occupied/deps_only/A/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_occupied/deps_only/A/Move.toml new file mode 100644 index 0000000000000..58bf5ee785c03 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_occupied/deps_only/A/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "A" +version = "0.0.0" + +[dependencies] +C = { local = "../C" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_occupied/deps_only/B/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_occupied/deps_only/B/Move.toml new file mode 100644 index 0000000000000..ae7378d6ea35e --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_occupied/deps_only/B/Move.toml @@ -0,0 +1,7 @@ +[package] +name = "B" +version = "0.0.0" + +[dependencies] +C = { local = "../C" } +D = { local = "../D", version = "2.0.0", override = true } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_occupied/deps_only/C/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_occupied/deps_only/C/Move.toml new file mode 100644 index 0000000000000..af684071a34e4 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_occupied/deps_only/C/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "C" +version = "0.0.0" + +[dependencies] +D = { local = "../D", version = "1.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_occupied/deps_only/D/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_occupied/deps_only/D/Move.toml new file mode 100644 index 0000000000000..c9cc6294601eb --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_incorrect_override_occupied/deps_only/D/Move.toml @@ -0,0 +1,3 @@ +[package] +name = "D" +version = "0.0.0" diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_conflict/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_conflict/Move.resolved new file mode 100644 index 0000000000000..247d4179c7f2d --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_conflict/Move.resolved @@ -0,0 +1,3 @@ +Failed to resolve dependencies for package 'Root': Resolving dependencies for package 'A': Resolving dependencies for package 'C': Resolving dependencies for package 'F': Conflicting dependencies found: +G = { local = "deps_only/G", version = "1.0.0" } +G = { local = "deps_only/G", version = "2.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_conflict/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_conflict/Move.toml new file mode 100644 index 0000000000000..953ff7046ea51 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_conflict/Move.toml @@ -0,0 +1,24 @@ +# Dependency graph - conflicting dependencies. +# +# +----+ +# +---->| F |--------------+ +# | +----+ | +# | | +# +----+ +----+ | | +# +---->| A |---->| C |----+ | +# | +----+ +----+ | | +# | | | +# +----+ | | +----+ | +# |Root|----+ +---->| E |------+ | +# +----+ | +----+ | | +# | v1 | | +# | +----+ +----+ v3 +----+<-----+ | +# +---->| B +---->| D |--------->| G | v2 | +# +----+ +----+ +----+<-------------+ +[package] +name = "Root" +version = "0.0.0" + +[dependencies] +A = { local = "./deps_only/A" } +B = { local = "./deps_only/B" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_conflict/deps_only/A/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_conflict/deps_only/A/Move.toml new file mode 100644 index 0000000000000..a606d045834a6 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_conflict/deps_only/A/Move.toml @@ -0,0 +1,7 @@ +[package] +name = "A" +version = "0.0.0" + +[dependencies] +C = { local = "../C" } +D = { local = "../D" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_conflict/deps_only/B/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_conflict/deps_only/B/Move.toml new file mode 100644 index 0000000000000..b35ffc1bcece0 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_conflict/deps_only/B/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "B" +version = "0.0.0" + +[dependencies] +D = { local = "../D" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_conflict/deps_only/C/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_conflict/deps_only/C/Move.toml new file mode 100644 index 0000000000000..02631391d76ef --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_conflict/deps_only/C/Move.toml @@ -0,0 +1,7 @@ +[package] +name = "C" +version = "0.0.0" + +[dependencies] +E = { local = "../E" } +F = { local = "../F" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_conflict/deps_only/D/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_conflict/deps_only/D/Move.toml new file mode 100644 index 0000000000000..f99eb1b327edd --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_conflict/deps_only/D/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "D" +version = "0.0.0" + +[dependencies] +G = { local = "../G", version = "3.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_conflict/deps_only/E/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_conflict/deps_only/E/Move.toml new file mode 100644 index 0000000000000..71ce2f2760c8e --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_conflict/deps_only/E/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "E" +version = "0.0.0" + +[dependencies] +G = { local = "../G", version = "1.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_conflict/deps_only/F/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_conflict/deps_only/F/Move.toml new file mode 100644 index 0000000000000..b77155c25ee75 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_conflict/deps_only/F/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "F" +version = "0.0.0" + +[dependencies] +G = { local = "../G", version = "2.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_conflict/deps_only/G/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_conflict/deps_only/G/Move.toml new file mode 100644 index 0000000000000..16e8cb4ef2d65 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_conflict/deps_only/G/Move.toml @@ -0,0 +1,3 @@ +[package] +name = "G" +version = "0.0.0" diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override/Move.locked b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override/Move.locked new file mode 100644 index 0000000000000..8e9e8edca788b --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override/Move.locked @@ -0,0 +1,47 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 0 + +dependencies = [ + { name = "A" }, + { name = "B" }, + { name = "E" }, +] + +[[move.package]] +name = "A" +source = { local = "deps_only/A" } + +dependencies = [ + { name = "C" }, + { name = "D" }, +] + +[[move.package]] +name = "B" +source = { local = "deps_only/B" } + +dependencies = [ + { name = "E" }, +] + +[[move.package]] +name = "C" +source = { local = "deps_only/C" } + +dependencies = [ + { name = "E" }, +] + +[[move.package]] +name = "D" +source = { local = "deps_only/D" } + +dependencies = [ + { name = "E" }, +] + +[[move.package]] +name = "E" +source = { local = "deps_only/E", version = "1.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override/Move.resolved new file mode 100644 index 0000000000000..b1a9cb1f88f0b --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override/Move.resolved @@ -0,0 +1,420 @@ +ResolvedGraph { + graph: DependencyGraph { + root_path: "tests/test_sources/diamond_problem_dep_nested_override", + root_package: "Root", + package_graph: { + "Root": [ + ( + "E", + Outgoing, + ), + ( + "A", + Outgoing, + ), + ( + "B", + Outgoing, + ), + ], + "E": [ + ( + "Root", + Incoming, + ), + ( + "C", + Incoming, + ), + ( + "D", + Incoming, + ), + ( + "B", + Incoming, + ), + ], + "C": [ + ( + "E", + Outgoing, + ), + ( + "A", + Incoming, + ), + ], + "A": [ + ( + "C", + Outgoing, + ), + ( + "D", + Outgoing, + ), + ( + "Root", + Incoming, + ), + ], + "D": [ + ( + "E", + Outgoing, + ), + ( + "A", + Incoming, + ), + ], + "B": [ + ( + "E", + Outgoing, + ), + ( + "Root", + Incoming, + ), + ], + }, + package_table: { + "A": Package { + kind: Local( + "deps_only/A", + ), + version: None, + resolver: None, + overridden_path: true, + }, + "B": Package { + kind: Local( + "deps_only/B", + ), + version: None, + resolver: None, + overridden_path: true, + }, + "C": Package { + kind: Local( + "deps_only/C", + ), + version: None, + resolver: None, + overridden_path: true, + }, + "D": Package { + kind: Local( + "deps_only/D", + ), + version: None, + resolver: None, + overridden_path: true, + }, + "E": Package { + kind: Local( + "deps_only/E", + ), + version: Some( + ( + 1, + 0, + 0, + ), + ), + resolver: None, + overridden_path: false, + }, + }, + always_deps: { + "A", + "B", + "C", + "D", + "E", + "Root", + }, + }, + build_options: BuildConfig { + dev_mode: true, + test_mode: false, + generate_docs: false, + generate_abis: false, + install_dir: Some( + "ELIDED_FOR_TEST", + ), + force_recompilation: false, + lock_file: Some( + "ELIDED_FOR_TEST", + ), + additional_named_addresses: {}, + architecture: None, + fetch_deps_only: false, + skip_fetch_latest_git_deps: false, + }, + package_table: { + "A": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "A", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "C": Internal( + InternalDependency { + kind: Local( + "../C", + ), + subst: None, + version: None, + digest: None, + dep_override: false, + }, + ), + "D": Internal( + InternalDependency { + kind: Local( + "../D", + ), + subst: None, + version: None, + digest: None, + dep_override: false, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "B": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "B", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "E": Internal( + InternalDependency { + kind: Local( + "../E", + ), + subst: None, + version: Some( + ( + 3, + 0, + 0, + ), + ), + digest: None, + dep_override: false, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "C": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "C", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "E": Internal( + InternalDependency { + kind: Local( + "../E", + ), + subst: None, + version: Some( + ( + 2, + 0, + 0, + ), + ), + digest: None, + dep_override: false, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "D": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "D", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "E": Internal( + InternalDependency { + kind: Local( + "../E", + ), + subst: None, + version: Some( + ( + 2, + 0, + 0, + ), + ), + digest: None, + dep_override: false, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "E": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "E", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: {}, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "Root": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "Root", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "A": Internal( + InternalDependency { + kind: Local( + "deps_only/A", + ), + subst: None, + version: None, + digest: None, + dep_override: false, + }, + ), + "B": Internal( + InternalDependency { + kind: Local( + "deps_only/B", + ), + subst: None, + version: None, + digest: None, + dep_override: false, + }, + ), + "E": Internal( + InternalDependency { + kind: Local( + "deps_only/E", + ), + subst: None, + version: Some( + ( + 1, + 0, + 0, + ), + ), + digest: None, + dep_override: true, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + }, +} diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override/Move.toml new file mode 100644 index 0000000000000..dae84db882000 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override/Move.toml @@ -0,0 +1,24 @@ +# Dependency graph and an override (ov) - override should succeed. +# +----+ +# +---->| C |--------------+ +# | +----+ | +# | | +# +----+ | | +# +---->| A |----+ | +# | +----+ | | +# | | | +# +----+ | ov(1) | +----+ | +# |Root|----+------------+ +---->| D |------+ | +# +----+ | | +----+ | | +# | | v1 | | +# | +----+ +------->+----+<-----+ | +# +---->| B |--------->| E | v2 | +# +----+ v3 +----+<-------------+ +[package] +name = "Root" +version = "0.0.0" + +[dependencies] +A = { local = "./deps_only/A" } +B = { local = "./deps_only/B" } +E = { local = "./deps_only/E", version = "1.0.0", override = true } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override/deps_only/A/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override/deps_only/A/Move.toml new file mode 100644 index 0000000000000..a606d045834a6 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override/deps_only/A/Move.toml @@ -0,0 +1,7 @@ +[package] +name = "A" +version = "0.0.0" + +[dependencies] +C = { local = "../C" } +D = { local = "../D" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override/deps_only/B/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override/deps_only/B/Move.toml new file mode 100644 index 0000000000000..c4ad219336f22 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override/deps_only/B/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "B" +version = "0.0.0" + +[dependencies] +E = { local = "../E", version = "3.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override/deps_only/C/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override/deps_only/C/Move.toml new file mode 100644 index 0000000000000..9c1c69cb1f529 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override/deps_only/C/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "C" +version = "0.0.0" + +[dependencies] +E = { local = "../E", version = "2.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override/deps_only/D/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override/deps_only/D/Move.toml new file mode 100644 index 0000000000000..5b594aae20725 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override/deps_only/D/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "D" +version = "0.0.0" + +[dependencies] +E = { local = "../E", version = "2.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override/deps_only/E/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override/deps_only/E/Move.toml new file mode 100644 index 0000000000000..dc97c6690fb60 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override/deps_only/E/Move.toml @@ -0,0 +1,3 @@ +[package] +name = "E" +version = "0.0.0" diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override_insufficient_low/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override_insufficient_low/Move.resolved new file mode 100644 index 0000000000000..da6f447a5c9f0 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override_insufficient_low/Move.resolved @@ -0,0 +1,3 @@ +Failed to resolve dependencies for package 'Root': Resolving dependencies for package 'B': Conflicting dependencies found: +E = { local = "deps_only/E", version = "1.0.0" } +E = { local = "deps_only/E", version = "3.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override_insufficient_low/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override_insufficient_low/Move.toml new file mode 100644 index 0000000000000..e907ab76b9c1a --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override_insufficient_low/Move.toml @@ -0,0 +1,23 @@ +# Dependency graph and an (insufficient) override (ov) - override is incorrect. +# +----+ +# +---->| C |--------------+ +# | +----+ | +# | | +# +----+ | | +# +---->| A |----+ | +# | +----+ | | +# | | | | +# +----+ | | | +----+ | +# |Root|----+ |ov(1) +---->| D |------+ | +# +----+ | +----+ +----+ | | +# | | v1 | | +# | +----+ +------->+----+<-----+ | +# +---->| B |--------->| E | v2 | +# +----+ v3 +----+<-------------+ +[package] +name = "Root" +version = "0.0.0" + +[dependencies] +A = { local = "./deps_only/A" } +B = { local = "./deps_only/B" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override_insufficient_low/deps_only/A/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override_insufficient_low/deps_only/A/Move.toml new file mode 100644 index 0000000000000..ab913a367a6c7 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override_insufficient_low/deps_only/A/Move.toml @@ -0,0 +1,8 @@ +[package] +name = "A" +version = "0.0.0" + +[dependencies] +C = { local = "../C"} +D = { local = "../D"} +E = { local = "../E", version = "1.0.0", override = true } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override_insufficient_low/deps_only/B/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override_insufficient_low/deps_only/B/Move.toml new file mode 100644 index 0000000000000..c4ad219336f22 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override_insufficient_low/deps_only/B/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "B" +version = "0.0.0" + +[dependencies] +E = { local = "../E", version = "3.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override_insufficient_low/deps_only/C/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override_insufficient_low/deps_only/C/Move.toml new file mode 100644 index 0000000000000..5aa35b1ac88e0 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override_insufficient_low/deps_only/C/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "C" +version = "0.0.0" + +[dependencies] +E = { local = "../E", version = "1.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override_insufficient_low/deps_only/D/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override_insufficient_low/deps_only/D/Move.toml new file mode 100644 index 0000000000000..5b594aae20725 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override_insufficient_low/deps_only/D/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "D" +version = "0.0.0" + +[dependencies] +E = { local = "../E", version = "2.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override_insufficient_low/deps_only/E/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override_insufficient_low/deps_only/E/Move.toml new file mode 100644 index 0000000000000..dc97c6690fb60 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_nested_override_insufficient_low/deps_only/E/Move.toml @@ -0,0 +1,3 @@ +[package] +name = "E" +version = "0.0.0" diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_override/Move.locked b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_override/Move.locked new file mode 100644 index 0000000000000..0ba7e9c31d18b --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_override/Move.locked @@ -0,0 +1,30 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 0 + +dependencies = [ + { name = "A" }, + { name = "B" }, + { name = "C" }, +] + +[[move.package]] +name = "A" +source = { local = "deps_only/A" } + +dependencies = [ + { name = "C" }, +] + +[[move.package]] +name = "B" +source = { local = "deps_only/B" } + +dependencies = [ + { name = "C" }, +] + +[[move.package]] +name = "C" +source = { local = "deps_only/C", version = "1.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_override/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_override/Move.resolved new file mode 100644 index 0000000000000..0b1398e329ceb --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_override/Move.resolved @@ -0,0 +1,285 @@ +ResolvedGraph { + graph: DependencyGraph { + root_path: "tests/test_sources/diamond_problem_dep_override", + root_package: "Root", + package_graph: { + "Root": [ + ( + "C", + Outgoing, + ), + ( + "A", + Outgoing, + ), + ( + "B", + Outgoing, + ), + ], + "C": [ + ( + "Root", + Incoming, + ), + ( + "A", + Incoming, + ), + ( + "B", + Incoming, + ), + ], + "A": [ + ( + "C", + Outgoing, + ), + ( + "Root", + Incoming, + ), + ], + "B": [ + ( + "C", + Outgoing, + ), + ( + "Root", + Incoming, + ), + ], + }, + package_table: { + "A": Package { + kind: Local( + "deps_only/A", + ), + version: None, + resolver: None, + overridden_path: true, + }, + "B": Package { + kind: Local( + "deps_only/B", + ), + version: None, + resolver: None, + overridden_path: true, + }, + "C": Package { + kind: Local( + "deps_only/C", + ), + version: Some( + ( + 1, + 0, + 0, + ), + ), + resolver: None, + overridden_path: false, + }, + }, + always_deps: { + "A", + "B", + "C", + "Root", + }, + }, + build_options: BuildConfig { + dev_mode: true, + test_mode: false, + generate_docs: false, + generate_abis: false, + install_dir: Some( + "ELIDED_FOR_TEST", + ), + force_recompilation: false, + lock_file: Some( + "ELIDED_FOR_TEST", + ), + additional_named_addresses: {}, + architecture: None, + fetch_deps_only: false, + skip_fetch_latest_git_deps: false, + }, + package_table: { + "A": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "A", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "C": Internal( + InternalDependency { + kind: Local( + "../C", + ), + subst: None, + version: Some( + ( + 2, + 0, + 0, + ), + ), + digest: None, + dep_override: false, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "B": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "B", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "C": Internal( + InternalDependency { + kind: Local( + "../C", + ), + subst: None, + version: Some( + ( + 1, + 0, + 0, + ), + ), + digest: None, + dep_override: false, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "C": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "C", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: {}, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "Root": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "Root", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "A": Internal( + InternalDependency { + kind: Local( + "deps_only/A", + ), + subst: None, + version: None, + digest: None, + dep_override: false, + }, + ), + "B": Internal( + InternalDependency { + kind: Local( + "deps_only/B", + ), + subst: None, + version: None, + digest: None, + dep_override: false, + }, + ), + "C": Internal( + InternalDependency { + kind: Local( + "deps_only/C", + ), + subst: None, + version: Some( + ( + 1, + 0, + 0, + ), + ), + digest: None, + dep_override: true, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + }, +} diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_override/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_override/Move.toml new file mode 100644 index 0000000000000..f624dd7f7aafe --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_override/Move.toml @@ -0,0 +1,8 @@ +[package] +name = "Root" +version = "0.0.0" + +[dependencies] +A = { local = "./deps_only/A" } +B = { local = "./deps_only/B" } +C = { local = "./deps_only/C", version = "1.0.0", override = true } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_override/deps_only/A/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_override/deps_only/A/Move.toml new file mode 100644 index 0000000000000..b4bded6d53fd6 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_override/deps_only/A/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "A" +version = "0.0.0" + +[dependencies] +C = { local = "../C", version = "2.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_override/deps_only/B/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_override/deps_only/B/Move.toml new file mode 100644 index 0000000000000..1ee8a9c06d7d9 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_override/deps_only/B/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "B" +version = "0.0.0" + +[dependencies] +C = { local = "../C", version = "1.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_override/deps_only/C/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_override/deps_only/C/Move.toml new file mode 100644 index 0000000000000..73ed83696146c --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_override/deps_only/C/Move.toml @@ -0,0 +1,3 @@ +[package] +name = "C" +version = "0.0.0" diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_transitive_nested_override/Move.locked b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_transitive_nested_override/Move.locked new file mode 100644 index 0000000000000..9b23a9b0ca619 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_transitive_nested_override/Move.locked @@ -0,0 +1,43 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 0 + +dependencies = [ + { name = "A" }, + { name = "B" }, + { name = "C" }, +] + +[[move.package]] +name = "A" +source = { local = "deps_only/A" } + +dependencies = [ + { name = "B" }, +] + +[[move.package]] +name = "B" +source = { local = "deps_only/B1", version = "2.0.0" } + +[[move.package]] +name = "C" +source = { local = "deps_only/C" } + +dependencies = [ + { name = "D" }, + { name = "E" }, +] + +[[move.package]] +name = "D" +source = { local = "deps_only/D", version = "3.0.0" } + +[[move.package]] +name = "E" +source = { local = "deps_only/E" } + +dependencies = [ + { name = "D" }, +] diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_transitive_nested_override/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_transitive_nested_override/Move.resolved new file mode 100644 index 0000000000000..9c4d47c7ba35a --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_transitive_nested_override/Move.resolved @@ -0,0 +1,406 @@ +ResolvedGraph { + graph: DependencyGraph { + root_path: "tests/test_sources/diamond_problem_dep_transitive_nested_override", + root_package: "Root", + package_graph: { + "Root": [ + ( + "B", + Outgoing, + ), + ( + "A", + Outgoing, + ), + ( + "C", + Outgoing, + ), + ], + "B": [ + ( + "Root", + Incoming, + ), + ( + "A", + Incoming, + ), + ], + "A": [ + ( + "B", + Outgoing, + ), + ( + "Root", + Incoming, + ), + ], + "C": [ + ( + "D", + Outgoing, + ), + ( + "E", + Outgoing, + ), + ( + "Root", + Incoming, + ), + ], + "D": [ + ( + "C", + Incoming, + ), + ( + "E", + Incoming, + ), + ], + "E": [ + ( + "D", + Outgoing, + ), + ( + "C", + Incoming, + ), + ], + }, + package_table: { + "A": Package { + kind: Local( + "deps_only/A", + ), + version: None, + resolver: None, + overridden_path: true, + }, + "B": Package { + kind: Local( + "deps_only/B1", + ), + version: Some( + ( + 2, + 0, + 0, + ), + ), + resolver: None, + overridden_path: false, + }, + "C": Package { + kind: Local( + "deps_only/C", + ), + version: None, + resolver: None, + overridden_path: true, + }, + "D": Package { + kind: Local( + "deps_only/D", + ), + version: Some( + ( + 3, + 0, + 0, + ), + ), + resolver: None, + overridden_path: true, + }, + "E": Package { + kind: Local( + "deps_only/E", + ), + version: None, + resolver: None, + overridden_path: true, + }, + }, + always_deps: { + "A", + "B", + "C", + "D", + "E", + "Root", + }, + }, + build_options: BuildConfig { + dev_mode: true, + test_mode: false, + generate_docs: false, + generate_abis: false, + install_dir: Some( + "ELIDED_FOR_TEST", + ), + force_recompilation: false, + lock_file: Some( + "ELIDED_FOR_TEST", + ), + additional_named_addresses: {}, + architecture: None, + fetch_deps_only: false, + skip_fetch_latest_git_deps: false, + }, + package_table: { + "A": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "A", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "B": Internal( + InternalDependency { + kind: Local( + "../B2", + ), + subst: None, + version: Some( + ( + 1, + 0, + 0, + ), + ), + digest: None, + dep_override: false, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "B": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "B", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: {}, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "C": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "C", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "D": Internal( + InternalDependency { + kind: Local( + "../D", + ), + subst: None, + version: Some( + ( + 3, + 0, + 0, + ), + ), + digest: None, + dep_override: true, + }, + ), + "E": Internal( + InternalDependency { + kind: Local( + "../E", + ), + subst: None, + version: None, + digest: None, + dep_override: false, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "D": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "D", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: {}, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "E": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "E", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "D": Internal( + InternalDependency { + kind: Local( + "../D", + ), + subst: None, + version: Some( + ( + 1, + 0, + 0, + ), + ), + digest: None, + dep_override: false, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "Root": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "Root", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "A": Internal( + InternalDependency { + kind: Local( + "deps_only/A", + ), + subst: None, + version: None, + digest: None, + dep_override: false, + }, + ), + "B": Internal( + InternalDependency { + kind: Local( + "deps_only/B1", + ), + subst: None, + version: Some( + ( + 2, + 0, + 0, + ), + ), + digest: None, + dep_override: true, + }, + ), + "C": Internal( + InternalDependency { + kind: Local( + "deps_only/C", + ), + subst: None, + version: None, + digest: None, + dep_override: false, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + }, +} diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_transitive_nested_override/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_transitive_nested_override/Move.toml new file mode 100644 index 0000000000000..ba57ab888d996 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_transitive_nested_override/Move.toml @@ -0,0 +1,27 @@ +# Dependency graph and and override (ov) - both overrides should succeed as after ov(2) kicks in, C +# will dominate E and D (and this override will always kick in before any other dependencies are +# processed as overrides are processed first). +# +# +----+ ov(3) +----+ +# +------>| C |------------------------------>| D | +# | +----+----------+ +--->+----+ +# | | | v1 +# | +----+ | | +# +------>| A | | | +# | +----+ +---->+----+ | +# | | v1 +----+ | E |----+ +# +----+ | +----->| B2 |-------->+----+ +# |Root|----+ +----+ +# +----+ | +# | +# | ov(2) +----+ +# +------------->| B1 | +# +----+ +[package] +name = "Root" +version = "0.0.0" + +[dependencies] +A = { local = "./deps_only/A" } +B = { local = "./deps_only/B1", version = "2.0.0", override = true } +C = { local = "./deps_only/C" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_transitive_nested_override/deps_only/A/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_transitive_nested_override/deps_only/A/Move.toml new file mode 100644 index 0000000000000..e8d027ed1f9e6 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_transitive_nested_override/deps_only/A/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "A" +version = "0.0.0" + +[dependencies] +B = { local = "../B2", version = "1.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_transitive_nested_override/deps_only/B1/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_transitive_nested_override/deps_only/B1/Move.toml new file mode 100644 index 0000000000000..64596e5a35ef8 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_transitive_nested_override/deps_only/B1/Move.toml @@ -0,0 +1,3 @@ +[package] +name = "B" +version = "0.0.0" diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_transitive_nested_override/deps_only/B2/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_transitive_nested_override/deps_only/B2/Move.toml new file mode 100644 index 0000000000000..0053de6d4598c --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_transitive_nested_override/deps_only/B2/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "B" +version = "0.0.0" + +[dependencies] +E = { local = "../E" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_transitive_nested_override/deps_only/C/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_transitive_nested_override/deps_only/C/Move.toml new file mode 100644 index 0000000000000..b29c9c8691265 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_transitive_nested_override/deps_only/C/Move.toml @@ -0,0 +1,7 @@ +[package] +name = "C" +version = "0.0.0" + +[dependencies] +E = { local = "../E" } +D = { local = "../D", version ="3.0.0", override = true } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_transitive_nested_override/deps_only/D/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_transitive_nested_override/deps_only/D/Move.toml new file mode 100644 index 0000000000000..c9cc6294601eb --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_transitive_nested_override/deps_only/D/Move.toml @@ -0,0 +1,3 @@ +[package] +name = "D" +version = "0.0.0" diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_transitive_nested_override/deps_only/E/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_transitive_nested_override/deps_only/E/Move.toml new file mode 100644 index 0000000000000..32168607edeb6 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_transitive_nested_override/deps_only/E/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "E" +version = "0.0.0" + +[dependencies] +D = { local = "../D", version = "1.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_two_nested_overrides/Move.locked b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_two_nested_overrides/Move.locked new file mode 100644 index 0000000000000..6e5a86067625b --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_two_nested_overrides/Move.locked @@ -0,0 +1,48 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 0 + +dependencies = [ + { name = "A" }, + { name = "B" }, + { name = "E" }, +] + +[[move.package]] +name = "A" +source = { local = "deps_only/A" } + +dependencies = [ + { name = "C" }, + { name = "D" }, + { name = "E" }, +] + +[[move.package]] +name = "B" +source = { local = "deps_only/B" } + +dependencies = [ + { name = "E" }, +] + +[[move.package]] +name = "C" +source = { local = "deps_only/C" } + +dependencies = [ + { name = "E" }, +] + +[[move.package]] +name = "D" +source = { local = "deps_only/D" } + +dependencies = [ + { name = "E" }, +] + +[[move.package]] +name = "E" +source = { local = "deps_only/E", version = "1.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_two_nested_overrides/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_two_nested_overrides/Move.resolved new file mode 100644 index 0000000000000..ea534ce9fd320 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_two_nested_overrides/Move.resolved @@ -0,0 +1,445 @@ +ResolvedGraph { + graph: DependencyGraph { + root_path: "tests/test_sources/diamond_problem_dep_two_nested_overrides", + root_package: "Root", + package_graph: { + "Root": [ + ( + "E", + Outgoing, + ), + ( + "A", + Outgoing, + ), + ( + "B", + Outgoing, + ), + ], + "E": [ + ( + "Root", + Incoming, + ), + ( + "A", + Incoming, + ), + ( + "C", + Incoming, + ), + ( + "D", + Incoming, + ), + ( + "B", + Incoming, + ), + ], + "A": [ + ( + "E", + Outgoing, + ), + ( + "C", + Outgoing, + ), + ( + "D", + Outgoing, + ), + ( + "Root", + Incoming, + ), + ], + "C": [ + ( + "E", + Outgoing, + ), + ( + "A", + Incoming, + ), + ], + "D": [ + ( + "E", + Outgoing, + ), + ( + "A", + Incoming, + ), + ], + "B": [ + ( + "E", + Outgoing, + ), + ( + "Root", + Incoming, + ), + ], + }, + package_table: { + "A": Package { + kind: Local( + "deps_only/A", + ), + version: None, + resolver: None, + overridden_path: true, + }, + "B": Package { + kind: Local( + "deps_only/B", + ), + version: None, + resolver: None, + overridden_path: true, + }, + "C": Package { + kind: Local( + "deps_only/C", + ), + version: None, + resolver: None, + overridden_path: true, + }, + "D": Package { + kind: Local( + "deps_only/D", + ), + version: None, + resolver: None, + overridden_path: true, + }, + "E": Package { + kind: Local( + "deps_only/E", + ), + version: Some( + ( + 1, + 0, + 0, + ), + ), + resolver: None, + overridden_path: false, + }, + }, + always_deps: { + "A", + "B", + "C", + "D", + "E", + "Root", + }, + }, + build_options: BuildConfig { + dev_mode: true, + test_mode: false, + generate_docs: false, + generate_abis: false, + install_dir: Some( + "ELIDED_FOR_TEST", + ), + force_recompilation: false, + lock_file: Some( + "ELIDED_FOR_TEST", + ), + additional_named_addresses: {}, + architecture: None, + fetch_deps_only: false, + skip_fetch_latest_git_deps: false, + }, + package_table: { + "A": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "A", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "C": Internal( + InternalDependency { + kind: Local( + "../C", + ), + subst: None, + version: None, + digest: None, + dep_override: false, + }, + ), + "D": Internal( + InternalDependency { + kind: Local( + "../D", + ), + subst: None, + version: None, + digest: None, + dep_override: false, + }, + ), + "E": Internal( + InternalDependency { + kind: Local( + "../E", + ), + subst: None, + version: Some( + ( + 2, + 0, + 0, + ), + ), + digest: None, + dep_override: true, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "B": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "B", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "E": Internal( + InternalDependency { + kind: Local( + "../E", + ), + subst: None, + version: Some( + ( + 3, + 0, + 0, + ), + ), + digest: None, + dep_override: false, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "C": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "C", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "E": Internal( + InternalDependency { + kind: Local( + "../E", + ), + subst: None, + version: Some( + ( + 2, + 0, + 0, + ), + ), + digest: None, + dep_override: false, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "D": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "D", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "E": Internal( + InternalDependency { + kind: Local( + "../E", + ), + subst: None, + version: Some( + ( + 2, + 0, + 0, + ), + ), + digest: None, + dep_override: false, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "E": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "E", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: {}, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "Root": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "Root", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "A": Internal( + InternalDependency { + kind: Local( + "deps_only/A", + ), + subst: None, + version: None, + digest: None, + dep_override: false, + }, + ), + "B": Internal( + InternalDependency { + kind: Local( + "deps_only/B", + ), + subst: None, + version: None, + digest: None, + dep_override: false, + }, + ), + "E": Internal( + InternalDependency { + kind: Local( + "deps_only/E", + ), + subst: None, + version: Some( + ( + 1, + 0, + 0, + ), + ), + digest: None, + dep_override: true, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + }, +} diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_two_nested_overrides/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_two_nested_overrides/Move.toml new file mode 100644 index 0000000000000..6fafbb4d5c441 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_two_nested_overrides/Move.toml @@ -0,0 +1,25 @@ +# Dependency graph and and override (ov) - only ov(1) should succeed. +# +----+ +# +---->| C |--------------+ +# | +----+ | +# | | +# +----+ | | +# +---->| A |--------+ | +# | +----+----+ | | +# | | | | +# +----+ | ov(1) | | +----+ | +# |Root|----+------------+ | +---->| D |------+ | +# +----+ | | | +----+ | | +# | | | ov2 v1 | | +# | +----+ | +-------->+----+<-----+ | +# +---->| B | +----------->| E | v2 | +# +----+------------->+----+<-------------+ +# v3 +[package] +name = "Root" +version = "0.0.0" + +[dependencies] +A = { local = "./deps_only/A" } +B = { local = "./deps_only/B" } +E = { local = "./deps_only/E", version = "1.0.0", override = true } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_two_nested_overrides/deps_only/A/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_two_nested_overrides/deps_only/A/Move.toml new file mode 100644 index 0000000000000..f6105a6c14da3 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_two_nested_overrides/deps_only/A/Move.toml @@ -0,0 +1,8 @@ +[package] +name = "A" +version = "0.0.0" + +[dependencies] +C = { local = "../C" } +D = { local = "../D" } +E = { local = "../E", version = "2.0.0", override = true } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_two_nested_overrides/deps_only/B/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_two_nested_overrides/deps_only/B/Move.toml new file mode 100644 index 0000000000000..c4ad219336f22 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_two_nested_overrides/deps_only/B/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "B" +version = "0.0.0" + +[dependencies] +E = { local = "../E", version = "3.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_two_nested_overrides/deps_only/C/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_two_nested_overrides/deps_only/C/Move.toml new file mode 100644 index 0000000000000..9c1c69cb1f529 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_two_nested_overrides/deps_only/C/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "C" +version = "0.0.0" + +[dependencies] +E = { local = "../E", version = "2.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_two_nested_overrides/deps_only/D/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_two_nested_overrides/deps_only/D/Move.toml new file mode 100644 index 0000000000000..5b594aae20725 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_two_nested_overrides/deps_only/D/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "D" +version = "0.0.0" + +[dependencies] +E = { local = "../E", version = "2.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_two_nested_overrides/deps_only/E/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_two_nested_overrides/deps_only/E/Move.toml new file mode 100644 index 0000000000000..dc97c6690fb60 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_two_nested_overrides/deps_only/E/Move.toml @@ -0,0 +1,3 @@ +[package] +name = "E" +version = "0.0.0" diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps/Move.resolved new file mode 100644 index 0000000000000..a64bf95bb55dc --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps/Move.resolved @@ -0,0 +1,433 @@ +ResolvedGraph { + graph: DependencyGraph { + root_path: "tests/test_sources/diamond_problem_dep_with_deps", + root_package: "Root", + package_graph: { + "Root": [ + ( + "C", + Outgoing, + ), + ( + "A", + Outgoing, + ), + ( + "B", + Outgoing, + ), + ], + "C": [ + ( + "E", + Outgoing, + ), + ( + "Root", + Incoming, + ), + ( + "A", + Incoming, + ), + ( + "B", + Incoming, + ), + ], + "E": [ + ( + "C", + Incoming, + ), + ( + "A", + Incoming, + ), + ( + "D", + Incoming, + ), + ], + "A": [ + ( + "E", + Outgoing, + ), + ( + "C", + Outgoing, + ), + ( + "D", + Outgoing, + ), + ( + "Root", + Incoming, + ), + ], + "D": [ + ( + "E", + Outgoing, + ), + ( + "A", + Incoming, + ), + ], + "B": [ + ( + "C", + Outgoing, + ), + ( + "Root", + Incoming, + ), + ], + }, + package_table: { + "A": Package { + kind: Local( + "deps_only/A", + ), + version: None, + resolver: None, + overridden_path: true, + }, + "B": Package { + kind: Local( + "deps_only/B", + ), + version: None, + resolver: None, + overridden_path: true, + }, + "C": Package { + kind: Local( + "deps_only/C2", + ), + version: None, + resolver: None, + overridden_path: false, + }, + "D": Package { + kind: Local( + "deps_only/D", + ), + version: None, + resolver: None, + overridden_path: true, + }, + "E": Package { + kind: Local( + "deps_only/E", + ), + version: Some( + ( + 1, + 0, + 0, + ), + ), + resolver: None, + overridden_path: false, + }, + }, + always_deps: { + "A", + "B", + "C", + "D", + "E", + "Root", + }, + }, + build_options: BuildConfig { + dev_mode: true, + test_mode: false, + generate_docs: false, + generate_abis: false, + install_dir: Some( + "ELIDED_FOR_TEST", + ), + force_recompilation: false, + lock_file: Some( + "ELIDED_FOR_TEST", + ), + additional_named_addresses: {}, + architecture: None, + fetch_deps_only: false, + skip_fetch_latest_git_deps: false, + }, + package_table: { + "A": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "A", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "C": Internal( + InternalDependency { + kind: Local( + "../C1", + ), + subst: None, + version: None, + digest: None, + dep_override: false, + }, + ), + "D": Internal( + InternalDependency { + kind: Local( + "../D", + ), + subst: None, + version: None, + digest: None, + dep_override: false, + }, + ), + "E": Internal( + InternalDependency { + kind: Local( + "../E", + ), + subst: None, + version: Some( + ( + 1, + 0, + 0, + ), + ), + digest: None, + dep_override: true, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "B": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "B", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "C": Internal( + InternalDependency { + kind: Local( + "../C2", + ), + subst: None, + version: None, + digest: None, + dep_override: false, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "C": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "C", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "E": Internal( + InternalDependency { + kind: Local( + "../E", + ), + subst: None, + version: Some( + ( + 1, + 0, + 0, + ), + ), + digest: None, + dep_override: false, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "D": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "D", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "E": Internal( + InternalDependency { + kind: Local( + "../E", + ), + subst: None, + version: Some( + ( + 1, + 0, + 0, + ), + ), + digest: None, + dep_override: false, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "E": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "E", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: {}, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + "Root": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "Root", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: None, + dev_address_assignments: None, + build: None, + dependencies: { + "A": Internal( + InternalDependency { + kind: Local( + "deps_only/A", + ), + subst: None, + version: None, + digest: None, + dep_override: false, + }, + ), + "B": Internal( + InternalDependency { + kind: Local( + "deps_only/B", + ), + subst: None, + version: None, + digest: None, + dep_override: false, + }, + ), + "C": Internal( + InternalDependency { + kind: Local( + "deps_only/C2", + ), + subst: None, + version: None, + digest: None, + dep_override: true, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: {}, + source_digest: "ELIDED_FOR_TEST", + }, + }, +} diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps/Move.toml new file mode 100644 index 0000000000000..40d7b75ce2d1c --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps/Move.toml @@ -0,0 +1,28 @@ +# Dependency graph and two overrides - one correct one (in Root) and the other one insufficient (in +# A). The correct override eliminates C1's dependency on E's version 2 and the insufficient override +# becomes unnecessary as the graph becomes consistent with all remaining dependencies on package E +# are for version 1. +# +# +----+ v2 +# +---->| C1 |-------+ +# | +----+ | +# | | +# +----+ | ov(1) | +# +---->| A |-----+--------------+ | +# | +----+ | | | +# | | | +->+----+ +# +----+ | ov(2) | +----+ v1 +----->| | +# |Root|----+-------------+ +-->| D |----------->| E | +# +----+ | | +----+ | | +# | | +----->+----+ +# | +----+ +->+----+ v1 | +# +---->| B |---->| C2 |---------+ +# +----+ +----+ +[package] +name = "Root" +version = "0.0.0" + +[dependencies] +A = { local = "./deps_only/A" } +B = { local = "./deps_only/B" } +C = { local = "./deps_only/C2", override = true } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps/deps_only/A/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps/deps_only/A/Move.toml new file mode 100644 index 0000000000000..ab5f1f86b0c10 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps/deps_only/A/Move.toml @@ -0,0 +1,8 @@ +[package] +name = "A" +version = "0.0.0" + +[dependencies] +C = { local = "../C1" } +D = { local = "../D" } +E = { local = "../E", version = "1.0.0", override = true } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps/deps_only/B/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps/deps_only/B/Move.toml new file mode 100644 index 0000000000000..50872e3a6b5b7 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps/deps_only/B/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "B" +version = "0.0.0" + +[dependencies] +C = { local = "../C2" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps/deps_only/C1/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps/deps_only/C1/Move.toml new file mode 100644 index 0000000000000..9c1c69cb1f529 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps/deps_only/C1/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "C" +version = "0.0.0" + +[dependencies] +E = { local = "../E", version = "2.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps/deps_only/C2/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps/deps_only/C2/Move.toml new file mode 100644 index 0000000000000..5aa35b1ac88e0 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps/deps_only/C2/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "C" +version = "0.0.0" + +[dependencies] +E = { local = "../E", version = "1.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps/deps_only/D/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps/deps_only/D/Move.toml new file mode 100644 index 0000000000000..3904311160ba3 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps/deps_only/D/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "D" +version = "0.0.0" + +[dependencies] +E = { local = "../E", version = "1.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps/deps_only/E/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps/deps_only/E/Move.toml new file mode 100644 index 0000000000000..dc97c6690fb60 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps/deps_only/E/Move.toml @@ -0,0 +1,3 @@ +[package] +name = "E" +version = "0.0.0" diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps_conflict/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps_conflict/Move.resolved new file mode 100644 index 0000000000000..371d9f642f781 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps_conflict/Move.resolved @@ -0,0 +1,3 @@ +Failed to resolve dependencies for package 'Root': Resolving dependencies for package 'A': Conflicting dependencies found: +E = { local = "deps_only/E", version = "1.0.0" } +E = { local = "deps_only/E", version = "3.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps_conflict/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps_conflict/Move.toml new file mode 100644 index 0000000000000..8df8419ef04bb --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps_conflict/Move.toml @@ -0,0 +1,27 @@ +# Dependency graph - conflicting dependencies. Even though override in Root eliminates C1's +# dependency on E's version 2, we still have a conflicting dependency on E from A, which is an +# override, but an insufficient one. +# +# +----+ v2 +# +---->| C1 |-------+ +# | +----+ | +# | | +# +----+ | ov(3) | +# +---->| A |-----+--------------+ | +# | +----+ | | | +# | | | +->+----+ +# +----+ | ov(2) | +----+ v1 +----->| | +# |Root|----+-------------+ +-->| D |----------->| E | +# +----+ | | +----+ | | +# | | +----->+----+ +# | +----+ +->+----+ v1 | +# +---->| B |---->| C2 |---------+ +# +----+ +----+ +[package] +name = "Root" +version = "0.0.0" + +[dependencies] +A = { local = "./deps_only/A" } +B = { local = "./deps_only/B" } +C = { local = "./deps_only/C2", override = true } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps_conflict/deps_only/A/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps_conflict/deps_only/A/Move.toml new file mode 100644 index 0000000000000..5de29dc25579b --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps_conflict/deps_only/A/Move.toml @@ -0,0 +1,8 @@ +[package] +name = "A" +version = "0.0.0" + +[dependencies] +C = { local = "../C1" } +D = { local = "../D" } +E = { local = "../E", version = "3.0.0", override = true } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps_conflict/deps_only/B/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps_conflict/deps_only/B/Move.toml new file mode 100644 index 0000000000000..50872e3a6b5b7 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps_conflict/deps_only/B/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "B" +version = "0.0.0" + +[dependencies] +C = { local = "../C2" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps_conflict/deps_only/C1/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps_conflict/deps_only/C1/Move.toml new file mode 100644 index 0000000000000..9c1c69cb1f529 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps_conflict/deps_only/C1/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "C" +version = "0.0.0" + +[dependencies] +E = { local = "../E", version = "2.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps_conflict/deps_only/C2/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps_conflict/deps_only/C2/Move.toml new file mode 100644 index 0000000000000..5aa35b1ac88e0 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps_conflict/deps_only/C2/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "C" +version = "0.0.0" + +[dependencies] +E = { local = "../E", version = "1.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps_conflict/deps_only/D/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps_conflict/deps_only/D/Move.toml new file mode 100644 index 0000000000000..3904311160ba3 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps_conflict/deps_only/D/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "D" +version = "0.0.0" + +[dependencies] +E = { local = "../E", version = "1.0.0" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps_conflict/deps_only/E/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps_conflict/deps_only/E/Move.toml new file mode 100644 index 0000000000000..dc97c6690fb60 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_dep_with_deps_conflict/deps_only/E/Move.toml @@ -0,0 +1,3 @@ +[package] +name = "E" +version = "0.0.0" diff --git a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_no_conflict/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_no_conflict/Move.resolved index d11ef21667295..00ca515691889 100644 --- a/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_no_conflict/Move.resolved +++ b/external-crates/move/tools/move-package/tests/test_sources/diamond_problem_no_conflict/Move.resolved @@ -51,6 +51,7 @@ ResolvedGraph { ), version: None, resolver: None, + overridden_path: false, }, "B": Package { kind: Local( @@ -58,6 +59,7 @@ ResolvedGraph { ), version: None, resolver: None, + overridden_path: false, }, "C": Package { kind: Local( @@ -65,6 +67,7 @@ ResolvedGraph { ), version: None, resolver: None, + overridden_path: false, }, }, always_deps: { @@ -123,6 +126,7 @@ ResolvedGraph { ), version: None, digest: None, + dep_override: false, }, ), }, @@ -171,6 +175,7 @@ ResolvedGraph { ), version: None, digest: None, + dep_override: false, }, ), }, @@ -238,7 +243,7 @@ ResolvedGraph { "A": Internal( InternalDependency { kind: Local( - "./deps_only/A", + "deps_only/A", ), subst: Some( { @@ -249,12 +254,13 @@ ResolvedGraph { ), version: None, digest: None, + dep_override: false, }, ), "B": Internal( InternalDependency { kind: Local( - "./deps_only/B", + "deps_only/B", ), subst: Some( { @@ -265,6 +271,7 @@ ResolvedGraph { ), version: None, digest: None, + dep_override: false, }, ), }, diff --git a/external-crates/move/tools/move-package/tests/test_sources/external/Move.locked b/external-crates/move/tools/move-package/tests/test_sources/external/Move.locked index 687c1e5fcff22..2b7382a74e1da 100644 --- a/external-crates/move/tools/move-package/tests/test_sources/external/Move.locked +++ b/external-crates/move/tools/move-package/tests/test_sources/external/Move.locked @@ -9,7 +9,7 @@ dependencies = [ [[move.package]] name = "A" -source = { local = "./deps_only/A" } +source = { local = "deps_only/A" } dependencies = [ { name = "ADep" }, @@ -17,4 +17,4 @@ dependencies = [ [[move.package]] name = "ADep" -source = { local = "./deps_only/ADep" } +source = { local = "deps_only/ADep" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/external/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/external/Move.resolved index 7f336d242ec67..873567ead433c 100644 --- a/external-crates/move/tools/move-package/tests/test_sources/external/Move.resolved +++ b/external-crates/move/tools/move-package/tests/test_sources/external/Move.resolved @@ -29,21 +29,23 @@ ResolvedGraph { package_table: { "A": Package { kind: Local( - "./deps_only/A", + "deps_only/A", ), version: None, resolver: Some( "../resolvers/successful.sh", ), + overridden_path: false, }, "ADep": Package { kind: Local( - "./deps_only/ADep", + "deps_only/ADep", ), version: None, resolver: Some( "../resolvers/successful.sh", ), + overridden_path: false, }, }, always_deps: { @@ -95,6 +97,7 @@ ResolvedGraph { subst: None, version: None, digest: None, + dep_override: false, }, ), }, diff --git a/external-crates/move/tools/move-package/tests/test_sources/external_bad_dep/Move.locked b/external-crates/move/tools/move-package/tests/test_sources/external_bad_dep/Move.locked index 687c1e5fcff22..2b7382a74e1da 100644 --- a/external-crates/move/tools/move-package/tests/test_sources/external_bad_dep/Move.locked +++ b/external-crates/move/tools/move-package/tests/test_sources/external_bad_dep/Move.locked @@ -9,7 +9,7 @@ dependencies = [ [[move.package]] name = "A" -source = { local = "./deps_only/A" } +source = { local = "deps_only/A" } dependencies = [ { name = "ADep" }, @@ -17,4 +17,4 @@ dependencies = [ [[move.package]] name = "ADep" -source = { local = "./deps_only/ADep" } +source = { local = "deps_only/ADep" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/external_bad_dep/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/external_bad_dep/Move.resolved index ec09f7afc6fc2..d03823e289d67 100644 --- a/external-crates/move/tools/move-package/tests/test_sources/external_bad_dep/Move.resolved +++ b/external-crates/move/tools/move-package/tests/test_sources/external_bad_dep/Move.resolved @@ -1 +1 @@ -Resolving package 'ADep': Unable to find package manifest at "tests/test_sources/external_bad_dep/./deps_only/ADep": No such file or directory (os error 2) +Resolving package 'ADep': Unable to find package manifest at "tests/test_sources/external_bad_dep/deps_only/ADep": No such file or directory (os error 2) diff --git a/external-crates/move/tools/move-package/tests/test_sources/external_dev_dep/Move.locked b/external-crates/move/tools/move-package/tests/test_sources/external_dev_dep/Move.locked index 0b79d343c4f95..566ce195a4be5 100644 --- a/external-crates/move/tools/move-package/tests/test_sources/external_dev_dep/Move.locked +++ b/external-crates/move/tools/move-package/tests/test_sources/external_dev_dep/Move.locked @@ -13,7 +13,7 @@ dev-dependencies = [ [[move.package]] name = "A" -source = { local = "./deps_only/A" } +source = { local = "deps_only/A" } dependencies = [ { name = "ADep" }, @@ -21,11 +21,11 @@ dependencies = [ [[move.package]] name = "ADep" -source = { local = "./deps_only/ADep" } +source = { local = "deps_only/ADep" } [[move.package]] name = "B" -source = { local = "./deps_only/B" } +source = { local = "deps_only/B" } dependencies = [ { name = "BDep" }, @@ -33,4 +33,4 @@ dependencies = [ [[move.package]] name = "BDep" -source = { local = "./deps_only/BDep" } +source = { local = "deps_only/BDep" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/external_dev_dep/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/external_dev_dep/Move.resolved index 2025f07a3e538..c9fd6e4d411f9 100644 --- a/external-crates/move/tools/move-package/tests/test_sources/external_dev_dep/Move.resolved +++ b/external-crates/move/tools/move-package/tests/test_sources/external_dev_dep/Move.resolved @@ -49,39 +49,43 @@ ResolvedGraph { package_table: { "A": Package { kind: Local( - "./deps_only/A", + "deps_only/A", ), version: None, resolver: Some( "../resolvers/successful.sh", ), + overridden_path: false, }, "ADep": Package { kind: Local( - "./deps_only/ADep", + "deps_only/ADep", ), version: None, resolver: Some( "../resolvers/successful.sh", ), + overridden_path: false, }, "B": Package { kind: Local( - "./deps_only/B", + "deps_only/B", ), version: None, resolver: Some( "../resolvers/successful.sh", ), + overridden_path: false, }, "BDep": Package { kind: Local( - "./deps_only/BDep", + "deps_only/BDep", ), version: None, resolver: Some( "../resolvers/successful.sh", ), + overridden_path: false, }, }, always_deps: { @@ -133,6 +137,7 @@ ResolvedGraph { subst: None, version: None, digest: None, + dep_override: false, }, ), }, @@ -192,6 +197,7 @@ ResolvedGraph { subst: None, version: None, digest: None, + dep_override: false, }, ), }, diff --git a/external-crates/move/tools/move-package/tests/test_sources/external_overlap/Move.locked b/external-crates/move/tools/move-package/tests/test_sources/external_overlap/Move.locked index ba39cf1d165f6..0a60df86c5d83 100644 --- a/external-crates/move/tools/move-package/tests/test_sources/external_overlap/Move.locked +++ b/external-crates/move/tools/move-package/tests/test_sources/external_overlap/Move.locked @@ -10,7 +10,7 @@ dependencies = [ [[move.package]] name = "A" -source = { local = "./deps_only/A" } +source = { local = "deps_only/A" } dependencies = [ { name = "ADep" }, diff --git a/external-crates/move/tools/move-package/tests/test_sources/external_overlap/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/external_overlap/Move.resolved index fab2c62e74c39..d753660c8d066 100644 --- a/external-crates/move/tools/move-package/tests/test_sources/external_overlap/Move.resolved +++ b/external-crates/move/tools/move-package/tests/test_sources/external_overlap/Move.resolved @@ -24,25 +24,26 @@ ResolvedGraph { ), ], "A": [ - ( - "Root", - Incoming, - ), ( "ADep", Outgoing, ), + ( + "Root", + Incoming, + ), ], }, package_table: { "A": Package { kind: Local( - "./deps_only/A", + "deps_only/A", ), version: None, resolver: Some( "../resolvers/successful.sh", ), + overridden_path: false, }, "ADep": Package { kind: Local( @@ -50,6 +51,7 @@ ResolvedGraph { ), version: None, resolver: None, + overridden_path: false, }, }, always_deps: { @@ -101,6 +103,7 @@ ResolvedGraph { subst: None, version: None, digest: None, + dep_override: false, }, ), }, @@ -158,11 +161,12 @@ ResolvedGraph { "ADep": Internal( InternalDependency { kind: Local( - "./deps_only/ADep", + "deps_only/ADep", ), subst: None, version: None, digest: None, + dep_override: false, }, ), }, diff --git a/external-crates/move/tools/move-package/tests/test_sources/external_silent/Move.locked b/external-crates/move/tools/move-package/tests/test_sources/external_silent/Move.locked index 687c1e5fcff22..2b7382a74e1da 100644 --- a/external-crates/move/tools/move-package/tests/test_sources/external_silent/Move.locked +++ b/external-crates/move/tools/move-package/tests/test_sources/external_silent/Move.locked @@ -9,7 +9,7 @@ dependencies = [ [[move.package]] name = "A" -source = { local = "./deps_only/A" } +source = { local = "deps_only/A" } dependencies = [ { name = "ADep" }, @@ -17,4 +17,4 @@ dependencies = [ [[move.package]] name = "ADep" -source = { local = "./deps_only/ADep" } +source = { local = "deps_only/ADep" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/multiple_deps_rename/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/multiple_deps_rename/Move.resolved index bf37c21ed8089..fcd78e5e61b4e 100644 --- a/external-crates/move/tools/move-package/tests/test_sources/multiple_deps_rename/Move.resolved +++ b/external-crates/move/tools/move-package/tests/test_sources/multiple_deps_rename/Move.resolved @@ -33,6 +33,7 @@ ResolvedGraph { ), version: None, resolver: None, + overridden_path: false, }, "D": Package { kind: Local( @@ -40,6 +41,7 @@ ResolvedGraph { ), version: None, resolver: None, + overridden_path: false, }, }, always_deps: { @@ -156,7 +158,7 @@ ResolvedGraph { "C": Internal( InternalDependency { kind: Local( - "./deps_only/C", + "deps_only/C", ), subst: Some( { @@ -167,12 +169,13 @@ ResolvedGraph { ), version: None, digest: None, + dep_override: false, }, ), "D": Internal( InternalDependency { kind: Local( - "./deps_only/D", + "deps_only/D", ), subst: Some( { @@ -183,6 +186,7 @@ ResolvedGraph { ), version: None, digest: None, + dep_override: false, }, ), }, diff --git a/external-crates/move/tools/move-package/tests/test_sources/nested_deps_git_local/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/nested_deps_git_local/Move.resolved index 951f7f5ab100b..58c52690f3ff2 100644 --- a/external-crates/move/tools/move-package/tests/test_sources/nested_deps_git_local/Move.resolved +++ b/external-crates/move/tools/move-package/tests/test_sources/nested_deps_git_local/Move.resolved @@ -37,6 +37,7 @@ ResolvedGraph { ), version: None, resolver: None, + overridden_path: false, }, "MoveStdlib": Package { kind: Git( @@ -48,6 +49,7 @@ ResolvedGraph { ), version: None, resolver: None, + overridden_path: false, }, }, always_deps: { @@ -103,6 +105,7 @@ ResolvedGraph { subst: None, version: None, digest: None, + dep_override: false, }, ), }, @@ -184,6 +187,7 @@ ResolvedGraph { subst: None, version: None, digest: None, + dep_override: false, }, ), }, diff --git a/external-crates/move/tools/move-package/tests/test_sources/nested_deps_override/Move.locked b/external-crates/move/tools/move-package/tests/test_sources/nested_deps_override/Move.locked new file mode 100644 index 0000000000000..c8dbf13329092 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/nested_deps_override/Move.locked @@ -0,0 +1,20 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 0 + +dependencies = [ + { name = "Nested" }, +] + +[[move.package]] +name = "More" +source = { local = "deps_only/nested/more" } + +[[move.package]] +name = "Nested" +source = { local = "deps_only/nested" } + +dependencies = [ + { name = "More" }, +] diff --git a/external-crates/move/tools/move-package/tests/test_sources/nested_deps_override/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/nested_deps_override/Move.toml new file mode 100644 index 0000000000000..1cae9ebd2f842 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/nested_deps_override/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "NestedDeps" +version = "0.0.0" + +[dependencies] +Nested = { local = "./deps_only/nested" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/nested_deps_override/deps_only/nested/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/nested_deps_override/deps_only/nested/Move.toml new file mode 100644 index 0000000000000..920c7bf302162 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/nested_deps_override/deps_only/nested/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "Nested" +version = "0.0.0" + +[dependencies] +More = { local = "./more", override = true } diff --git a/external-crates/move/tools/move-package/tests/test_sources/nested_deps_override/deps_only/nested/more/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/nested_deps_override/deps_only/nested/more/Move.toml new file mode 100644 index 0000000000000..83a2b21fa60d3 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/nested_deps_override/deps_only/nested/more/Move.toml @@ -0,0 +1,3 @@ +[package] +name = "More" +version = "0.0.0" diff --git a/external-crates/move/tools/move-package/tests/test_sources/one_dep/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/one_dep/Move.resolved index 1436fe5ac3ddd..b8c718e05f217 100644 --- a/external-crates/move/tools/move-package/tests/test_sources/one_dep/Move.resolved +++ b/external-crates/move/tools/move-package/tests/test_sources/one_dep/Move.resolved @@ -23,6 +23,7 @@ ResolvedGraph { ), version: None, resolver: None, + overridden_path: false, }, }, always_deps: { @@ -104,7 +105,7 @@ ResolvedGraph { "OtherDep": Internal( InternalDependency { kind: Local( - "./deps_only/other_dep", + "deps_only/other_dep", ), subst: Some( { @@ -115,6 +116,7 @@ ResolvedGraph { ), version: None, digest: None, + dep_override: false, }, ), }, diff --git a/external-crates/move/tools/move-package/tests/test_sources/one_dep_assigned_address/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/one_dep_assigned_address/Move.resolved index e01e2b394a95c..df43e52737980 100644 --- a/external-crates/move/tools/move-package/tests/test_sources/one_dep_assigned_address/Move.resolved +++ b/external-crates/move/tools/move-package/tests/test_sources/one_dep_assigned_address/Move.resolved @@ -23,6 +23,7 @@ ResolvedGraph { ), version: None, resolver: None, + overridden_path: false, }, }, always_deps: { @@ -100,7 +101,7 @@ ResolvedGraph { "OtherDep": Internal( InternalDependency { kind: Local( - "./deps_only/other_dep", + "deps_only/other_dep", ), subst: Some( { @@ -111,6 +112,7 @@ ResolvedGraph { ), version: None, digest: None, + dep_override: false, }, ), }, diff --git a/external-crates/move/tools/move-package/tests/test_sources/one_dep_multiple_of_same_name/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/one_dep_multiple_of_same_name/Move.resolved index e6f93e7e9c78f..ec1609776c22c 100644 --- a/external-crates/move/tools/move-package/tests/test_sources/one_dep_multiple_of_same_name/Move.resolved +++ b/external-crates/move/tools/move-package/tests/test_sources/one_dep_multiple_of_same_name/Move.resolved @@ -23,6 +23,7 @@ ResolvedGraph { ), version: None, resolver: None, + overridden_path: false, }, }, always_deps: { @@ -104,7 +105,7 @@ ResolvedGraph { "OtherDep": Internal( InternalDependency { kind: Local( - "./deps_only/other_dep", + "deps_only/other_dep", ), subst: Some( { @@ -115,6 +116,7 @@ ResolvedGraph { ), version: None, digest: None, + dep_override: false, }, ), }, diff --git a/external-crates/move/tools/move-package/tests/test_sources/one_dep_override/Move.compiled b/external-crates/move/tools/move-package/tests/test_sources/one_dep_override/Move.compiled new file mode 100644 index 0000000000000..848d6eee74471 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/one_dep_override/Move.compiled @@ -0,0 +1,26 @@ +CompiledPackageInfo { + package_name: "Root", + address_alias_instantiation: { + "A": 00000000000000000000000000000001, + }, + source_digest: Some( + "ELIDED_FOR_TEST", + ), + build_flags: BuildConfig { + dev_mode: true, + test_mode: false, + generate_docs: false, + generate_abis: false, + install_dir: Some( + "ELIDED_FOR_TEST", + ), + force_recompilation: false, + lock_file: Some( + "ELIDED_FOR_TEST", + ), + additional_named_addresses: {}, + architecture: None, + fetch_deps_only: false, + skip_fetch_latest_git_deps: false, + }, +} diff --git a/external-crates/move/tools/move-package/tests/test_sources/one_dep_override/Move.locked b/external-crates/move/tools/move-package/tests/test_sources/one_dep_override/Move.locked new file mode 100644 index 0000000000000..fb1915365ba19 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/one_dep_override/Move.locked @@ -0,0 +1,12 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 0 + +dependencies = [ + { name = "OtherDep", addr_subst = { "A" = "B" } }, +] + +[[move.package]] +name = "OtherDep" +source = { local = "deps_only/other_dep" } diff --git a/external-crates/move/tools/move-package/tests/test_sources/one_dep_override/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/one_dep_override/Move.resolved new file mode 100644 index 0000000000000..845cb91a60355 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/one_dep_override/Move.resolved @@ -0,0 +1,138 @@ +ResolvedGraph { + graph: DependencyGraph { + root_path: "tests/test_sources/one_dep_override", + root_package: "Root", + package_graph: { + "Root": [ + ( + "OtherDep", + Outgoing, + ), + ], + "OtherDep": [ + ( + "Root", + Incoming, + ), + ], + }, + package_table: { + "OtherDep": Package { + kind: Local( + "deps_only/other_dep", + ), + version: None, + resolver: None, + overridden_path: false, + }, + }, + always_deps: { + "OtherDep", + "Root", + }, + }, + build_options: BuildConfig { + dev_mode: true, + test_mode: false, + generate_docs: false, + generate_abis: false, + install_dir: Some( + "ELIDED_FOR_TEST", + ), + force_recompilation: false, + lock_file: Some( + "ELIDED_FOR_TEST", + ), + additional_named_addresses: {}, + architecture: None, + fetch_deps_only: false, + skip_fetch_latest_git_deps: false, + }, + package_table: { + "OtherDep": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "OtherDep", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: Some( + { + "B": None, + }, + ), + dev_address_assignments: None, + build: None, + dependencies: {}, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: {}, + resolved_table: { + "B": 00000000000000000000000000000001, + }, + source_digest: "ELIDED_FOR_TEST", + }, + "Root": Package { + source_package: SourceManifest { + package: PackageInfo { + name: "Root", + version: ( + 0, + 0, + 0, + ), + authors: [], + license: None, + custom_properties: {}, + }, + addresses: Some( + { + "A": Some( + 00000000000000000000000000000001, + ), + }, + ), + dev_address_assignments: None, + build: None, + dependencies: { + "OtherDep": Internal( + InternalDependency { + kind: Local( + "deps_only/other_dep", + ), + subst: Some( + { + "A": RenameFrom( + "B", + ), + }, + ), + version: None, + digest: None, + dep_override: true, + }, + ), + }, + dev_dependencies: {}, + }, + package_path: "ELIDED_FOR_TEST", + renaming: { + "A": ( + "OtherDep", + "B", + ), + }, + resolved_table: { + "A": 00000000000000000000000000000001, + }, + source_digest: "ELIDED_FOR_TEST", + }, + }, +} diff --git a/external-crates/move/tools/move-package/tests/test_sources/one_dep_override/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/one_dep_override/Move.toml new file mode 100644 index 0000000000000..8b6a067ba5e21 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/one_dep_override/Move.toml @@ -0,0 +1,9 @@ +[package] +name = "Root" +version = "0.0.0" + +[addresses] +A = "0x1" + +[dependencies] +OtherDep = { local = "./deps_only/other_dep", addr_subst = { "A" = "B" }, override = true } diff --git a/external-crates/move/tools/move-package/tests/test_sources/one_dep_override/deps_only/other_dep/Move.toml b/external-crates/move/tools/move-package/tests/test_sources/one_dep_override/deps_only/other_dep/Move.toml new file mode 100644 index 0000000000000..e0af1caa59c2c --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/one_dep_override/deps_only/other_dep/Move.toml @@ -0,0 +1,6 @@ +[package] +name = "OtherDep" +version = "0.0.0" + +[addresses] +B = "_" diff --git a/external-crates/move/tools/move-package/tests/test_sources/one_dep_override/deps_only/other_dep/sources/B.move b/external-crates/move/tools/move-package/tests/test_sources/one_dep_override/deps_only/other_dep/sources/B.move new file mode 100644 index 0000000000000..e49d694537c67 --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/one_dep_override/deps_only/other_dep/sources/B.move @@ -0,0 +1,3 @@ +module B::B { + public fun foo() { } +} diff --git a/external-crates/move/tools/move-package/tests/test_sources/one_dep_override/sources/OneDep.move b/external-crates/move/tools/move-package/tests/test_sources/one_dep_override/sources/OneDep.move new file mode 100644 index 0000000000000..41fd77fecf2cc --- /dev/null +++ b/external-crates/move/tools/move-package/tests/test_sources/one_dep_override/sources/OneDep.move @@ -0,0 +1,6 @@ +module A::OneDep { + use A::B; + public fun do_b() { + B::foo() + } +} diff --git a/external-crates/move/tools/move-package/tests/test_sources/one_dep_reassigned_address/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/one_dep_reassigned_address/Move.resolved index b3415178859c4..8c9ed32b1ca53 100644 --- a/external-crates/move/tools/move-package/tests/test_sources/one_dep_reassigned_address/Move.resolved +++ b/external-crates/move/tools/move-package/tests/test_sources/one_dep_reassigned_address/Move.resolved @@ -23,6 +23,7 @@ ResolvedGraph { ), version: None, resolver: None, + overridden_path: false, }, }, always_deps: { @@ -106,7 +107,7 @@ ResolvedGraph { "OtherDep": Internal( InternalDependency { kind: Local( - "./deps_only/other_dep", + "deps_only/other_dep", ), subst: Some( { @@ -117,6 +118,7 @@ ResolvedGraph { ), version: None, digest: None, + dep_override: false, }, ), }, diff --git a/external-crates/move/tools/move-package/tests/test_sources/one_dep_unification_across_local_renamings/Move.resolved b/external-crates/move/tools/move-package/tests/test_sources/one_dep_unification_across_local_renamings/Move.resolved index 358f2e1dea100..6a878dfce83ee 100644 --- a/external-crates/move/tools/move-package/tests/test_sources/one_dep_unification_across_local_renamings/Move.resolved +++ b/external-crates/move/tools/move-package/tests/test_sources/one_dep_unification_across_local_renamings/Move.resolved @@ -23,6 +23,7 @@ ResolvedGraph { ), version: None, resolver: None, + overridden_path: false, }, }, always_deps: { @@ -104,7 +105,7 @@ ResolvedGraph { "OtherDep": Internal( InternalDependency { kind: Local( - "./deps_only/other_dep", + "deps_only/other_dep", ), subst: Some( { @@ -115,6 +116,7 @@ ResolvedGraph { ), version: None, digest: None, + dep_override: false, }, ), },