2003-02-17 14:17:05 -04:00
|
|
|
"Test posix functions"
|
|
|
|
|
2008-05-20 18:35:26 -03:00
|
|
|
from test import support
|
2009-04-21 23:24:39 -03:00
|
|
|
|
|
|
|
# Skip these tests if there is no posix module.
|
|
|
|
posix = support.import_module('posix')
|
2003-02-17 14:17:05 -04:00
|
|
|
|
2009-12-02 16:46:48 -04:00
|
|
|
import errno
|
2010-07-23 10:53:51 -03:00
|
|
|
import sys
|
2003-02-17 14:17:05 -04:00
|
|
|
import time
|
|
|
|
import os
|
2011-05-22 15:42:32 -03:00
|
|
|
import fcntl
|
Merged revisions 61538-61540,61556,61559-61560,61563,61565,61571,61575-61576,61580-61582,61586,61591,61593,61595,61605-61606,61613-61616,61618,61621-61623,61625,61627,61631-61634 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61538 | steven.bethard | 2008-03-18 20:03:50 +0100 (Di, 18 Mär 2008) | 1 line
cell_compare needs to return -2 instead of NULL.
........
r61539 | steven.bethard | 2008-03-18 20:04:32 +0100 (Di, 18 Mär 2008) | 1 line
_have_soundcard() is a bad check for winsound.Beep, since you can have a soundcard but have the beep driver disabled. This revision basically disables the beep tests by wrapping them in a try/except. The Right Way To Do It is to come up with a _have_enabled_beep_driver() and use that.
........
r61540 | gregory.p.smith | 2008-03-18 20:05:32 +0100 (Di, 18 Mär 2008) | 8 lines
Fix chown on 64-bit linux. It needed to take a long (64-bit on 64bit linux) as
uid and gid input to accept values >=2**31 as valid while still accepting
negative numbers to pass -1 to chown for "no change".
Fixes issue1747858.
This should be backported to release25-maint.
........
r61556 | steven.bethard | 2008-03-18 20:59:14 +0100 (Di, 18 Mär 2008) | 1 line
Fix test_atexit so that it still passes when -3 is supplied. (It was catching the warning messages on stdio from using the reload() function.)
........
r61559 | neal.norwitz | 2008-03-18 21:30:38 +0100 (Di, 18 Mär 2008) | 1 line
Import the test properly. This is especially important for py3k.
........
r61560 | gregory.p.smith | 2008-03-18 21:40:01 +0100 (Di, 18 Mär 2008) | 2 lines
news entry for the chown fix
........
r61563 | brett.cannon | 2008-03-18 22:12:42 +0100 (Di, 18 Mär 2008) | 2 lines
Ignore BIG5HKSCS-2004.TXT which is downloaded as part of a test.
........
r61565 | steven.bethard | 2008-03-18 22:30:13 +0100 (Di, 18 Mär 2008) | 1 line
Have regrtest skip test_py3kwarn when the -3 flag is missing.
........
r61571 | gregory.p.smith | 2008-03-18 23:27:41 +0100 (Di, 18 Mär 2008) | 4 lines
Add a test to make sure zlib.crc32 and binascii.crc32 return the same thing.
Fix a buglet in binascii.crc32, the second optional argument could previously
have a signedness mismatch with the C variable its going into.
........
r61575 | raymond.hettinger | 2008-03-19 00:22:29 +0100 (Mi, 19 Mär 2008) | 1 line
Speed-up isinstance() for one easy case.
........
r61576 | raymond.hettinger | 2008-03-19 00:33:08 +0100 (Mi, 19 Mär 2008) | 1 line
Issue: 2354: Add 3K warning for the cmp argument to list.sort() and sorted().
........
r61580 | andrew.kuchling | 2008-03-19 02:05:35 +0100 (Mi, 19 Mär 2008) | 1 line
Add Jeff Rush
........
r61581 | gregory.p.smith | 2008-03-19 02:38:35 +0100 (Mi, 19 Mär 2008) | 3 lines
Mention that crc32 and adler32 are available in a different module (zlib).
Some people look for them in hashlib.
........
r61582 | gregory.p.smith | 2008-03-19 02:46:10 +0100 (Mi, 19 Mär 2008) | 3 lines
Use zlib's crc32 routine instead of binascii when available. zlib's is faster
when compiled properly optimized and about the same speed otherwise.
........
r61586 | david.wolever | 2008-03-19 03:26:57 +0100 (Mi, 19 Mär 2008) | 1 line
Added my name to ACKS
........
r61591 | gregory.p.smith | 2008-03-19 04:14:41 +0100 (Mi, 19 Mär 2008) | 5 lines
Fix the struct module DeprecationWarnings that zipfile was triggering by
removing all use of signed struct values.
test_zipfile and test_zipfile64 pass. no more warnings.
........
r61593 | raymond.hettinger | 2008-03-19 04:56:59 +0100 (Mi, 19 Mär 2008) | 1 line
Fix compiler warning.
........
r61595 | martin.v.loewis | 2008-03-19 05:39:13 +0100 (Mi, 19 Mär 2008) | 2 lines
Issue #2400: Allow relative imports to "import *".
........
r61605 | martin.v.loewis | 2008-03-19 07:00:28 +0100 (Mi, 19 Mär 2008) | 2 lines
Import relimport using a relative import.
........
r61606 | trent.nelson | 2008-03-19 07:28:24 +0100 (Mi, 19 Mär 2008) | 1 line
Issue2290: Support x64 Windows builds that live in pcbuild/amd64. Without it, sysutils._python_build() returns the wrong directory, which causes the test_get_config_h_filename method in Lib/distutils/tests/test_sysconfig.py to fail.
........
r61613 | trent.nelson | 2008-03-19 08:45:19 +0100 (Mi, 19 Mär 2008) | 3 lines
Refine the Visual Studio 2008 build solution in order to improve how we deal with external components, as well as fixing outstanding issues with Windows x64 build support. Introduce two new .vcproj files, _bsddb44.vcproj and sqlite3.vcproj, which replace the previous pre-link event scripts for _bsddb and _sqlite3 respectively. The new project files inherit from our property files as if they were any other Python module. This has numerous benefits. First, the components get built with exactly the same compiler flags and settings as the rest of Python. Second, it makes it much easier to debug problems in the external components when they're part of the build system. Third, they'll benefit from profile guided optimisation in the release builds, just like the rest of Python core.
I've also introduced a slightly new pattern for managing externals in subversion. New components get checked in as <name>-<version>.x, where <version> matches the exact vendor version string. After the initial import of the external component, the .x is tagged as .0 (i.e. tcl-8.4.18.x -> tcl-8.4.18.0). Some components may not need any tweaking, whereas there are others that might (tcl/tk fall into this bucket). In that case, the relevant modifications are made to the .x branch, which will be subsequently tagged as .1 (and then n+1 going forward) when they build successfully and all tests pass. Buildbots will be converted to rely on these explicit tags only, which makes it easy for us to switch them over to a new version as and when required. (Simple change to external(-amd64).bat: if we've bumped tcl to 8.4.18.1, change the .bat to rmdir 8.4.18.0 if it exists and check out a new .1 copy.)
........
r61614 | trent.nelson | 2008-03-19 08:56:39 +0100 (Mi, 19 Mär 2008) | 1 line
Remove extraneous apostrophe and semi-colon from AdditionalIncludeDirectories.
........
r61615 | georg.brandl | 2008-03-19 08:56:40 +0100 (Mi, 19 Mär 2008) | 2 lines
Remove footnote from versionchanged as it upsets LaTeX.
........
r61616 | georg.brandl | 2008-03-19 08:57:57 +0100 (Mi, 19 Mär 2008) | 2 lines
Another one.
........
r61618 | trent.nelson | 2008-03-19 09:06:03 +0100 (Mi, 19 Mär 2008) | 1 line
Fix the tcl-8.4.18.1 path and make sure we cd into the right directory when building tcl/tk.
........
r61621 | trent.nelson | 2008-03-19 10:23:08 +0100 (Mi, 19 Mär 2008) | 1 line
Lets have another try at getting the Windows buildbots in a consistent state before rebuilding using the new process.
........
r61622 | eric.smith | 2008-03-19 13:09:55 +0100 (Mi, 19 Mär 2008) | 2 lines
Use test.test_support.captured_stdout instead of a custom contextmanager.
Thanks Nick Coghlan.
........
r61623 | eric.smith | 2008-03-19 13:15:10 +0100 (Mi, 19 Mär 2008) | 1 line
Trivial typo.
........
r61625 | thomas.heller | 2008-03-19 17:10:57 +0100 (Mi, 19 Mär 2008) | 2 lines
Checkout sqlite-source when it is not there.
........
r61627 | brett.cannon | 2008-03-19 17:50:13 +0100 (Mi, 19 Mär 2008) | 5 lines
test_nis would fail if test.test_support.verbose was true but NIS was not set
up on the machine.
Closes issue2411. Thanks Michael Bishop.
........
r61631 | brett.cannon | 2008-03-19 18:37:43 +0100 (Mi, 19 Mär 2008) | 2 lines
Use sys.py3kwarning instead of trying to trigger a Py3k-related warning.
........
r61632 | raymond.hettinger | 2008-03-19 18:45:19 +0100 (Mi, 19 Mär 2008) | 1 line
Issue 2354: Fix-up compare warning. Patch contributed by Jeff Balogh.
........
r61633 | raymond.hettinger | 2008-03-19 18:58:59 +0100 (Mi, 19 Mär 2008) | 1 line
The filter() function does support a None argument in Py3.0.
........
r61634 | raymond.hettinger | 2008-03-19 19:01:58 +0100 (Mi, 19 Mär 2008) | 1 line
Remove itertools warnings I had added before the 2-to-3 handled the migration.
........
2008-03-19 18:50:51 -03:00
|
|
|
import pwd
|
Merged revisions 64434-64435,64440-64443,64445,64447-64448,64450,64452,64455,64461,64464,64466,64468 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r64434 | andrew.kuchling | 2008-06-20 18:13:58 -0500 (Fri, 20 Jun 2008) | 1 line
Remove request for e-mail; it's unlikely these classes will be saved
........
r64435 | andrew.kuchling | 2008-06-20 18:14:32 -0500 (Fri, 20 Jun 2008) | 1 line
Grammar fixes
........
r64440 | andrew.kuchling | 2008-06-21 08:29:12 -0500 (Sat, 21 Jun 2008) | 1 line
Docstring typo
........
r64441 | andrew.kuchling | 2008-06-21 08:47:20 -0500 (Sat, 21 Jun 2008) | 1 line
Use repr() for bad input strings; this makes the empty string or binary characters more visible
........
r64442 | andrew.kuchling | 2008-06-21 08:48:38 -0500 (Sat, 21 Jun 2008) | 1 line
Docstring correction
........
r64443 | georg.brandl | 2008-06-21 09:26:19 -0500 (Sat, 21 Jun 2008) | 2 lines
Documentation fix.
........
r64445 | facundo.batista | 2008-06-21 12:30:06 -0500 (Sat, 21 Jun 2008) | 3 lines
Reviewed and updated the documentation. Fixes #3017.
........
r64447 | facundo.batista | 2008-06-21 13:58:04 -0500 (Sat, 21 Jun 2008) | 6 lines
Now a from submitted via POST that also has a query string
will contain both FieldStorage and MiniFieldStorage items.
Fixes #1817.
........
r64448 | facundo.batista | 2008-06-21 14:48:19 -0500 (Sat, 21 Jun 2008) | 5 lines
In the deprecated functions I added an alert to review
specially a section of the subprocess documentation
that helps with the replacing of those functionss.
........
r64450 | georg.brandl | 2008-06-22 04:05:29 -0500 (Sun, 22 Jun 2008) | 2 lines
Turn section references into proper cross-references.
........
r64452 | facundo.batista | 2008-06-22 08:36:20 -0500 (Sun, 22 Jun 2008) | 5 lines
Issue #2722. Now the char buffer to support the path string has
not fixed length, it mallocs memory if needed. As a result, we
don't have a maximum for the getcwd() method.
........
r64455 | facundo.batista | 2008-06-22 10:27:10 -0500 (Sun, 22 Jun 2008) | 4 lines
Issue 3164. Small fix to don't repeat a comparation
without necessity.
........
r64461 | georg.brandl | 2008-06-22 13:11:52 -0500 (Sun, 22 Jun 2008) | 2 lines
#3085: Fix syntax error.
........
r64464 | georg.brandl | 2008-06-22 13:31:54 -0500 (Sun, 22 Jun 2008) | 2 lines
Expand docstrings of sqlite3 functions.
........
r64466 | georg.brandl | 2008-06-22 14:07:59 -0500 (Sun, 22 Jun 2008) | 2 lines
Write out "phi" consistently.
........
r64468 | facundo.batista | 2008-06-22 14:35:24 -0500 (Sun, 22 Jun 2008) | 4 lines
Just returning nothing instead of rising TestSkipped, because
it makes the test fail in the trunk.loewis-sun buildbot.
........
2008-07-02 14:30:14 -03:00
|
|
|
import shutil
|
2010-08-16 22:27:09 -03:00
|
|
|
import stat
|
2011-07-26 17:53:55 -03:00
|
|
|
import tempfile
|
2003-02-17 14:17:05 -04:00
|
|
|
import unittest
|
|
|
|
import warnings
|
Merged revisions 70734,70775,70856,70874,70876-70877 via svnmerge
........
r70734 | r.david.murray | 2009-03-30 15:04:00 -0400 (Mon, 30 Mar 2009) | 7 lines
Add import_function method to test.test_support, and modify a number of
tests that expect to be skipped if imports fail or functions don't
exist to use import_function and import_module. The ultimate goal is
to change regrtest to not skip automatically on ImportError. Checking
in now to make sure the buldbots don't show any errors on platforms
I can't direct test on.
........
r70775 | r.david.murray | 2009-03-30 19:05:48 -0400 (Mon, 30 Mar 2009) | 4 lines
Change more tests to use import_module for the modules that
should cause tests to be skipped. Also rename import_function
to the more descriptive get_attribute and add a docstring.
........
r70856 | r.david.murray | 2009-03-31 14:32:17 -0400 (Tue, 31 Mar 2009) | 7 lines
A few more test skips via import_module, and change import_module to
return the error message produced by importlib, so that if an import
in the package whose import is being wrapped is what failed the skip
message will contain the name of that module instead of the name of the
wrapped module. Also fixed formatting of some previous comments.
........
r70874 | r.david.murray | 2009-03-31 15:33:15 -0400 (Tue, 31 Mar 2009) | 5 lines
Improve test_support.import_module docstring, remove
deprecated flag from get_attribute since it isn't likely
to do anything useful.
........
r70876 | r.david.murray | 2009-03-31 15:49:15 -0400 (Tue, 31 Mar 2009) | 4 lines
Remove the regrtest check that turns any ImportError into a skipped test.
Hopefully all modules whose imports legitimately result in a skipped
test have been properly wrapped by the previous commits.
........
r70877 | r.david.murray | 2009-03-31 15:57:24 -0400 (Tue, 31 Mar 2009) | 2 lines
Add NEWS entry for regrtest change.
........
2009-03-31 20:16:50 -03:00
|
|
|
|
2011-07-26 17:53:55 -03:00
|
|
|
_DUMMY_SYMLINK = os.path.join(tempfile.gettempdir(),
|
|
|
|
support.TESTFN + '-dummy-symlink')
|
2003-02-17 14:17:05 -04:00
|
|
|
|
|
|
|
class PosixTester(unittest.TestCase):
|
|
|
|
|
|
|
|
def setUp(self):
|
|
|
|
# create empty file
|
2008-05-20 18:35:26 -03:00
|
|
|
fp = open(support.TESTFN, 'w+')
|
2003-02-17 14:17:05 -04:00
|
|
|
fp.close()
|
2011-06-28 04:00:28 -03:00
|
|
|
self.teardown_files = [ support.TESTFN ]
|
2010-03-20 18:53:28 -03:00
|
|
|
self._warnings_manager = support.check_warnings()
|
|
|
|
self._warnings_manager.__enter__()
|
|
|
|
warnings.filterwarnings('ignore', '.* potential security risk .*',
|
|
|
|
RuntimeWarning)
|
2003-02-17 14:17:05 -04:00
|
|
|
|
|
|
|
def tearDown(self):
|
2011-06-28 04:00:28 -03:00
|
|
|
for teardown_file in self.teardown_files:
|
|
|
|
support.unlink(teardown_file)
|
2010-03-20 18:53:28 -03:00
|
|
|
self._warnings_manager.__exit__(None, None, None)
|
2003-02-17 14:17:05 -04:00
|
|
|
|
|
|
|
def testNoArgFunctions(self):
|
|
|
|
# test posix functions which take no arguments and have
|
|
|
|
# no side-effects which we need to cleanup (e.g., fork, wait, abort)
|
2008-10-02 15:55:37 -03:00
|
|
|
NO_ARG_FUNCTIONS = [ "ctermid", "getcwd", "getcwdb", "uname",
|
2007-10-25 20:18:51 -03:00
|
|
|
"times", "getloadavg",
|
2003-02-17 14:17:05 -04:00
|
|
|
"getegid", "geteuid", "getgid", "getgroups",
|
2011-03-17 15:20:30 -03:00
|
|
|
"getpid", "getpgrp", "getppid", "getuid", "sync",
|
2003-02-17 14:17:05 -04:00
|
|
|
]
|
2003-02-23 18:12:24 -04:00
|
|
|
|
2003-02-17 14:17:05 -04:00
|
|
|
for name in NO_ARG_FUNCTIONS:
|
|
|
|
posix_func = getattr(posix, name, None)
|
|
|
|
if posix_func is not None:
|
|
|
|
posix_func()
|
2003-02-17 18:40:31 -04:00
|
|
|
self.assertRaises(TypeError, posix_func, 1)
|
2003-02-17 14:17:05 -04:00
|
|
|
|
2009-11-27 10:09:49 -04:00
|
|
|
if hasattr(posix, 'getresuid'):
|
|
|
|
def test_getresuid(self):
|
|
|
|
user_ids = posix.getresuid()
|
|
|
|
self.assertEqual(len(user_ids), 3)
|
|
|
|
for val in user_ids:
|
|
|
|
self.assertGreaterEqual(val, 0)
|
|
|
|
|
|
|
|
if hasattr(posix, 'getresgid'):
|
|
|
|
def test_getresgid(self):
|
|
|
|
group_ids = posix.getresgid()
|
|
|
|
self.assertEqual(len(group_ids), 3)
|
|
|
|
for val in group_ids:
|
|
|
|
self.assertGreaterEqual(val, 0)
|
|
|
|
|
|
|
|
if hasattr(posix, 'setresuid'):
|
|
|
|
def test_setresuid(self):
|
|
|
|
current_user_ids = posix.getresuid()
|
|
|
|
self.assertIsNone(posix.setresuid(*current_user_ids))
|
|
|
|
# -1 means don't change that value.
|
|
|
|
self.assertIsNone(posix.setresuid(-1, -1, -1))
|
|
|
|
|
|
|
|
def test_setresuid_exception(self):
|
|
|
|
# Don't do this test if someone is silly enough to run us as root.
|
|
|
|
current_user_ids = posix.getresuid()
|
|
|
|
if 0 not in current_user_ids:
|
|
|
|
new_user_ids = (current_user_ids[0]+1, -1, -1)
|
|
|
|
self.assertRaises(OSError, posix.setresuid, *new_user_ids)
|
|
|
|
|
|
|
|
if hasattr(posix, 'setresgid'):
|
|
|
|
def test_setresgid(self):
|
|
|
|
current_group_ids = posix.getresgid()
|
|
|
|
self.assertIsNone(posix.setresgid(*current_group_ids))
|
|
|
|
# -1 means don't change that value.
|
|
|
|
self.assertIsNone(posix.setresgid(-1, -1, -1))
|
|
|
|
|
|
|
|
def test_setresgid_exception(self):
|
|
|
|
# Don't do this test if someone is silly enough to run us as root.
|
|
|
|
current_group_ids = posix.getresgid()
|
|
|
|
if 0 not in current_group_ids:
|
|
|
|
new_group_ids = (current_group_ids[0]+1, -1, -1)
|
|
|
|
self.assertRaises(OSError, posix.setresgid, *new_group_ids)
|
|
|
|
|
2009-12-02 16:46:48 -04:00
|
|
|
@unittest.skipUnless(hasattr(posix, 'initgroups'),
|
|
|
|
"test needs os.initgroups()")
|
|
|
|
def test_initgroups(self):
|
|
|
|
# It takes a string and an integer; check that it raises a TypeError
|
|
|
|
# for other argument lists.
|
|
|
|
self.assertRaises(TypeError, posix.initgroups)
|
|
|
|
self.assertRaises(TypeError, posix.initgroups, None)
|
|
|
|
self.assertRaises(TypeError, posix.initgroups, 3, "foo")
|
|
|
|
self.assertRaises(TypeError, posix.initgroups, "foo", 3, object())
|
|
|
|
|
|
|
|
# If a non-privileged user invokes it, it should fail with OSError
|
|
|
|
# EPERM.
|
|
|
|
if os.getuid() != 0:
|
|
|
|
name = pwd.getpwuid(posix.getuid()).pw_name
|
|
|
|
try:
|
|
|
|
posix.initgroups(name, 13)
|
|
|
|
except OSError as e:
|
2010-11-20 15:04:17 -04:00
|
|
|
self.assertEqual(e.errno, errno.EPERM)
|
2009-12-02 16:46:48 -04:00
|
|
|
else:
|
|
|
|
self.fail("Expected OSError to be raised by initgroups")
|
|
|
|
|
2003-02-17 14:17:05 -04:00
|
|
|
def test_statvfs(self):
|
|
|
|
if hasattr(posix, 'statvfs'):
|
2009-06-30 20:06:06 -03:00
|
|
|
self.assertTrue(posix.statvfs(os.curdir))
|
2003-02-17 14:17:05 -04:00
|
|
|
|
|
|
|
def test_fstatvfs(self):
|
|
|
|
if hasattr(posix, 'fstatvfs'):
|
2008-05-20 18:35:26 -03:00
|
|
|
fp = open(support.TESTFN)
|
2003-02-17 14:17:05 -04:00
|
|
|
try:
|
2009-06-30 20:06:06 -03:00
|
|
|
self.assertTrue(posix.fstatvfs(fp.fileno()))
|
2003-02-17 14:17:05 -04:00
|
|
|
finally:
|
|
|
|
fp.close()
|
|
|
|
|
|
|
|
def test_ftruncate(self):
|
|
|
|
if hasattr(posix, 'ftruncate'):
|
2008-05-20 18:35:26 -03:00
|
|
|
fp = open(support.TESTFN, 'w+')
|
2003-02-17 14:17:05 -04:00
|
|
|
try:
|
|
|
|
# we need to have some data to truncate
|
|
|
|
fp.write('test')
|
|
|
|
fp.flush()
|
|
|
|
posix.ftruncate(fp.fileno(), 0)
|
|
|
|
finally:
|
|
|
|
fp.close()
|
|
|
|
|
2011-03-17 15:20:30 -03:00
|
|
|
@unittest.skipUnless(hasattr(posix, 'truncate'), "test needs posix.truncate()")
|
|
|
|
def test_truncate(self):
|
|
|
|
with open(support.TESTFN, 'w') as fp:
|
|
|
|
fp.write('test')
|
|
|
|
fp.flush()
|
|
|
|
posix.truncate(support.TESTFN, 0)
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'fexecve'), "test needs posix.fexecve()")
|
|
|
|
@unittest.skipUnless(hasattr(os, 'fork'), "test needs os.fork()")
|
2011-03-20 13:27:05 -03:00
|
|
|
@unittest.skipUnless(hasattr(os, 'waitpid'), "test needs os.waitpid()")
|
2011-03-17 15:20:30 -03:00
|
|
|
def test_fexecve(self):
|
|
|
|
fp = os.open(sys.executable, os.O_RDONLY)
|
|
|
|
try:
|
|
|
|
pid = os.fork()
|
|
|
|
if pid == 0:
|
|
|
|
os.chdir(os.path.split(sys.executable)[0])
|
|
|
|
posix.fexecve(fp, [sys.executable, '-c', 'pass'], os.environ)
|
|
|
|
else:
|
2011-03-20 13:27:05 -03:00
|
|
|
self.assertEqual(os.waitpid(pid, 0), (pid, 0))
|
2011-03-17 15:20:30 -03:00
|
|
|
finally:
|
|
|
|
os.close(fp)
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'waitid'), "test needs posix.waitid()")
|
|
|
|
@unittest.skipUnless(hasattr(os, 'fork'), "test needs os.fork()")
|
|
|
|
def test_waitid(self):
|
|
|
|
pid = os.fork()
|
|
|
|
if pid == 0:
|
|
|
|
os.chdir(os.path.split(sys.executable)[0])
|
|
|
|
posix.execve(sys.executable, [sys.executable, '-c', 'pass'], os.environ)
|
|
|
|
else:
|
|
|
|
res = posix.waitid(posix.P_PID, pid, posix.WEXITED)
|
|
|
|
self.assertEqual(pid, res.si_pid)
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'lockf'), "test needs posix.lockf()")
|
|
|
|
def test_lockf(self):
|
|
|
|
fd = os.open(support.TESTFN, os.O_WRONLY | os.O_CREAT)
|
|
|
|
try:
|
|
|
|
os.write(fd, b'test')
|
|
|
|
os.lseek(fd, 0, os.SEEK_SET)
|
|
|
|
posix.lockf(fd, posix.F_LOCK, 4)
|
|
|
|
# section is locked
|
|
|
|
posix.lockf(fd, posix.F_ULOCK, 4)
|
|
|
|
finally:
|
|
|
|
os.close(fd)
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'pread'), "test needs posix.pread()")
|
|
|
|
def test_pread(self):
|
|
|
|
fd = os.open(support.TESTFN, os.O_RDWR | os.O_CREAT)
|
|
|
|
try:
|
|
|
|
os.write(fd, b'test')
|
|
|
|
os.lseek(fd, 0, os.SEEK_SET)
|
|
|
|
self.assertEqual(b'es', posix.pread(fd, 2, 1))
|
|
|
|
# the first pread() shoudn't disturb the file offset
|
|
|
|
self.assertEqual(b'te', posix.read(fd, 2))
|
|
|
|
finally:
|
|
|
|
os.close(fd)
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'pwrite'), "test needs posix.pwrite()")
|
|
|
|
def test_pwrite(self):
|
|
|
|
fd = os.open(support.TESTFN, os.O_RDWR | os.O_CREAT)
|
|
|
|
try:
|
|
|
|
os.write(fd, b'test')
|
|
|
|
os.lseek(fd, 0, os.SEEK_SET)
|
|
|
|
posix.pwrite(fd, b'xx', 1)
|
|
|
|
self.assertEqual(b'txxt', posix.read(fd, 4))
|
|
|
|
finally:
|
|
|
|
os.close(fd)
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'posix_fallocate'),
|
|
|
|
"test needs posix.posix_fallocate()")
|
|
|
|
def test_posix_fallocate(self):
|
|
|
|
fd = os.open(support.TESTFN, os.O_WRONLY | os.O_CREAT)
|
|
|
|
try:
|
|
|
|
posix.posix_fallocate(fd, 0, 10)
|
|
|
|
except OSError as inst:
|
|
|
|
# issue10812, ZFS doesn't appear to support posix_fallocate,
|
|
|
|
# so skip Solaris-based since they are likely to have ZFS.
|
|
|
|
if inst.errno != errno.EINVAL or not sys.platform.startswith("sunos"):
|
|
|
|
raise
|
|
|
|
finally:
|
|
|
|
os.close(fd)
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'posix_fadvise'),
|
|
|
|
"test needs posix.posix_fadvise()")
|
|
|
|
def test_posix_fadvise(self):
|
|
|
|
fd = os.open(support.TESTFN, os.O_RDONLY)
|
|
|
|
try:
|
|
|
|
posix.posix_fadvise(fd, 0, 0, posix.POSIX_FADV_WILLNEED)
|
|
|
|
finally:
|
|
|
|
os.close(fd)
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'futimes'), "test needs posix.futimes()")
|
|
|
|
def test_futimes(self):
|
|
|
|
now = time.time()
|
|
|
|
fd = os.open(support.TESTFN, os.O_RDONLY)
|
|
|
|
try:
|
|
|
|
posix.futimes(fd, None)
|
|
|
|
self.assertRaises(TypeError, posix.futimes, fd, (None, None))
|
|
|
|
self.assertRaises(TypeError, posix.futimes, fd, (now, None))
|
|
|
|
self.assertRaises(TypeError, posix.futimes, fd, (None, now))
|
|
|
|
posix.futimes(fd, (int(now), int(now)))
|
|
|
|
posix.futimes(fd, (now, now))
|
|
|
|
finally:
|
|
|
|
os.close(fd)
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'lutimes'), "test needs posix.lutimes()")
|
|
|
|
def test_lutimes(self):
|
|
|
|
now = time.time()
|
|
|
|
posix.lutimes(support.TESTFN, None)
|
|
|
|
self.assertRaises(TypeError, posix.lutimes, support.TESTFN, (None, None))
|
|
|
|
self.assertRaises(TypeError, posix.lutimes, support.TESTFN, (now, None))
|
|
|
|
self.assertRaises(TypeError, posix.lutimes, support.TESTFN, (None, now))
|
|
|
|
posix.lutimes(support.TESTFN, (int(now), int(now)))
|
|
|
|
posix.lutimes(support.TESTFN, (now, now))
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'futimens'), "test needs posix.futimens()")
|
|
|
|
def test_futimens(self):
|
|
|
|
now = time.time()
|
|
|
|
fd = os.open(support.TESTFN, os.O_RDONLY)
|
|
|
|
try:
|
|
|
|
self.assertRaises(TypeError, posix.futimens, fd, (None, None), (None, None))
|
|
|
|
self.assertRaises(TypeError, posix.futimens, fd, (now, 0), None)
|
|
|
|
self.assertRaises(TypeError, posix.futimens, fd, None, (now, 0))
|
|
|
|
posix.futimens(fd, (int(now), int((now - int(now)) * 1e9)),
|
|
|
|
(int(now), int((now - int(now)) * 1e9)))
|
|
|
|
finally:
|
|
|
|
os.close(fd)
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'writev'), "test needs posix.writev()")
|
|
|
|
def test_writev(self):
|
|
|
|
fd = os.open(support.TESTFN, os.O_RDWR | os.O_CREAT)
|
|
|
|
try:
|
|
|
|
os.writev(fd, (b'test1', b'tt2', b't3'))
|
|
|
|
os.lseek(fd, 0, os.SEEK_SET)
|
|
|
|
self.assertEqual(b'test1tt2t3', posix.read(fd, 10))
|
|
|
|
finally:
|
|
|
|
os.close(fd)
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'readv'), "test needs posix.readv()")
|
|
|
|
def test_readv(self):
|
|
|
|
fd = os.open(support.TESTFN, os.O_RDWR | os.O_CREAT)
|
|
|
|
try:
|
|
|
|
os.write(fd, b'test1tt2t3')
|
|
|
|
os.lseek(fd, 0, os.SEEK_SET)
|
|
|
|
buf = [bytearray(i) for i in [5, 3, 2]]
|
|
|
|
self.assertEqual(posix.readv(fd, buf), 10)
|
|
|
|
self.assertEqual([b'test1', b'tt2', b't3'], [bytes(i) for i in buf])
|
|
|
|
finally:
|
|
|
|
os.close(fd)
|
|
|
|
|
2003-02-17 14:17:05 -04:00
|
|
|
def test_dup(self):
|
|
|
|
if hasattr(posix, 'dup'):
|
2008-05-20 18:35:26 -03:00
|
|
|
fp = open(support.TESTFN)
|
2003-02-17 14:17:05 -04:00
|
|
|
try:
|
|
|
|
fd = posix.dup(fp.fileno())
|
2010-01-24 15:26:24 -04:00
|
|
|
self.assertIsInstance(fd, int)
|
2003-02-17 14:17:05 -04:00
|
|
|
os.close(fd)
|
|
|
|
finally:
|
|
|
|
fp.close()
|
|
|
|
|
2006-04-21 07:40:58 -03:00
|
|
|
def test_confstr(self):
|
|
|
|
if hasattr(posix, 'confstr'):
|
|
|
|
self.assertRaises(ValueError, posix.confstr, "CS_garbage")
|
|
|
|
self.assertEqual(len(posix.confstr("CS_PATH")) > 0, True)
|
|
|
|
|
2003-02-17 14:17:05 -04:00
|
|
|
def test_dup2(self):
|
|
|
|
if hasattr(posix, 'dup2'):
|
2008-05-20 18:35:26 -03:00
|
|
|
fp1 = open(support.TESTFN)
|
|
|
|
fp2 = open(support.TESTFN)
|
2003-02-17 14:17:05 -04:00
|
|
|
try:
|
|
|
|
posix.dup2(fp1.fileno(), fp2.fileno())
|
|
|
|
finally:
|
|
|
|
fp1.close()
|
|
|
|
fp2.close()
|
|
|
|
|
2011-05-22 15:42:32 -03:00
|
|
|
@unittest.skipUnless(hasattr(os, 'O_CLOEXEC'), "needs os.O_CLOEXEC")
|
2011-06-03 07:55:15 -03:00
|
|
|
@support.requires_linux_version(2, 6, 23)
|
2011-05-22 15:42:32 -03:00
|
|
|
def test_oscloexec(self):
|
|
|
|
fd = os.open(support.TESTFN, os.O_RDONLY|os.O_CLOEXEC)
|
|
|
|
self.addCleanup(os.close, fd)
|
2011-05-23 19:29:43 -03:00
|
|
|
self.assertTrue(fcntl.fcntl(fd, fcntl.F_GETFD) & fcntl.FD_CLOEXEC)
|
2011-05-22 15:42:32 -03:00
|
|
|
|
2005-06-16 22:14:49 -03:00
|
|
|
def test_osexlock(self):
|
|
|
|
if hasattr(posix, "O_EXLOCK"):
|
2008-05-20 18:35:26 -03:00
|
|
|
fd = os.open(support.TESTFN,
|
2005-06-16 22:14:49 -03:00
|
|
|
os.O_WRONLY|os.O_EXLOCK|os.O_CREAT)
|
2008-05-20 18:35:26 -03:00
|
|
|
self.assertRaises(OSError, os.open, support.TESTFN,
|
2005-06-16 22:14:49 -03:00
|
|
|
os.O_WRONLY|os.O_EXLOCK|os.O_NONBLOCK)
|
|
|
|
os.close(fd)
|
|
|
|
|
|
|
|
if hasattr(posix, "O_SHLOCK"):
|
2008-05-20 18:35:26 -03:00
|
|
|
fd = os.open(support.TESTFN,
|
2005-06-16 22:14:49 -03:00
|
|
|
os.O_WRONLY|os.O_SHLOCK|os.O_CREAT)
|
2008-05-20 18:35:26 -03:00
|
|
|
self.assertRaises(OSError, os.open, support.TESTFN,
|
2005-06-16 22:14:49 -03:00
|
|
|
os.O_WRONLY|os.O_EXLOCK|os.O_NONBLOCK)
|
|
|
|
os.close(fd)
|
|
|
|
|
|
|
|
def test_osshlock(self):
|
|
|
|
if hasattr(posix, "O_SHLOCK"):
|
2008-05-20 18:35:26 -03:00
|
|
|
fd1 = os.open(support.TESTFN,
|
2005-06-16 22:14:49 -03:00
|
|
|
os.O_WRONLY|os.O_SHLOCK|os.O_CREAT)
|
2008-05-20 18:35:26 -03:00
|
|
|
fd2 = os.open(support.TESTFN,
|
2005-06-16 22:14:49 -03:00
|
|
|
os.O_WRONLY|os.O_SHLOCK|os.O_CREAT)
|
|
|
|
os.close(fd2)
|
|
|
|
os.close(fd1)
|
|
|
|
|
|
|
|
if hasattr(posix, "O_EXLOCK"):
|
2008-05-20 18:35:26 -03:00
|
|
|
fd = os.open(support.TESTFN,
|
2005-06-16 22:14:49 -03:00
|
|
|
os.O_WRONLY|os.O_SHLOCK|os.O_CREAT)
|
2008-05-20 18:35:26 -03:00
|
|
|
self.assertRaises(OSError, os.open, support.TESTFN,
|
2005-06-16 22:14:49 -03:00
|
|
|
os.O_RDONLY|os.O_EXLOCK|os.O_NONBLOCK)
|
|
|
|
os.close(fd)
|
|
|
|
|
2003-02-17 14:17:05 -04:00
|
|
|
def test_fstat(self):
|
|
|
|
if hasattr(posix, 'fstat'):
|
2008-05-20 18:35:26 -03:00
|
|
|
fp = open(support.TESTFN)
|
2003-02-17 14:17:05 -04:00
|
|
|
try:
|
2009-06-30 20:06:06 -03:00
|
|
|
self.assertTrue(posix.fstat(fp.fileno()))
|
2003-02-17 14:17:05 -04:00
|
|
|
finally:
|
|
|
|
fp.close()
|
|
|
|
|
|
|
|
def test_stat(self):
|
|
|
|
if hasattr(posix, 'stat'):
|
2009-06-30 20:06:06 -03:00
|
|
|
self.assertTrue(posix.stat(support.TESTFN))
|
2003-02-17 14:17:05 -04:00
|
|
|
|
2010-08-16 22:27:09 -03:00
|
|
|
@unittest.skipUnless(hasattr(posix, 'mkfifo'), "don't have mkfifo()")
|
|
|
|
def test_mkfifo(self):
|
|
|
|
support.unlink(support.TESTFN)
|
|
|
|
posix.mkfifo(support.TESTFN, stat.S_IRUSR | stat.S_IWUSR)
|
|
|
|
self.assertTrue(stat.S_ISFIFO(posix.stat(support.TESTFN).st_mode))
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'mknod') and hasattr(stat, 'S_IFIFO'),
|
|
|
|
"don't have mknod()/S_IFIFO")
|
|
|
|
def test_mknod(self):
|
|
|
|
# Test using mknod() to create a FIFO (the only use specified
|
|
|
|
# by POSIX).
|
|
|
|
support.unlink(support.TESTFN)
|
|
|
|
mode = stat.S_IFIFO | stat.S_IRUSR | stat.S_IWUSR
|
|
|
|
try:
|
|
|
|
posix.mknod(support.TESTFN, mode, 0)
|
|
|
|
except OSError as e:
|
|
|
|
# Some old systems don't allow unprivileged users to use
|
|
|
|
# mknod(), or only support creating device nodes.
|
|
|
|
self.assertIn(e.errno, (errno.EPERM, errno.EINVAL))
|
|
|
|
else:
|
|
|
|
self.assertTrue(stat.S_ISFIFO(posix.stat(support.TESTFN).st_mode))
|
|
|
|
|
Merged revisions 76847,76851,76869,76882,76891-76892,76924,77007,77070,77092,77096,77120,77126,77155 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r76847 | benjamin.peterson | 2009-12-14 21:25:27 -0600 (Mon, 14 Dec 2009) | 1 line
adverb
........
r76851 | benjamin.peterson | 2009-12-15 21:28:52 -0600 (Tue, 15 Dec 2009) | 1 line
remove lib2to3 resource
........
r76869 | vinay.sajip | 2009-12-17 08:52:00 -0600 (Thu, 17 Dec 2009) | 1 line
Issue #7529: logging: Minor correction to documentation.
........
r76882 | georg.brandl | 2009-12-19 11:30:28 -0600 (Sat, 19 Dec 2009) | 1 line
#7527: use standard versionadded tags.
........
r76891 | georg.brandl | 2009-12-19 12:16:31 -0600 (Sat, 19 Dec 2009) | 1 line
#7479: add note about function availability on Unices.
........
r76892 | georg.brandl | 2009-12-19 12:20:18 -0600 (Sat, 19 Dec 2009) | 1 line
#7480: remove tautology.
........
r76924 | georg.brandl | 2009-12-20 08:28:05 -0600 (Sun, 20 Dec 2009) | 1 line
Small indentation fix.
........
r77007 | gregory.p.smith | 2009-12-23 03:31:11 -0600 (Wed, 23 Dec 2009) | 3 lines
Fix possible integer overflow in lchown and fchown functions. For issue1747858.
........
r77070 | amaury.forgeotdarc | 2009-12-27 14:06:44 -0600 (Sun, 27 Dec 2009) | 2 lines
Fix a typo in comment
........
r77092 | georg.brandl | 2009-12-28 02:48:24 -0600 (Mon, 28 Dec 2009) | 1 line
#7404: remove reference to non-existing example files.
........
r77096 | benjamin.peterson | 2009-12-28 14:51:17 -0600 (Mon, 28 Dec 2009) | 1 line
document new fix_callable behavior
........
r77120 | georg.brandl | 2009-12-29 15:09:17 -0600 (Tue, 29 Dec 2009) | 1 line
#7595: fix typo in argument default constant.
........
r77126 | amaury.forgeotdarc | 2009-12-29 17:06:17 -0600 (Tue, 29 Dec 2009) | 2 lines
#7579: Add docstrings to the msvcrt module
........
r77155 | georg.brandl | 2009-12-30 13:03:00 -0600 (Wed, 30 Dec 2009) | 1 line
We only support Windows NT derivatives now.
........
2009-12-30 23:11:23 -04:00
|
|
|
def _test_all_chown_common(self, chown_func, first_param):
|
|
|
|
"""Common code for chown, fchown and lchown tests."""
|
|
|
|
if os.getuid() == 0:
|
|
|
|
try:
|
|
|
|
# Many linux distros have a nfsnobody user as MAX_UID-2
|
|
|
|
# that makes a good test case for signedness issues.
|
|
|
|
# http://bugs.python.org/issue1747858
|
|
|
|
# This part of the test only runs when run as root.
|
|
|
|
# Only scary people run their tests as root.
|
|
|
|
ent = pwd.getpwnam('nfsnobody')
|
|
|
|
chown_func(first_param, ent.pw_uid, ent.pw_gid)
|
|
|
|
except KeyError:
|
|
|
|
pass
|
|
|
|
else:
|
|
|
|
# non-root cannot chown to root, raises OSError
|
|
|
|
self.assertRaises(OSError, chown_func,
|
|
|
|
first_param, 0, 0)
|
|
|
|
# test a successful chown call
|
|
|
|
chown_func(first_param, os.getuid(), os.getgid())
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'chown'), "test needs os.chown()")
|
|
|
|
def test_chown(self):
|
|
|
|
# raise an OSError if the file does not exist
|
|
|
|
os.unlink(support.TESTFN)
|
|
|
|
self.assertRaises(OSError, posix.chown, support.TESTFN, -1, -1)
|
|
|
|
|
|
|
|
# re-create the file
|
2011-06-30 18:25:47 -03:00
|
|
|
support.create_empty_file(support.TESTFN)
|
Merged revisions 76847,76851,76869,76882,76891-76892,76924,77007,77070,77092,77096,77120,77126,77155 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r76847 | benjamin.peterson | 2009-12-14 21:25:27 -0600 (Mon, 14 Dec 2009) | 1 line
adverb
........
r76851 | benjamin.peterson | 2009-12-15 21:28:52 -0600 (Tue, 15 Dec 2009) | 1 line
remove lib2to3 resource
........
r76869 | vinay.sajip | 2009-12-17 08:52:00 -0600 (Thu, 17 Dec 2009) | 1 line
Issue #7529: logging: Minor correction to documentation.
........
r76882 | georg.brandl | 2009-12-19 11:30:28 -0600 (Sat, 19 Dec 2009) | 1 line
#7527: use standard versionadded tags.
........
r76891 | georg.brandl | 2009-12-19 12:16:31 -0600 (Sat, 19 Dec 2009) | 1 line
#7479: add note about function availability on Unices.
........
r76892 | georg.brandl | 2009-12-19 12:20:18 -0600 (Sat, 19 Dec 2009) | 1 line
#7480: remove tautology.
........
r76924 | georg.brandl | 2009-12-20 08:28:05 -0600 (Sun, 20 Dec 2009) | 1 line
Small indentation fix.
........
r77007 | gregory.p.smith | 2009-12-23 03:31:11 -0600 (Wed, 23 Dec 2009) | 3 lines
Fix possible integer overflow in lchown and fchown functions. For issue1747858.
........
r77070 | amaury.forgeotdarc | 2009-12-27 14:06:44 -0600 (Sun, 27 Dec 2009) | 2 lines
Fix a typo in comment
........
r77092 | georg.brandl | 2009-12-28 02:48:24 -0600 (Mon, 28 Dec 2009) | 1 line
#7404: remove reference to non-existing example files.
........
r77096 | benjamin.peterson | 2009-12-28 14:51:17 -0600 (Mon, 28 Dec 2009) | 1 line
document new fix_callable behavior
........
r77120 | georg.brandl | 2009-12-29 15:09:17 -0600 (Tue, 29 Dec 2009) | 1 line
#7595: fix typo in argument default constant.
........
r77126 | amaury.forgeotdarc | 2009-12-29 17:06:17 -0600 (Tue, 29 Dec 2009) | 2 lines
#7579: Add docstrings to the msvcrt module
........
r77155 | georg.brandl | 2009-12-30 13:03:00 -0600 (Wed, 30 Dec 2009) | 1 line
We only support Windows NT derivatives now.
........
2009-12-30 23:11:23 -04:00
|
|
|
self._test_all_chown_common(posix.chown, support.TESTFN)
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'fchown'), "test needs os.fchown()")
|
|
|
|
def test_fchown(self):
|
|
|
|
os.unlink(support.TESTFN)
|
|
|
|
|
|
|
|
# re-create the file
|
|
|
|
test_file = open(support.TESTFN, 'w')
|
|
|
|
try:
|
|
|
|
fd = test_file.fileno()
|
|
|
|
self._test_all_chown_common(posix.fchown, fd)
|
|
|
|
finally:
|
|
|
|
test_file.close()
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'lchown'), "test needs os.lchown()")
|
|
|
|
def test_lchown(self):
|
|
|
|
os.unlink(support.TESTFN)
|
|
|
|
# create a symlink
|
2011-06-28 04:00:28 -03:00
|
|
|
os.symlink(_DUMMY_SYMLINK, support.TESTFN)
|
Merged revisions 76847,76851,76869,76882,76891-76892,76924,77007,77070,77092,77096,77120,77126,77155 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r76847 | benjamin.peterson | 2009-12-14 21:25:27 -0600 (Mon, 14 Dec 2009) | 1 line
adverb
........
r76851 | benjamin.peterson | 2009-12-15 21:28:52 -0600 (Tue, 15 Dec 2009) | 1 line
remove lib2to3 resource
........
r76869 | vinay.sajip | 2009-12-17 08:52:00 -0600 (Thu, 17 Dec 2009) | 1 line
Issue #7529: logging: Minor correction to documentation.
........
r76882 | georg.brandl | 2009-12-19 11:30:28 -0600 (Sat, 19 Dec 2009) | 1 line
#7527: use standard versionadded tags.
........
r76891 | georg.brandl | 2009-12-19 12:16:31 -0600 (Sat, 19 Dec 2009) | 1 line
#7479: add note about function availability on Unices.
........
r76892 | georg.brandl | 2009-12-19 12:20:18 -0600 (Sat, 19 Dec 2009) | 1 line
#7480: remove tautology.
........
r76924 | georg.brandl | 2009-12-20 08:28:05 -0600 (Sun, 20 Dec 2009) | 1 line
Small indentation fix.
........
r77007 | gregory.p.smith | 2009-12-23 03:31:11 -0600 (Wed, 23 Dec 2009) | 3 lines
Fix possible integer overflow in lchown and fchown functions. For issue1747858.
........
r77070 | amaury.forgeotdarc | 2009-12-27 14:06:44 -0600 (Sun, 27 Dec 2009) | 2 lines
Fix a typo in comment
........
r77092 | georg.brandl | 2009-12-28 02:48:24 -0600 (Mon, 28 Dec 2009) | 1 line
#7404: remove reference to non-existing example files.
........
r77096 | benjamin.peterson | 2009-12-28 14:51:17 -0600 (Mon, 28 Dec 2009) | 1 line
document new fix_callable behavior
........
r77120 | georg.brandl | 2009-12-29 15:09:17 -0600 (Tue, 29 Dec 2009) | 1 line
#7595: fix typo in argument default constant.
........
r77126 | amaury.forgeotdarc | 2009-12-29 17:06:17 -0600 (Tue, 29 Dec 2009) | 2 lines
#7579: Add docstrings to the msvcrt module
........
r77155 | georg.brandl | 2009-12-30 13:03:00 -0600 (Wed, 30 Dec 2009) | 1 line
We only support Windows NT derivatives now.
........
2009-12-30 23:11:23 -04:00
|
|
|
self._test_all_chown_common(posix.lchown, support.TESTFN)
|
Merged revisions 61538-61540,61556,61559-61560,61563,61565,61571,61575-61576,61580-61582,61586,61591,61593,61595,61605-61606,61613-61616,61618,61621-61623,61625,61627,61631-61634 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61538 | steven.bethard | 2008-03-18 20:03:50 +0100 (Di, 18 Mär 2008) | 1 line
cell_compare needs to return -2 instead of NULL.
........
r61539 | steven.bethard | 2008-03-18 20:04:32 +0100 (Di, 18 Mär 2008) | 1 line
_have_soundcard() is a bad check for winsound.Beep, since you can have a soundcard but have the beep driver disabled. This revision basically disables the beep tests by wrapping them in a try/except. The Right Way To Do It is to come up with a _have_enabled_beep_driver() and use that.
........
r61540 | gregory.p.smith | 2008-03-18 20:05:32 +0100 (Di, 18 Mär 2008) | 8 lines
Fix chown on 64-bit linux. It needed to take a long (64-bit on 64bit linux) as
uid and gid input to accept values >=2**31 as valid while still accepting
negative numbers to pass -1 to chown for "no change".
Fixes issue1747858.
This should be backported to release25-maint.
........
r61556 | steven.bethard | 2008-03-18 20:59:14 +0100 (Di, 18 Mär 2008) | 1 line
Fix test_atexit so that it still passes when -3 is supplied. (It was catching the warning messages on stdio from using the reload() function.)
........
r61559 | neal.norwitz | 2008-03-18 21:30:38 +0100 (Di, 18 Mär 2008) | 1 line
Import the test properly. This is especially important for py3k.
........
r61560 | gregory.p.smith | 2008-03-18 21:40:01 +0100 (Di, 18 Mär 2008) | 2 lines
news entry for the chown fix
........
r61563 | brett.cannon | 2008-03-18 22:12:42 +0100 (Di, 18 Mär 2008) | 2 lines
Ignore BIG5HKSCS-2004.TXT which is downloaded as part of a test.
........
r61565 | steven.bethard | 2008-03-18 22:30:13 +0100 (Di, 18 Mär 2008) | 1 line
Have regrtest skip test_py3kwarn when the -3 flag is missing.
........
r61571 | gregory.p.smith | 2008-03-18 23:27:41 +0100 (Di, 18 Mär 2008) | 4 lines
Add a test to make sure zlib.crc32 and binascii.crc32 return the same thing.
Fix a buglet in binascii.crc32, the second optional argument could previously
have a signedness mismatch with the C variable its going into.
........
r61575 | raymond.hettinger | 2008-03-19 00:22:29 +0100 (Mi, 19 Mär 2008) | 1 line
Speed-up isinstance() for one easy case.
........
r61576 | raymond.hettinger | 2008-03-19 00:33:08 +0100 (Mi, 19 Mär 2008) | 1 line
Issue: 2354: Add 3K warning for the cmp argument to list.sort() and sorted().
........
r61580 | andrew.kuchling | 2008-03-19 02:05:35 +0100 (Mi, 19 Mär 2008) | 1 line
Add Jeff Rush
........
r61581 | gregory.p.smith | 2008-03-19 02:38:35 +0100 (Mi, 19 Mär 2008) | 3 lines
Mention that crc32 and adler32 are available in a different module (zlib).
Some people look for them in hashlib.
........
r61582 | gregory.p.smith | 2008-03-19 02:46:10 +0100 (Mi, 19 Mär 2008) | 3 lines
Use zlib's crc32 routine instead of binascii when available. zlib's is faster
when compiled properly optimized and about the same speed otherwise.
........
r61586 | david.wolever | 2008-03-19 03:26:57 +0100 (Mi, 19 Mär 2008) | 1 line
Added my name to ACKS
........
r61591 | gregory.p.smith | 2008-03-19 04:14:41 +0100 (Mi, 19 Mär 2008) | 5 lines
Fix the struct module DeprecationWarnings that zipfile was triggering by
removing all use of signed struct values.
test_zipfile and test_zipfile64 pass. no more warnings.
........
r61593 | raymond.hettinger | 2008-03-19 04:56:59 +0100 (Mi, 19 Mär 2008) | 1 line
Fix compiler warning.
........
r61595 | martin.v.loewis | 2008-03-19 05:39:13 +0100 (Mi, 19 Mär 2008) | 2 lines
Issue #2400: Allow relative imports to "import *".
........
r61605 | martin.v.loewis | 2008-03-19 07:00:28 +0100 (Mi, 19 Mär 2008) | 2 lines
Import relimport using a relative import.
........
r61606 | trent.nelson | 2008-03-19 07:28:24 +0100 (Mi, 19 Mär 2008) | 1 line
Issue2290: Support x64 Windows builds that live in pcbuild/amd64. Without it, sysutils._python_build() returns the wrong directory, which causes the test_get_config_h_filename method in Lib/distutils/tests/test_sysconfig.py to fail.
........
r61613 | trent.nelson | 2008-03-19 08:45:19 +0100 (Mi, 19 Mär 2008) | 3 lines
Refine the Visual Studio 2008 build solution in order to improve how we deal with external components, as well as fixing outstanding issues with Windows x64 build support. Introduce two new .vcproj files, _bsddb44.vcproj and sqlite3.vcproj, which replace the previous pre-link event scripts for _bsddb and _sqlite3 respectively. The new project files inherit from our property files as if they were any other Python module. This has numerous benefits. First, the components get built with exactly the same compiler flags and settings as the rest of Python. Second, it makes it much easier to debug problems in the external components when they're part of the build system. Third, they'll benefit from profile guided optimisation in the release builds, just like the rest of Python core.
I've also introduced a slightly new pattern for managing externals in subversion. New components get checked in as <name>-<version>.x, where <version> matches the exact vendor version string. After the initial import of the external component, the .x is tagged as .0 (i.e. tcl-8.4.18.x -> tcl-8.4.18.0). Some components may not need any tweaking, whereas there are others that might (tcl/tk fall into this bucket). In that case, the relevant modifications are made to the .x branch, which will be subsequently tagged as .1 (and then n+1 going forward) when they build successfully and all tests pass. Buildbots will be converted to rely on these explicit tags only, which makes it easy for us to switch them over to a new version as and when required. (Simple change to external(-amd64).bat: if we've bumped tcl to 8.4.18.1, change the .bat to rmdir 8.4.18.0 if it exists and check out a new .1 copy.)
........
r61614 | trent.nelson | 2008-03-19 08:56:39 +0100 (Mi, 19 Mär 2008) | 1 line
Remove extraneous apostrophe and semi-colon from AdditionalIncludeDirectories.
........
r61615 | georg.brandl | 2008-03-19 08:56:40 +0100 (Mi, 19 Mär 2008) | 2 lines
Remove footnote from versionchanged as it upsets LaTeX.
........
r61616 | georg.brandl | 2008-03-19 08:57:57 +0100 (Mi, 19 Mär 2008) | 2 lines
Another one.
........
r61618 | trent.nelson | 2008-03-19 09:06:03 +0100 (Mi, 19 Mär 2008) | 1 line
Fix the tcl-8.4.18.1 path and make sure we cd into the right directory when building tcl/tk.
........
r61621 | trent.nelson | 2008-03-19 10:23:08 +0100 (Mi, 19 Mär 2008) | 1 line
Lets have another try at getting the Windows buildbots in a consistent state before rebuilding using the new process.
........
r61622 | eric.smith | 2008-03-19 13:09:55 +0100 (Mi, 19 Mär 2008) | 2 lines
Use test.test_support.captured_stdout instead of a custom contextmanager.
Thanks Nick Coghlan.
........
r61623 | eric.smith | 2008-03-19 13:15:10 +0100 (Mi, 19 Mär 2008) | 1 line
Trivial typo.
........
r61625 | thomas.heller | 2008-03-19 17:10:57 +0100 (Mi, 19 Mär 2008) | 2 lines
Checkout sqlite-source when it is not there.
........
r61627 | brett.cannon | 2008-03-19 17:50:13 +0100 (Mi, 19 Mär 2008) | 5 lines
test_nis would fail if test.test_support.verbose was true but NIS was not set
up on the machine.
Closes issue2411. Thanks Michael Bishop.
........
r61631 | brett.cannon | 2008-03-19 18:37:43 +0100 (Mi, 19 Mär 2008) | 2 lines
Use sys.py3kwarning instead of trying to trigger a Py3k-related warning.
........
r61632 | raymond.hettinger | 2008-03-19 18:45:19 +0100 (Mi, 19 Mär 2008) | 1 line
Issue 2354: Fix-up compare warning. Patch contributed by Jeff Balogh.
........
r61633 | raymond.hettinger | 2008-03-19 18:58:59 +0100 (Mi, 19 Mär 2008) | 1 line
The filter() function does support a None argument in Py3.0.
........
r61634 | raymond.hettinger | 2008-03-19 19:01:58 +0100 (Mi, 19 Mär 2008) | 1 line
Remove itertools warnings I had added before the 2-to-3 handled the migration.
........
2008-03-19 18:50:51 -03:00
|
|
|
|
2003-02-17 14:17:05 -04:00
|
|
|
def test_chdir(self):
|
|
|
|
if hasattr(posix, 'chdir'):
|
|
|
|
posix.chdir(os.curdir)
|
2008-05-20 18:35:26 -03:00
|
|
|
self.assertRaises(OSError, posix.chdir, support.TESTFN)
|
2003-02-17 14:17:05 -04:00
|
|
|
|
2010-07-23 09:16:41 -03:00
|
|
|
def test_listdir(self):
|
|
|
|
if hasattr(posix, 'listdir'):
|
|
|
|
self.assertTrue(support.TESTFN in posix.listdir(os.curdir))
|
|
|
|
|
|
|
|
def test_listdir_default(self):
|
|
|
|
# When listdir is called without argument, it's the same as listdir(os.curdir)
|
|
|
|
if hasattr(posix, 'listdir'):
|
|
|
|
self.assertTrue(support.TESTFN in posix.listdir())
|
2003-02-17 14:17:05 -04:00
|
|
|
|
2011-02-25 19:41:16 -04:00
|
|
|
@unittest.skipUnless(hasattr(posix, 'fdlistdir'), "test needs posix.fdlistdir()")
|
|
|
|
def test_fdlistdir(self):
|
|
|
|
f = posix.open(posix.getcwd(), posix.O_RDONLY)
|
|
|
|
self.assertEqual(
|
|
|
|
sorted(posix.listdir('.')),
|
|
|
|
sorted(posix.fdlistdir(f))
|
|
|
|
)
|
|
|
|
# Check the fd was closed by fdlistdir
|
|
|
|
with self.assertRaises(OSError) as ctx:
|
|
|
|
posix.close(f)
|
|
|
|
self.assertEqual(ctx.exception.errno, errno.EBADF)
|
|
|
|
|
2003-02-17 14:17:05 -04:00
|
|
|
def test_access(self):
|
|
|
|
if hasattr(posix, 'access'):
|
2009-06-30 20:06:06 -03:00
|
|
|
self.assertTrue(posix.access(support.TESTFN, os.R_OK))
|
2003-02-17 14:17:05 -04:00
|
|
|
|
|
|
|
def test_umask(self):
|
|
|
|
if hasattr(posix, 'umask'):
|
|
|
|
old_mask = posix.umask(0)
|
2010-01-24 15:26:24 -04:00
|
|
|
self.assertIsInstance(old_mask, int)
|
2003-02-17 14:17:05 -04:00
|
|
|
posix.umask(old_mask)
|
|
|
|
|
|
|
|
def test_strerror(self):
|
|
|
|
if hasattr(posix, 'strerror'):
|
2009-06-30 20:06:06 -03:00
|
|
|
self.assertTrue(posix.strerror(0))
|
2003-02-17 14:17:05 -04:00
|
|
|
|
|
|
|
def test_pipe(self):
|
|
|
|
if hasattr(posix, 'pipe'):
|
|
|
|
reader, writer = posix.pipe()
|
|
|
|
os.close(reader)
|
|
|
|
os.close(writer)
|
|
|
|
|
2011-05-29 15:07:40 -03:00
|
|
|
@unittest.skipUnless(hasattr(os, 'pipe2'), "test needs os.pipe2()")
|
2011-06-03 07:55:15 -03:00
|
|
|
@support.requires_linux_version(2, 6, 27)
|
2011-05-29 15:07:40 -03:00
|
|
|
def test_pipe2(self):
|
|
|
|
self.assertRaises(TypeError, os.pipe2, 'DEADBEEF')
|
|
|
|
self.assertRaises(TypeError, os.pipe2, 0, 0)
|
|
|
|
|
2011-06-06 14:49:47 -03:00
|
|
|
# try calling with flags = 0, like os.pipe()
|
|
|
|
r, w = os.pipe2(0)
|
2011-05-29 15:07:40 -03:00
|
|
|
os.close(r)
|
|
|
|
os.close(w)
|
|
|
|
|
|
|
|
# test flags
|
|
|
|
r, w = os.pipe2(os.O_CLOEXEC|os.O_NONBLOCK)
|
|
|
|
self.addCleanup(os.close, r)
|
|
|
|
self.addCleanup(os.close, w)
|
|
|
|
self.assertTrue(fcntl.fcntl(r, fcntl.F_GETFD) & fcntl.FD_CLOEXEC)
|
|
|
|
self.assertTrue(fcntl.fcntl(w, fcntl.F_GETFD) & fcntl.FD_CLOEXEC)
|
|
|
|
# try reading from an empty pipe: this should fail, not block
|
|
|
|
self.assertRaises(OSError, os.read, r, 1)
|
|
|
|
# try a write big enough to fill-up the pipe: this should either
|
|
|
|
# fail or perform a partial write, not block
|
|
|
|
try:
|
|
|
|
os.write(w, b'x' * support.PIPE_MAX_SIZE)
|
|
|
|
except OSError:
|
|
|
|
pass
|
|
|
|
|
2003-02-17 14:17:05 -04:00
|
|
|
def test_utime(self):
|
|
|
|
if hasattr(posix, 'utime'):
|
|
|
|
now = time.time()
|
2008-05-20 18:35:26 -03:00
|
|
|
posix.utime(support.TESTFN, None)
|
|
|
|
self.assertRaises(TypeError, posix.utime, support.TESTFN, (None, None))
|
|
|
|
self.assertRaises(TypeError, posix.utime, support.TESTFN, (now, None))
|
|
|
|
self.assertRaises(TypeError, posix.utime, support.TESTFN, (None, now))
|
|
|
|
posix.utime(support.TESTFN, (int(now), int(now)))
|
|
|
|
posix.utime(support.TESTFN, (now, now))
|
2003-02-17 14:17:05 -04:00
|
|
|
|
2011-06-28 04:00:28 -03:00
|
|
|
def _test_chflags_regular_file(self, chflags_func, target_file):
|
|
|
|
st = os.stat(target_file)
|
|
|
|
self.assertTrue(hasattr(st, 'st_flags'))
|
|
|
|
chflags_func(target_file, st.st_flags | stat.UF_IMMUTABLE)
|
|
|
|
try:
|
|
|
|
new_st = os.stat(target_file)
|
|
|
|
self.assertEqual(st.st_flags | stat.UF_IMMUTABLE, new_st.st_flags)
|
|
|
|
try:
|
|
|
|
fd = open(target_file, 'w+')
|
|
|
|
except IOError as e:
|
|
|
|
self.assertEqual(e.errno, errno.EPERM)
|
|
|
|
finally:
|
|
|
|
posix.chflags(target_file, st.st_flags)
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'chflags'), 'test needs os.chflags()')
|
Merged revisions 53623-53858 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r53624 | peter.astrand | 2007-02-02 20:06:36 +0100 (Fri, 02 Feb 2007) | 1 line
We had several if statements checking the value of a fd. This is unsafe, since valid fds might be zero. We should check for not None instead.
........
r53635 | kurt.kaiser | 2007-02-05 07:03:18 +0100 (Mon, 05 Feb 2007) | 2 lines
Add 'raw' support to configHandler. Patch 1650174 Tal Einat.
........
r53641 | kurt.kaiser | 2007-02-06 00:02:16 +0100 (Tue, 06 Feb 2007) | 5 lines
1. Calltips now 'handle' tuples in the argument list (display '<tuple>' :)
Suggested solution by Christos Georgiou, Bug 791968.
2. Clean up tests, were not failing when they should have been.
4. Remove some camelcase and an unneeded try/except block.
........
r53644 | kurt.kaiser | 2007-02-06 04:21:40 +0100 (Tue, 06 Feb 2007) | 2 lines
Clean up ModifiedInterpreter.runcode() structure
........
r53646 | peter.astrand | 2007-02-06 16:37:50 +0100 (Tue, 06 Feb 2007) | 1 line
Applied patch 1124861.3.patch to solve bug #1124861: Automatically create pipes on Windows, if GetStdHandle fails. Will backport.
........
r53648 | lars.gustaebel | 2007-02-06 19:38:13 +0100 (Tue, 06 Feb 2007) | 4 lines
Patch #1652681: create nonexistent files in append mode and
allow appending to empty files.
........
r53649 | kurt.kaiser | 2007-02-06 20:09:43 +0100 (Tue, 06 Feb 2007) | 4 lines
Updated patch (CodeContext.061217.patch) to
[ 1362975 ] CodeContext - Improved text indentation
Tal Einat 16Dec06
........
r53650 | kurt.kaiser | 2007-02-06 20:21:19 +0100 (Tue, 06 Feb 2007) | 2 lines
narrow exception per [ 1540849 ] except too broad
........
r53653 | kurt.kaiser | 2007-02-07 04:39:41 +0100 (Wed, 07 Feb 2007) | 4 lines
[ 1621265 ] Auto-completion list placement
Move AC window below input line unless not enough space, then put it above.
Patch: Tal Einat
........
r53654 | kurt.kaiser | 2007-02-07 09:07:13 +0100 (Wed, 07 Feb 2007) | 2 lines
Handle AttributeError during calltip lookup
........
r53656 | raymond.hettinger | 2007-02-07 21:08:22 +0100 (Wed, 07 Feb 2007) | 3 lines
SF #1615701: make d.update(m) honor __getitem__() and keys() in dict subclasses
........
r53658 | raymond.hettinger | 2007-02-07 22:04:20 +0100 (Wed, 07 Feb 2007) | 1 line
SF: 1397711 Set docs conflated immutable and hashable
........
r53660 | raymond.hettinger | 2007-02-07 22:42:17 +0100 (Wed, 07 Feb 2007) | 1 line
Check for a common user error with defaultdict().
........
r53662 | raymond.hettinger | 2007-02-07 23:24:07 +0100 (Wed, 07 Feb 2007) | 1 line
Bug #1575169: operator.isSequenceType() now returns False for subclasses of dict.
........
r53664 | raymond.hettinger | 2007-02-08 00:49:03 +0100 (Thu, 08 Feb 2007) | 1 line
Silence compiler warning
........
r53666 | raymond.hettinger | 2007-02-08 01:07:32 +0100 (Thu, 08 Feb 2007) | 1 line
Do not let overflows in enumerate() and count() pass silently.
........
r53668 | raymond.hettinger | 2007-02-08 01:50:39 +0100 (Thu, 08 Feb 2007) | 1 line
Bypass set specific optimizations for set and frozenset subclasses.
........
r53670 | raymond.hettinger | 2007-02-08 02:42:35 +0100 (Thu, 08 Feb 2007) | 1 line
Fix docstring bug
........
r53671 | martin.v.loewis | 2007-02-08 10:13:36 +0100 (Thu, 08 Feb 2007) | 3 lines
Bug #1653736: Complain about keyword arguments to time.isoformat.
Will backport to 2.5.
........
r53679 | kurt.kaiser | 2007-02-08 23:58:18 +0100 (Thu, 08 Feb 2007) | 6 lines
Corrected some bugs in AutoComplete. Also, Page Up/Down in ACW implemented;
mouse and cursor selection in ACWindow implemented; double Tab inserts current
selection and closes ACW (similar to double-click and Return); scroll wheel now
works in ACW. Added AutoComplete instructions to IDLE Help.
........
r53689 | martin.v.loewis | 2007-02-09 13:19:32 +0100 (Fri, 09 Feb 2007) | 3 lines
Bug #1653736: Properly discard third argument to slot_nb_inplace_power.
Will backport.
........
r53691 | martin.v.loewis | 2007-02-09 13:36:48 +0100 (Fri, 09 Feb 2007) | 4 lines
Bug #1600860: Search for shared python library in LIBDIR, not
lib/python/config, on "linux" and "gnu" systems.
Will backport.
........
r53693 | martin.v.loewis | 2007-02-09 13:58:49 +0100 (Fri, 09 Feb 2007) | 2 lines
Update broken link. Will backport to 2.5.
........
r53697 | georg.brandl | 2007-02-09 19:48:41 +0100 (Fri, 09 Feb 2007) | 2 lines
Bug #1656078: typo in in profile docs.
........
r53731 | brett.cannon | 2007-02-11 06:36:00 +0100 (Sun, 11 Feb 2007) | 3 lines
Change a very minor inconsistency (that is purely cosmetic) in the AST
definition.
........
r53735 | skip.montanaro | 2007-02-11 19:24:37 +0100 (Sun, 11 Feb 2007) | 1 line
fix trace.py --ignore-dir
........
r53741 | brett.cannon | 2007-02-11 20:44:41 +0100 (Sun, 11 Feb 2007) | 3 lines
Check in changed Python-ast.c from a cosmetic change to Python.asdl (in
r53731).
........
r53751 | brett.cannon | 2007-02-12 04:51:02 +0100 (Mon, 12 Feb 2007) | 5 lines
Modify Parser/asdl_c.py so that the __version__ number for Python/Python-ast.c
is specified at the top of the file. Also add a note that Python/Python-ast.c
needs to be committed separately after a change to the AST grammar to capture
the revision number of the change (which is what __version__ is set to).
........
r53752 | lars.gustaebel | 2007-02-12 10:25:53 +0100 (Mon, 12 Feb 2007) | 3 lines
Bug #1656581: Point out that external file objects are supposed to be
at position 0.
........
r53754 | martin.v.loewis | 2007-02-12 13:21:10 +0100 (Mon, 12 Feb 2007) | 3 lines
Patch 1463026: Support default namespace in XMLGenerator.
Fixes #847665. Will backport.
........
r53757 | armin.rigo | 2007-02-12 17:23:24 +0100 (Mon, 12 Feb 2007) | 4 lines
Fix the line to what is my guess at the original author's meaning.
(The line has no effect anyway, but is present because it's
customary call the base class __init__).
........
r53763 | martin.v.loewis | 2007-02-13 09:34:45 +0100 (Tue, 13 Feb 2007) | 3 lines
Patch #685268: Consider a package's __path__ in imputil.
Will backport.
........
r53765 | martin.v.loewis | 2007-02-13 10:49:38 +0100 (Tue, 13 Feb 2007) | 2 lines
Patch #698833: Support file decryption in zipfile.
........
r53766 | martin.v.loewis | 2007-02-13 11:10:39 +0100 (Tue, 13 Feb 2007) | 3 lines
Patch #1517891: Make 'a' create the file if it doesn't exist.
Fixes #1514451.
........
r53767 | martin.v.loewis | 2007-02-13 13:08:24 +0100 (Tue, 13 Feb 2007) | 3 lines
Bug #1658794: Remove extraneous 'this'.
Will backport to 2.5.
........
r53769 | martin.v.loewis | 2007-02-13 13:14:19 +0100 (Tue, 13 Feb 2007) | 3 lines
Patch #1657276: Make NETLINK_DNRTMSG conditional.
Will backport.
........
r53771 | lars.gustaebel | 2007-02-13 17:09:24 +0100 (Tue, 13 Feb 2007) | 4 lines
Patch #1647484: Renamed GzipFile's filename attribute to name. The
filename attribute is still accessible as a property that emits a
DeprecationWarning.
........
r53772 | lars.gustaebel | 2007-02-13 17:24:00 +0100 (Tue, 13 Feb 2007) | 3 lines
Strip the '.gz' extension from the filename that is written to the
gzip header.
........
r53774 | martin.v.loewis | 2007-02-14 11:07:37 +0100 (Wed, 14 Feb 2007) | 2 lines
Patch #1432399: Add HCI sockets.
........
r53775 | martin.v.loewis | 2007-02-14 12:30:07 +0100 (Wed, 14 Feb 2007) | 2 lines
Update 1432399 to removal of _BT_SOCKADDR_MEMB.
........
r53776 | martin.v.loewis | 2007-02-14 12:30:56 +0100 (Wed, 14 Feb 2007) | 3 lines
Ignore directory time stamps when considering
whether to rerun libffi configure.
........
r53778 | lars.gustaebel | 2007-02-14 15:45:12 +0100 (Wed, 14 Feb 2007) | 4 lines
A missing binary mode in AppendTest caused failures in Windows
Buildbot.
........
r53782 | martin.v.loewis | 2007-02-15 10:51:35 +0100 (Thu, 15 Feb 2007) | 2 lines
Patch #1397848: add the reasoning behind no-resize-on-shrinkage.
........
r53783 | georg.brandl | 2007-02-15 11:37:59 +0100 (Thu, 15 Feb 2007) | 2 lines
Make functools.wraps() docs a bit clearer.
........
r53785 | georg.brandl | 2007-02-15 12:29:04 +0100 (Thu, 15 Feb 2007) | 2 lines
Patch #1494140: Add documentation for the new struct.Struct object.
........
r53787 | georg.brandl | 2007-02-15 12:29:55 +0100 (Thu, 15 Feb 2007) | 2 lines
Add missing \versionadded.
........
r53800 | brett.cannon | 2007-02-15 23:54:39 +0100 (Thu, 15 Feb 2007) | 11 lines
Update the encoding package's search function to use absolute imports when
calling __import__. This helps make the expected search locations for encoding
modules be more explicit.
One could use an explicit value for __path__ when making the call to __import__
to force the exact location searched for encodings. This would give the most
strict search path possible if one is worried about malicious code being
imported. The unfortunate side-effect of that is that if __path__ was modified
on 'encodings' on purpose in a safe way it would not be picked up in future
__import__ calls.
........
r53801 | brett.cannon | 2007-02-16 20:33:01 +0100 (Fri, 16 Feb 2007) | 2 lines
Make the __import__ call in encodings.__init__ absolute with a level 0 call.
........
r53809 | vinay.sajip | 2007-02-16 23:36:24 +0100 (Fri, 16 Feb 2007) | 1 line
Minor fix for currentframe (SF #1652788).
........
r53818 | raymond.hettinger | 2007-02-19 03:03:19 +0100 (Mon, 19 Feb 2007) | 3 lines
Extend work on revision 52962: Eliminate redundant calls to PyObject_Hash().
........
r53820 | raymond.hettinger | 2007-02-19 05:08:43 +0100 (Mon, 19 Feb 2007) | 1 line
Add merge() function to heapq.
........
r53821 | raymond.hettinger | 2007-02-19 06:28:28 +0100 (Mon, 19 Feb 2007) | 1 line
Add tie-breaker count to preserve sort stability.
........
r53822 | raymond.hettinger | 2007-02-19 07:59:32 +0100 (Mon, 19 Feb 2007) | 1 line
Use C heapreplace() instead of slower _siftup() in pure python.
........
r53823 | raymond.hettinger | 2007-02-19 08:30:21 +0100 (Mon, 19 Feb 2007) | 1 line
Add test for merge stability
........
r53824 | raymond.hettinger | 2007-02-19 10:14:10 +0100 (Mon, 19 Feb 2007) | 1 line
Provide an example of defaultdict with non-zero constant factory function.
........
r53825 | lars.gustaebel | 2007-02-19 10:54:47 +0100 (Mon, 19 Feb 2007) | 2 lines
Moved misplaced news item.
........
r53826 | martin.v.loewis | 2007-02-19 11:55:19 +0100 (Mon, 19 Feb 2007) | 3 lines
Patch #1490190: posixmodule now includes os.chflags() and os.lchflags()
functions on platforms where the underlying system calls are available.
........
r53827 | raymond.hettinger | 2007-02-19 19:15:04 +0100 (Mon, 19 Feb 2007) | 1 line
Fixup docstrings for merge().
........
r53829 | raymond.hettinger | 2007-02-19 21:44:04 +0100 (Mon, 19 Feb 2007) | 1 line
Fixup set/dict interoperability.
........
r53837 | raymond.hettinger | 2007-02-21 06:20:38 +0100 (Wed, 21 Feb 2007) | 1 line
Add itertools.izip_longest().
........
r53838 | raymond.hettinger | 2007-02-21 18:22:05 +0100 (Wed, 21 Feb 2007) | 1 line
Remove filler struct item and fix leak.
........
2007-02-23 11:07:44 -04:00
|
|
|
def test_chflags(self):
|
2011-06-28 04:00:28 -03:00
|
|
|
self._test_chflags_regular_file(posix.chflags, support.TESTFN)
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'lchflags'), 'test needs os.lchflags()')
|
|
|
|
def test_lchflags_regular_file(self):
|
|
|
|
self._test_chflags_regular_file(posix.lchflags, support.TESTFN)
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'lchflags'), 'test needs os.lchflags()')
|
|
|
|
def test_lchflags_symlink(self):
|
|
|
|
testfn_st = os.stat(support.TESTFN)
|
|
|
|
|
|
|
|
self.assertTrue(hasattr(testfn_st, 'st_flags'))
|
|
|
|
|
|
|
|
os.symlink(support.TESTFN, _DUMMY_SYMLINK)
|
|
|
|
self.teardown_files.append(_DUMMY_SYMLINK)
|
|
|
|
dummy_symlink_st = os.lstat(_DUMMY_SYMLINK)
|
|
|
|
|
|
|
|
posix.lchflags(_DUMMY_SYMLINK,
|
|
|
|
dummy_symlink_st.st_flags | stat.UF_IMMUTABLE)
|
|
|
|
try:
|
|
|
|
new_testfn_st = os.stat(support.TESTFN)
|
|
|
|
new_dummy_symlink_st = os.lstat(_DUMMY_SYMLINK)
|
|
|
|
|
|
|
|
self.assertEqual(testfn_st.st_flags, new_testfn_st.st_flags)
|
|
|
|
self.assertEqual(dummy_symlink_st.st_flags | stat.UF_IMMUTABLE,
|
|
|
|
new_dummy_symlink_st.st_flags)
|
|
|
|
finally:
|
|
|
|
posix.lchflags(_DUMMY_SYMLINK, dummy_symlink_st.st_flags)
|
Merged revisions 53623-53858 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r53624 | peter.astrand | 2007-02-02 20:06:36 +0100 (Fri, 02 Feb 2007) | 1 line
We had several if statements checking the value of a fd. This is unsafe, since valid fds might be zero. We should check for not None instead.
........
r53635 | kurt.kaiser | 2007-02-05 07:03:18 +0100 (Mon, 05 Feb 2007) | 2 lines
Add 'raw' support to configHandler. Patch 1650174 Tal Einat.
........
r53641 | kurt.kaiser | 2007-02-06 00:02:16 +0100 (Tue, 06 Feb 2007) | 5 lines
1. Calltips now 'handle' tuples in the argument list (display '<tuple>' :)
Suggested solution by Christos Georgiou, Bug 791968.
2. Clean up tests, were not failing when they should have been.
4. Remove some camelcase and an unneeded try/except block.
........
r53644 | kurt.kaiser | 2007-02-06 04:21:40 +0100 (Tue, 06 Feb 2007) | 2 lines
Clean up ModifiedInterpreter.runcode() structure
........
r53646 | peter.astrand | 2007-02-06 16:37:50 +0100 (Tue, 06 Feb 2007) | 1 line
Applied patch 1124861.3.patch to solve bug #1124861: Automatically create pipes on Windows, if GetStdHandle fails. Will backport.
........
r53648 | lars.gustaebel | 2007-02-06 19:38:13 +0100 (Tue, 06 Feb 2007) | 4 lines
Patch #1652681: create nonexistent files in append mode and
allow appending to empty files.
........
r53649 | kurt.kaiser | 2007-02-06 20:09:43 +0100 (Tue, 06 Feb 2007) | 4 lines
Updated patch (CodeContext.061217.patch) to
[ 1362975 ] CodeContext - Improved text indentation
Tal Einat 16Dec06
........
r53650 | kurt.kaiser | 2007-02-06 20:21:19 +0100 (Tue, 06 Feb 2007) | 2 lines
narrow exception per [ 1540849 ] except too broad
........
r53653 | kurt.kaiser | 2007-02-07 04:39:41 +0100 (Wed, 07 Feb 2007) | 4 lines
[ 1621265 ] Auto-completion list placement
Move AC window below input line unless not enough space, then put it above.
Patch: Tal Einat
........
r53654 | kurt.kaiser | 2007-02-07 09:07:13 +0100 (Wed, 07 Feb 2007) | 2 lines
Handle AttributeError during calltip lookup
........
r53656 | raymond.hettinger | 2007-02-07 21:08:22 +0100 (Wed, 07 Feb 2007) | 3 lines
SF #1615701: make d.update(m) honor __getitem__() and keys() in dict subclasses
........
r53658 | raymond.hettinger | 2007-02-07 22:04:20 +0100 (Wed, 07 Feb 2007) | 1 line
SF: 1397711 Set docs conflated immutable and hashable
........
r53660 | raymond.hettinger | 2007-02-07 22:42:17 +0100 (Wed, 07 Feb 2007) | 1 line
Check for a common user error with defaultdict().
........
r53662 | raymond.hettinger | 2007-02-07 23:24:07 +0100 (Wed, 07 Feb 2007) | 1 line
Bug #1575169: operator.isSequenceType() now returns False for subclasses of dict.
........
r53664 | raymond.hettinger | 2007-02-08 00:49:03 +0100 (Thu, 08 Feb 2007) | 1 line
Silence compiler warning
........
r53666 | raymond.hettinger | 2007-02-08 01:07:32 +0100 (Thu, 08 Feb 2007) | 1 line
Do not let overflows in enumerate() and count() pass silently.
........
r53668 | raymond.hettinger | 2007-02-08 01:50:39 +0100 (Thu, 08 Feb 2007) | 1 line
Bypass set specific optimizations for set and frozenset subclasses.
........
r53670 | raymond.hettinger | 2007-02-08 02:42:35 +0100 (Thu, 08 Feb 2007) | 1 line
Fix docstring bug
........
r53671 | martin.v.loewis | 2007-02-08 10:13:36 +0100 (Thu, 08 Feb 2007) | 3 lines
Bug #1653736: Complain about keyword arguments to time.isoformat.
Will backport to 2.5.
........
r53679 | kurt.kaiser | 2007-02-08 23:58:18 +0100 (Thu, 08 Feb 2007) | 6 lines
Corrected some bugs in AutoComplete. Also, Page Up/Down in ACW implemented;
mouse and cursor selection in ACWindow implemented; double Tab inserts current
selection and closes ACW (similar to double-click and Return); scroll wheel now
works in ACW. Added AutoComplete instructions to IDLE Help.
........
r53689 | martin.v.loewis | 2007-02-09 13:19:32 +0100 (Fri, 09 Feb 2007) | 3 lines
Bug #1653736: Properly discard third argument to slot_nb_inplace_power.
Will backport.
........
r53691 | martin.v.loewis | 2007-02-09 13:36:48 +0100 (Fri, 09 Feb 2007) | 4 lines
Bug #1600860: Search for shared python library in LIBDIR, not
lib/python/config, on "linux" and "gnu" systems.
Will backport.
........
r53693 | martin.v.loewis | 2007-02-09 13:58:49 +0100 (Fri, 09 Feb 2007) | 2 lines
Update broken link. Will backport to 2.5.
........
r53697 | georg.brandl | 2007-02-09 19:48:41 +0100 (Fri, 09 Feb 2007) | 2 lines
Bug #1656078: typo in in profile docs.
........
r53731 | brett.cannon | 2007-02-11 06:36:00 +0100 (Sun, 11 Feb 2007) | 3 lines
Change a very minor inconsistency (that is purely cosmetic) in the AST
definition.
........
r53735 | skip.montanaro | 2007-02-11 19:24:37 +0100 (Sun, 11 Feb 2007) | 1 line
fix trace.py --ignore-dir
........
r53741 | brett.cannon | 2007-02-11 20:44:41 +0100 (Sun, 11 Feb 2007) | 3 lines
Check in changed Python-ast.c from a cosmetic change to Python.asdl (in
r53731).
........
r53751 | brett.cannon | 2007-02-12 04:51:02 +0100 (Mon, 12 Feb 2007) | 5 lines
Modify Parser/asdl_c.py so that the __version__ number for Python/Python-ast.c
is specified at the top of the file. Also add a note that Python/Python-ast.c
needs to be committed separately after a change to the AST grammar to capture
the revision number of the change (which is what __version__ is set to).
........
r53752 | lars.gustaebel | 2007-02-12 10:25:53 +0100 (Mon, 12 Feb 2007) | 3 lines
Bug #1656581: Point out that external file objects are supposed to be
at position 0.
........
r53754 | martin.v.loewis | 2007-02-12 13:21:10 +0100 (Mon, 12 Feb 2007) | 3 lines
Patch 1463026: Support default namespace in XMLGenerator.
Fixes #847665. Will backport.
........
r53757 | armin.rigo | 2007-02-12 17:23:24 +0100 (Mon, 12 Feb 2007) | 4 lines
Fix the line to what is my guess at the original author's meaning.
(The line has no effect anyway, but is present because it's
customary call the base class __init__).
........
r53763 | martin.v.loewis | 2007-02-13 09:34:45 +0100 (Tue, 13 Feb 2007) | 3 lines
Patch #685268: Consider a package's __path__ in imputil.
Will backport.
........
r53765 | martin.v.loewis | 2007-02-13 10:49:38 +0100 (Tue, 13 Feb 2007) | 2 lines
Patch #698833: Support file decryption in zipfile.
........
r53766 | martin.v.loewis | 2007-02-13 11:10:39 +0100 (Tue, 13 Feb 2007) | 3 lines
Patch #1517891: Make 'a' create the file if it doesn't exist.
Fixes #1514451.
........
r53767 | martin.v.loewis | 2007-02-13 13:08:24 +0100 (Tue, 13 Feb 2007) | 3 lines
Bug #1658794: Remove extraneous 'this'.
Will backport to 2.5.
........
r53769 | martin.v.loewis | 2007-02-13 13:14:19 +0100 (Tue, 13 Feb 2007) | 3 lines
Patch #1657276: Make NETLINK_DNRTMSG conditional.
Will backport.
........
r53771 | lars.gustaebel | 2007-02-13 17:09:24 +0100 (Tue, 13 Feb 2007) | 4 lines
Patch #1647484: Renamed GzipFile's filename attribute to name. The
filename attribute is still accessible as a property that emits a
DeprecationWarning.
........
r53772 | lars.gustaebel | 2007-02-13 17:24:00 +0100 (Tue, 13 Feb 2007) | 3 lines
Strip the '.gz' extension from the filename that is written to the
gzip header.
........
r53774 | martin.v.loewis | 2007-02-14 11:07:37 +0100 (Wed, 14 Feb 2007) | 2 lines
Patch #1432399: Add HCI sockets.
........
r53775 | martin.v.loewis | 2007-02-14 12:30:07 +0100 (Wed, 14 Feb 2007) | 2 lines
Update 1432399 to removal of _BT_SOCKADDR_MEMB.
........
r53776 | martin.v.loewis | 2007-02-14 12:30:56 +0100 (Wed, 14 Feb 2007) | 3 lines
Ignore directory time stamps when considering
whether to rerun libffi configure.
........
r53778 | lars.gustaebel | 2007-02-14 15:45:12 +0100 (Wed, 14 Feb 2007) | 4 lines
A missing binary mode in AppendTest caused failures in Windows
Buildbot.
........
r53782 | martin.v.loewis | 2007-02-15 10:51:35 +0100 (Thu, 15 Feb 2007) | 2 lines
Patch #1397848: add the reasoning behind no-resize-on-shrinkage.
........
r53783 | georg.brandl | 2007-02-15 11:37:59 +0100 (Thu, 15 Feb 2007) | 2 lines
Make functools.wraps() docs a bit clearer.
........
r53785 | georg.brandl | 2007-02-15 12:29:04 +0100 (Thu, 15 Feb 2007) | 2 lines
Patch #1494140: Add documentation for the new struct.Struct object.
........
r53787 | georg.brandl | 2007-02-15 12:29:55 +0100 (Thu, 15 Feb 2007) | 2 lines
Add missing \versionadded.
........
r53800 | brett.cannon | 2007-02-15 23:54:39 +0100 (Thu, 15 Feb 2007) | 11 lines
Update the encoding package's search function to use absolute imports when
calling __import__. This helps make the expected search locations for encoding
modules be more explicit.
One could use an explicit value for __path__ when making the call to __import__
to force the exact location searched for encodings. This would give the most
strict search path possible if one is worried about malicious code being
imported. The unfortunate side-effect of that is that if __path__ was modified
on 'encodings' on purpose in a safe way it would not be picked up in future
__import__ calls.
........
r53801 | brett.cannon | 2007-02-16 20:33:01 +0100 (Fri, 16 Feb 2007) | 2 lines
Make the __import__ call in encodings.__init__ absolute with a level 0 call.
........
r53809 | vinay.sajip | 2007-02-16 23:36:24 +0100 (Fri, 16 Feb 2007) | 1 line
Minor fix for currentframe (SF #1652788).
........
r53818 | raymond.hettinger | 2007-02-19 03:03:19 +0100 (Mon, 19 Feb 2007) | 3 lines
Extend work on revision 52962: Eliminate redundant calls to PyObject_Hash().
........
r53820 | raymond.hettinger | 2007-02-19 05:08:43 +0100 (Mon, 19 Feb 2007) | 1 line
Add merge() function to heapq.
........
r53821 | raymond.hettinger | 2007-02-19 06:28:28 +0100 (Mon, 19 Feb 2007) | 1 line
Add tie-breaker count to preserve sort stability.
........
r53822 | raymond.hettinger | 2007-02-19 07:59:32 +0100 (Mon, 19 Feb 2007) | 1 line
Use C heapreplace() instead of slower _siftup() in pure python.
........
r53823 | raymond.hettinger | 2007-02-19 08:30:21 +0100 (Mon, 19 Feb 2007) | 1 line
Add test for merge stability
........
r53824 | raymond.hettinger | 2007-02-19 10:14:10 +0100 (Mon, 19 Feb 2007) | 1 line
Provide an example of defaultdict with non-zero constant factory function.
........
r53825 | lars.gustaebel | 2007-02-19 10:54:47 +0100 (Mon, 19 Feb 2007) | 2 lines
Moved misplaced news item.
........
r53826 | martin.v.loewis | 2007-02-19 11:55:19 +0100 (Mon, 19 Feb 2007) | 3 lines
Patch #1490190: posixmodule now includes os.chflags() and os.lchflags()
functions on platforms where the underlying system calls are available.
........
r53827 | raymond.hettinger | 2007-02-19 19:15:04 +0100 (Mon, 19 Feb 2007) | 1 line
Fixup docstrings for merge().
........
r53829 | raymond.hettinger | 2007-02-19 21:44:04 +0100 (Mon, 19 Feb 2007) | 1 line
Fixup set/dict interoperability.
........
r53837 | raymond.hettinger | 2007-02-21 06:20:38 +0100 (Wed, 21 Feb 2007) | 1 line
Add itertools.izip_longest().
........
r53838 | raymond.hettinger | 2007-02-21 18:22:05 +0100 (Wed, 21 Feb 2007) | 1 line
Remove filler struct item and fix leak.
........
2007-02-23 11:07:44 -04:00
|
|
|
|
2007-11-06 17:34:58 -04:00
|
|
|
def test_environ(self):
|
2010-05-06 19:19:30 -03:00
|
|
|
if os.name == "nt":
|
|
|
|
item_type = str
|
|
|
|
else:
|
|
|
|
item_type = bytes
|
2007-11-06 17:34:58 -04:00
|
|
|
for k, v in posix.environ.items():
|
2010-05-06 19:19:30 -03:00
|
|
|
self.assertEqual(type(k), item_type)
|
|
|
|
self.assertEqual(type(v), item_type)
|
2007-11-06 17:34:58 -04:00
|
|
|
|
Merged revisions 64434-64435,64440-64443,64445,64447-64448,64450,64452,64455,64461,64464,64466,64468 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r64434 | andrew.kuchling | 2008-06-20 18:13:58 -0500 (Fri, 20 Jun 2008) | 1 line
Remove request for e-mail; it's unlikely these classes will be saved
........
r64435 | andrew.kuchling | 2008-06-20 18:14:32 -0500 (Fri, 20 Jun 2008) | 1 line
Grammar fixes
........
r64440 | andrew.kuchling | 2008-06-21 08:29:12 -0500 (Sat, 21 Jun 2008) | 1 line
Docstring typo
........
r64441 | andrew.kuchling | 2008-06-21 08:47:20 -0500 (Sat, 21 Jun 2008) | 1 line
Use repr() for bad input strings; this makes the empty string or binary characters more visible
........
r64442 | andrew.kuchling | 2008-06-21 08:48:38 -0500 (Sat, 21 Jun 2008) | 1 line
Docstring correction
........
r64443 | georg.brandl | 2008-06-21 09:26:19 -0500 (Sat, 21 Jun 2008) | 2 lines
Documentation fix.
........
r64445 | facundo.batista | 2008-06-21 12:30:06 -0500 (Sat, 21 Jun 2008) | 3 lines
Reviewed and updated the documentation. Fixes #3017.
........
r64447 | facundo.batista | 2008-06-21 13:58:04 -0500 (Sat, 21 Jun 2008) | 6 lines
Now a from submitted via POST that also has a query string
will contain both FieldStorage and MiniFieldStorage items.
Fixes #1817.
........
r64448 | facundo.batista | 2008-06-21 14:48:19 -0500 (Sat, 21 Jun 2008) | 5 lines
In the deprecated functions I added an alert to review
specially a section of the subprocess documentation
that helps with the replacing of those functionss.
........
r64450 | georg.brandl | 2008-06-22 04:05:29 -0500 (Sun, 22 Jun 2008) | 2 lines
Turn section references into proper cross-references.
........
r64452 | facundo.batista | 2008-06-22 08:36:20 -0500 (Sun, 22 Jun 2008) | 5 lines
Issue #2722. Now the char buffer to support the path string has
not fixed length, it mallocs memory if needed. As a result, we
don't have a maximum for the getcwd() method.
........
r64455 | facundo.batista | 2008-06-22 10:27:10 -0500 (Sun, 22 Jun 2008) | 4 lines
Issue 3164. Small fix to don't repeat a comparation
without necessity.
........
r64461 | georg.brandl | 2008-06-22 13:11:52 -0500 (Sun, 22 Jun 2008) | 2 lines
#3085: Fix syntax error.
........
r64464 | georg.brandl | 2008-06-22 13:31:54 -0500 (Sun, 22 Jun 2008) | 2 lines
Expand docstrings of sqlite3 functions.
........
r64466 | georg.brandl | 2008-06-22 14:07:59 -0500 (Sun, 22 Jun 2008) | 2 lines
Write out "phi" consistently.
........
r64468 | facundo.batista | 2008-06-22 14:35:24 -0500 (Sun, 22 Jun 2008) | 4 lines
Just returning nothing instead of rising TestSkipped, because
it makes the test fail in the trunk.loewis-sun buildbot.
........
2008-07-02 14:30:14 -03:00
|
|
|
def test_getcwd_long_pathnames(self):
|
|
|
|
if hasattr(posix, 'getcwd'):
|
|
|
|
dirname = 'getcwd-test-directory-0123456789abcdef-01234567890abcdef'
|
|
|
|
curdir = os.getcwd()
|
|
|
|
base_path = os.path.abspath(support.TESTFN) + '.getcwd'
|
|
|
|
|
|
|
|
try:
|
|
|
|
os.mkdir(base_path)
|
|
|
|
os.chdir(base_path)
|
|
|
|
except:
|
Merged revisions 70554,70588-70589,70598,70605,70611-70621,70623-70624,70626-70627 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r70554 | benjamin.peterson | 2009-03-23 16:25:15 -0500 (Mon, 23 Mar 2009) | 1 line
complain when there's no last exception
........
r70588 | benjamin.peterson | 2009-03-24 17:56:32 -0500 (Tue, 24 Mar 2009) | 1 line
fix newline issue in test summary
........
r70589 | benjamin.peterson | 2009-03-24 18:07:07 -0500 (Tue, 24 Mar 2009) | 1 line
another style nit
........
r70598 | benjamin.peterson | 2009-03-25 16:24:04 -0500 (Wed, 25 Mar 2009) | 1 line
add shorthands for expected failures and unexpected success
........
r70605 | benjamin.peterson | 2009-03-26 11:32:23 -0500 (Thu, 26 Mar 2009) | 1 line
remove uneeded function
........
r70611 | benjamin.peterson | 2009-03-26 13:35:37 -0500 (Thu, 26 Mar 2009) | 1 line
add much better tests for python version information parsing
........
r70612 | benjamin.peterson | 2009-03-26 13:55:48 -0500 (Thu, 26 Mar 2009) | 1 line
more and more implementations now support sys.subversion
........
r70613 | benjamin.peterson | 2009-03-26 13:58:30 -0500 (Thu, 26 Mar 2009) | 1 line
roll old test in with new one
........
r70614 | benjamin.peterson | 2009-03-26 14:09:21 -0500 (Thu, 26 Mar 2009) | 1 line
add support for PyPy
........
r70615 | benjamin.peterson | 2009-03-26 14:58:18 -0500 (Thu, 26 Mar 2009) | 5 lines
add some useful utilities for skipping tests with unittest's new skipping ability
most significantly apply a modified portion of the patch from #4242 with
patches for skipping implementation details
........
r70616 | benjamin.peterson | 2009-03-26 15:05:50 -0500 (Thu, 26 Mar 2009) | 1 line
rename TestCase.skip() to skipTest() because it causes annoying problems with trial #5571
........
r70617 | benjamin.peterson | 2009-03-26 15:17:27 -0500 (Thu, 26 Mar 2009) | 1 line
apply the second part of #4242's patch; classify all the implementation details in test_descr
........
r70618 | benjamin.peterson | 2009-03-26 15:48:25 -0500 (Thu, 26 Mar 2009) | 1 line
remove test_support.TestSkipped and just use unittest.SkipTest
........
r70619 | benjamin.peterson | 2009-03-26 15:49:40 -0500 (Thu, 26 Mar 2009) | 1 line
fix naming
........
r70620 | benjamin.peterson | 2009-03-26 16:10:30 -0500 (Thu, 26 Mar 2009) | 1 line
fix incorrect auto-translation of TestSkipped -> unittest.SkipTest
........
r70621 | benjamin.peterson | 2009-03-26 16:11:16 -0500 (Thu, 26 Mar 2009) | 1 line
must pass argument to get expected behavior ;)
........
r70623 | benjamin.peterson | 2009-03-26 16:30:10 -0500 (Thu, 26 Mar 2009) | 1 line
add missing import
........
r70624 | benjamin.peterson | 2009-03-26 16:30:54 -0500 (Thu, 26 Mar 2009) | 1 line
** is required here
........
r70626 | benjamin.peterson | 2009-03-26 16:40:29 -0500 (Thu, 26 Mar 2009) | 1 line
update email tests to use SkipTest
........
r70627 | benjamin.peterson | 2009-03-26 16:44:43 -0500 (Thu, 26 Mar 2009) | 1 line
fix another name
........
2009-03-28 18:42:05 -03:00
|
|
|
# Just returning nothing instead of the SkipTest exception,
|
Merged revisions 64434-64435,64440-64443,64445,64447-64448,64450,64452,64455,64461,64464,64466,64468 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r64434 | andrew.kuchling | 2008-06-20 18:13:58 -0500 (Fri, 20 Jun 2008) | 1 line
Remove request for e-mail; it's unlikely these classes will be saved
........
r64435 | andrew.kuchling | 2008-06-20 18:14:32 -0500 (Fri, 20 Jun 2008) | 1 line
Grammar fixes
........
r64440 | andrew.kuchling | 2008-06-21 08:29:12 -0500 (Sat, 21 Jun 2008) | 1 line
Docstring typo
........
r64441 | andrew.kuchling | 2008-06-21 08:47:20 -0500 (Sat, 21 Jun 2008) | 1 line
Use repr() for bad input strings; this makes the empty string or binary characters more visible
........
r64442 | andrew.kuchling | 2008-06-21 08:48:38 -0500 (Sat, 21 Jun 2008) | 1 line
Docstring correction
........
r64443 | georg.brandl | 2008-06-21 09:26:19 -0500 (Sat, 21 Jun 2008) | 2 lines
Documentation fix.
........
r64445 | facundo.batista | 2008-06-21 12:30:06 -0500 (Sat, 21 Jun 2008) | 3 lines
Reviewed and updated the documentation. Fixes #3017.
........
r64447 | facundo.batista | 2008-06-21 13:58:04 -0500 (Sat, 21 Jun 2008) | 6 lines
Now a from submitted via POST that also has a query string
will contain both FieldStorage and MiniFieldStorage items.
Fixes #1817.
........
r64448 | facundo.batista | 2008-06-21 14:48:19 -0500 (Sat, 21 Jun 2008) | 5 lines
In the deprecated functions I added an alert to review
specially a section of the subprocess documentation
that helps with the replacing of those functionss.
........
r64450 | georg.brandl | 2008-06-22 04:05:29 -0500 (Sun, 22 Jun 2008) | 2 lines
Turn section references into proper cross-references.
........
r64452 | facundo.batista | 2008-06-22 08:36:20 -0500 (Sun, 22 Jun 2008) | 5 lines
Issue #2722. Now the char buffer to support the path string has
not fixed length, it mallocs memory if needed. As a result, we
don't have a maximum for the getcwd() method.
........
r64455 | facundo.batista | 2008-06-22 10:27:10 -0500 (Sun, 22 Jun 2008) | 4 lines
Issue 3164. Small fix to don't repeat a comparation
without necessity.
........
r64461 | georg.brandl | 2008-06-22 13:11:52 -0500 (Sun, 22 Jun 2008) | 2 lines
#3085: Fix syntax error.
........
r64464 | georg.brandl | 2008-06-22 13:31:54 -0500 (Sun, 22 Jun 2008) | 2 lines
Expand docstrings of sqlite3 functions.
........
r64466 | georg.brandl | 2008-06-22 14:07:59 -0500 (Sun, 22 Jun 2008) | 2 lines
Write out "phi" consistently.
........
r64468 | facundo.batista | 2008-06-22 14:35:24 -0500 (Sun, 22 Jun 2008) | 4 lines
Just returning nothing instead of rising TestSkipped, because
it makes the test fail in the trunk.loewis-sun buildbot.
........
2008-07-02 14:30:14 -03:00
|
|
|
# because the test results in Error in that case.
|
|
|
|
# Is that ok?
|
Merged revisions 70554,70588-70589,70598,70605,70611-70621,70623-70624,70626-70627 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r70554 | benjamin.peterson | 2009-03-23 16:25:15 -0500 (Mon, 23 Mar 2009) | 1 line
complain when there's no last exception
........
r70588 | benjamin.peterson | 2009-03-24 17:56:32 -0500 (Tue, 24 Mar 2009) | 1 line
fix newline issue in test summary
........
r70589 | benjamin.peterson | 2009-03-24 18:07:07 -0500 (Tue, 24 Mar 2009) | 1 line
another style nit
........
r70598 | benjamin.peterson | 2009-03-25 16:24:04 -0500 (Wed, 25 Mar 2009) | 1 line
add shorthands for expected failures and unexpected success
........
r70605 | benjamin.peterson | 2009-03-26 11:32:23 -0500 (Thu, 26 Mar 2009) | 1 line
remove uneeded function
........
r70611 | benjamin.peterson | 2009-03-26 13:35:37 -0500 (Thu, 26 Mar 2009) | 1 line
add much better tests for python version information parsing
........
r70612 | benjamin.peterson | 2009-03-26 13:55:48 -0500 (Thu, 26 Mar 2009) | 1 line
more and more implementations now support sys.subversion
........
r70613 | benjamin.peterson | 2009-03-26 13:58:30 -0500 (Thu, 26 Mar 2009) | 1 line
roll old test in with new one
........
r70614 | benjamin.peterson | 2009-03-26 14:09:21 -0500 (Thu, 26 Mar 2009) | 1 line
add support for PyPy
........
r70615 | benjamin.peterson | 2009-03-26 14:58:18 -0500 (Thu, 26 Mar 2009) | 5 lines
add some useful utilities for skipping tests with unittest's new skipping ability
most significantly apply a modified portion of the patch from #4242 with
patches for skipping implementation details
........
r70616 | benjamin.peterson | 2009-03-26 15:05:50 -0500 (Thu, 26 Mar 2009) | 1 line
rename TestCase.skip() to skipTest() because it causes annoying problems with trial #5571
........
r70617 | benjamin.peterson | 2009-03-26 15:17:27 -0500 (Thu, 26 Mar 2009) | 1 line
apply the second part of #4242's patch; classify all the implementation details in test_descr
........
r70618 | benjamin.peterson | 2009-03-26 15:48:25 -0500 (Thu, 26 Mar 2009) | 1 line
remove test_support.TestSkipped and just use unittest.SkipTest
........
r70619 | benjamin.peterson | 2009-03-26 15:49:40 -0500 (Thu, 26 Mar 2009) | 1 line
fix naming
........
r70620 | benjamin.peterson | 2009-03-26 16:10:30 -0500 (Thu, 26 Mar 2009) | 1 line
fix incorrect auto-translation of TestSkipped -> unittest.SkipTest
........
r70621 | benjamin.peterson | 2009-03-26 16:11:16 -0500 (Thu, 26 Mar 2009) | 1 line
must pass argument to get expected behavior ;)
........
r70623 | benjamin.peterson | 2009-03-26 16:30:10 -0500 (Thu, 26 Mar 2009) | 1 line
add missing import
........
r70624 | benjamin.peterson | 2009-03-26 16:30:54 -0500 (Thu, 26 Mar 2009) | 1 line
** is required here
........
r70626 | benjamin.peterson | 2009-03-26 16:40:29 -0500 (Thu, 26 Mar 2009) | 1 line
update email tests to use SkipTest
........
r70627 | benjamin.peterson | 2009-03-26 16:44:43 -0500 (Thu, 26 Mar 2009) | 1 line
fix another name
........
2009-03-28 18:42:05 -03:00
|
|
|
# raise unittest.SkipTest("cannot create directory for testing")
|
Merged revisions 64434-64435,64440-64443,64445,64447-64448,64450,64452,64455,64461,64464,64466,64468 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r64434 | andrew.kuchling | 2008-06-20 18:13:58 -0500 (Fri, 20 Jun 2008) | 1 line
Remove request for e-mail; it's unlikely these classes will be saved
........
r64435 | andrew.kuchling | 2008-06-20 18:14:32 -0500 (Fri, 20 Jun 2008) | 1 line
Grammar fixes
........
r64440 | andrew.kuchling | 2008-06-21 08:29:12 -0500 (Sat, 21 Jun 2008) | 1 line
Docstring typo
........
r64441 | andrew.kuchling | 2008-06-21 08:47:20 -0500 (Sat, 21 Jun 2008) | 1 line
Use repr() for bad input strings; this makes the empty string or binary characters more visible
........
r64442 | andrew.kuchling | 2008-06-21 08:48:38 -0500 (Sat, 21 Jun 2008) | 1 line
Docstring correction
........
r64443 | georg.brandl | 2008-06-21 09:26:19 -0500 (Sat, 21 Jun 2008) | 2 lines
Documentation fix.
........
r64445 | facundo.batista | 2008-06-21 12:30:06 -0500 (Sat, 21 Jun 2008) | 3 lines
Reviewed and updated the documentation. Fixes #3017.
........
r64447 | facundo.batista | 2008-06-21 13:58:04 -0500 (Sat, 21 Jun 2008) | 6 lines
Now a from submitted via POST that also has a query string
will contain both FieldStorage and MiniFieldStorage items.
Fixes #1817.
........
r64448 | facundo.batista | 2008-06-21 14:48:19 -0500 (Sat, 21 Jun 2008) | 5 lines
In the deprecated functions I added an alert to review
specially a section of the subprocess documentation
that helps with the replacing of those functionss.
........
r64450 | georg.brandl | 2008-06-22 04:05:29 -0500 (Sun, 22 Jun 2008) | 2 lines
Turn section references into proper cross-references.
........
r64452 | facundo.batista | 2008-06-22 08:36:20 -0500 (Sun, 22 Jun 2008) | 5 lines
Issue #2722. Now the char buffer to support the path string has
not fixed length, it mallocs memory if needed. As a result, we
don't have a maximum for the getcwd() method.
........
r64455 | facundo.batista | 2008-06-22 10:27:10 -0500 (Sun, 22 Jun 2008) | 4 lines
Issue 3164. Small fix to don't repeat a comparation
without necessity.
........
r64461 | georg.brandl | 2008-06-22 13:11:52 -0500 (Sun, 22 Jun 2008) | 2 lines
#3085: Fix syntax error.
........
r64464 | georg.brandl | 2008-06-22 13:31:54 -0500 (Sun, 22 Jun 2008) | 2 lines
Expand docstrings of sqlite3 functions.
........
r64466 | georg.brandl | 2008-06-22 14:07:59 -0500 (Sun, 22 Jun 2008) | 2 lines
Write out "phi" consistently.
........
r64468 | facundo.batista | 2008-06-22 14:35:24 -0500 (Sun, 22 Jun 2008) | 4 lines
Just returning nothing instead of rising TestSkipped, because
it makes the test fail in the trunk.loewis-sun buildbot.
........
2008-07-02 14:30:14 -03:00
|
|
|
return
|
|
|
|
|
|
|
|
def _create_and_do_getcwd(dirname, current_path_length = 0):
|
|
|
|
try:
|
|
|
|
os.mkdir(dirname)
|
|
|
|
except:
|
Merged revisions 70554,70588-70589,70598,70605,70611-70621,70623-70624,70626-70627 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r70554 | benjamin.peterson | 2009-03-23 16:25:15 -0500 (Mon, 23 Mar 2009) | 1 line
complain when there's no last exception
........
r70588 | benjamin.peterson | 2009-03-24 17:56:32 -0500 (Tue, 24 Mar 2009) | 1 line
fix newline issue in test summary
........
r70589 | benjamin.peterson | 2009-03-24 18:07:07 -0500 (Tue, 24 Mar 2009) | 1 line
another style nit
........
r70598 | benjamin.peterson | 2009-03-25 16:24:04 -0500 (Wed, 25 Mar 2009) | 1 line
add shorthands for expected failures and unexpected success
........
r70605 | benjamin.peterson | 2009-03-26 11:32:23 -0500 (Thu, 26 Mar 2009) | 1 line
remove uneeded function
........
r70611 | benjamin.peterson | 2009-03-26 13:35:37 -0500 (Thu, 26 Mar 2009) | 1 line
add much better tests for python version information parsing
........
r70612 | benjamin.peterson | 2009-03-26 13:55:48 -0500 (Thu, 26 Mar 2009) | 1 line
more and more implementations now support sys.subversion
........
r70613 | benjamin.peterson | 2009-03-26 13:58:30 -0500 (Thu, 26 Mar 2009) | 1 line
roll old test in with new one
........
r70614 | benjamin.peterson | 2009-03-26 14:09:21 -0500 (Thu, 26 Mar 2009) | 1 line
add support for PyPy
........
r70615 | benjamin.peterson | 2009-03-26 14:58:18 -0500 (Thu, 26 Mar 2009) | 5 lines
add some useful utilities for skipping tests with unittest's new skipping ability
most significantly apply a modified portion of the patch from #4242 with
patches for skipping implementation details
........
r70616 | benjamin.peterson | 2009-03-26 15:05:50 -0500 (Thu, 26 Mar 2009) | 1 line
rename TestCase.skip() to skipTest() because it causes annoying problems with trial #5571
........
r70617 | benjamin.peterson | 2009-03-26 15:17:27 -0500 (Thu, 26 Mar 2009) | 1 line
apply the second part of #4242's patch; classify all the implementation details in test_descr
........
r70618 | benjamin.peterson | 2009-03-26 15:48:25 -0500 (Thu, 26 Mar 2009) | 1 line
remove test_support.TestSkipped and just use unittest.SkipTest
........
r70619 | benjamin.peterson | 2009-03-26 15:49:40 -0500 (Thu, 26 Mar 2009) | 1 line
fix naming
........
r70620 | benjamin.peterson | 2009-03-26 16:10:30 -0500 (Thu, 26 Mar 2009) | 1 line
fix incorrect auto-translation of TestSkipped -> unittest.SkipTest
........
r70621 | benjamin.peterson | 2009-03-26 16:11:16 -0500 (Thu, 26 Mar 2009) | 1 line
must pass argument to get expected behavior ;)
........
r70623 | benjamin.peterson | 2009-03-26 16:30:10 -0500 (Thu, 26 Mar 2009) | 1 line
add missing import
........
r70624 | benjamin.peterson | 2009-03-26 16:30:54 -0500 (Thu, 26 Mar 2009) | 1 line
** is required here
........
r70626 | benjamin.peterson | 2009-03-26 16:40:29 -0500 (Thu, 26 Mar 2009) | 1 line
update email tests to use SkipTest
........
r70627 | benjamin.peterson | 2009-03-26 16:44:43 -0500 (Thu, 26 Mar 2009) | 1 line
fix another name
........
2009-03-28 18:42:05 -03:00
|
|
|
raise unittest.SkipTest("mkdir cannot create directory sufficiently deep for getcwd test")
|
Merged revisions 64434-64435,64440-64443,64445,64447-64448,64450,64452,64455,64461,64464,64466,64468 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r64434 | andrew.kuchling | 2008-06-20 18:13:58 -0500 (Fri, 20 Jun 2008) | 1 line
Remove request for e-mail; it's unlikely these classes will be saved
........
r64435 | andrew.kuchling | 2008-06-20 18:14:32 -0500 (Fri, 20 Jun 2008) | 1 line
Grammar fixes
........
r64440 | andrew.kuchling | 2008-06-21 08:29:12 -0500 (Sat, 21 Jun 2008) | 1 line
Docstring typo
........
r64441 | andrew.kuchling | 2008-06-21 08:47:20 -0500 (Sat, 21 Jun 2008) | 1 line
Use repr() for bad input strings; this makes the empty string or binary characters more visible
........
r64442 | andrew.kuchling | 2008-06-21 08:48:38 -0500 (Sat, 21 Jun 2008) | 1 line
Docstring correction
........
r64443 | georg.brandl | 2008-06-21 09:26:19 -0500 (Sat, 21 Jun 2008) | 2 lines
Documentation fix.
........
r64445 | facundo.batista | 2008-06-21 12:30:06 -0500 (Sat, 21 Jun 2008) | 3 lines
Reviewed and updated the documentation. Fixes #3017.
........
r64447 | facundo.batista | 2008-06-21 13:58:04 -0500 (Sat, 21 Jun 2008) | 6 lines
Now a from submitted via POST that also has a query string
will contain both FieldStorage and MiniFieldStorage items.
Fixes #1817.
........
r64448 | facundo.batista | 2008-06-21 14:48:19 -0500 (Sat, 21 Jun 2008) | 5 lines
In the deprecated functions I added an alert to review
specially a section of the subprocess documentation
that helps with the replacing of those functionss.
........
r64450 | georg.brandl | 2008-06-22 04:05:29 -0500 (Sun, 22 Jun 2008) | 2 lines
Turn section references into proper cross-references.
........
r64452 | facundo.batista | 2008-06-22 08:36:20 -0500 (Sun, 22 Jun 2008) | 5 lines
Issue #2722. Now the char buffer to support the path string has
not fixed length, it mallocs memory if needed. As a result, we
don't have a maximum for the getcwd() method.
........
r64455 | facundo.batista | 2008-06-22 10:27:10 -0500 (Sun, 22 Jun 2008) | 4 lines
Issue 3164. Small fix to don't repeat a comparation
without necessity.
........
r64461 | georg.brandl | 2008-06-22 13:11:52 -0500 (Sun, 22 Jun 2008) | 2 lines
#3085: Fix syntax error.
........
r64464 | georg.brandl | 2008-06-22 13:31:54 -0500 (Sun, 22 Jun 2008) | 2 lines
Expand docstrings of sqlite3 functions.
........
r64466 | georg.brandl | 2008-06-22 14:07:59 -0500 (Sun, 22 Jun 2008) | 2 lines
Write out "phi" consistently.
........
r64468 | facundo.batista | 2008-06-22 14:35:24 -0500 (Sun, 22 Jun 2008) | 4 lines
Just returning nothing instead of rising TestSkipped, because
it makes the test fail in the trunk.loewis-sun buildbot.
........
2008-07-02 14:30:14 -03:00
|
|
|
|
|
|
|
os.chdir(dirname)
|
|
|
|
try:
|
|
|
|
os.getcwd()
|
|
|
|
if current_path_length < 1027:
|
|
|
|
_create_and_do_getcwd(dirname, current_path_length + len(dirname) + 1)
|
|
|
|
finally:
|
|
|
|
os.chdir('..')
|
|
|
|
os.rmdir(dirname)
|
|
|
|
|
|
|
|
_create_and_do_getcwd(dirname)
|
|
|
|
|
|
|
|
finally:
|
|
|
|
os.chdir(curdir)
|
2009-07-09 17:12:31 -03:00
|
|
|
support.rmtree(base_path)
|
Merged revisions 64434-64435,64440-64443,64445,64447-64448,64450,64452,64455,64461,64464,64466,64468 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r64434 | andrew.kuchling | 2008-06-20 18:13:58 -0500 (Fri, 20 Jun 2008) | 1 line
Remove request for e-mail; it's unlikely these classes will be saved
........
r64435 | andrew.kuchling | 2008-06-20 18:14:32 -0500 (Fri, 20 Jun 2008) | 1 line
Grammar fixes
........
r64440 | andrew.kuchling | 2008-06-21 08:29:12 -0500 (Sat, 21 Jun 2008) | 1 line
Docstring typo
........
r64441 | andrew.kuchling | 2008-06-21 08:47:20 -0500 (Sat, 21 Jun 2008) | 1 line
Use repr() for bad input strings; this makes the empty string or binary characters more visible
........
r64442 | andrew.kuchling | 2008-06-21 08:48:38 -0500 (Sat, 21 Jun 2008) | 1 line
Docstring correction
........
r64443 | georg.brandl | 2008-06-21 09:26:19 -0500 (Sat, 21 Jun 2008) | 2 lines
Documentation fix.
........
r64445 | facundo.batista | 2008-06-21 12:30:06 -0500 (Sat, 21 Jun 2008) | 3 lines
Reviewed and updated the documentation. Fixes #3017.
........
r64447 | facundo.batista | 2008-06-21 13:58:04 -0500 (Sat, 21 Jun 2008) | 6 lines
Now a from submitted via POST that also has a query string
will contain both FieldStorage and MiniFieldStorage items.
Fixes #1817.
........
r64448 | facundo.batista | 2008-06-21 14:48:19 -0500 (Sat, 21 Jun 2008) | 5 lines
In the deprecated functions I added an alert to review
specially a section of the subprocess documentation
that helps with the replacing of those functionss.
........
r64450 | georg.brandl | 2008-06-22 04:05:29 -0500 (Sun, 22 Jun 2008) | 2 lines
Turn section references into proper cross-references.
........
r64452 | facundo.batista | 2008-06-22 08:36:20 -0500 (Sun, 22 Jun 2008) | 5 lines
Issue #2722. Now the char buffer to support the path string has
not fixed length, it mallocs memory if needed. As a result, we
don't have a maximum for the getcwd() method.
........
r64455 | facundo.batista | 2008-06-22 10:27:10 -0500 (Sun, 22 Jun 2008) | 4 lines
Issue 3164. Small fix to don't repeat a comparation
without necessity.
........
r64461 | georg.brandl | 2008-06-22 13:11:52 -0500 (Sun, 22 Jun 2008) | 2 lines
#3085: Fix syntax error.
........
r64464 | georg.brandl | 2008-06-22 13:31:54 -0500 (Sun, 22 Jun 2008) | 2 lines
Expand docstrings of sqlite3 functions.
........
r64466 | georg.brandl | 2008-06-22 14:07:59 -0500 (Sun, 22 Jun 2008) | 2 lines
Write out "phi" consistently.
........
r64468 | facundo.batista | 2008-06-22 14:35:24 -0500 (Sun, 22 Jun 2008) | 4 lines
Just returning nothing instead of rising TestSkipped, because
it makes the test fail in the trunk.loewis-sun buildbot.
........
2008-07-02 14:30:14 -03:00
|
|
|
|
2011-06-10 02:30:30 -03:00
|
|
|
@unittest.skipUnless(hasattr(posix, 'getgrouplist'), "test needs posix.getgrouplist()")
|
|
|
|
@unittest.skipUnless(hasattr(pwd, 'getpwuid'), "test needs pwd.getpwuid()")
|
|
|
|
@unittest.skipUnless(hasattr(os, 'getuid'), "test needs os.getuid()")
|
|
|
|
def test_getgrouplist(self):
|
|
|
|
with os.popen('id -G') as idg:
|
|
|
|
groups = idg.read().strip()
|
|
|
|
|
|
|
|
if not groups:
|
|
|
|
raise unittest.SkipTest("need working 'id -G'")
|
|
|
|
|
|
|
|
self.assertEqual(
|
|
|
|
set([int(x) for x in groups.split()]),
|
|
|
|
set(posix.getgrouplist(pwd.getpwuid(os.getuid())[0],
|
|
|
|
pwd.getpwuid(os.getuid())[3])))
|
|
|
|
|
2011-01-12 14:45:27 -04:00
|
|
|
@unittest.skipUnless(hasattr(os, 'getegid'), "test needs os.getegid()")
|
2010-07-23 10:53:51 -03:00
|
|
|
def test_getgroups(self):
|
|
|
|
with os.popen('id -G') as idg:
|
|
|
|
groups = idg.read().strip()
|
|
|
|
|
|
|
|
if not groups:
|
|
|
|
raise unittest.SkipTest("need working 'id -G'")
|
|
|
|
|
2010-08-01 16:18:13 -03:00
|
|
|
# 'id -G' and 'os.getgroups()' should return the same
|
|
|
|
# groups, ignoring order and duplicates.
|
2011-01-12 14:45:27 -04:00
|
|
|
# #10822 - it is implementation defined whether posix.getgroups()
|
|
|
|
# includes the effective gid so we include it anyway, since id -G does
|
2010-07-24 11:15:19 -03:00
|
|
|
self.assertEqual(
|
2010-08-01 16:18:13 -03:00
|
|
|
set([int(x) for x in groups.split()]),
|
2011-01-12 14:45:27 -04:00
|
|
|
set(posix.getgroups() + [posix.getegid()]))
|
2010-07-23 10:53:51 -03:00
|
|
|
|
2011-02-25 19:25:17 -04:00
|
|
|
# tests for the posix *at functions follow
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'faccessat'), "test needs posix.faccessat()")
|
|
|
|
def test_faccessat(self):
|
|
|
|
f = posix.open(posix.getcwd(), posix.O_RDONLY)
|
|
|
|
try:
|
|
|
|
self.assertTrue(posix.faccessat(f, support.TESTFN, os.R_OK))
|
|
|
|
finally:
|
|
|
|
posix.close(f)
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'fchmodat'), "test needs posix.fchmodat()")
|
|
|
|
def test_fchmodat(self):
|
|
|
|
os.chmod(support.TESTFN, stat.S_IRUSR)
|
|
|
|
|
|
|
|
f = posix.open(posix.getcwd(), posix.O_RDONLY)
|
|
|
|
try:
|
|
|
|
posix.fchmodat(f, support.TESTFN, stat.S_IRUSR | stat.S_IWUSR)
|
|
|
|
|
|
|
|
s = posix.stat(support.TESTFN)
|
|
|
|
self.assertEqual(s[0] & stat.S_IRWXU, stat.S_IRUSR | stat.S_IWUSR)
|
|
|
|
finally:
|
|
|
|
posix.close(f)
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'fchownat'), "test needs posix.fchownat()")
|
|
|
|
def test_fchownat(self):
|
|
|
|
support.unlink(support.TESTFN)
|
2011-06-30 18:25:47 -03:00
|
|
|
support.create_empty_file(support.TESTFN)
|
2011-02-25 19:25:17 -04:00
|
|
|
|
|
|
|
f = posix.open(posix.getcwd(), posix.O_RDONLY)
|
|
|
|
try:
|
|
|
|
posix.fchownat(f, support.TESTFN, os.getuid(), os.getgid())
|
|
|
|
finally:
|
|
|
|
posix.close(f)
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'fstatat'), "test needs posix.fstatat()")
|
|
|
|
def test_fstatat(self):
|
|
|
|
support.unlink(support.TESTFN)
|
|
|
|
with open(support.TESTFN, 'w') as outfile:
|
|
|
|
outfile.write("testline\n")
|
|
|
|
|
|
|
|
f = posix.open(posix.getcwd(), posix.O_RDONLY)
|
|
|
|
try:
|
|
|
|
s1 = posix.stat(support.TESTFN)
|
|
|
|
s2 = posix.fstatat(f, support.TESTFN)
|
|
|
|
self.assertEqual(s1, s2)
|
|
|
|
finally:
|
|
|
|
posix.close(f)
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'futimesat'), "test needs posix.futimesat()")
|
|
|
|
def test_futimesat(self):
|
|
|
|
f = posix.open(posix.getcwd(), posix.O_RDONLY)
|
|
|
|
try:
|
|
|
|
now = time.time()
|
|
|
|
posix.futimesat(f, support.TESTFN, None)
|
|
|
|
self.assertRaises(TypeError, posix.futimesat, f, support.TESTFN, (None, None))
|
|
|
|
self.assertRaises(TypeError, posix.futimesat, f, support.TESTFN, (now, None))
|
|
|
|
self.assertRaises(TypeError, posix.futimesat, f, support.TESTFN, (None, now))
|
|
|
|
posix.futimesat(f, support.TESTFN, (int(now), int(now)))
|
|
|
|
posix.futimesat(f, support.TESTFN, (now, now))
|
|
|
|
finally:
|
|
|
|
posix.close(f)
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'linkat'), "test needs posix.linkat()")
|
|
|
|
def test_linkat(self):
|
|
|
|
f = posix.open(posix.getcwd(), posix.O_RDONLY)
|
|
|
|
try:
|
|
|
|
posix.linkat(f, support.TESTFN, f, support.TESTFN + 'link')
|
|
|
|
# should have same inodes
|
|
|
|
self.assertEqual(posix.stat(support.TESTFN)[1],
|
|
|
|
posix.stat(support.TESTFN + 'link')[1])
|
|
|
|
finally:
|
|
|
|
posix.close(f)
|
|
|
|
support.unlink(support.TESTFN + 'link')
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'mkdirat'), "test needs posix.mkdirat()")
|
|
|
|
def test_mkdirat(self):
|
|
|
|
f = posix.open(posix.getcwd(), posix.O_RDONLY)
|
|
|
|
try:
|
|
|
|
posix.mkdirat(f, support.TESTFN + 'dir')
|
|
|
|
posix.stat(support.TESTFN + 'dir') # should not raise exception
|
|
|
|
finally:
|
|
|
|
posix.close(f)
|
|
|
|
support.rmtree(support.TESTFN + 'dir')
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'mknodat') and hasattr(stat, 'S_IFIFO'),
|
|
|
|
"don't have mknodat()/S_IFIFO")
|
|
|
|
def test_mknodat(self):
|
|
|
|
# Test using mknodat() to create a FIFO (the only use specified
|
|
|
|
# by POSIX).
|
|
|
|
support.unlink(support.TESTFN)
|
|
|
|
mode = stat.S_IFIFO | stat.S_IRUSR | stat.S_IWUSR
|
|
|
|
f = posix.open(posix.getcwd(), posix.O_RDONLY)
|
|
|
|
try:
|
|
|
|
posix.mknodat(f, support.TESTFN, mode, 0)
|
|
|
|
except OSError as e:
|
|
|
|
# Some old systems don't allow unprivileged users to use
|
|
|
|
# mknod(), or only support creating device nodes.
|
|
|
|
self.assertIn(e.errno, (errno.EPERM, errno.EINVAL))
|
|
|
|
else:
|
|
|
|
self.assertTrue(stat.S_ISFIFO(posix.stat(support.TESTFN).st_mode))
|
|
|
|
finally:
|
|
|
|
posix.close(f)
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'openat'), "test needs posix.openat()")
|
|
|
|
def test_openat(self):
|
|
|
|
support.unlink(support.TESTFN)
|
|
|
|
with open(support.TESTFN, 'w') as outfile:
|
|
|
|
outfile.write("testline\n")
|
|
|
|
a = posix.open(posix.getcwd(), posix.O_RDONLY)
|
|
|
|
b = posix.openat(a, support.TESTFN, posix.O_RDONLY)
|
|
|
|
try:
|
|
|
|
res = posix.read(b, 9).decode(encoding="utf-8")
|
|
|
|
self.assertEqual("testline\n", res)
|
|
|
|
finally:
|
|
|
|
posix.close(a)
|
|
|
|
posix.close(b)
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'readlinkat'), "test needs posix.readlinkat()")
|
|
|
|
def test_readlinkat(self):
|
|
|
|
os.symlink(support.TESTFN, support.TESTFN + 'link')
|
|
|
|
f = posix.open(posix.getcwd(), posix.O_RDONLY)
|
|
|
|
try:
|
|
|
|
self.assertEqual(posix.readlink(support.TESTFN + 'link'),
|
|
|
|
posix.readlinkat(f, support.TESTFN + 'link'))
|
|
|
|
finally:
|
|
|
|
support.unlink(support.TESTFN + 'link')
|
|
|
|
posix.close(f)
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'renameat'), "test needs posix.renameat()")
|
|
|
|
def test_renameat(self):
|
|
|
|
support.unlink(support.TESTFN)
|
2011-06-30 18:25:47 -03:00
|
|
|
support.create_empty_file(support.TESTFN + 'ren')
|
2011-02-25 19:25:17 -04:00
|
|
|
f = posix.open(posix.getcwd(), posix.O_RDONLY)
|
|
|
|
try:
|
|
|
|
posix.renameat(f, support.TESTFN + 'ren', f, support.TESTFN)
|
|
|
|
except:
|
|
|
|
posix.rename(support.TESTFN + 'ren', support.TESTFN)
|
|
|
|
raise
|
|
|
|
else:
|
|
|
|
posix.stat(support.TESTFN) # should not throw exception
|
|
|
|
finally:
|
|
|
|
posix.close(f)
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'symlinkat'), "test needs posix.symlinkat()")
|
|
|
|
def test_symlinkat(self):
|
|
|
|
f = posix.open(posix.getcwd(), posix.O_RDONLY)
|
|
|
|
try:
|
|
|
|
posix.symlinkat(support.TESTFN, f, support.TESTFN + 'link')
|
|
|
|
self.assertEqual(posix.readlink(support.TESTFN + 'link'), support.TESTFN)
|
|
|
|
finally:
|
|
|
|
posix.close(f)
|
|
|
|
support.unlink(support.TESTFN + 'link')
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'unlinkat'), "test needs posix.unlinkat()")
|
|
|
|
def test_unlinkat(self):
|
|
|
|
f = posix.open(posix.getcwd(), posix.O_RDONLY)
|
2011-06-30 18:25:47 -03:00
|
|
|
support.create_empty_file(support.TESTFN + 'del')
|
2011-02-25 19:25:17 -04:00
|
|
|
posix.stat(support.TESTFN + 'del') # should not throw exception
|
|
|
|
try:
|
|
|
|
posix.unlinkat(f, support.TESTFN + 'del')
|
|
|
|
except:
|
|
|
|
support.unlink(support.TESTFN + 'del')
|
|
|
|
raise
|
|
|
|
else:
|
|
|
|
self.assertRaises(OSError, posix.stat, support.TESTFN + 'link')
|
|
|
|
finally:
|
|
|
|
posix.close(f)
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'utimensat'), "test needs posix.utimensat()")
|
|
|
|
def test_utimensat(self):
|
|
|
|
f = posix.open(posix.getcwd(), posix.O_RDONLY)
|
|
|
|
try:
|
|
|
|
now = time.time()
|
|
|
|
posix.utimensat(f, support.TESTFN, None, None)
|
|
|
|
self.assertRaises(TypeError, posix.utimensat, f, support.TESTFN, (None, None), (None, None))
|
|
|
|
self.assertRaises(TypeError, posix.utimensat, f, support.TESTFN, (now, 0), None)
|
|
|
|
self.assertRaises(TypeError, posix.utimensat, f, support.TESTFN, None, (now, 0))
|
|
|
|
posix.utimensat(f, support.TESTFN, (int(now), int((now - int(now)) * 1e9)),
|
|
|
|
(int(now), int((now - int(now)) * 1e9)))
|
|
|
|
finally:
|
|
|
|
posix.close(f)
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'mkfifoat'), "don't have mkfifoat()")
|
|
|
|
def test_mkfifoat(self):
|
|
|
|
support.unlink(support.TESTFN)
|
|
|
|
f = posix.open(posix.getcwd(), posix.O_RDONLY)
|
|
|
|
try:
|
|
|
|
posix.mkfifoat(f, support.TESTFN, stat.S_IRUSR | stat.S_IWUSR)
|
|
|
|
self.assertTrue(stat.S_ISFIFO(posix.stat(support.TESTFN).st_mode))
|
|
|
|
finally:
|
|
|
|
posix.close(f)
|
|
|
|
|
2011-08-02 19:30:04 -03:00
|
|
|
requires_sched_h = unittest.skipUnless(hasattr(posix, 'sched_yield'),
|
|
|
|
"don't have scheduling support")
|
2011-08-02 19:41:34 -03:00
|
|
|
requires_sched_affinity = unittest.skipUnless(hasattr(posix, 'cpu_set'),
|
|
|
|
"dont' have sched affinity support")
|
2011-08-02 19:30:04 -03:00
|
|
|
|
|
|
|
@requires_sched_h
|
|
|
|
def test_sched_yield(self):
|
|
|
|
# This has no error conditions (at least on Linux).
|
|
|
|
posix.sched_yield()
|
|
|
|
|
|
|
|
@requires_sched_h
|
|
|
|
def test_sched_priority(self):
|
|
|
|
# Round-robin usually has interesting priorities.
|
|
|
|
pol = posix.SCHED_RR
|
|
|
|
lo = posix.sched_get_priority_min(pol)
|
|
|
|
hi = posix.sched_get_priority_max(pol)
|
|
|
|
self.assertIsInstance(lo, int)
|
|
|
|
self.assertIsInstance(hi, int)
|
|
|
|
self.assertGreaterEqual(hi, lo)
|
|
|
|
self.assertRaises(OSError, posix.sched_get_priority_min, -23)
|
|
|
|
self.assertRaises(OSError, posix.sched_get_priority_max, -23)
|
|
|
|
|
2011-08-02 20:07:32 -03:00
|
|
|
@unittest.skipUnless(hasattr(posix, 'sched_setscheduler'), "can't change scheduler")
|
2011-08-02 19:30:04 -03:00
|
|
|
def test_get_and_set_scheduler_and_param(self):
|
|
|
|
possible_schedulers = [sched for name, sched in posix.__dict__.items()
|
|
|
|
if name.startswith("SCHED_")]
|
|
|
|
mine = posix.sched_getscheduler(0)
|
|
|
|
self.assertIn(mine, possible_schedulers)
|
|
|
|
try:
|
|
|
|
init = posix.sched_getscheduler(1)
|
|
|
|
except OSError as e:
|
|
|
|
if e.errno != errno.EPERM:
|
|
|
|
raise
|
|
|
|
else:
|
|
|
|
self.assertIn(init, possible_schedulers)
|
|
|
|
self.assertRaises(OSError, posix.sched_getscheduler, -1)
|
|
|
|
self.assertRaises(OSError, posix.sched_getparam, -1)
|
|
|
|
param = posix.sched_getparam(0)
|
|
|
|
self.assertIsInstance(param.sched_priority, int)
|
|
|
|
posix.sched_setscheduler(0, mine, param)
|
|
|
|
posix.sched_setparam(0, param)
|
|
|
|
self.assertRaises(OSError, posix.sched_setparam, -1, param)
|
|
|
|
self.assertRaises(OSError, posix.sched_setscheduler, -1, mine, param)
|
|
|
|
self.assertRaises(TypeError, posix.sched_setscheduler, 0, mine, None)
|
|
|
|
self.assertRaises(TypeError, posix.sched_setparam, 0, 43)
|
|
|
|
param = posix.sched_param(None)
|
|
|
|
self.assertRaises(TypeError, posix.sched_setparam, 0, param)
|
|
|
|
large = 214748364700
|
|
|
|
param = posix.sched_param(large)
|
|
|
|
self.assertRaises(OverflowError, posix.sched_setparam, 0, param)
|
|
|
|
param = posix.sched_param(sched_priority=-large)
|
|
|
|
self.assertRaises(OverflowError, posix.sched_setparam, 0, param)
|
|
|
|
|
2011-08-02 20:07:32 -03:00
|
|
|
@unittest.skipUnless(hasattr(posix, "sched_rr_get_interval"), "no function")
|
2011-08-02 19:30:04 -03:00
|
|
|
def test_sched_rr_get_interval(self):
|
|
|
|
interval = posix.sched_rr_get_interval(0)
|
|
|
|
self.assertIsInstance(interval, float)
|
|
|
|
# Reasonable constraints, I think.
|
|
|
|
self.assertGreaterEqual(interval, 0.)
|
|
|
|
self.assertLess(interval, 1.)
|
|
|
|
|
2011-08-02 19:41:34 -03:00
|
|
|
@requires_sched_affinity
|
2011-08-02 19:30:04 -03:00
|
|
|
def test_sched_affinity(self):
|
|
|
|
mask = posix.sched_getaffinity(0, 1024)
|
|
|
|
self.assertGreaterEqual(mask.count(), 1)
|
|
|
|
self.assertIsInstance(mask, posix.cpu_set)
|
|
|
|
self.assertRaises(OSError, posix.sched_getaffinity, -1, 1024)
|
|
|
|
empty = posix.cpu_set(10)
|
|
|
|
posix.sched_setaffinity(0, mask)
|
|
|
|
self.assertRaises(OSError, posix.sched_setaffinity, 0, empty)
|
|
|
|
self.assertRaises(OSError, posix.sched_setaffinity, -1, mask)
|
|
|
|
|
2011-08-02 19:41:34 -03:00
|
|
|
@requires_sched_affinity
|
2011-08-02 19:30:04 -03:00
|
|
|
def test_cpu_set_basic(self):
|
|
|
|
s = posix.cpu_set(10)
|
|
|
|
self.assertEqual(len(s), 10)
|
|
|
|
self.assertEqual(s.count(), 0)
|
|
|
|
s.set(0)
|
|
|
|
s.set(9)
|
|
|
|
self.assertTrue(s.isset(0))
|
|
|
|
self.assertTrue(s.isset(9))
|
|
|
|
self.assertFalse(s.isset(5))
|
|
|
|
self.assertEqual(s.count(), 2)
|
|
|
|
s.clear(0)
|
|
|
|
self.assertFalse(s.isset(0))
|
|
|
|
self.assertEqual(s.count(), 1)
|
|
|
|
s.zero()
|
|
|
|
self.assertFalse(s.isset(0))
|
|
|
|
self.assertFalse(s.isset(9))
|
|
|
|
self.assertEqual(s.count(), 0)
|
|
|
|
self.assertRaises(ValueError, s.set, -1)
|
|
|
|
self.assertRaises(ValueError, s.set, 10)
|
|
|
|
self.assertRaises(ValueError, s.clear, -1)
|
|
|
|
self.assertRaises(ValueError, s.clear, 10)
|
|
|
|
self.assertRaises(ValueError, s.isset, -1)
|
|
|
|
self.assertRaises(ValueError, s.isset, 10)
|
|
|
|
|
2011-08-02 19:41:34 -03:00
|
|
|
@requires_sched_affinity
|
2011-08-02 19:30:04 -03:00
|
|
|
def test_cpu_set_cmp(self):
|
|
|
|
self.assertNotEqual(posix.cpu_set(11), posix.cpu_set(12))
|
|
|
|
l = posix.cpu_set(10)
|
|
|
|
r = posix.cpu_set(10)
|
|
|
|
self.assertEqual(l, r)
|
|
|
|
l.set(1)
|
|
|
|
self.assertNotEqual(l, r)
|
|
|
|
r.set(1)
|
|
|
|
self.assertEqual(l, r)
|
|
|
|
|
2011-08-02 19:41:34 -03:00
|
|
|
@requires_sched_affinity
|
2011-08-02 19:30:04 -03:00
|
|
|
def test_cpu_set_bitwise(self):
|
|
|
|
l = posix.cpu_set(5)
|
|
|
|
l.set(0)
|
|
|
|
l.set(1)
|
|
|
|
r = posix.cpu_set(5)
|
|
|
|
r.set(1)
|
|
|
|
r.set(2)
|
|
|
|
b = l & r
|
|
|
|
self.assertEqual(b.count(), 1)
|
|
|
|
self.assertTrue(b.isset(1))
|
|
|
|
b = l | r
|
|
|
|
self.assertEqual(b.count(), 3)
|
|
|
|
self.assertTrue(b.isset(0))
|
|
|
|
self.assertTrue(b.isset(1))
|
|
|
|
self.assertTrue(b.isset(2))
|
|
|
|
b = l ^ r
|
|
|
|
self.assertEqual(b.count(), 2)
|
|
|
|
self.assertTrue(b.isset(0))
|
|
|
|
self.assertFalse(b.isset(1))
|
|
|
|
self.assertTrue(b.isset(2))
|
|
|
|
b = l
|
|
|
|
b |= r
|
|
|
|
self.assertIs(b, l)
|
|
|
|
self.assertEqual(l.count(), 3)
|
|
|
|
|
2010-07-23 10:53:51 -03:00
|
|
|
class PosixGroupsTester(unittest.TestCase):
|
|
|
|
|
|
|
|
def setUp(self):
|
|
|
|
if posix.getuid() != 0:
|
|
|
|
raise unittest.SkipTest("not enough privileges")
|
|
|
|
if not hasattr(posix, 'getgroups'):
|
|
|
|
raise unittest.SkipTest("need posix.getgroups")
|
|
|
|
if sys.platform == 'darwin':
|
|
|
|
raise unittest.SkipTest("getgroups(2) is broken on OSX")
|
|
|
|
self.saved_groups = posix.getgroups()
|
|
|
|
|
|
|
|
def tearDown(self):
|
|
|
|
if hasattr(posix, 'setgroups'):
|
|
|
|
posix.setgroups(self.saved_groups)
|
|
|
|
elif hasattr(posix, 'initgroups'):
|
|
|
|
name = pwd.getpwuid(posix.getuid()).pw_name
|
|
|
|
posix.initgroups(name, self.saved_groups[0])
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'initgroups'),
|
|
|
|
"test needs posix.initgroups()")
|
|
|
|
def test_initgroups(self):
|
|
|
|
# find missing group
|
|
|
|
|
2010-09-04 14:32:06 -03:00
|
|
|
g = max(self.saved_groups) + 1
|
2010-07-23 10:53:51 -03:00
|
|
|
name = pwd.getpwuid(posix.getuid()).pw_name
|
|
|
|
posix.initgroups(name, g)
|
|
|
|
self.assertIn(g, posix.getgroups())
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(posix, 'setgroups'),
|
|
|
|
"test needs posix.setgroups()")
|
|
|
|
def test_setgroups(self):
|
2010-09-04 14:32:06 -03:00
|
|
|
for groups in [[0], list(range(16))]:
|
2010-07-23 10:53:51 -03:00
|
|
|
posix.setgroups(groups)
|
|
|
|
self.assertListEqual(groups, posix.getgroups())
|
|
|
|
|
2003-02-17 14:17:05 -04:00
|
|
|
def test_main():
|
2011-03-20 13:33:57 -03:00
|
|
|
try:
|
|
|
|
support.run_unittest(PosixTester, PosixGroupsTester)
|
|
|
|
finally:
|
|
|
|
support.reap_children()
|
2003-02-17 14:17:05 -04:00
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
test_main()
|