зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1313306 - Add a placeholder python configure linter. r=chmanchester
--HG-- extra : rebase_source : d7b17160bbf61e9aca2edfb2874a87182140c144
This commit is contained in:
Родитель
9be13f02e3
Коммит
e9aa83949b
|
@ -37,6 +37,7 @@ PYTHON_UNIT_TESTS += [
|
||||||
'mozbuild/mozbuild/test/backend/test_recursivemake.py',
|
'mozbuild/mozbuild/test/backend/test_recursivemake.py',
|
||||||
'mozbuild/mozbuild/test/backend/test_visualstudio.py',
|
'mozbuild/mozbuild/test/backend/test_visualstudio.py',
|
||||||
'mozbuild/mozbuild/test/compilation/test_warnings.py',
|
'mozbuild/mozbuild/test/compilation/test_warnings.py',
|
||||||
|
'mozbuild/mozbuild/test/configure/lint.py',
|
||||||
'mozbuild/mozbuild/test/configure/test_checks_configure.py',
|
'mozbuild/mozbuild/test/configure/test_checks_configure.py',
|
||||||
'mozbuild/mozbuild/test/configure/test_compile_checks.py',
|
'mozbuild/mozbuild/test/configure/test_compile_checks.py',
|
||||||
'mozbuild/mozbuild/test/configure/test_configure.py',
|
'mozbuild/mozbuild/test/configure/test_configure.py',
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
|
from __future__ import absolute_import, print_function, unicode_literals
|
||||||
|
|
||||||
|
from StringIO import StringIO
|
||||||
|
from . import ConfigureSandbox
|
||||||
|
|
||||||
|
|
||||||
|
class LintSandbox(ConfigureSandbox):
|
||||||
|
def __init__(self, environ=None, argv=None, stdout=None, stderr=None):
|
||||||
|
out = StringIO()
|
||||||
|
stdout = stdout or out
|
||||||
|
stderr = stderr or out
|
||||||
|
environ = environ or {}
|
||||||
|
argv = argv or []
|
||||||
|
super(LintSandbox, self).__init__({}, environ=environ, argv=argv,
|
||||||
|
stdout=stdout, stderr=stderr)
|
||||||
|
|
||||||
|
def run(self, path=None):
|
||||||
|
if path:
|
||||||
|
self.include_file(path)
|
|
@ -0,0 +1,65 @@
|
||||||
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
|
from __future__ import absolute_import, print_function, unicode_literals
|
||||||
|
|
||||||
|
import os
|
||||||
|
import unittest
|
||||||
|
from StringIO import StringIO
|
||||||
|
from mozunit import main
|
||||||
|
from buildconfig import (
|
||||||
|
topobjdir,
|
||||||
|
topsrcdir,
|
||||||
|
)
|
||||||
|
|
||||||
|
from mozbuild.configure.lint import LintSandbox
|
||||||
|
|
||||||
|
|
||||||
|
test_path = os.path.abspath(__file__)
|
||||||
|
|
||||||
|
|
||||||
|
class LintMeta(type):
|
||||||
|
def __new__(mcs, name, bases, attrs):
|
||||||
|
def create_test(project, func):
|
||||||
|
def test(self):
|
||||||
|
return func(self, project)
|
||||||
|
return test
|
||||||
|
|
||||||
|
for project in (
|
||||||
|
'b2g',
|
||||||
|
'b2g/dev',
|
||||||
|
'b2g/graphene',
|
||||||
|
'browser',
|
||||||
|
'embedding/ios',
|
||||||
|
'extensions',
|
||||||
|
'js',
|
||||||
|
'mobile/android',
|
||||||
|
):
|
||||||
|
attrs['test_%s' % project.replace('/', '_')] = create_test(
|
||||||
|
project, attrs['lint'])
|
||||||
|
|
||||||
|
return type.__new__(mcs, name, bases, attrs)
|
||||||
|
|
||||||
|
|
||||||
|
class Lint(unittest.TestCase):
|
||||||
|
__metaclass__ = LintMeta
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self._curdir = os.getcwd()
|
||||||
|
os.chdir(topobjdir)
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
os.chdir(self._curdir)
|
||||||
|
|
||||||
|
def lint(self, project):
|
||||||
|
sandbox = LintSandbox({
|
||||||
|
'OLD_CONFIGURE': os.path.join(topsrcdir, 'old-configure'),
|
||||||
|
'MOZCONFIG': os.path.join(os.path.dirname(test_path), 'data',
|
||||||
|
'empty_mozconfig'),
|
||||||
|
}, ['--enable-project=%s' % project])
|
||||||
|
sandbox.run(os.path.join(topsrcdir, 'moz.configure'))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
Загрузка…
Ссылка в новой задаче