| Index: mojo/PRESUBMIT_test.py
|
| diff --git a/mojo/PRESUBMIT_test.py b/mojo/PRESUBMIT_test.py
|
| index 4c677730c33b9ef7b6bdc7d17b55d552526f2064..5a95d0e86f9c7148d534382d097a1971951a96bb 100755
|
| --- a/mojo/PRESUBMIT_test.py
|
| +++ b/mojo/PRESUBMIT_test.py
|
| @@ -17,6 +17,11 @@ _SDK_BUILD_FILE = 'mojo/public/some/path/BUILD.gn'
|
| _EDK_BUILD_FILE = 'mojo/edk/some/path/BUILD.gn'
|
| _IRRELEVANT_BUILD_FILE = 'mojo/foo/some/path/BUILD.gn'
|
|
|
| +_PACKAGE_BUILDFILES = {
|
| + 'SDK' : _SDK_BUILD_FILE,
|
| + 'EDK' : _EDK_BUILD_FILE,
|
| +}
|
| +
|
| class AbsoluteReferencesInBuildFilesTest(unittest.TestCase):
|
| """Tests the checking for illegal absolute paths within SDK/EDK buildfiles.
|
| """
|
| @@ -71,35 +76,50 @@ class AbsoluteReferencesInBuildFilesTest(unittest.TestCase):
|
| line_num,
|
| referenced_path)
|
|
|
| - def testAbsoluteSDKReferenceInSDKBuildFile(self):
|
| - """Tests that an absolute SDK path within an SDK buildfile is flagged."""
|
| + def _testAbsoluteSDKReferenceInPackage(self, package):
|
| + """Tests that an absolute SDK path within |package| is flagged."""
|
| + buildfile = _PACKAGE_BUILDFILES[package]
|
| mock_input_api = self.inputApiContainingFileWithPaths(
|
| - _SDK_BUILD_FILE,
|
| + buildfile,
|
| [ self.sdk_relative_path, self.sdk_absolute_path ])
|
| warnings = PRESUBMIT._BuildFileChecks(mock_input_api, MockOutputApi())
|
|
|
| self.assertEqual(1, len(warnings))
|
| self.checkSDKAbsolutePathWarningWithSingleItem(warnings[0],
|
| - 'SDK',
|
| - _SDK_BUILD_FILE,
|
| + package,
|
| + buildfile,
|
| 2,
|
| self.sdk_absolute_path)
|
|
|
| - def testExternalReferenceInSDKBuildFile(self):
|
| - """Tests that an illegal external path in an SDK buildfile is flagged."""
|
| + def _testExternalReferenceInPackage(self, package):
|
| + """Tests that an illegal external path within |package| is flagged."""
|
| + buildfile = _PACKAGE_BUILDFILES[package]
|
| mock_input_api = self.inputApiContainingFileWithPaths(
|
| - _SDK_BUILD_FILE,
|
| + buildfile,
|
| [ self.non_whitelisted_external_path, self.whitelisted_external_path ])
|
| warnings = PRESUBMIT._BuildFileChecks(mock_input_api, MockOutputApi())
|
|
|
| + if package == 'EDK':
|
| + # All external paths are allowed in the EDK.
|
| + self.assertEqual(0, len(warnings))
|
| + return
|
| +
|
| self.assertEqual(1, len(warnings))
|
| expected_message = PRESUBMIT._ILLEGAL_EXTERNAL_PATH_WARNING_MESSAGE
|
| self.checkWarningWithSingleItem(warnings[0],
|
| expected_message,
|
| - _SDK_BUILD_FILE,
|
| + buildfile,
|
| 1,
|
| self.non_whitelisted_external_path)
|
|
|
| + def testAbsoluteSDKReferenceInSDKBuildFile(self):
|
| + """Tests that an absolute SDK path within an SDK buildfile is flagged."""
|
| + self._testAbsoluteSDKReferenceInPackage('SDK')
|
| +
|
| + def testExternalReferenceInSDKBuildFile(self):
|
| + """Tests that an illegal external path in an SDK buildfile is flagged."""
|
| + self._testExternalReferenceInPackage('SDK')
|
| +
|
| def testAbsoluteEDKReferenceInSDKBuildFile(self):
|
| """Tests that an absolute EDK path in an SDK buildfile is flagged."""
|
| mock_input_api = self.inputApiContainingFileWithPaths(
|
| @@ -117,16 +137,7 @@ class AbsoluteReferencesInBuildFilesTest(unittest.TestCase):
|
|
|
| def testAbsoluteSDKReferenceInEDKBuildFile(self):
|
| """Tests that an absolute SDK path within an EDK buildfile is flagged."""
|
| - mock_input_api = self.inputApiContainingFileWithPaths(
|
| - _EDK_BUILD_FILE,
|
| - [ self.sdk_relative_path, self.sdk_absolute_path ])
|
| - warnings = PRESUBMIT._BuildFileChecks(mock_input_api, MockOutputApi())
|
| - self.assertEqual(1, len(warnings))
|
| - self.checkSDKAbsolutePathWarningWithSingleItem(warnings[0],
|
| - 'EDK',
|
| - _EDK_BUILD_FILE,
|
| - 2,
|
| - self.sdk_absolute_path)
|
| + self._testAbsoluteSDKReferenceInPackage('EDK')
|
|
|
| def testAbsoluteEDKReferenceInEDKBuildFile(self):
|
| """Tests that an absolute EDK path in an EDK buildfile is flagged."""
|
| @@ -145,11 +156,7 @@ class AbsoluteReferencesInBuildFilesTest(unittest.TestCase):
|
|
|
| def testExternalReferenceInEDKBuildFile(self):
|
| """Tests that an external path in an EDK buildfile is not flagged."""
|
| - mock_input_api = self.inputApiContainingFileWithPaths(
|
| - _EDK_BUILD_FILE,
|
| - [ self.non_whitelisted_external_path, self.whitelisted_external_path ])
|
| - warnings = PRESUBMIT._BuildFileChecks(mock_input_api, MockOutputApi())
|
| - self.assertEqual(0, len(warnings))
|
| + self._testExternalReferenceInPackage('EDK')
|
|
|
| def testIrrelevantBuildFile(self):
|
| """Tests that nothing is flagged in a non SDK/EDK buildfile."""
|
| @@ -191,15 +198,42 @@ class SourceSetTypesInBuildFilesTest(unittest.TestCase):
|
| build_file, line_num)
|
| self.assertEqual(expected_item, warning.items[0])
|
|
|
| - def testNakedSourceSetInSDKBuildFile(self):
|
| - """Tests that a source_set within an SDK buildfile is flagged."""
|
| + def _testNakedSourceSetInPackage(self, package):
|
| + """Tests that a source_set within |package| is flagged."""
|
| + buildfile = _PACKAGE_BUILDFILES[package]
|
| + naked_source_set = 'source_set('
|
| + correct_source_set = 'mojo_sdk_source_set('
|
| + if package == 'EDK':
|
| + correct_source_set = 'mojo_edk_source_set('
|
| mock_input_api = self.inputApiContainingFileWithSourceSets(
|
| - _SDK_BUILD_FILE,
|
| - [ 'mojo_sdk_source_set(', 'source_set(' ])
|
| + buildfile,
|
| + [ correct_source_set, naked_source_set ])
|
| + warnings = PRESUBMIT._BuildFileChecks(mock_input_api, MockOutputApi())
|
| +
|
| + self.assertEqual(1, len(warnings))
|
| + self.checkWarningWithSingleItem(warnings[0], package, buildfile, 2)
|
| +
|
| + def _testWrongTypeOfWrapperSourceSetInPackage(self, package):
|
| + """Tests that the wrong type of wrapper source_set in |package| is flagged
|
| + (e.g., mojo_edk_source_set within the SDK)."""
|
| + buildfile = _PACKAGE_BUILDFILES[package]
|
| + mock_input_api = self.inputApiContainingFileWithSourceSets(
|
| + buildfile,
|
| + [ 'mojo_sdk_source_set(', 'mojo_edk_source_set(' ])
|
| warnings = PRESUBMIT._BuildFileChecks(mock_input_api, MockOutputApi())
|
|
|
| self.assertEqual(1, len(warnings))
|
| - self.checkWarningWithSingleItem(warnings[0], 'SDK', _SDK_BUILD_FILE, 2)
|
| + warning_line = 2
|
| + if package == 'EDK':
|
| + warning_line = 1
|
| + self.checkWarningWithSingleItem(warnings[0],
|
| + package,
|
| + buildfile,
|
| + warning_line)
|
| +
|
| + def testNakedSourceSetInSDKBuildFile(self):
|
| + """Tests that a source_set within the SDK is flagged."""
|
| + self._testNakedSourceSetInPackage('SDK')
|
|
|
| def testPythonSourceSetInSDKBuildFile(self):
|
| """Tests that a python_binary_source_set within an SDK buildfile is
|
| @@ -213,33 +247,15 @@ class SourceSetTypesInBuildFilesTest(unittest.TestCase):
|
|
|
| def testEDKSourceSetInSDKBuildFile(self):
|
| """Tests that a mojo_edk_source_set within an SDK buildfile is flagged."""
|
| - mock_input_api = self.inputApiContainingFileWithSourceSets(
|
| - _SDK_BUILD_FILE,
|
| - [ 'mojo_sdk_source_set(', 'mojo_edk_source_set(' ])
|
| - warnings = PRESUBMIT._BuildFileChecks(mock_input_api, MockOutputApi())
|
| -
|
| - self.assertEqual(1, len(warnings))
|
| - self.checkWarningWithSingleItem(warnings[0], 'SDK', _SDK_BUILD_FILE, 2)
|
| + self._testWrongTypeOfWrapperSourceSetInPackage('SDK')
|
|
|
| def testNakedSourceSetInEDKBuildFile(self):
|
| - """Tests that a source_set within an EDK buildfile is flagged."""
|
| - mock_input_api = self.inputApiContainingFileWithSourceSets(
|
| - _EDK_BUILD_FILE,
|
| - [ 'source_set(', 'mojo_edk_source_set(' ])
|
| - warnings = PRESUBMIT._BuildFileChecks(mock_input_api, MockOutputApi())
|
| -
|
| - self.assertEqual(1, len(warnings))
|
| - self.checkWarningWithSingleItem(warnings[0], 'EDK', _EDK_BUILD_FILE, 1)
|
| + """Tests that a source_set within the EDK is flagged."""
|
| + self._testNakedSourceSetInPackage('EDK')
|
|
|
| def testSDKSourceSetInEDKBuildFile(self):
|
| """Tests that a mojo_sdk_source_set within an EDK buildfile is flagged."""
|
| - mock_input_api = self.inputApiContainingFileWithSourceSets(
|
| - _EDK_BUILD_FILE,
|
| - [ 'mojo_sdk_source_set(', 'mojo_edk_source_set(' ])
|
| - warnings = PRESUBMIT._BuildFileChecks(mock_input_api, MockOutputApi())
|
| -
|
| - self.assertEqual(1, len(warnings))
|
| - self.checkWarningWithSingleItem(warnings[0], 'EDK', _EDK_BUILD_FILE, 1)
|
| + self._testWrongTypeOfWrapperSourceSetInPackage('EDK')
|
|
|
| def testIrrelevantBuildFile(self):
|
| """Tests that a source_set in a non-SDK/EDK buildfile isn't flagged."""
|
|
|