Skip to content

Commit

Permalink
Rollup merge of rust-lang#104944 - aDotInTheVoid:jsondoclint-unit-tes…
Browse files Browse the repository at this point in the history
…ts, r=jyn514

Support unit tests for jsondoclint

r? ```@ghost```
  • Loading branch information
matthiaskrgr authored Nov 27, 2022
2 parents a5eeb3b + 09818a8 commit 2466992
Show file tree
Hide file tree
Showing 5 changed files with 70 additions and 3 deletions.
1 change: 1 addition & 0 deletions src/bootstrap/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -644,6 +644,7 @@ impl<'a> Builder<'a> {
test::CrateLibrustc,
test::CrateRustdoc,
test::CrateRustdocJsonTypes,
test::CrateJsonDocLint,
test::Linkcheck,
test::TierCheck,
test::ReplacePlaceholderTest,
Expand Down
36 changes: 36 additions & 0 deletions src/bootstrap/test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,42 @@ fn try_run_quiet(builder: &Builder<'_>, cmd: &mut Command) -> bool {
true
}

#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub struct CrateJsonDocLint {
host: TargetSelection,
}

impl Step for CrateJsonDocLint {
type Output = ();
const ONLY_HOSTS: bool = true;
const DEFAULT: bool = true;

fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
run.path("src/tools/jsondoclint")
}

fn make_run(run: RunConfig<'_>) {
run.builder.ensure(CrateJsonDocLint { host: run.target });
}

fn run(self, builder: &Builder<'_>) {
let bootstrap_host = builder.config.build;
let compiler = builder.compiler(0, bootstrap_host);

let cargo = tool::prepare_tool_cargo(
builder,
compiler,
Mode::ToolBootstrap,
bootstrap_host,
"test",
"src/tools/jsondoclint",
SourceType::InTree,
&[],
);
try_run(builder, &mut cargo.into());
}
}

#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub struct Linkcheck {
host: TargetSelection,
Expand Down
5 changes: 4 additions & 1 deletion src/tools/jsondoclint/src/json_find.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use std::fmt::Write;

use serde_json::Value;

#[derive(Debug, Clone)]
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum SelectorPart {
Field(String),
Index(usize),
Expand Down Expand Up @@ -72,3 +72,6 @@ fn find_selector_recursive(
}
}
}

#[cfg(test)]
mod tests;
27 changes: 27 additions & 0 deletions src/tools/jsondoclint/src/json_find/tests.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
use super::*;

#[test]
fn basic_find() {
use SelectorPart::*;

let j = serde_json::json!({
"index": {
"4": {
"inner": {
"items": ["1", "2", "3"]
}
}
}
});

let sel = find_selector(&j, &serde_json::json!("1"));
let exp: Vec<Vec<SelectorPart>> = vec![vec![
Field("index".to_owned()),
Field("4".to_owned()),
Field("inner".to_owned()),
Field("items".to_owned()),
Index(0),
]];

assert_eq!(exp, sel);
}
4 changes: 2 additions & 2 deletions src/tools/jsondoclint/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ pub(crate) mod item_kind;
mod json_find;
mod validator;

#[derive(Debug)]
#[derive(Debug, PartialEq, Eq)]
struct Error {
kind: ErrorKind,
id: Id,
}

#[derive(Debug)]
#[derive(Debug, PartialEq, Eq)]
enum ErrorKind {
NotFound,
Custom(String),
Expand Down

0 comments on commit 2466992

Please sign in to comment.