format: Keep on going in case of error The previous behavior would stop on the first file in dry-run, or on first failure otherwise. Print out the incorrectly formatted files, makes the try jobs more useful. Bug: 211 Change-Id: Ic64f754ca76a9f0b9bf87a9be02600cca82595a2 Reviewed-on: https://gn-review.googlesource.com/c/gn/+/10520 Reviewed-by: Brett Wilson <brettw@chromium.org> Commit-Queue: Brett Wilson <brettw@chromium.org>
diff --git a/src/gn/command_format.cc b/src/gn/command_format.cc index 249c2ae..20b3ccb 100644 --- a/src/gn/command_format.cc +++ b/src/gn/command_format.cc
@@ -59,9 +59,8 @@ Arguments --dry-run - Does not change or output anything, but sets the process exit code based - on whether output would be different than what's on disk. This is useful - for presubmit/lint-type checks. + Prints the list of files that would be reformatted but does not write + anything to disk. This is useful for presubmit/lint-type checks. - Exit code 0: successful format, matches on disk. - Exit code 1: general failure (parse error, etc.) - Exit code 2: successful format, but differs from on disk. @@ -1320,12 +1319,14 @@ // TODO(scottmg): Eventually, this list of files should be processed in // parallel. + int exit_code = 0; for (const auto& arg : args) { Err err; SourceFile file = source_dir.ResolveRelativeFile(Value(nullptr, arg), &err); if (err.has_error()) { err.PrintToStdout(); - return 1; + exit_code = 1; + continue; } base::FilePath to_format = setup.build_settings().GetFullPath(file); @@ -1334,17 +1335,24 @@ Err(Location(), std::string("Couldn't read \"") + FilePathToUTF8(to_format)) .PrintToStdout(); - return 1; + exit_code = 1; + continue; } std::string output_string; if (!FormatStringToString(original_contents, dump_tree, &output_string)) { - return 1; + exit_code = 1; + continue; } if (dump_tree == TreeDumpMode::kInactive) { + if (dry_run) { + if (original_contents != output_string) { + printf("%s\n", arg.c_str()); + exit_code = 2; + } + continue; + } // Update the file in-place. - if (dry_run) - return original_contents == output_string ? 0 : 2; if (original_contents != output_string) { if (base::WriteFile(to_format, output_string.data(), static_cast<int>(output_string.size())) == -1) { @@ -1352,17 +1360,18 @@ std::string("Failed to write formatted output back to \"") + FilePathToUTF8(to_format) + std::string("\".")) .PrintToStdout(); - return 1; + exit_code = 1; + continue; } if (!quiet) { printf("Wrote formatted to '%s'.\n", - FilePathToUTF8(to_format).c_str()); + FilePathToUTF8(to_format).c_str()); } } } } - return 0; + return exit_code; } } // namespace commands