Allow to have - in the rustdoc-json test file name

This commit is contained in:
Guillaume Gomez 2023-07-11 16:31:33 +02:00
parent b12ff66f2c
commit 18457ea47d
2 changed files with 13 additions and 4 deletions

View File

@ -15,8 +15,10 @@ impl Cache {
/// Create a new cache, used to read files only once and otherwise store their contents.
pub fn new(config: &Config) -> Cache {
let root = Path::new(&config.doc_dir);
let filename = Path::new(&config.template).file_stem().unwrap();
let file_path = root.join(&Path::with_extension(Path::new(filename), "json"));
// `filename` needs to replace `-` with `_` to be sure the JSON path will always be valid.
let filename =
Path::new(&config.template).file_stem().unwrap().to_str().unwrap().replace('-', "_");
let file_path = root.join(&Path::with_extension(Path::new(&filename), "json"));
let content = fs::read_to_string(&file_path).expect("failed to read JSON file");
Cache {

View File

@ -1,4 +1,5 @@
use std::io::{BufWriter, Write};
use std::path::{Path, PathBuf};
use anyhow::{bail, Result};
use clap::Parser;
@ -25,7 +26,7 @@ enum ErrorKind {
#[derive(Debug, Serialize)]
struct JsonOutput {
path: String,
path: PathBuf,
errors: Vec<Error>,
}
@ -45,6 +46,12 @@ struct Cli {
fn main() -> Result<()> {
let Cli { path, verbose, json_output } = Cli::parse();
// We convert `-` into `_` for the file name to be sure the JSON path will always be correct.
let path = Path::new(&path);
let filename = path.file_name().unwrap().to_str().unwrap().replace('-', "_");
let parent = path.parent().unwrap();
let path = parent.join(&filename);
let contents = fs::read_to_string(&path)?;
let krate: Crate = serde_json::from_str(&contents)?;
assert_eq!(krate.format_version, FORMAT_VERSION);
@ -101,7 +108,7 @@ fn main() -> Result<()> {
ErrorKind::Custom(msg) => eprintln!("{}: {}", err.id.0, msg),
}
}
bail!("Errors validating json {path}");
bail!("Errors validating json {}", path.display());
}
Ok(())