aboutsummaryrefslogtreecommitdiff
path: root/setuptools/_distutils/tests/test_extension.py
diff options
context:
space:
mode:
authorDan Willemsen <dwillemsen@google.com>2022-03-25 17:22:05 -0700
committerDan Willemsen <dwillemsen@google.com>2022-03-25 17:27:50 -0700
commitadad21eb0615bb68c47628dcd4d638137c3d1a01 (patch)
tree690b5fb2994f47324dd4298e676335d4555ee267 /setuptools/_distutils/tests/test_extension.py
parent38928912f8393727122418ebb7b2b8b19f710b36 (diff)
downloadsetuptools-adad21eb0615bb68c47628dcd4d638137c3d1a01.tar.gz
Upgrade to setuptools 61.1.0
This fixes Python 3.10 compat, but does remove Python2 compat. Test: treehugger Change-Id: I8e19ad8dec6b34482bfbe996413d3f793ada276c
Diffstat (limited to 'setuptools/_distutils/tests/test_extension.py')
-rw-r--r--setuptools/_distutils/tests/test_extension.py71
1 files changed, 71 insertions, 0 deletions
diff --git a/setuptools/_distutils/tests/test_extension.py b/setuptools/_distutils/tests/test_extension.py
new file mode 100644
index 0000000..78a55da
--- /dev/null
+++ b/setuptools/_distutils/tests/test_extension.py
@@ -0,0 +1,71 @@
+"""Tests for distutils.extension."""
+import unittest
+import os
+import warnings
+
+from test.support import run_unittest
+from distutils.extension import read_setup_file, Extension
+
+from .py38compat import check_warnings
+
+class ExtensionTestCase(unittest.TestCase):
+
+ def test_read_setup_file(self):
+ # trying to read a Setup file
+ # (sample extracted from the PyGame project)
+ setup = os.path.join(os.path.dirname(__file__), 'Setup.sample')
+
+ exts = read_setup_file(setup)
+ names = [ext.name for ext in exts]
+ names.sort()
+
+ # here are the extensions read_setup_file should have created
+ # out of the file
+ wanted = ['_arraysurfarray', '_camera', '_numericsndarray',
+ '_numericsurfarray', 'base', 'bufferproxy', 'cdrom',
+ 'color', 'constants', 'display', 'draw', 'event',
+ 'fastevent', 'font', 'gfxdraw', 'image', 'imageext',
+ 'joystick', 'key', 'mask', 'mixer', 'mixer_music',
+ 'mouse', 'movie', 'overlay', 'pixelarray', 'pypm',
+ 'rect', 'rwobject', 'scrap', 'surface', 'surflock',
+ 'time', 'transform']
+
+ self.assertEqual(names, wanted)
+
+ def test_extension_init(self):
+ # the first argument, which is the name, must be a string
+ self.assertRaises(AssertionError, Extension, 1, [])
+ ext = Extension('name', [])
+ self.assertEqual(ext.name, 'name')
+
+ # the second argument, which is the list of files, must
+ # be a list of strings
+ self.assertRaises(AssertionError, Extension, 'name', 'file')
+ self.assertRaises(AssertionError, Extension, 'name', ['file', 1])
+ ext = Extension('name', ['file1', 'file2'])
+ self.assertEqual(ext.sources, ['file1', 'file2'])
+
+ # others arguments have defaults
+ for attr in ('include_dirs', 'define_macros', 'undef_macros',
+ 'library_dirs', 'libraries', 'runtime_library_dirs',
+ 'extra_objects', 'extra_compile_args', 'extra_link_args',
+ 'export_symbols', 'swig_opts', 'depends'):
+ self.assertEqual(getattr(ext, attr), [])
+
+ self.assertEqual(ext.language, None)
+ self.assertEqual(ext.optional, None)
+
+ # if there are unknown keyword options, warn about them
+ with check_warnings() as w:
+ warnings.simplefilter('always')
+ ext = Extension('name', ['file1', 'file2'], chic=True)
+
+ self.assertEqual(len(w.warnings), 1)
+ self.assertEqual(str(w.warnings[0].message),
+ "Unknown Extension options: 'chic'")
+
+def test_suite():
+ return unittest.TestLoader().loadTestsFromTestCase(ExtensionTestCase)
+
+if __name__ == "__main__":
+ run_unittest(test_suite())