Skip to content

Commit ada39c0

Browse files
committed
detect broken manifest furing fetch
1 parent d541f1a commit ada39c0

File tree

3 files changed

+21
-3
lines changed

3 files changed

+21
-3
lines changed

src/prepare.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ pub(crate) fn fetch_deps(
145145
fn run_command(cmd: Command) -> anyhow::Result<()> {
146146
let mut yanked_deps = false;
147147
let mut missing_deps = false;
148+
let mut broken_deps = false;
148149

149150
let mut process = |line: &str, _: &mut ProcessLinesActions| {
150151
if line.contains("failed to select a version for the requirement") {
@@ -153,6 +154,8 @@ fn run_command(cmd: Command) -> anyhow::Result<()> {
153154
|| line.contains("no matching package named")
154155
{
155156
missing_deps = true;
157+
} else if line.contains("failed to parse manifest at") {
158+
broken_deps = true;
156159
}
157160
};
158161

@@ -164,6 +167,9 @@ fn run_command(cmd: Command) -> anyhow::Result<()> {
164167
Err(CommandError::ExecutionFailed { status: _, stderr }) if missing_deps => {
165168
Err(PrepareError::MissingDependencies(stderr).into())
166169
}
170+
Err(CommandError::ExecutionFailed { status: _, stderr }) if broken_deps => {
171+
Err(PrepareError::BrokenDependencies(stderr).into())
172+
}
167173
Err(err) => Err(err.into()),
168174
}
169175
}
@@ -373,6 +379,9 @@ pub enum PrepareError {
373379
/// rejecting it.
374380
#[error("invalid Cargo.toml syntax")]
375381
InvalidCargoTomlSyntax,
382+
/// Something about the crates dependencies is invalid
383+
#[error("broken dependencies: \n\n{0}")]
384+
BrokenDependencies(String),
376385
/// Some of this crate's dependencies were yanked, preventing Crater from fetching them.
377386
#[error("the crate depends on yanked dependencies: \n\n{0}")]
378387
YankedDependencies(String),

tests/buildtest/crates/invalid-cargotoml-missing-registry-config/Cargo.lock

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/buildtest/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ test_prepare_error_stderr!(
261261
"error: no matching package named `macro` found"
262262
);
263263

264-
test_prepare_unknown_err!(
264+
test_prepare_error_stderr!(
265265
test_invalid_cargotoml_content_deps,
266266
"invalid-cargotoml-content-deps",
267267
BrokenDependencies,
@@ -303,10 +303,10 @@ test_prepare_unknown_err!(
303303
"error: cyclic package dependency: package"
304304
);
305305

306-
test_prepare_unknown_err!(
306+
test_prepare_error_stderr!(
307307
test_invalid_cargotoml_missing_registry_config,
308308
"invalid-cargotoml-missing-registry-config",
309-
MissingDependencies,
309+
BrokenDependencies,
310310
"registry index was not found in any configuration: `will-be-removed`"
311311
);
312312

0 commit comments

Comments
 (0)