Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
f0602062
Commit
f0602062
authored
Feb 20, 2013
by
Serhiy Storchaka
Browse files
Options
Browse Files
Download
Plain Diff
Issue #15301: Enhance os.*chown() testing. Based on patch by Larry Hastings.
parents
5a9ce077
54db2fd5
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
42 additions
and
24 deletions
+42
-24
Lib/test/test_posix.py
Lib/test/test_posix.py
+42
-24
No files found.
Lib/test/test_posix.py
View file @
f0602062
...
...
@@ -406,30 +406,42 @@ class PosixTester(unittest.TestCase):
def
_test_all_chown_common
(
self
,
chown_func
,
first_param
,
stat_func
):
"""Common code for chown, fchown and lchown tests."""
def
check_stat
():
def
check_stat
(
uid
,
gid
):
if
stat_func
is
not
None
:
stat
=
stat_func
(
first_param
)
self
.
assertEqual
(
stat
.
st_uid
,
os
.
getuid
())
self
.
assertEqual
(
stat
.
st_gid
,
os
.
getgid
())
self
.
assertEqual
(
stat
.
st_uid
,
uid
)
self
.
assertEqual
(
stat
.
st_gid
,
gid
)
uid
=
os
.
getuid
()
gid
=
os
.
getgid
()
# test a successful chown call
chown_func
(
first_param
,
os
.
getuid
(),
os
.
getgid
())
check_stat
()
chown_func
(
first_param
,
-
1
,
os
.
getgid
())
check_stat
()
chown_func
(
first_param
,
os
.
getuid
(),
-
1
)
check_stat
()
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
chown_func
(
first_param
,
uid
,
gid
)
check_stat
(
uid
,
gid
)
chown_func
(
first_param
,
-
1
,
gid
)
check_stat
(
uid
,
gid
)
chown_func
(
first_param
,
uid
,
-
1
)
check_stat
(
uid
,
gid
)
if
uid
==
0
:
# Try an amusingly large uid/gid to make sure we handle
# large unsigned values. (chown lets you use any
# uid/gid you like, even if they aren't defined.)
#
# This problem keeps coming up:
# http://bugs.python.org/issue1747858
# http://bugs.python.org/issue4591
# http://bugs.python.org/issue15301
# Hopefully the fix in 4591 fixes it for good!
#
# This part of the test only runs when run as root.
# Only scary people run their tests as root.
big_value
=
2
**
31
chown_func
(
first_param
,
big_value
,
big_value
)
check_stat
(
big_value
,
big_value
)
chown_func
(
first_param
,
-
1
,
-
1
)
check_stat
(
big_value
,
big_value
)
chown_func
(
first_param
,
uid
,
gid
)
check_stat
(
uid
,
gid
)
elif
platform
.
system
()
in
(
'HP-UX'
,
'SunOS'
):
# HP-UX and Solaris can allow a non-root user to chown() to root
# (issue #5113)
...
...
@@ -438,11 +450,17 @@ class PosixTester(unittest.TestCase):
else
:
# non-root cannot chown to root, raises OSError
self
.
assertRaises
(
OSError
,
chown_func
,
first_param
,
0
,
0
)
check_stat
()
check_stat
(
uid
,
gid
)
self
.
assertRaises
(
OSError
,
chown_func
,
first_param
,
-
1
,
0
)
check_stat
()
check_stat
(
uid
,
gid
)
self
.
assertRaises
(
OSError
,
chown_func
,
first_param
,
0
,
-
1
)
check_stat
()
check_stat
(
uid
,
gid
)
# test illegal types
for
t
in
str
,
float
:
self
.
assertRaises
(
TypeError
,
chown_func
,
first_param
,
t
(
uid
),
gid
)
check_stat
(
uid
,
gid
)
self
.
assertRaises
(
TypeError
,
chown_func
,
first_param
,
uid
,
t
(
gid
))
check_stat
(
uid
,
gid
)
@
unittest
.
skipUnless
(
hasattr
(
posix
,
'chown'
),
"test needs os.chown()"
)
def
test_chown
(
self
):
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment