// 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:?}");
        }
    });
}
