From 286801be9d122a9bef968f00dca6786fb1c64403 Mon Sep 17 00:00:00 2001 From: prsabahrami Date: Fri, 24 Jan 2025 10:43:11 -0500 Subject: [PATCH] fix tests and added tracing to conditional operations --- src/solver/mod.rs | 25 +++++++++++++++++++++---- tests/solver.rs | 32 -------------------------------- 2 files changed, 21 insertions(+), 36 deletions(-) diff --git a/src/solver/mod.rs b/src/solver/mod.rs index 7700f96..cab1c52 100644 --- a/src/solver/mod.rs +++ b/src/solver/mod.rs @@ -1706,10 +1706,20 @@ async fn add_clauses_for_solvables( { let dependency_name = cache.provider().version_set_name(version_set_id); if clauses_added_for_package.insert(dependency_name) { - tracing::trace!( - "┝━ Adding clauses for package '{}'", - cache.provider().display_name(dependency_name), - ); + if let Some(condition) = condition { + let condition_name = cache.provider().version_set_name(condition); + tracing::trace!( + "┝━ Adding conditional clauses for package '{}' with condition '{}' and version set '{}'", + cache.provider().display_name(dependency_name), + cache.provider().display_name(condition_name), + cache.provider().display_version_set(condition), + ); + } else { + tracing::trace!( + "┝━ Adding clauses for package '{}'", + cache.provider().display_name(dependency_name), + ); + } pending_futures.push( async move { @@ -1917,6 +1927,13 @@ async fn add_clauses_for_solvables( } if let Some((condition, condition_candidates)) = condition { + tracing::trace!( + "Adding conditional clauses for {} with condition {}", + requirement.display(cache.provider()), + std::convert::Into::::into(condition) + .display(cache.provider()), + ); + let condition_version_set_variables = requirement_to_sorted_candidates.insert( condition.into(), condition_candidates diff --git a/tests/solver.rs b/tests/solver.rs index c57666b..812f7c3 100644 --- a/tests/solver.rs +++ b/tests/solver.rs @@ -1629,38 +1629,6 @@ fn test_circular_conditional_dependencies() { "###); } -#[test] -fn test_conditional_dependency_with_excluded() { - let mut provider = BundleBoxProvider::new(); - - // Setup packages - provider.add_package("trigger", 1.into(), &[], &[]); - provider.add_package("target", 1.into(), &[], &[]); - - // Create conditional requirement: - // If trigger is installed, require target=1 - let trigger_spec = Spec::parse_union("trigger 1").next().unwrap().unwrap(); - let target_spec = Spec::parse_union("target 1").next().unwrap().unwrap(); - - let trigger_version_set = provider.intern_version_set(&trigger_spec); - let target_version_set = provider.intern_version_set(&target_spec); - - let cond_req = ConditionalRequirement::new(trigger_version_set, target_version_set.into()); - - // Exclude target package - provider.exclude("target", 1, "it is externally excluded"); - - let requirements = vec![ - cond_req, - trigger_version_set.into(), // Require trigger package - ]; - - let mut solver = Solver::new(provider); - let problem = Problem::new().requirements(requirements); - // Should fail to solve because target is excluded but required by condition - assert!(solver.solve(problem).is_err()); -} - #[cfg(feature = "serde")] fn serialize_snapshot(snapshot: &DependencySnapshot, destination: impl AsRef) { let file = std::io::BufWriter::new(std::fs::File::create(destination.as_ref()).unwrap());