From 9fa8ef1f4f9ab7ebd2846223fd41420a2ce659f7 Mon Sep 17 00:00:00 2001 From: Mirko Bonadei Date: Tue, 17 Sep 2019 19:14:13 +0200 Subject: [PATCH] absl::make_unique presubmit check. Starting from [1], WebRTC has been migrated to std::make_unique, in order to keep the codebase consistent, absl::make_unique is now banned. Output example: ** Presubmit ERRORS ** Please use std::make_unique instead of absl::make_unique. Affected files: call/rtp_demuxer.cc [1] - https://webrtc-review.googlesource.com/c/src/+/153221 Bug: webrtc:10945 Change-Id: I5b727ecc5ea8ac2ecd89cbd5fba866baf6de9012 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/153355 Reviewed-by: Karl Wiberg Reviewed-by: Mirko Bonadei Commit-Queue: Mirko Bonadei Cr-Commit-Position: refs/heads/master@{#29210} --- PRESUBMIT.py | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/PRESUBMIT.py b/PRESUBMIT.py index d838bfd42b..99835ccf29 100755 --- a/PRESUBMIT.py +++ b/PRESUBMIT.py @@ -891,6 +891,8 @@ def CommonChecks(input_api, output_api): results.extend(CheckApiDepsFileIsUpToDate(input_api, output_api)) results.extend(CheckAbslMemoryInclude( input_api, output_api, non_third_party_sources)) + results.extend(CheckBannedAbslMakeUnique( + input_api, output_api, non_third_party_sources)) return results @@ -948,6 +950,25 @@ def CheckApiDepsFileIsUpToDate(input_api, output_api): return results +def CheckBannedAbslMakeUnique(input_api, output_api, source_file_filter): + file_filter = lambda f: (f.LocalPath().endswith(('.cc', '.h')) + and source_file_filter(f)) + + files = [] + for f in input_api.AffectedFiles( + include_deletes=False, file_filter=file_filter): + for _, line in f.ChangedContents(): + if 'absl::make_unique' in line: + files.append(f) + break + + if len(files): + return [output_api.PresubmitError( + 'Please use std::make_unique instead of absl::make_unique.\n' + 'Affected files:', + files)] + return [] + def CheckAbslMemoryInclude(input_api, output_api, source_file_filter): pattern = input_api.re.compile( r'^#include\s*"absl/memory/memory.h"', input_api.re.MULTILINE) @@ -961,16 +982,15 @@ def CheckAbslMemoryInclude(input_api, output_api, source_file_filter): if pattern.search(contents): continue for _, line in f.ChangedContents(): - if 'absl::make_unique' in line or 'absl::WrapUnique' in line: + if 'absl::WrapUnique' in line: files.append(f) break if len(files): return [output_api.PresubmitError( - 'Please include "absl/memory/memory.h" header for' - ' absl::make_unique or absl::WrapUnique.\nThis header may or' - ' may not be included transitively depending on the C++ standard' - ' version.', + 'Please include "absl/memory/memory.h" header for absl::WrapUnique.\n' + 'This header may or may not be included transitively depending on the ' + 'C++ standard version.', files)] return []