Download lib/python3.9/site-packages/Cython/Compiler/Tests/TestCmdLine.py from camenduru/slahmr-test: direct link, hf CLI and curl.
- Browser
- Download file 6.66 kB
-
https://huggingface.co/camenduru/slahmr-test/resolve/main/lib/python3.9/site-packages/Cython/Compiler/Tests/TestCmdLine.py
- Command line
-
hf download hf://camenduru/slahmr-test/lib/python3.9/site-packages/Cython/Compiler/Tests/TestCmdLine.py
-
curl -L -o TestCmdLine.py https://huggingface.co/camenduru/slahmr-test/resolve/main/lib/python3.9/site-packages/Cython/Compiler/Tests/TestCmdLine.py
6.66 kB
| import sys | |
| import re | |
| from unittest import TestCase | |
| try: | |
| from StringIO import StringIO | |
| except ImportError: | |
| from io import StringIO # doesn't accept 'str' in Py2 | |
| from .. import Options | |
| from ..CmdLine import parse_command_line | |
| def check_global_options(expected_options, white_list=[]): | |
| """ | |
| returns error message of "" if check Ok | |
| """ | |
| no_value = object() | |
| for name, orig_value in expected_options.items(): | |
| if name not in white_list: | |
| if getattr(Options, name, no_value) != orig_value: | |
| return "error in option " + name | |
| return "" | |
| class CmdLineParserTest(TestCase): | |
| def setUp(self): | |
| backup = {} | |
| for name, value in vars(Options).items(): | |
| backup[name] = value | |
| self._options_backup = backup | |
| def tearDown(self): | |
| no_value = object() | |
| for name, orig_value in self._options_backup.items(): | |
| if getattr(Options, name, no_value) != orig_value: | |
| setattr(Options, name, orig_value) | |
| def check_default_global_options(self, white_list=[]): | |
| self.assertEqual(check_global_options(self._options_backup, white_list), "") | |
| def check_default_options(self, options, white_list=[]): | |
| from ..Main import CompilationOptions, default_options | |
| default_options = CompilationOptions(default_options) | |
| no_value = object() | |
| for name in default_options.__dict__.keys(): | |
| if name not in white_list: | |
| self.assertEqual(getattr(options, name, no_value), getattr(default_options, name), msg="error in option " + name) | |
| def test_short_options(self): | |
| options, sources = parse_command_line([ | |
| '-V', '-l', '-+', '-t', '-v', '-v', '-v', '-p', '-D', '-a', '-3', | |
| ]) | |
| self.assertFalse(sources) | |
| self.assertTrue(options.show_version) | |
| self.assertTrue(options.use_listing_file) | |
| self.assertTrue(options.cplus) | |
| self.assertTrue(options.timestamps) | |
| self.assertTrue(options.verbose >= 3) | |
| self.assertTrue(Options.embed_pos_in_docstring) | |
| self.assertFalse(Options.docstrings) | |
| self.assertTrue(Options.annotate) | |
| self.assertEqual(options.language_level, 3) | |
| options, sources = parse_command_line([ | |
| '-f', '-2', 'source.pyx', | |
| ]) | |
| self.assertTrue(sources) | |
| self.assertTrue(len(sources) == 1) | |
| self.assertFalse(options.timestamps) | |
| self.assertEqual(options.language_level, 2) | |
| def test_long_options(self): | |
| options, sources = parse_command_line([ | |
| '--version', '--create-listing', '--cplus', '--embed', '--timestamps', | |
| '--verbose', '--verbose', '--verbose', | |
| '--embed-positions', '--no-docstrings', '--annotate', '--lenient', | |
| ]) | |
| self.assertFalse(sources) | |
| self.assertTrue(options.show_version) | |
| self.assertTrue(options.use_listing_file) | |
| self.assertTrue(options.cplus) | |
| self.assertEqual(Options.embed, 'main') | |
| self.assertTrue(options.timestamps) | |
| self.assertTrue(options.verbose >= 3) | |
| self.assertTrue(Options.embed_pos_in_docstring) | |
| self.assertFalse(Options.docstrings) | |
| self.assertTrue(Options.annotate) | |
| self.assertFalse(Options.error_on_unknown_names) | |
| self.assertFalse(Options.error_on_uninitialized) | |
| options, sources = parse_command_line([ | |
| '--force', 'source.pyx', | |
| ]) | |
| self.assertTrue(sources) | |
| self.assertTrue(len(sources) == 1) | |
| self.assertFalse(options.timestamps) | |
| def test_options_with_values(self): | |
| options, sources = parse_command_line([ | |
| '--embed=huhu', | |
| '-I/test/include/dir1', '--include-dir=/test/include/dir2', | |
| '--include-dir', '/test/include/dir3', | |
| '--working=/work/dir', | |
| 'source.pyx', | |
| '--output-file=/output/dir', | |
| '--pre-import=/pre/import', | |
| '--cleanup=3', | |
| '--annotate-coverage=cov.xml', | |
| '--gdb-outdir=/gdb/outdir', | |
| '--directive=wraparound=false', | |
| ]) | |
| self.assertEqual(sources, ['source.pyx']) | |
| self.assertEqual(Options.embed, 'huhu') | |
| self.assertEqual(options.include_path, ['/test/include/dir1', '/test/include/dir2', '/test/include/dir3']) | |
| self.assertEqual(options.working_path, '/work/dir') | |
| self.assertEqual(options.output_file, '/output/dir') | |
| self.assertEqual(Options.pre_import, '/pre/import') | |
| self.assertEqual(Options.generate_cleanup_code, 3) | |
| self.assertTrue(Options.annotate) | |
| self.assertEqual(Options.annotate_coverage_xml, 'cov.xml') | |
| self.assertTrue(options.gdb_debug) | |
| self.assertEqual(options.output_dir, '/gdb/outdir') | |
| def test_module_name(self): | |
| options, sources = parse_command_line([ | |
| 'source.pyx' | |
| ]) | |
| self.assertEqual(options.module_name, None) | |
| self.check_default_global_options() | |
| self.check_default_options(options) | |
| options, sources = parse_command_line([ | |
| '--module-name', 'foo.bar', | |
| 'source.pyx' | |
| ]) | |
| self.assertEqual(options.module_name, 'foo.bar') | |
| self.check_default_global_options() | |
| self.check_default_options(options, ['module_name']) | |
| def test_errors(self): | |
| def error(args, regex=None): | |
| old_stderr = sys.stderr | |
| stderr = sys.stderr = StringIO() | |
| try: | |
| self.assertRaises(SystemExit, parse_command_line, list(args)) | |
| finally: | |
| sys.stderr = old_stderr | |
| msg = stderr.getvalue().strip() | |
| self.assertTrue(msg) | |
| if regex: | |
| self.assertTrue(re.search(regex, msg), | |
| '"%s" does not match search "%s"' % | |
| (msg, regex)) | |
| error(['-1'], | |
| 'Unknown compiler flag: -1') | |
| error(['-I']) | |
| error(['--version=-a']) | |
| error(['--version=--annotate=true']) | |
| error(['--working']) | |
| error(['--verbose=1']) | |
| error(['--cleanup']) | |
| error(['--debug-disposal-code-wrong-name', 'file3.pyx'], | |
| "Unknown debug flag: debug_disposal_code_wrong_name") | |
| error(['--module-name', 'foo.pyx']) | |
| error(['--module-name', 'foo.bar']) | |
| error(['--module-name', 'foo.bar', 'foo.pyx', 'bar.pyx'], | |
| "Only one source file allowed when using --module-name") | |
| error(['--module-name', 'foo.bar', '--timestamps', 'foo.pyx'], | |
| "Cannot use --module-name with --timestamps") | |