annotate Lib/test/test_cmd_line_script.py @ 87690:66c1c9f32567 default tip

Add use_weakref option to functools.lru_cache The use_weakref option makes lru_cache create weak references to the function arguments when creating the cache key, which prevents them from staying in the memory forever even after all other references to them are gone. This is a proof of concept for http://bugs.python.org/issue19859
author Radomir Dopieralski <devel@sheep.art.pl>
date Tue, 03 Dec 2013 16:02:48 +0100
parents 72b2e7b74307
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
60648
7b69e630d237 PEP 3147
Barry Warsaw <barry@python.org>
parents: 59615
diff changeset
1 # tests command line execution of scripts
43897
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
2
76566
57d558f1904d Issue #14605: Make explicit the entries on sys.path_hooks that used to
Brett Cannon <brett@python.org>
parents: 76469
diff changeset
3 import importlib
78107
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
4 import importlib.machinery
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
5 import zipimport
43897
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
6 import unittest
65300
660afdaeb2d6 #9964: fix running test_cmd_line_script under -O and -OO.
Georg Brandl <georg@python.org>
parents: 65182
diff changeset
7 import sys
43897
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
8 import os
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
9 import os.path
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
10 import py_compile
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
11
77096
02f13577b6fe Close #14136 by cleaning up the PEP 409 command line test (patch by Ethan Furman)
Nick Coghlan <ncoghlan@gmail.com>
parents: 76566
diff changeset
12 import textwrap
64110
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
13 from test import support
60648
7b69e630d237 PEP 3147
Barry Warsaw <barry@python.org>
parents: 59615
diff changeset
14 from test.script_helper import (
65182
b1fb0539bf98 Better Python spawning primitives in test.script_helper, for
Antoine Pitrou <solipsis@pitrou.net>
parents: 64110
diff changeset
15 make_pkg, make_script, make_zip_pkg, make_zip_script,
78107
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
16 assert_python_ok, assert_python_failure, temp_dir,
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
17 spawn_python, kill_python)
43897
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
18
64110
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
19 verbose = support.verbose
43897
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
20
76469
22f0044ea366 Close issue #14026 by better testing sys.argv handling in test_cmd_line_script (patch by Jason Yeo)
Nick Coghlan <ncoghlan@gmail.com>
parents: 76416
diff changeset
21 example_args = ['test1', 'test2', 'test3']
22f0044ea366 Close issue #14026 by better testing sys.argv handling in test_cmd_line_script (patch by Jason Yeo)
Nick Coghlan <ncoghlan@gmail.com>
parents: 76416
diff changeset
22
44129
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
23 test_source = """\
43897
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
24 # Script may be run with optimisation enabled, so don't rely on assert
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
25 # statements being executed
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
26 def assertEqual(lhs, rhs):
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
27 if lhs != rhs:
44129
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
28 raise AssertionError('%r != %r' % (lhs, rhs))
43897
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
29 def assertIdentical(lhs, rhs):
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
30 if lhs is not rhs:
44129
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
31 raise AssertionError('%r is not %r' % (lhs, rhs))
43897
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
32 # Check basic code execution
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
33 result = ['Top level assignment']
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
34 def f():
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
35 result.append('Lower level reference')
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
36 f()
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
37 assertEqual(result, ['Top level assignment', 'Lower level reference'])
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
38 # Check population of magic variables
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
39 assertEqual(__name__, '__main__')
78110
ba264b26d8d9 Actually initialize __main__.__loader__ with loader instances, not the corresponding type objects
Nick Coghlan <ncoghlan@gmail.com>
parents: 78108
diff changeset
40 from importlib.machinery import BuiltinImporter
ba264b26d8d9 Actually initialize __main__.__loader__ with loader instances, not the corresponding type objects
Nick Coghlan <ncoghlan@gmail.com>
parents: 78108
diff changeset
41 _loader = __loader__ if __loader__ is BuiltinImporter else type(__loader__)
78107
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
42 print('__loader__==%a' % _loader)
65424
0505eba62347 test_cmd_line_script: format paths with ascii() instead of repr()
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65300
diff changeset
43 print('__file__==%a' % __file__)
60648
7b69e630d237 PEP 3147
Barry Warsaw <barry@python.org>
parents: 59615
diff changeset
44 assertEqual(__cached__, None)
44129
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
45 print('__package__==%r' % __package__)
43897
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
46 # Check the sys module
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
47 import sys
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
48 assertIdentical(globals(), sys.modules[__name__].__dict__)
76469
22f0044ea366 Close issue #14026 by better testing sys.argv handling in test_cmd_line_script (patch by Jason Yeo)
Nick Coghlan <ncoghlan@gmail.com>
parents: 76416
diff changeset
49 from test import test_cmd_line_script
22f0044ea366 Close issue #14026 by better testing sys.argv handling in test_cmd_line_script (patch by Jason Yeo)
Nick Coghlan <ncoghlan@gmail.com>
parents: 76416
diff changeset
50 example_args_list = test_cmd_line_script.example_args
22f0044ea366 Close issue #14026 by better testing sys.argv handling in test_cmd_line_script (patch by Jason Yeo)
Nick Coghlan <ncoghlan@gmail.com>
parents: 76416
diff changeset
51 assertEqual(sys.argv[1:], example_args_list)
65424
0505eba62347 test_cmd_line_script: format paths with ascii() instead of repr()
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65300
diff changeset
52 print('sys.argv[0]==%a' % sys.argv[0])
0505eba62347 test_cmd_line_script: format paths with ascii() instead of repr()
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65300
diff changeset
53 print('sys.path[0]==%a' % sys.path[0])
64110
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
54 # Check the working directory
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
55 import os
65424
0505eba62347 test_cmd_line_script: format paths with ascii() instead of repr()
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65300
diff changeset
56 print('cwd==%a' % os.getcwd())
44129
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
57 """
43897
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
58
44129
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
59 def _make_test_script(script_dir, script_basename, source=test_source):
76566
57d558f1904d Issue #14605: Make explicit the entries on sys.path_hooks that used to
Brett Cannon <brett@python.org>
parents: 76469
diff changeset
60 to_return = make_script(script_dir, script_basename, source)
57d558f1904d Issue #14605: Make explicit the entries on sys.path_hooks that used to
Brett Cannon <brett@python.org>
parents: 76469
diff changeset
61 importlib.invalidate_caches()
57d558f1904d Issue #14605: Make explicit the entries on sys.path_hooks that used to
Brett Cannon <brett@python.org>
parents: 76469
diff changeset
62 return to_return
44129
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
63
50164
252927a2f32d Merged revisions 67753 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 47201
diff changeset
64 def _make_test_zip_pkg(zip_dir, zip_basename, pkg_name, script_basename,
252927a2f32d Merged revisions 67753 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 47201
diff changeset
65 source=test_source, depth=1):
76566
57d558f1904d Issue #14605: Make explicit the entries on sys.path_hooks that used to
Brett Cannon <brett@python.org>
parents: 76469
diff changeset
66 to_return = make_zip_pkg(zip_dir, zip_basename, pkg_name, script_basename,
57d558f1904d Issue #14605: Make explicit the entries on sys.path_hooks that used to
Brett Cannon <brett@python.org>
parents: 76469
diff changeset
67 source, depth)
57d558f1904d Issue #14605: Make explicit the entries on sys.path_hooks that used to
Brett Cannon <brett@python.org>
parents: 76469
diff changeset
68 importlib.invalidate_caches()
57d558f1904d Issue #14605: Make explicit the entries on sys.path_hooks that used to
Brett Cannon <brett@python.org>
parents: 76469
diff changeset
69 return to_return
50164
252927a2f32d Merged revisions 67753 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 47201
diff changeset
70
44129
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
71 # There's no easy way to pass the script directory in to get
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
72 # -m to work (avoiding that is the whole point of making
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
73 # directories and zipfiles executable!)
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
74 # So we fake it for testing purposes with a custom launch script
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
75 launch_source = """\
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
76 import sys, os.path, runpy
50164
252927a2f32d Merged revisions 67753 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 47201
diff changeset
77 sys.path.insert(0, %s)
44129
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
78 runpy._run_module_as_main(%r)
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
79 """
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
80
50164
252927a2f32d Merged revisions 67753 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 47201
diff changeset
81 def _make_launch_script(script_dir, script_basename, module_name, path=None):
252927a2f32d Merged revisions 67753 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 47201
diff changeset
82 if path is None:
252927a2f32d Merged revisions 67753 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 47201
diff changeset
83 path = "os.path.dirname(__file__)"
252927a2f32d Merged revisions 67753 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 47201
diff changeset
84 else:
252927a2f32d Merged revisions 67753 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 47201
diff changeset
85 path = repr(path)
252927a2f32d Merged revisions 67753 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 47201
diff changeset
86 source = launch_source % (path, module_name)
76566
57d558f1904d Issue #14605: Make explicit the entries on sys.path_hooks that used to
Brett Cannon <brett@python.org>
parents: 76469
diff changeset
87 to_return = make_script(script_dir, script_basename, source)
57d558f1904d Issue #14605: Make explicit the entries on sys.path_hooks that used to
Brett Cannon <brett@python.org>
parents: 76469
diff changeset
88 importlib.invalidate_caches()
57d558f1904d Issue #14605: Make explicit the entries on sys.path_hooks that used to
Brett Cannon <brett@python.org>
parents: 76469
diff changeset
89 return to_return
44129
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
90
43897
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
91 class CmdLineTest(unittest.TestCase):
64110
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
92 def _check_output(self, script_name, exit_code, data,
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
93 expected_file, expected_argv0,
78107
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
94 expected_path0, expected_package,
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
95 expected_loader):
64110
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
96 if verbose > 1:
43912
4747ef9640ae Merged revisions 59041-59055 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 43908
diff changeset
97 print("Output from test script %r:" % script_name)
4747ef9640ae Merged revisions 59041-59055 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 43908
diff changeset
98 print(data)
44129
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
99 self.assertEqual(exit_code, 0)
78107
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
100 printed_loader = '__loader__==%a' % expected_loader
65424
0505eba62347 test_cmd_line_script: format paths with ascii() instead of repr()
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65300
diff changeset
101 printed_file = '__file__==%a' % expected_file
44129
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
102 printed_package = '__package__==%r' % expected_package
65424
0505eba62347 test_cmd_line_script: format paths with ascii() instead of repr()
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65300
diff changeset
103 printed_argv0 = 'sys.argv[0]==%a' % expected_argv0
0505eba62347 test_cmd_line_script: format paths with ascii() instead of repr()
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65300
diff changeset
104 printed_path0 = 'sys.path[0]==%a' % expected_path0
0505eba62347 test_cmd_line_script: format paths with ascii() instead of repr()
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65300
diff changeset
105 printed_cwd = 'cwd==%a' % os.getcwd()
64110
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
106 if verbose > 1:
44129
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
107 print('Expected output:')
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
108 print(printed_file)
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
109 print(printed_package)
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
110 print(printed_argv0)
64110
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
111 print(printed_cwd)
78107
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
112 self.assertIn(printed_loader.encode('utf-8'), data)
58415
f6a626f34840 use assert[Not]In where appropriate
Benjamin Peterson <benjamin@python.org>
parents: 57291
diff changeset
113 self.assertIn(printed_file.encode('utf-8'), data)
f6a626f34840 use assert[Not]In where appropriate
Benjamin Peterson <benjamin@python.org>
parents: 57291
diff changeset
114 self.assertIn(printed_package.encode('utf-8'), data)
f6a626f34840 use assert[Not]In where appropriate
Benjamin Peterson <benjamin@python.org>
parents: 57291
diff changeset
115 self.assertIn(printed_argv0.encode('utf-8'), data)
64110
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
116 self.assertIn(printed_path0.encode('utf-8'), data)
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
117 self.assertIn(printed_cwd.encode('utf-8'), data)
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
118
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
119 def _check_script(self, script_name, expected_file,
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
120 expected_argv0, expected_path0,
78107
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
121 expected_package, expected_loader,
64110
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
122 *cmd_line_switches):
65300
660afdaeb2d6 #9964: fix running test_cmd_line_script under -O and -OO.
Georg Brandl <georg@python.org>
parents: 65182
diff changeset
123 if not __debug__:
660afdaeb2d6 #9964: fix running test_cmd_line_script under -O and -OO.
Georg Brandl <georg@python.org>
parents: 65182
diff changeset
124 cmd_line_switches += ('-' + 'O' * sys.flags.optimize,)
76469
22f0044ea366 Close issue #14026 by better testing sys.argv handling in test_cmd_line_script (patch by Jason Yeo)
Nick Coghlan <ncoghlan@gmail.com>
parents: 76416
diff changeset
125 run_args = cmd_line_switches + (script_name,) + tuple(example_args)
86222
72b2e7b74307 Close #18754: Run Python child processes in isolated more in the test suite.
Victor Stinner <victor.stinner@gmail.com>
parents: 84888
diff changeset
126 rc, out, err = assert_python_ok(*run_args, __isolated=False)
65182
b1fb0539bf98 Better Python spawning primitives in test.script_helper, for
Antoine Pitrou <solipsis@pitrou.net>
parents: 64110
diff changeset
127 self._check_output(script_name, rc, out + err, expected_file,
78107
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
128 expected_argv0, expected_path0,
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
129 expected_package, expected_loader)
43897
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
130
51452
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
131 def _check_import_error(self, script_name, expected_msg,
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
132 *cmd_line_switches):
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
133 run_args = cmd_line_switches + (script_name,)
65182
b1fb0539bf98 Better Python spawning primitives in test.script_helper, for
Antoine Pitrou <solipsis@pitrou.net>
parents: 64110
diff changeset
134 rc, out, err = assert_python_failure(*run_args)
64110
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
135 if verbose > 1:
51452
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
136 print('Output from test script %r:' % script_name)
65182
b1fb0539bf98 Better Python spawning primitives in test.script_helper, for
Antoine Pitrou <solipsis@pitrou.net>
parents: 64110
diff changeset
137 print(err)
51452
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
138 print('Expected output: %r' % expected_msg)
65182
b1fb0539bf98 Better Python spawning primitives in test.script_helper, for
Antoine Pitrou <solipsis@pitrou.net>
parents: 64110
diff changeset
139 self.assertIn(expected_msg.encode('utf-8'), err)
51452
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
140
78107
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
141 def test_dash_c_loader(self):
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
142 rc, out, err = assert_python_ok("-c", "print(__loader__)")
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
143 expected = repr(importlib.machinery.BuiltinImporter).encode("utf-8")
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
144 self.assertIn(expected, out)
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
145
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
146 def test_stdin_loader(self):
78108
777bd189f0f1 Note why we can't write an automated test for the code path that brings up the REPL for a bare 'python' call
Nick Coghlan <ncoghlan@gmail.com>
parents: 78107
diff changeset
147 # Unfortunately, there's no way to automatically test the fully
777bd189f0f1 Note why we can't write an automated test for the code path that brings up the REPL for a bare 'python' call
Nick Coghlan <ncoghlan@gmail.com>
parents: 78107
diff changeset
148 # interactive REPL, since that code path only gets executed when
78115
1a08ceae5ef1 Fix typo in a comment (noticed by Terry Reedy)
Nick Coghlan <ncoghlan@gmail.com>
parents: 78110
diff changeset
149 # stdin is an interactive tty.
78107
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
150 p = spawn_python()
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
151 try:
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
152 p.stdin.write(b"print(__loader__)\n")
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
153 p.stdin.flush()
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
154 finally:
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
155 out = kill_python(p)
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
156 expected = repr(importlib.machinery.BuiltinImporter).encode("utf-8")
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
157 self.assertIn(expected, out)
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
158
43897
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
159 def test_basic_script(self):
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
160 with temp_dir() as script_dir:
44129
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
161 script_name = _make_test_script(script_dir, 'script')
64110
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
162 self._check_script(script_name, script_name, script_name,
78107
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
163 script_dir, None,
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
164 importlib.machinery.SourceFileLoader)
43897
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
165
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
166 def test_script_compiled(self):
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
167 with temp_dir() as script_dir:
44129
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
168 script_name = _make_test_script(script_dir, 'script')
64110
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
169 py_compile.compile(script_name, doraise=True)
43897
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
170 os.remove(script_name)
64110
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
171 pyc_file = support.make_legacy_pyc(script_name)
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
172 self._check_script(pyc_file, pyc_file,
78107
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
173 pyc_file, script_dir, None,
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
174 importlib.machinery.SourcelessFileLoader)
43897
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
175
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
176 def test_directory(self):
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
177 with temp_dir() as script_dir:
44129
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
178 script_name = _make_test_script(script_dir, '__main__')
64110
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
179 self._check_script(script_dir, script_name, script_dir,
78107
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
180 script_dir, '',
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
181 importlib.machinery.SourceFileLoader)
43897
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
182
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
183 def test_directory_compiled(self):
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
184 with temp_dir() as script_dir:
44129
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
185 script_name = _make_test_script(script_dir, '__main__')
64110
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
186 py_compile.compile(script_name, doraise=True)
43897
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
187 os.remove(script_name)
64110
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
188 pyc_file = support.make_legacy_pyc(script_name)
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
189 self._check_script(script_dir, pyc_file, script_dir,
78107
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
190 script_dir, '',
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
191 importlib.machinery.SourcelessFileLoader)
43897
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
192
51452
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
193 def test_directory_error(self):
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
194 with temp_dir() as script_dir:
57291
fd417cd64341 Merged revisions 76286-76287,76289-76294,76296-76299,76301-76305,76307,76310-76311,76313-76322 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 55593
diff changeset
195 msg = "can't find '__main__' module in %r" % script_dir
51452
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
196 self._check_import_error(script_dir, msg)
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
197
43897
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
198 def test_zipfile(self):
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
199 with temp_dir() as script_dir:
44129
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
200 script_name = _make_test_script(script_dir, '__main__')
57291
fd417cd64341 Merged revisions 76286-76287,76289-76294,76296-76299,76301-76305,76307,76310-76311,76313-76322 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 55593
diff changeset
201 zip_name, run_name = make_zip_script(script_dir, 'test_zip', script_name)
78107
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
202 self._check_script(zip_name, run_name, zip_name, zip_name, '',
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
203 zipimport.zipimporter)
43897
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
204
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
205 def test_zipfile_compiled(self):
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
206 with temp_dir() as script_dir:
44129
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
207 script_name = _make_test_script(script_dir, '__main__')
60648
7b69e630d237 PEP 3147
Barry Warsaw <barry@python.org>
parents: 59615
diff changeset
208 compiled_name = py_compile.compile(script_name, doraise=True)
57291
fd417cd64341 Merged revisions 76286-76287,76289-76294,76296-76299,76301-76305,76307,76310-76311,76313-76322 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 55593
diff changeset
209 zip_name, run_name = make_zip_script(script_dir, 'test_zip', compiled_name)
78107
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
210 self._check_script(zip_name, run_name, zip_name, zip_name, '',
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
211 zipimport.zipimporter)
44129
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
212
51452
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
213 def test_zipfile_error(self):
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
214 with temp_dir() as script_dir:
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
215 script_name = _make_test_script(script_dir, 'not_main')
57291
fd417cd64341 Merged revisions 76286-76287,76289-76294,76296-76299,76301-76305,76307,76310-76311,76313-76322 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 55593
diff changeset
216 zip_name, run_name = make_zip_script(script_dir, 'test_zip', script_name)
fd417cd64341 Merged revisions 76286-76287,76289-76294,76296-76299,76301-76305,76307,76310-76311,76313-76322 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 55593
diff changeset
217 msg = "can't find '__main__' module in %r" % zip_name
51452
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
218 self._check_import_error(zip_name, msg)
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
219
44129
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
220 def test_module_in_package(self):
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
221 with temp_dir() as script_dir:
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
222 pkg_dir = os.path.join(script_dir, 'test_pkg')
57291
fd417cd64341 Merged revisions 76286-76287,76289-76294,76296-76299,76301-76305,76307,76310-76311,76313-76322 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 55593
diff changeset
223 make_pkg(pkg_dir)
44129
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
224 script_name = _make_test_script(pkg_dir, 'script')
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
225 launch_name = _make_launch_script(script_dir, 'launch', 'test_pkg.script')
78107
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
226 self._check_script(launch_name, script_name, script_name,
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
227 script_dir, 'test_pkg',
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
228 importlib.machinery.SourceFileLoader)
50164
252927a2f32d Merged revisions 67753 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 47201
diff changeset
229
252927a2f32d Merged revisions 67753 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 47201
diff changeset
230 def test_module_in_package_in_zipfile(self):
252927a2f32d Merged revisions 67753 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 47201
diff changeset
231 with temp_dir() as script_dir:
252927a2f32d Merged revisions 67753 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 47201
diff changeset
232 zip_name, run_name = _make_test_zip_pkg(script_dir, 'test_zip', 'test_pkg', 'script')
252927a2f32d Merged revisions 67753 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 47201
diff changeset
233 launch_name = _make_launch_script(script_dir, 'launch', 'test_pkg.script', zip_name)
78107
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
234 self._check_script(launch_name, run_name, run_name,
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
235 zip_name, 'test_pkg', zipimport.zipimporter)
50164
252927a2f32d Merged revisions 67753 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 47201
diff changeset
236
252927a2f32d Merged revisions 67753 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 47201
diff changeset
237 def test_module_in_subpackage_in_zipfile(self):
252927a2f32d Merged revisions 67753 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 47201
diff changeset
238 with temp_dir() as script_dir:
252927a2f32d Merged revisions 67753 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 47201
diff changeset
239 zip_name, run_name = _make_test_zip_pkg(script_dir, 'test_zip', 'test_pkg', 'script', depth=2)
252927a2f32d Merged revisions 67753 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 47201
diff changeset
240 launch_name = _make_launch_script(script_dir, 'launch', 'test_pkg.test_pkg.script', zip_name)
78107
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
241 self._check_script(launch_name, run_name, run_name,
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
242 zip_name, 'test_pkg.test_pkg',
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
243 zipimport.zipimporter)
43897
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
244
51452
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
245 def test_package(self):
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
246 with temp_dir() as script_dir:
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
247 pkg_dir = os.path.join(script_dir, 'test_pkg')
57291
fd417cd64341 Merged revisions 76286-76287,76289-76294,76296-76299,76301-76305,76307,76310-76311,76313-76322 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 55593
diff changeset
248 make_pkg(pkg_dir)
51452
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
249 script_name = _make_test_script(pkg_dir, '__main__')
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
250 launch_name = _make_launch_script(script_dir, 'launch', 'test_pkg')
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
251 self._check_script(launch_name, script_name,
78107
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
252 script_name, script_dir, 'test_pkg',
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
253 importlib.machinery.SourceFileLoader)
51452
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
254
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
255 def test_package_compiled(self):
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
256 with temp_dir() as script_dir:
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
257 pkg_dir = os.path.join(script_dir, 'test_pkg')
57291
fd417cd64341 Merged revisions 76286-76287,76289-76294,76296-76299,76301-76305,76307,76310-76311,76313-76322 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 55593
diff changeset
258 make_pkg(pkg_dir)
51452
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
259 script_name = _make_test_script(pkg_dir, '__main__')
60648
7b69e630d237 PEP 3147
Barry Warsaw <barry@python.org>
parents: 59615
diff changeset
260 compiled_name = py_compile.compile(script_name, doraise=True)
51452
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
261 os.remove(script_name)
64110
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
262 pyc_file = support.make_legacy_pyc(script_name)
51452
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
263 launch_name = _make_launch_script(script_dir, 'launch', 'test_pkg')
60648
7b69e630d237 PEP 3147
Barry Warsaw <barry@python.org>
parents: 59615
diff changeset
264 self._check_script(launch_name, pyc_file,
78107
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
265 pyc_file, script_dir, 'test_pkg',
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
266 importlib.machinery.SourcelessFileLoader)
51452
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
267
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
268 def test_package_error(self):
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
269 with temp_dir() as script_dir:
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
270 pkg_dir = os.path.join(script_dir, 'test_pkg')
57291
fd417cd64341 Merged revisions 76286-76287,76289-76294,76296-76299,76301-76305,76307,76310-76311,76313-76322 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 55593
diff changeset
271 make_pkg(pkg_dir)
51452
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
272 msg = ("'test_pkg' is a package and cannot "
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
273 "be directly executed")
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
274 launch_name = _make_launch_script(script_dir, 'launch', 'test_pkg')
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
275 self._check_import_error(launch_name, msg)
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
276
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
277 def test_package_recursion(self):
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
278 with temp_dir() as script_dir:
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
279 pkg_dir = os.path.join(script_dir, 'test_pkg')
57291
fd417cd64341 Merged revisions 76286-76287,76289-76294,76296-76299,76301-76305,76307,76310-76311,76313-76322 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 55593
diff changeset
280 make_pkg(pkg_dir)
51452
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
281 main_dir = os.path.join(pkg_dir, '__main__')
57291
fd417cd64341 Merged revisions 76286-76287,76289-76294,76296-76299,76301-76305,76307,76310-76311,76313-76322 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 55593
diff changeset
282 make_pkg(main_dir)
51452
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
283 msg = ("Cannot use package as __main__ module; "
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
284 "'test_pkg' is a package and cannot "
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
285 "be directly executed")
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
286 launch_name = _make_launch_script(script_dir, 'launch', 'test_pkg')
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
287 self._check_import_error(launch_name, msg)
2d354f4d77bc Merged revisions 69419-69420 via svnmerge from
Nick Coghlan <ncoghlan@gmail.com>
parents: 50164
diff changeset
288
64110
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
289 def test_issue8202(self):
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
290 # Make sure package __init__ modules see "-m" in sys.argv0 while
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
291 # searching for the module to execute
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
292 with temp_dir() as script_dir:
84887
4f0034477ba9 Close #15415: Factor out temp dir helpers to test.support
Nick Coghlan <ncoghlan@gmail.com>
parents: 81261
diff changeset
293 with support.change_cwd(path=script_dir):
64110
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
294 pkg_dir = os.path.join(script_dir, 'test_pkg')
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
295 make_pkg(pkg_dir, "import sys; print('init_argv0==%r' % sys.argv[0])")
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
296 script_name = _make_test_script(pkg_dir, 'script')
86222
72b2e7b74307 Close #18754: Run Python child processes in isolated more in the test suite.
Victor Stinner <victor.stinner@gmail.com>
parents: 84888
diff changeset
297 rc, out, err = assert_python_ok('-m', 'test_pkg.script', *example_args, __isolated=False)
64110
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
298 if verbose > 1:
76416
c4c67c2d8ffc Close #14032: fix incorrect variable reference in test_cmd_line_script
Nick Coghlan <ncoghlan@gmail.com>
parents: 68257
diff changeset
299 print(out)
64110
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
300 expected = "init_argv0==%r" % '-m'
65182
b1fb0539bf98 Better Python spawning primitives in test.script_helper, for
Antoine Pitrou <solipsis@pitrou.net>
parents: 64110
diff changeset
301 self.assertIn(expected.encode('utf-8'), out)
b1fb0539bf98 Better Python spawning primitives in test.script_helper, for
Antoine Pitrou <solipsis@pitrou.net>
parents: 64110
diff changeset
302 self._check_output(script_name, rc, out,
78107
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
303 script_name, script_name, '', 'test_pkg',
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
304 importlib.machinery.SourceFileLoader)
64110
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
305
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
306 def test_issue8202_dash_c_file_ignored(self):
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
307 # Make sure a "-c" file in the current directory
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
308 # does not alter the value of sys.path[0]
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
309 with temp_dir() as script_dir:
84887
4f0034477ba9 Close #15415: Factor out temp dir helpers to test.support
Nick Coghlan <ncoghlan@gmail.com>
parents: 81261
diff changeset
310 with support.change_cwd(path=script_dir):
64110
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
311 with open("-c", "w") as f:
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
312 f.write("data")
65182
b1fb0539bf98 Better Python spawning primitives in test.script_helper, for
Antoine Pitrou <solipsis@pitrou.net>
parents: 64110
diff changeset
313 rc, out, err = assert_python_ok('-c',
86222
72b2e7b74307 Close #18754: Run Python child processes in isolated more in the test suite.
Victor Stinner <victor.stinner@gmail.com>
parents: 84888
diff changeset
314 'import sys; print("sys.path[0]==%r" % sys.path[0])',
72b2e7b74307 Close #18754: Run Python child processes in isolated more in the test suite.
Victor Stinner <victor.stinner@gmail.com>
parents: 84888
diff changeset
315 __isolated=False)
64110
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
316 if verbose > 1:
65182
b1fb0539bf98 Better Python spawning primitives in test.script_helper, for
Antoine Pitrou <solipsis@pitrou.net>
parents: 64110
diff changeset
317 print(out)
64110
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
318 expected = "sys.path[0]==%r" % ''
65182
b1fb0539bf98 Better Python spawning primitives in test.script_helper, for
Antoine Pitrou <solipsis@pitrou.net>
parents: 64110
diff changeset
319 self.assertIn(expected.encode('utf-8'), out)
64110
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
320
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
321 def test_issue8202_dash_m_file_ignored(self):
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
322 # Make sure a "-m" file in the current directory
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
323 # does not alter the value of sys.path[0]
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
324 with temp_dir() as script_dir:
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
325 script_name = _make_test_script(script_dir, 'other')
84887
4f0034477ba9 Close #15415: Factor out temp dir helpers to test.support
Nick Coghlan <ncoghlan@gmail.com>
parents: 81261
diff changeset
326 with support.change_cwd(path=script_dir):
64110
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
327 with open("-m", "w") as f:
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
328 f.write("data")
86222
72b2e7b74307 Close #18754: Run Python child processes in isolated more in the test suite.
Victor Stinner <victor.stinner@gmail.com>
parents: 84888
diff changeset
329 rc, out, err = assert_python_ok('-m', 'other', *example_args,
72b2e7b74307 Close #18754: Run Python child processes in isolated more in the test suite.
Victor Stinner <victor.stinner@gmail.com>
parents: 84888
diff changeset
330 __isolated=False)
65182
b1fb0539bf98 Better Python spawning primitives in test.script_helper, for
Antoine Pitrou <solipsis@pitrou.net>
parents: 64110
diff changeset
331 self._check_output(script_name, rc, out,
78107
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
332 script_name, script_name, '', '',
3987667bf98f Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357)
Nick Coghlan <ncoghlan@gmail.com>
parents: 77947
diff changeset
333 importlib.machinery.SourceFileLoader)
43897
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
334
77946
fcbd3bda7c0f Fix issue # 15033 - Return the proper exitcode for failure when modules are invoked using -m switch. Patch contributed by Jeff Knupp
Senthil Kumaran <senthil@uthcode.com>
parents: 76469
diff changeset
335 def test_dash_m_error_code_is_one(self):
fcbd3bda7c0f Fix issue # 15033 - Return the proper exitcode for failure when modules are invoked using -m switch. Patch contributed by Jeff Knupp
Senthil Kumaran <senthil@uthcode.com>
parents: 76469
diff changeset
336 # If a module is invoked with the -m command line flag
fcbd3bda7c0f Fix issue # 15033 - Return the proper exitcode for failure when modules are invoked using -m switch. Patch contributed by Jeff Knupp
Senthil Kumaran <senthil@uthcode.com>
parents: 76469
diff changeset
337 # and results in an error that the return code to the
fcbd3bda7c0f Fix issue # 15033 - Return the proper exitcode for failure when modules are invoked using -m switch. Patch contributed by Jeff Knupp
Senthil Kumaran <senthil@uthcode.com>
parents: 76469
diff changeset
338 # shell is '1'
fcbd3bda7c0f Fix issue # 15033 - Return the proper exitcode for failure when modules are invoked using -m switch. Patch contributed by Jeff Knupp
Senthil Kumaran <senthil@uthcode.com>
parents: 76469
diff changeset
339 with temp_dir() as script_dir:
84887
4f0034477ba9 Close #15415: Factor out temp dir helpers to test.support
Nick Coghlan <ncoghlan@gmail.com>
parents: 81261
diff changeset
340 with support.change_cwd(path=script_dir):
77946
fcbd3bda7c0f Fix issue # 15033 - Return the proper exitcode for failure when modules are invoked using -m switch. Patch contributed by Jeff Knupp
Senthil Kumaran <senthil@uthcode.com>
parents: 76469
diff changeset
341 pkg_dir = os.path.join(script_dir, 'test_pkg')
fcbd3bda7c0f Fix issue # 15033 - Return the proper exitcode for failure when modules are invoked using -m switch. Patch contributed by Jeff Knupp
Senthil Kumaran <senthil@uthcode.com>
parents: 76469
diff changeset
342 make_pkg(pkg_dir)
fcbd3bda7c0f Fix issue # 15033 - Return the proper exitcode for failure when modules are invoked using -m switch. Patch contributed by Jeff Knupp
Senthil Kumaran <senthil@uthcode.com>
parents: 76469
diff changeset
343 script_name = _make_test_script(pkg_dir, 'other',
fcbd3bda7c0f Fix issue # 15033 - Return the proper exitcode for failure when modules are invoked using -m switch. Patch contributed by Jeff Knupp
Senthil Kumaran <senthil@uthcode.com>
parents: 76469
diff changeset
344 "if __name__ == '__main__': raise ValueError")
fcbd3bda7c0f Fix issue # 15033 - Return the proper exitcode for failure when modules are invoked using -m switch. Patch contributed by Jeff Knupp
Senthil Kumaran <senthil@uthcode.com>
parents: 76469
diff changeset
345 rc, out, err = assert_python_failure('-m', 'test_pkg.other', *example_args)
fcbd3bda7c0f Fix issue # 15033 - Return the proper exitcode for failure when modules are invoked using -m switch. Patch contributed by Jeff Knupp
Senthil Kumaran <senthil@uthcode.com>
parents: 76469
diff changeset
346 if verbose > 1:
fcbd3bda7c0f Fix issue # 15033 - Return the proper exitcode for failure when modules are invoked using -m switch. Patch contributed by Jeff Knupp
Senthil Kumaran <senthil@uthcode.com>
parents: 76469
diff changeset
347 print(out)
fcbd3bda7c0f Fix issue # 15033 - Return the proper exitcode for failure when modules are invoked using -m switch. Patch contributed by Jeff Knupp
Senthil Kumaran <senthil@uthcode.com>
parents: 76469
diff changeset
348 self.assertEqual(rc, 1)
fcbd3bda7c0f Fix issue # 15033 - Return the proper exitcode for failure when modules are invoked using -m switch. Patch contributed by Jeff Knupp
Senthil Kumaran <senthil@uthcode.com>
parents: 76469
diff changeset
349
77096
02f13577b6fe Close #14136 by cleaning up the PEP 409 command line test (patch by Ethan Furman)
Nick Coghlan <ncoghlan@gmail.com>
parents: 76566
diff changeset
350 def test_pep_409_verbiage(self):
02f13577b6fe Close #14136 by cleaning up the PEP 409 command line test (patch by Ethan Furman)
Nick Coghlan <ncoghlan@gmail.com>
parents: 76566
diff changeset
351 # Make sure PEP 409 syntax properly suppresses
02f13577b6fe Close #14136 by cleaning up the PEP 409 command line test (patch by Ethan Furman)
Nick Coghlan <ncoghlan@gmail.com>
parents: 76566
diff changeset
352 # the context of an exception
02f13577b6fe Close #14136 by cleaning up the PEP 409 command line test (patch by Ethan Furman)
Nick Coghlan <ncoghlan@gmail.com>
parents: 76566
diff changeset
353 script = textwrap.dedent("""\
02f13577b6fe Close #14136 by cleaning up the PEP 409 command line test (patch by Ethan Furman)
Nick Coghlan <ncoghlan@gmail.com>
parents: 76566
diff changeset
354 try:
02f13577b6fe Close #14136 by cleaning up the PEP 409 command line test (patch by Ethan Furman)
Nick Coghlan <ncoghlan@gmail.com>
parents: 76566
diff changeset
355 raise ValueError
02f13577b6fe Close #14136 by cleaning up the PEP 409 command line test (patch by Ethan Furman)
Nick Coghlan <ncoghlan@gmail.com>
parents: 76566
diff changeset
356 except:
02f13577b6fe Close #14136 by cleaning up the PEP 409 command line test (patch by Ethan Furman)
Nick Coghlan <ncoghlan@gmail.com>
parents: 76566
diff changeset
357 raise NameError from None
02f13577b6fe Close #14136 by cleaning up the PEP 409 command line test (patch by Ethan Furman)
Nick Coghlan <ncoghlan@gmail.com>
parents: 76566
diff changeset
358 """)
02f13577b6fe Close #14136 by cleaning up the PEP 409 command line test (patch by Ethan Furman)
Nick Coghlan <ncoghlan@gmail.com>
parents: 76566
diff changeset
359 with temp_dir() as script_dir:
02f13577b6fe Close #14136 by cleaning up the PEP 409 command line test (patch by Ethan Furman)
Nick Coghlan <ncoghlan@gmail.com>
parents: 76566
diff changeset
360 script_name = _make_test_script(script_dir, 'script', script)
02f13577b6fe Close #14136 by cleaning up the PEP 409 command line test (patch by Ethan Furman)
Nick Coghlan <ncoghlan@gmail.com>
parents: 76566
diff changeset
361 exitcode, stdout, stderr = assert_python_failure(script_name)
02f13577b6fe Close #14136 by cleaning up the PEP 409 command line test (patch by Ethan Furman)
Nick Coghlan <ncoghlan@gmail.com>
parents: 76566
diff changeset
362 text = stderr.decode('ascii').split('\n')
02f13577b6fe Close #14136 by cleaning up the PEP 409 command line test (patch by Ethan Furman)
Nick Coghlan <ncoghlan@gmail.com>
parents: 76566
diff changeset
363 self.assertEqual(len(text), 4)
02f13577b6fe Close #14136 by cleaning up the PEP 409 command line test (patch by Ethan Furman)
Nick Coghlan <ncoghlan@gmail.com>
parents: 76566
diff changeset
364 self.assertTrue(text[0].startswith('Traceback'))
02f13577b6fe Close #14136 by cleaning up the PEP 409 command line test (patch by Ethan Furman)
Nick Coghlan <ncoghlan@gmail.com>
parents: 76566
diff changeset
365 self.assertTrue(text[1].startswith(' File '))
02f13577b6fe Close #14136 by cleaning up the PEP 409 command line test (patch by Ethan Furman)
Nick Coghlan <ncoghlan@gmail.com>
parents: 76566
diff changeset
366 self.assertTrue(text[3].startswith('NameError'))
02f13577b6fe Close #14136 by cleaning up the PEP 409 command line test (patch by Ethan Furman)
Nick Coghlan <ncoghlan@gmail.com>
parents: 76566
diff changeset
367
81260
41658a4fb3cc Issue #16218, #16414, #16444: Backport FS_NONASCII, TESTFN_UNDECODABLE,
Victor Stinner <victor.stinner@gmail.com>
parents: 77946
diff changeset
368 def test_non_ascii(self):
41658a4fb3cc Issue #16218, #16414, #16444: Backport FS_NONASCII, TESTFN_UNDECODABLE,
Victor Stinner <victor.stinner@gmail.com>
parents: 77946
diff changeset
369 # Mac OS X denies the creation of a file with an invalid UTF-8 name.
41658a4fb3cc Issue #16218, #16414, #16444: Backport FS_NONASCII, TESTFN_UNDECODABLE,
Victor Stinner <victor.stinner@gmail.com>
parents: 77946
diff changeset
370 # Windows allows to create a name with an arbitrary bytes name, but
41658a4fb3cc Issue #16218, #16414, #16444: Backport FS_NONASCII, TESTFN_UNDECODABLE,
Victor Stinner <victor.stinner@gmail.com>
parents: 77946
diff changeset
371 # Python cannot a undecodable bytes argument to a subprocess.
41658a4fb3cc Issue #16218, #16414, #16444: Backport FS_NONASCII, TESTFN_UNDECODABLE,
Victor Stinner <victor.stinner@gmail.com>
parents: 77946
diff changeset
372 if (support.TESTFN_UNDECODABLE
41658a4fb3cc Issue #16218, #16414, #16444: Backport FS_NONASCII, TESTFN_UNDECODABLE,
Victor Stinner <victor.stinner@gmail.com>
parents: 77946
diff changeset
373 and sys.platform not in ('win32', 'darwin')):
41658a4fb3cc Issue #16218, #16414, #16444: Backport FS_NONASCII, TESTFN_UNDECODABLE,
Victor Stinner <victor.stinner@gmail.com>
parents: 77946
diff changeset
374 name = os.fsdecode(support.TESTFN_UNDECODABLE)
41658a4fb3cc Issue #16218, #16414, #16444: Backport FS_NONASCII, TESTFN_UNDECODABLE,
Victor Stinner <victor.stinner@gmail.com>
parents: 77946
diff changeset
375 elif support.TESTFN_NONASCII:
41658a4fb3cc Issue #16218, #16414, #16444: Backport FS_NONASCII, TESTFN_UNDECODABLE,
Victor Stinner <victor.stinner@gmail.com>
parents: 77946
diff changeset
376 name = support.TESTFN_NONASCII
41658a4fb3cc Issue #16218, #16414, #16444: Backport FS_NONASCII, TESTFN_UNDECODABLE,
Victor Stinner <victor.stinner@gmail.com>
parents: 77946
diff changeset
377 else:
41658a4fb3cc Issue #16218, #16414, #16444: Backport FS_NONASCII, TESTFN_UNDECODABLE,
Victor Stinner <victor.stinner@gmail.com>
parents: 77946
diff changeset
378 self.skipTest("need support.TESTFN_NONASCII")
41658a4fb3cc Issue #16218, #16414, #16444: Backport FS_NONASCII, TESTFN_UNDECODABLE,
Victor Stinner <victor.stinner@gmail.com>
parents: 77946
diff changeset
379
41658a4fb3cc Issue #16218, #16414, #16444: Backport FS_NONASCII, TESTFN_UNDECODABLE,
Victor Stinner <victor.stinner@gmail.com>
parents: 77946
diff changeset
380 # Issue #16218
41658a4fb3cc Issue #16218, #16414, #16444: Backport FS_NONASCII, TESTFN_UNDECODABLE,
Victor Stinner <victor.stinner@gmail.com>
parents: 77946
diff changeset
381 source = 'print(ascii(__file__))\n'
41658a4fb3cc Issue #16218, #16414, #16444: Backport FS_NONASCII, TESTFN_UNDECODABLE,
Victor Stinner <victor.stinner@gmail.com>
parents: 77946
diff changeset
382 script_name = _make_test_script(os.curdir, name, source)
41658a4fb3cc Issue #16218, #16414, #16444: Backport FS_NONASCII, TESTFN_UNDECODABLE,
Victor Stinner <victor.stinner@gmail.com>
parents: 77946
diff changeset
383 self.addCleanup(support.unlink, script_name)
41658a4fb3cc Issue #16218, #16414, #16444: Backport FS_NONASCII, TESTFN_UNDECODABLE,
Victor Stinner <victor.stinner@gmail.com>
parents: 77946
diff changeset
384 rc, stdout, stderr = assert_python_ok(script_name)
41658a4fb3cc Issue #16218, #16414, #16444: Backport FS_NONASCII, TESTFN_UNDECODABLE,
Victor Stinner <victor.stinner@gmail.com>
parents: 77946
diff changeset
385 self.assertEqual(
41658a4fb3cc Issue #16218, #16414, #16444: Backport FS_NONASCII, TESTFN_UNDECODABLE,
Victor Stinner <victor.stinner@gmail.com>
parents: 77946
diff changeset
386 ascii(script_name),
41658a4fb3cc Issue #16218, #16414, #16444: Backport FS_NONASCII, TESTFN_UNDECODABLE,
Victor Stinner <victor.stinner@gmail.com>
parents: 77946
diff changeset
387 stdout.rstrip().decode('ascii'),
41658a4fb3cc Issue #16218, #16414, #16444: Backport FS_NONASCII, TESTFN_UNDECODABLE,
Victor Stinner <victor.stinner@gmail.com>
parents: 77946
diff changeset
388 'stdout=%r stderr=%r' % (stdout, stderr))
41658a4fb3cc Issue #16218, #16414, #16444: Backport FS_NONASCII, TESTFN_UNDECODABLE,
Victor Stinner <victor.stinner@gmail.com>
parents: 77946
diff changeset
389 self.assertEqual(0, rc)
41658a4fb3cc Issue #16218, #16414, #16444: Backport FS_NONASCII, TESTFN_UNDECODABLE,
Victor Stinner <victor.stinner@gmail.com>
parents: 77946
diff changeset
390
41658a4fb3cc Issue #16218, #16414, #16444: Backport FS_NONASCII, TESTFN_UNDECODABLE,
Victor Stinner <victor.stinner@gmail.com>
parents: 77946
diff changeset
391
43897
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
392 def test_main():
64110
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
393 support.run_unittest(CmdLineTest)
212a16f906a6 Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents: 60648
diff changeset
394 support.reap_children()
43897
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
395
44129
b637349336fd Merged revisions 59275-59303 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43912
diff changeset
396 if __name__ == '__main__':
43897
41f7c13ef161 Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
397 test_main()