Skip to content

Commit 774a205

Browse files
committed
fix: tests and clippy
1 parent 09592db commit 774a205

File tree

2 files changed

+25
-5
lines changed

2 files changed

+25
-5
lines changed

src/solver/mod.rs

+9-5
Original file line numberDiff line numberDiff line change
@@ -217,14 +217,15 @@ impl<VS: VersionSet, N: PackageName + Display, D: DependencyProvider<VS, N>> Sol
217217

218218
// Mark the initial seen solvables as seen
219219
let mut pending_solvables = vec![];
220-
let mut clauses_added_for_solvable = self.clauses_added_for_solvable.borrow_mut();
221-
for solvable_id in solvable_ids {
222-
if clauses_added_for_solvable.insert(solvable_id) {
223-
pending_solvables.push(solvable_id);
220+
{
221+
let mut clauses_added_for_solvable = self.clauses_added_for_solvable.borrow_mut();
222+
for solvable_id in solvable_ids {
223+
if clauses_added_for_solvable.insert(solvable_id) {
224+
pending_solvables.push(solvable_id);
225+
}
224226
}
225227
}
226228

227-
let mut clauses_added_for_package = self.clauses_added_for_package.borrow_mut();
228229
let mut seen = pending_solvables.iter().copied().collect::<HashSet<_>>();
229230
let mut pending_futures = FuturesUnordered::new();
230231
loop {
@@ -264,6 +265,9 @@ impl<VS: VersionSet, N: PackageName + Display, D: DependencyProvider<VS, N>> Sol
264265
break;
265266
};
266267

268+
let mut clauses_added_for_solvable = self.clauses_added_for_solvable.borrow_mut();
269+
let mut clauses_added_for_package = self.clauses_added_for_package.borrow_mut();
270+
267271
match result? {
268272
TaskResult::Dependencies {
269273
solvable_id,

tests/solver.rs

+16
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ use resolvo::{
55
KnownDependencies, NameId, Pool, SolvableId, Solver, SolverCache, UnsolvableOrCancelled,
66
VersionSet, VersionSetId,
77
};
8+
use std::cell::RefCell;
9+
use std::collections::HashSet;
810
use std::rc::Rc;
911
use std::sync::atomic::{AtomicUsize, Ordering};
1012
use std::sync::Arc;
@@ -153,6 +155,10 @@ struct BundleBoxProvider {
153155
concurrent_requests: Arc<AtomicUsize>,
154156
concurrent_requests_max: Rc<Cell<usize>>,
155157
sleep_before_return: bool,
158+
159+
// A mapping of packages that we have requested candidates for. This way we can keep track of duplicate requests.
160+
requested_candidates: RefCell<HashSet<NameId>>,
161+
requested_dependencies: RefCell<HashSet<SolvableId>>,
156162
}
157163

158164
struct BundleBoxPackageDependencies {
@@ -272,6 +278,11 @@ impl DependencyProvider<Range<Pack>> for BundleBoxProvider {
272278
.max(concurrent_requests + 1),
273279
);
274280

281+
assert!(
282+
self.requested_candidates.borrow_mut().insert(name),
283+
"duplicate get_candidates request"
284+
);
285+
275286
let package_name = self.pool.resolve_package_name(name);
276287
let Some(package) = self.packages.get(package_name) else {
277288
return self.maybe_delay(None).await;
@@ -319,6 +330,11 @@ impl DependencyProvider<Range<Pack>> for BundleBoxProvider {
319330
.max(concurrent_requests + 1),
320331
);
321332

333+
assert!(
334+
self.requested_dependencies.borrow_mut().insert(solvable),
335+
"duplicate get_dependencies request"
336+
);
337+
322338
let candidate = self.pool.resolve_solvable(solvable);
323339
let package_name = self.pool.resolve_package_name(candidate.name_id());
324340
let pack = candidate.inner();

0 commit comments

Comments
 (0)