diff --git a/src/bootstrap/test.rs b/src/bootstrap/test.rs index c69b21488d2..1fe92098fd6 100644 --- a/src/bootstrap/test.rs +++ b/src/bootstrap/test.rs @@ -430,6 +430,10 @@ impl Step for Rustfmt { &[], ); + if builder.config.cmd.bless() { + cargo.env("BLESS", "1"); + } + let dir = testdir(builder, compiler.host); t!(fs::create_dir_all(&dir)); cargo.env("RUSTFMT_TEST_DIR", dir); diff --git a/src/tools/rustfmt/src/parse/session.rs b/src/tools/rustfmt/src/parse/session.rs index 6ce68c2c2fb..aa75b477473 100644 --- a/src/tools/rustfmt/src/parse/session.rs +++ b/src/tools/rustfmt/src/parse/session.rs @@ -152,15 +152,13 @@ fn default_handler( TerminalUrl::No, )) }; - Handler::with_emitter( - Box::new(SilentOnIgnoredFilesEmitter { - has_non_ignorable_parser_errors: false, - source_map, - emitter, - ignore_path_set, - can_reset, - }), - ) + Handler::with_emitter(Box::new(SilentOnIgnoredFilesEmitter { + has_non_ignorable_parser_errors: false, + source_map, + emitter, + ignore_path_set, + can_reset, + })) } impl ParseSess { diff --git a/src/tools/rustfmt/src/test/mod.rs b/src/tools/rustfmt/src/test/mod.rs index cfad4a8ed0e..364aa225f68 100644 --- a/src/tools/rustfmt/src/test/mod.rs +++ b/src/tools/rustfmt/src/test/mod.rs @@ -838,6 +838,12 @@ fn handle_result( // Ignore LF and CRLF difference for Windows. if !string_eq_ignore_newline_repr(&fmt_text, &text) { + if let Some(bless) = std::env::var_os("BLESS") { + if bless != "0" { + std::fs::write(file_name, fmt_text).unwrap(); + continue; + } + } let diff = make_diff(&text, &fmt_text, DIFF_CONTEXT_SIZE); assert!( !diff.is_empty(),