| Index: third_party/recipe_engine/lint_test.py
|
| diff --git a/third_party/recipe_engine/lint_test.py b/third_party/recipe_engine/lint_test.py
|
| deleted file mode 100755
|
| index 247d685c36eb0af5f8698e335f8a68dc40d9d473..0000000000000000000000000000000000000000
|
| --- a/third_party/recipe_engine/lint_test.py
|
| +++ /dev/null
|
| @@ -1,70 +0,0 @@
|
| -#!/usr/bin/env python
|
| -# Copyright 2015 The Chromium Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -"""Tests that recipes are on their best behavior.
|
| -
|
| -Checks that recipes only import modules from a whitelist. Imports are
|
| -generally not safe in recipes if they depend on the platform, since
|
| -e.g. you can run a recipe simulation for a Windows recipe on Linux.
|
| -"""
|
| -
|
| -# TODO(luqui): Implement lint for recipe modules also.
|
| -
|
| -import re
|
| -import os
|
| -import sys
|
| -import types
|
| -
|
| -
|
| -MODULES_WHITELIST = [
|
| - r'base64',
|
| - r'collections',
|
| - r'contextlib',
|
| - r'datetime',
|
| - r'json',
|
| - r'math',
|
| - r're',
|
| - r'urlparse',
|
| -]
|
| -
|
| -
|
| -class ImportViolationError(Exception):
|
| - pass
|
| -
|
| -
|
| -class TestFailure(Exception):
|
| - pass
|
| -
|
| -
|
| -def ImportsTest(recipe_path, recipe_name, whitelist, universe):
|
| - """Tests that recipe_name only uses allowed imports.
|
| -
|
| - Returns a list of errors, or an empty list if there are no errors (duh).
|
| - """
|
| -
|
| - recipe = universe.load_recipe(recipe_name)
|
| - for attr in dir(recipe):
|
| - val = getattr(recipe, attr)
|
| - if isinstance(val, types.ModuleType):
|
| - module_name = val.__name__
|
| - for pattern in whitelist:
|
| - if pattern.match(val.__name__):
|
| - break
|
| - else:
|
| - yield ('In %s:\n'
|
| - ' Non-whitelisted import of %s' %
|
| - (recipe_path, module_name))
|
| -
|
| -
|
| -def main(universe, whitelist=[]):
|
| - whitelist = map(re.compile, MODULES_WHITELIST + whitelist)
|
| -
|
| - errors = []
|
| - for recipe_path, recipe_name in universe.loop_over_recipes():
|
| - errors.extend(ImportsTest(recipe_path, recipe_name, whitelist, universe))
|
| -
|
| - if errors:
|
| - raise TestFailure('\n'.join(map(str, errors)))
|
| -
|
|
|