# Copyright 2017 The LibYuv Project Authors. All rights reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS. All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.

import os


def _RunPythonTests(input_api, output_api):
  def join(*args):
    return input_api.os_path.join(input_api.PresubmitLocalPath(), *args)

  test_directories = [
      root for root, _, files in os.walk(join('tools_libyuv'))
      if any(f.endswith('_test.py') for f in files)
  ]

  tests = []
  for directory in test_directories:
    tests.extend(
      input_api.canned_checks.GetUnitTestsInDirectory(
          input_api,
          output_api,
          directory,
          whitelist=[r'.+_test\.py$']))
  return input_api.RunTests(tests, parallel=True)


def _CommonChecks(input_api, output_api):
  """Checks common to both upload and commit."""
  results = []
  results.extend(input_api.canned_checks.RunPylint(input_api, output_api,
      black_list=(r'^base[\\\/].*\.py$',
                  r'^build[\\\/].*\.py$',
                  r'^buildtools[\\\/].*\.py$',
                  r'^ios[\\\/].*\.py$',
                  r'^out.*[\\\/].*\.py$',
                  r'^testing[\\\/].*\.py$',
                  r'^third_party[\\\/].*\.py$',
                  r'^tools[\\\/].*\.py$',
                  # TODO(kjellander): should arguably be checked.
                  r'^tools_libyuv[\\\/]valgrind[\\\/].*\.py$',
                  r'^xcodebuild.*[\\\/].*\.py$',),
      disabled_warnings=['F0401',  # Failed to import x
                         'E0611',  # No package y in x
                         'W0232',  # Class has no __init__ method
                        ],
      pylintrc='pylintrc'))
  results.extend(_RunPythonTests(input_api, output_api))
  return results


def CheckChangeOnUpload(input_api, output_api):
  results = []
  results.extend(_CommonChecks(input_api, output_api))
  results.extend(
      input_api.canned_checks.CheckGNFormatted(input_api, output_api))
  return results


def CheckChangeOnCommit(input_api, output_api):
  results = []
  results.extend(_CommonChecks(input_api, output_api))
  results.extend(input_api.canned_checks.CheckOwners(input_api, output_api))
  results.extend(input_api.canned_checks.CheckChangeWasUploaded(
      input_api, output_api))
  results.extend(input_api.canned_checks.CheckChangeHasDescription(
      input_api, output_api))
  return results

@@ -875,13 +875,13 @@
     
-white
+allow
 list
@@ -1143,18 +1143,21 @@
     
-black_list
+files_to_skip
 =(r'
@@ -1187,32 +1187,35 @@
                 
+ 
+  
 r'%5Ebuild%5B%5C%5C%5C/%5D.*
@@ -1214,32 +1214,35 @@
 %5B%5C%5C%5C/%5D.*%5C.py$',%0A
+   
                 
@@ -1290,16 +1290,19 @@
         
+ 
+  
 r'%5Eios%5B%5C
@@ -1307,32 +1307,35 @@
 %5B%5C%5C%5C/%5D.*%5C.py$',%0A
+   
                 
@@ -1374,24 +1374,27 @@
             
+ 
+  
 r'%5Etesting%5B%5C
@@ -1399,32 +1399,35 @@
 %5B%5C%5C%5C/%5D.*%5C.py$',%0A
+   
                 
@@ -1468,32 +1468,35 @@
                 
+ 
+  
 r'%5Etools%5B%5C%5C%5C/%5D.*
@@ -1495,32 +1495,35 @@
 %5B%5C%5C%5C/%5D.*%5C.py$',%0A
+   
                 
@@ -1582,32 +1582,35 @@
                 
+   
 r'%5Etools_libyuv%5B
@@ -1630,32 +1630,35 @@
 %5B%5C%5C%5C/%5D.*%5C.py$',%0A
+   
                 

Fix PRESUBMIT.py.