Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
3ba407b3
Commit
3ba407b3
authored
Nov 17, 2016
by
Xavier de Gaye
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Issue 26931: Skip the test_distutils tests using a compiler executable
that is not found
parent
79e1cfa6
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
46 additions
and
25 deletions
+46
-25
Lib/distutils/tests/test_build_clib.py
Lib/distutils/tests/test_build_clib.py
+6
-14
Lib/distutils/tests/test_build_ext.py
Lib/distutils/tests/test_build_ext.py
+6
-0
Lib/distutils/tests/test_config_cmd.py
Lib/distutils/tests/test_config_cmd.py
+4
-1
Lib/distutils/tests/test_install.py
Lib/distutils/tests/test_install.py
+4
-0
Lib/distutils/tests/test_sysconfig.py
Lib/distutils/tests/test_sysconfig.py
+0
-9
Lib/test/support/__init__.py
Lib/test/support/__init__.py
+26
-1
No files found.
Lib/distutils/tests/test_build_clib.py
View file @
3ba407b3
...
...
@@ -3,7 +3,7 @@ import unittest
import
os
import
sys
from
test.support
import
run_unittest
from
test.support
import
run_unittest
,
missing_compiler_executable
from
distutils.command.build_clib
import
build_clib
from
distutils.errors
import
DistutilsSetupError
...
...
@@ -116,19 +116,11 @@ class BuildCLibTestCase(support.TempdirManager,
cmd
.
build_temp
=
build_temp
cmd
.
build_clib
=
build_temp
# before we run the command, we want to make sure
# all commands are present on the system
# by creating a compiler and checking its executables
from
distutils.ccompiler
import
new_compiler
from
distutils.sysconfig
import
customize_compiler
compiler
=
new_compiler
()
customize_compiler
(
compiler
)
for
ccmd
in
compiler
.
executables
.
values
():
if
ccmd
is
None
:
continue
if
find_executable
(
ccmd
[
0
])
is
None
:
self
.
skipTest
(
'The %r command is not found'
%
ccmd
[
0
])
# Before we run the command, we want to make sure
# all commands are present on the system.
ccmd
=
missing_compiler_executable
()
if
ccmd
is
not
None
:
self
.
skipTest
(
'The %r command is not found'
%
ccmd
)
# this should work
cmd
.
run
()
...
...
Lib/distutils/tests/test_build_ext.py
View file @
3ba407b3
...
...
@@ -41,6 +41,9 @@ class BuildExtTestCase(TempdirManager,
return
build_ext
(
*
args
,
**
kwargs
)
def
test_build_ext
(
self
):
cmd
=
support
.
missing_compiler_executable
()
if
cmd
is
not
None
:
self
.
skipTest
(
'The %r command is not found'
%
cmd
)
global
ALREADY_TESTED
copy_xxmodule_c
(
self
.
tmp_dir
)
xx_c
=
os
.
path
.
join
(
self
.
tmp_dir
,
'xxmodule.c'
)
...
...
@@ -295,6 +298,9 @@ class BuildExtTestCase(TempdirManager,
self
.
assertEqual
(
cmd
.
compiler
,
'unix'
)
def
test_get_outputs
(
self
):
cmd
=
support
.
missing_compiler_executable
()
if
cmd
is
not
None
:
self
.
skipTest
(
'The %r command is not found'
%
cmd
)
tmp_dir
=
self
.
mkdtemp
()
c_file
=
os
.
path
.
join
(
tmp_dir
,
'foo.c'
)
self
.
write_file
(
c_file
,
'void PyInit_foo(void) {}
\
n
'
)
...
...
Lib/distutils/tests/test_config_cmd.py
View file @
3ba407b3
...
...
@@ -2,7 +2,7 @@
import
unittest
import
os
import
sys
from
test.support
import
run_unittest
from
test.support
import
run_unittest
,
missing_compiler_executable
from
distutils.command.config
import
dump_file
,
config
from
distutils.tests
import
support
...
...
@@ -39,6 +39,9 @@ class ConfigTestCase(support.LoggingSilencer,
@
unittest
.
skipIf
(
sys
.
platform
==
'win32'
,
"can't test on Windows"
)
def
test_search_cpp
(
self
):
cmd
=
missing_compiler_executable
([
'preprocessor'
])
if
cmd
is
not
None
:
self
.
skipTest
(
'The %r command is not found'
%
cmd
)
pkg_dir
,
dist
=
self
.
create_dist
()
cmd
=
config
(
dist
)
...
...
Lib/distutils/tests/test_install.py
View file @
3ba407b3
...
...
@@ -17,6 +17,7 @@ from distutils.errors import DistutilsOptionError
from
distutils.extension
import
Extension
from
distutils.tests
import
support
from
test
import
support
as
test_support
def
_make_ext_name
(
modname
):
...
...
@@ -196,6 +197,9 @@ class InstallTestCase(support.TempdirManager,
self
.
assertEqual
(
found
,
expected
)
def
test_record_extensions
(
self
):
cmd
=
test_support
.
missing_compiler_executable
()
if
cmd
is
not
None
:
self
.
skipTest
(
'The %r command is not found'
%
cmd
)
install_dir
=
self
.
mkdtemp
()
project_dir
,
dist
=
self
.
create_dist
(
ext_modules
=
[
Extension
(
'xx'
,
[
'xxmodule.c'
])])
...
...
Lib/distutils/tests/test_sysconfig.py
View file @
3ba407b3
...
...
@@ -39,15 +39,6 @@ class SysconfigTestCase(support.EnvironGuard, unittest.TestCase):
self
.
assertNotEqual
(
sysconfig
.
get_python_lib
(),
sysconfig
.
get_python_lib
(
prefix
=
TESTFN
))
def
test_get_python_inc
(
self
):
inc_dir
=
sysconfig
.
get_python_inc
()
# This is not much of a test. We make sure Python.h exists
# in the directory returned by get_python_inc() but we don't know
# it is the correct file.
self
.
assertTrue
(
os
.
path
.
isdir
(
inc_dir
),
inc_dir
)
python_h
=
os
.
path
.
join
(
inc_dir
,
"Python.h"
)
self
.
assertTrue
(
os
.
path
.
isfile
(
python_h
),
python_h
)
def
test_get_config_vars
(
self
):
cvars
=
sysconfig
.
get_config_vars
()
self
.
assertIsInstance
(
cvars
,
dict
)
...
...
Lib/test/support/__init__.py
View file @
3ba407b3
...
...
@@ -105,7 +105,7 @@ __all__ = [
"check_warnings"
,
"check_no_resource_warning"
,
"EnvironmentVarGuard"
,
"run_with_locale"
,
"swap_item"
,
"swap_attr"
,
"Matcher"
,
"set_memlimit"
,
"SuppressCrashReport"
,
"sortdict"
,
"run_with_tz"
,
"PGO"
,
"run_with_tz"
,
"PGO"
,
"missing_compiler_executable"
,
]
class
Error
(
Exception
):
...
...
@@ -2491,3 +2491,28 @@ def check_free_after_iterating(test, iter, cls, args=()):
# The sequence should be deallocated just after the end of iterating
gc_collect
()
test
.
assertTrue
(
done
)
def
missing_compiler_executable
(
cmd_names
=
[]):
"""Check if the compiler components used to build the interpreter exist.
Check for the existence of the compiler executables whose names are listed
in 'cmd_names' or all the compiler executables when 'cmd_names' is empty
and return the first missing executable or None when none is found
missing.
"""
from
distutils
import
ccompiler
,
sysconfig
,
spawn
compiler
=
ccompiler
.
new_compiler
()
sysconfig
.
customize_compiler
(
compiler
)
for
name
in
compiler
.
executables
:
if
cmd_names
and
name
not
in
cmd_names
:
continue
cmd
=
getattr
(
compiler
,
name
)
if
cmd_names
:
assert
cmd
is
not
None
,
\
"the '%s' executable is not configured"
%
name
elif
cmd
is
None
:
continue
if
spawn
.
find_executable
(
cmd
[
0
])
is
None
:
return
cmd
[
0
]
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment