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());