Fix swapped messages in _CheckUniquePtr

_CheckUniquePtr consistes of two checks -- one related to nullptr, one
related to make_unique. The error messages are currently swapped by
accident. This CL fixes that and adds a check for that.

It also removes some confusing "java/src" subpaths from the mock file
paths in the check. Those got in via copy&paste and are confusing,
while not relevant for what the test is testing.

Bug: 827961
Change-Id: Iaf3272cfc5fe0a641feaee861ad17fe71505800b
Reviewed-on: https://chromium-review.googlesource.com/999604
Reviewed-by: Dirk Pranke <[email protected]>
Commit-Queue: Vaclav Brozek <[email protected]>
Cr-Commit-Position: refs/heads/master@{#548807}
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index cbcaff69..a3245d88 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -1610,15 +1610,15 @@
           '%s:%d\n    %s' % (local_path, line_number, line.strip()))
 
   errors = []
-  if problems_constructor:
+  if problems_nullptr:
     errors.append(output_api.PresubmitError(
         'The following files use std::unique_ptr<T>(). Use nullptr instead.',
-        problems_constructor))
-  if problems_nullptr:
+        problems_nullptr))
+  if problems_constructor:
     errors.append(output_api.PresubmitError(
         'The following files use explicit std::unique_ptr constructor.'
         'Use std::make_unique<T>() instead.',
-        problems_nullptr))
+        problems_constructor))
   return errors
 
 
diff --git a/PRESUBMIT_test.py b/PRESUBMIT_test.py
index 7d21f84..3b75cbe 100755
--- a/PRESUBMIT_test.py
+++ b/PRESUBMIT_test.py
@@ -1642,12 +1642,13 @@
   def testTruePositivesNullptr(self):
     mock_input_api = MockInputApi()
     mock_input_api.files = [
-      MockFile('dir/java/src/baz.cc', ['std::unique_ptr<T>()']),
-      MockFile('dir/java/src/baz-p.cc', ['std::unique_ptr<T<P>>()']),
+      MockFile('dir/baz.cc', ['std::unique_ptr<T>()']),
+      MockFile('dir/baz-p.cc', ['std::unique_ptr<T<P>>()']),
     ]
 
     results = PRESUBMIT._CheckUniquePtr(mock_input_api, MockOutputApi())
     self.assertEqual(1, len(results))
+    self.assertTrue('nullptr' in results[0].message)
     self.assertEqual(2, len(results[0].items))
     self.assertTrue('baz.cc' in results[0].items[0])
     self.assertTrue('baz-p.cc' in results[0].items[1])
@@ -1655,17 +1656,17 @@
   def testTruePositivesConstructor(self):
     mock_input_api = MockInputApi()
     mock_input_api.files = [
-      MockFile('dir/java/src/foo.cc', ['return std::unique_ptr<T>(foo);']),
-      MockFile('dir/java/src/bar.mm', ['bar = std::unique_ptr<T>(foo)']),
-      MockFile('dir/java/src/mult.cc', [
+      MockFile('dir/foo.cc', ['return std::unique_ptr<T>(foo);']),
+      MockFile('dir/bar.mm', ['bar = std::unique_ptr<T>(foo)']),
+      MockFile('dir/mult.cc', [
         'return',
         '    std::unique_ptr<T>(barVeryVeryLongFooSoThatItWouldNotFitAbove);'
       ]),
-      MockFile('dir/java/src/mult2.cc', [
+      MockFile('dir/mult2.cc', [
         'barVeryVeryLongLongBaaaaaarSoThatTheLineLimitIsAlmostReached =',
         '    std::unique_ptr<T>(foo);'
       ]),
-      MockFile('dir/java/src/mult3.cc', [
+      MockFile('dir/mult3.cc', [
         'bar = std::unique_ptr<T>(',
         '    fooVeryVeryVeryLongStillGoingWellThisWillTakeAWhileFinallyThere);'
       ]),
@@ -1673,6 +1674,7 @@
 
     results = PRESUBMIT._CheckUniquePtr(mock_input_api, MockOutputApi())
     self.assertEqual(1, len(results))
+    self.assertTrue('std::make_unique' in results[0].message)
     self.assertEqual(5, len(results[0].items))
     self.assertTrue('foo.cc' in results[0].items[0])
     self.assertTrue('bar.mm' in results[0].items[1])
@@ -1683,10 +1685,10 @@
   def testFalsePositives(self):
     mock_input_api = MockInputApi()
     mock_input_api.files = [
-      MockFile('dir/java/src/foo.cc', ['return std::unique_ptr<T[]>(foo);']),
-      MockFile('dir/java/src/bar.mm', ['bar = std::unique_ptr<T[]>(foo)']),
-      MockFile('dir/java/src/file.cc', ['std::unique_ptr<T> p = Foo();']),
-      MockFile('dir/java/src/baz.cc', [
+      MockFile('dir/foo.cc', ['return std::unique_ptr<T[]>(foo);']),
+      MockFile('dir/bar.mm', ['bar = std::unique_ptr<T[]>(foo)']),
+      MockFile('dir/file.cc', ['std::unique_ptr<T> p = Foo();']),
+      MockFile('dir/baz.cc', [
         'std::unique_ptr<T> result = std::make_unique<T>();'
       ]),
     ]