| // This test verifies that rustdoc `-o -` prints JSON on stdout and doesn't generate |
| // a JSON file. |
| |
| use std::path::PathBuf; |
| |
| use run_make_support::path_helpers::{cwd, has_extension, read_dir_entries_recursive}; |
| use run_make_support::{rustdoc, serde_json}; |
| |
| fn main() { |
| let json_string = rustdoc() |
| .input("foo.rs") |
| .out_dir("-") |
| .arg("-Zunstable-options") |
| .output_format("json") |
| .run() |
| .stdout_utf8(); |
| |
| // First we check that we generate the JSON in the stdout. |
| let json_value: serde_json::Value = |
| serde_json::from_str(&json_string).expect("stdout should be valid json"); |
| |
| // We don't care to test the specifics of the JSON, as that's done |
| // elsewhere, just check that it has a format_version (as all JSON output |
| // should). |
| let format_version = json_value["format_version"] |
| .as_i64() |
| .expect("json output should contain format_version field"); |
| assert!(format_version > 30); |
| |
| // Then we check it didn't generate any JSON file. |
| read_dir_entries_recursive(cwd(), |path| { |
| if path.is_file() && has_extension(path, "json") { |
| panic!("Found a JSON file {path:?}"); |
| } |
| }); |
| } |