commit: 70a41bd4404cccc502a3eacf6335c8d2c9503129 Author: Michał Górny <mgorny <AT> gentoo <DOT> org> AuthorDate: Fri Jan 30 22:53:50 2015 +0000 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org> CommitDate: Sun Feb 1 09:06:41 2015 +0000 URL: http://sources.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=70a41bd4
test_compile_modules: skip files that require newer Python version Support skipping Python modules and scripts that require newer Python version than currently used during compile tests. Add a metadata db that can be used to store additional information about Python files, and store the required language version there. --- pym/portage/tests/lint/metadata.py | 11 +++++++++++ pym/portage/tests/lint/test_compile_modules.py | 13 +++++++++++++ 2 files changed, 24 insertions(+) diff --git a/pym/portage/tests/lint/metadata.py b/pym/portage/tests/lint/metadata.py new file mode 100644 index 0000000..e3f90cb --- /dev/null +++ b/pym/portage/tests/lint/metadata.py @@ -0,0 +1,11 @@ +# Copyright 2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +module_metadata = { +} + +script_metadata = { + 'socks5-server.py': { + 'required_python': '3.3', + }, +} diff --git a/pym/portage/tests/lint/test_compile_modules.py b/pym/portage/tests/lint/test_compile_modules.py index 4826cad..51eb8cd 100644 --- a/pym/portage/tests/lint/test_compile_modules.py +++ b/pym/portage/tests/lint/test_compile_modules.py @@ -4,9 +4,11 @@ import errno import itertools import stat +import sys from portage.const import PORTAGE_BIN_PATH, PORTAGE_PYM_PATH, PORTAGE_PYM_PACKAGES from portage.tests import TestCase +from portage.tests.lint.metadata import module_metadata, script_metadata from portage import os from portage import _encodings from portage import _unicode_decode, _unicode_encode @@ -30,6 +32,17 @@ class CompileModulesTestCase(TestCase): st = os.lstat(x) if not stat.S_ISREG(st.st_mode): continue + + bin_path = os.path.relpath(x, PORTAGE_BIN_PATH) + mod_path = os.path.relpath(x, PORTAGE_PYM_PATH) + + meta = module_metadata.get(mod_path) or script_metadata.get(bin_path) + if meta: + req_py = tuple(int(x) for x + in meta.get('required_python', '0.0').split('.')) + if sys.version_info < req_py: + continue + do_compile = False if x[-3:] == '.py': do_compile = True