Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit ffa8d6b

Browse files
authoredFeb 11, 2022
Rollup merge of rust-lang#93660 - aDotInTheVoid:rustdoc-type-tests, r=CraftSpider
rustdoc-json: Add some tests for typealias item r? ```@CraftSpider``` Improves rust-lang#81359 The test's arn't pretty, and I think eventually we need a better way of doing repeated tests on a deeply nested path, without repeating the way to get to that path ```@rustbot``` modify labels: +A-rustdoc-json +T-rustdoc +A-rustdoc +A-testsuite
2 parents 15d71cf + bf0e862 commit ffa8d6b

File tree

4 files changed

+98
-2
lines changed

4 files changed

+98
-2
lines changed
 

‎src/test/rustdoc-json/type/dyn.rs

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// ignore-tidy-linelength
2+
3+
// @count dyn.json "$.index[*][?(@.name=='dyn')].inner.items" 1
4+
// @set sync_int_gen = - "$.index[*][?(@.name=='SyncIntGen')].id"
5+
// @is - "$.index[*][?(@.name=='dyn')].inner.items[0]" $sync_int_gen
6+
7+
// @is - "$.index[*][?(@.name=='SyncIntGen')].kind" \"typedef\"
8+
// @is - "$.index[*][?(@.name=='SyncIntGen')].inner.generics" '{"params": [], "where_predicates": []}'
9+
// @is - "$.index[*][?(@.name=='SyncIntGen')].inner.type.kind" \"resolved_path\"
10+
// @is - "$.index[*][?(@.name=='SyncIntGen')].inner.type.inner.name" \"Box\"
11+
// @is - "$.index[*][?(@.name=='SyncIntGen')].inner.type.inner.args.angle_bracketed.bindings" []
12+
// @count - "$.index[*][?(@.name=='SyncIntGen')].inner.type.inner.args.angle_bracketed.args" 1
13+
// @is - "$.index[*][?(@.name=='SyncIntGen')].inner.type.inner.args.angle_bracketed.args[0].type.kind" \"resolved_path\"
14+
// @is - "$.index[*][?(@.name=='SyncIntGen')].inner.type.inner.args.angle_bracketed.args[0].type.kind" \"resolved_path\"
15+
// @is - "$.index[*][?(@.name=='SyncIntGen')].inner.type.inner.args.angle_bracketed.args[0].type.inner.name" \"Fn\"
16+
// @count - "$.index[*][?(@.name=='SyncIntGen')].inner.type.inner.args.angle_bracketed.args[0].type.inner.param_names[*]" 3
17+
// @is - "$.index[*][?(@.name=='SyncIntGen')].inner.type.inner.args.angle_bracketed.args[0].type.inner.param_names[0].trait_bound.trait.inner.name" \"Send\"
18+
// @is - "$.index[*][?(@.name=='SyncIntGen')].inner.type.inner.args.angle_bracketed.args[0].type.inner.param_names[1].trait_bound.trait.inner.name" \"Sync\"
19+
// @is - "$.index[*][?(@.name=='SyncIntGen')].inner.type.inner.args.angle_bracketed.args[0].type.inner.param_names[2]" "{\"outlives\": \"'static\"}"
20+
// @is - "$.index[*][?(@.name=='SyncIntGen')].inner.type.inner.args.angle_bracketed.args[0].type.inner.args" '{"parenthesized": {"inputs": [],"output": {"inner": "i32","kind": "primitive"}}}'
21+
pub type SyncIntGen = Box<dyn Fn() -> i32 + Send + Sync + 'static>;
+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// ignore-tidy-linelength
2+
3+
// @is fn_lifetime.json "$.index[*][?(@.name=='GenericFn')].kind" \"typedef\"
4+
5+
// @count - "$.index[*][?(@.name=='GenericFn')].inner.generics.params[*]" 1
6+
// @is - "$.index[*][?(@.name=='GenericFn')].inner.generics.params[*].name" \"\'a\"
7+
// @has - "$.index[*][?(@.name=='GenericFn')].inner.generics.params[*].kind.lifetime"
8+
// @count - "$.index[*][?(@.name=='GenericFn')].inner.generics.params[*].kind.lifetime.outlives[*]" 0
9+
// @count - "$.index[*][?(@.name=='GenericFn')].inner.generics.where_predicates[*]" 0
10+
// @is - "$.index[*][?(@.name=='GenericFn')].inner.type.kind" \"function_pointer\"
11+
// @count - "$.index[*][?(@.name=='GenericFn')].inner.type.inner.generic_params[*]" 0
12+
// @count - "$.index[*][?(@.name=='GenericFn')].inner.type.inner.decl.inputs[*]" 1
13+
// @is - "$.index[*][?(@.name=='GenericFn')].inner.type.inner.decl.inputs[*][1].inner.lifetime" \"\'a\"
14+
// @is - "$.index[*][?(@.name=='GenericFn')].inner.type.inner.decl.output.inner.lifetime" \"\'a\"
15+
16+
pub type GenericFn<'a> = fn(&'a i32) -> &'a i32;
17+
18+
// @is fn_lifetime.json "$.index[*][?(@.name=='ForAll')].kind" \"typedef\"
19+
// @count - "$.index[*][?(@.name=='ForAll')].inner.generics.params[*]" 0
20+
// @count - "$.index[*][?(@.name=='ForAll')].inner.generics.where_predicates[*]" 0
21+
// @count - "$.index[*][?(@.name=='ForAll')].inner.type.inner.generic_params[*]" 1
22+
// @is - "$.index[*][?(@.name=='ForAll')].inner.type.inner.generic_params[*].name" \"\'a\"
23+
// @has - "$.index[*][?(@.name=='ForAll')].inner.type.inner.generic_params[*].kind.lifetime"
24+
// @count - "$.index[*][?(@.name=='ForAll')].inner.type.inner.generic_params[*].kind.lifetime.outlives[*]" 0
25+
// @count - "$.index[*][?(@.name=='ForAll')].inner.type.inner.decl.inputs[*]" 1
26+
// @is - "$.index[*][?(@.name=='ForAll')].inner.type.inner.decl.inputs[*][1].inner.lifetime" \"\'a\"
27+
// @is - "$.index[*][?(@.name=='ForAll')].inner.type.inner.decl.output.inner.lifetime" \"\'a\"
28+
pub type ForAll = for<'a> fn(&'a i32) -> &'a i32;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// ignore-tidy-linelength
2+
3+
// @set result = generic_default.json "$.index[*][?(@.name=='Result')].id"
4+
pub enum Result<T, E> {
5+
Ok(T),
6+
Err(E),
7+
}
8+
9+
// @set my_error = - "$.index[*][?(@.name=='MyError')].id"
10+
pub struct MyError {}
11+
12+
// @is - "$.index[*][?(@.name=='MyResult')].kind" \"typedef\"
13+
// @count - "$.index[*][?(@.name=='MyResult')].inner.generics.where_predicates[*]" 0
14+
// @count - "$.index[*][?(@.name=='MyResult')].inner.generics.params[*]" 2
15+
// @is - "$.index[*][?(@.name=='MyResult')].inner.generics.params[0].name" \"T\"
16+
// @is - "$.index[*][?(@.name=='MyResult')].inner.generics.params[1].name" \"E\"
17+
// @has - "$.index[*][?(@.name=='MyResult')].inner.generics.params[0].kind.type"
18+
// @has - "$.index[*][?(@.name=='MyResult')].inner.generics.params[1].kind.type"
19+
// @count - "$.index[*][?(@.name=='MyResult')].inner.generics.params[0].kind.type.bounds[*]" 0
20+
// @count - "$.index[*][?(@.name=='MyResult')].inner.generics.params[1].kind.type.bounds[*]" 0
21+
// @is - "$.index[*][?(@.name=='MyResult')].inner.generics.params[0].kind.type.default" null
22+
// @is - "$.index[*][?(@.name=='MyResult')].inner.generics.params[1].kind.type.default.kind" \"resolved_path\"
23+
// @is - "$.index[*][?(@.name=='MyResult')].inner.generics.params[1].kind.type.default.inner.id" $my_error
24+
// @is - "$.index[*][?(@.name=='MyResult')].inner.generics.params[1].kind.type.default.inner.name" \"MyError\"
25+
// @is - "$.index[*][?(@.name=='MyResult')].inner.type.kind" \"resolved_path\"
26+
// @is - "$.index[*][?(@.name=='MyResult')].inner.type.inner.id" $result
27+
// @is - "$.index[*][?(@.name=='MyResult')].inner.type.inner.name" \"Result\"
28+
// @is - "$.index[*][?(@.name=='MyResult')].inner.type.inner.args.angle_bracketed.bindings" []
29+
// @is - "$.index[*][?(@.name=='MyResult')].inner.type.inner.args.angle_bracketed.args[0].type.kind" \"generic\"
30+
// @is - "$.index[*][?(@.name=='MyResult')].inner.type.inner.args.angle_bracketed.args[1].type.kind" \"generic\"
31+
// @is - "$.index[*][?(@.name=='MyResult')].inner.type.inner.args.angle_bracketed.args[0].type.inner" \"T\"
32+
// @is - "$.index[*][?(@.name=='MyResult')].inner.type.inner.args.angle_bracketed.args[1].type.inner" \"E\"
33+
pub type MyResult<T, E = MyError> = Result<T, E>;

‎src/tools/jsondocck/src/main.rs

+16-2
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,21 @@ fn check_command(command: Command, cache: &mut Cache) -> Result<(), CkError> {
231231

232232
let val = cache.get_value(&command.args[0])?;
233233
let results = select(&val, &command.args[1]).unwrap();
234-
results.len() == expected
234+
let eq = results.len() == expected;
235+
if !command.negated && !eq {
236+
return Err(CkError::FailedCheck(
237+
format!(
238+
"`{}` matched to `{:?}` with length {}, but expected length {}",
239+
&command.args[1],
240+
results,
241+
results.len(),
242+
expected
243+
),
244+
command,
245+
));
246+
} else {
247+
eq
248+
}
235249
}
236250
CommandKind::Is => {
237251
// @has <path> <jsonpath> <value> = check *exactly one* item matched by path, and it equals value
@@ -317,6 +331,6 @@ fn string_to_value<'a>(s: &str, cache: &'a Cache) -> Cow<'a, Value> {
317331
panic!("No variable: `{}`. Current state: `{:?}`", &s[1..], cache.variables)
318332
}))
319333
} else {
320-
Cow::Owned(serde_json::from_str(s).unwrap())
334+
Cow::Owned(serde_json::from_str(s).expect(&format!("Cannot convert `{}` to json", s)))
321335
}
322336
}

0 commit comments

Comments
 (0)
Failed to load comments.