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
d5eb9854
Commit
d5eb9854
authored
Feb 06, 2009
by
Tarek Ziadé
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed #1276768: verbose option was not used in the code.
parent
0189ddc1
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
188 additions
and
24 deletions
+188
-24
Lib/distutils/dir_util.py
Lib/distutils/dir_util.py
+15
-15
Lib/distutils/file_util.py
Lib/distutils/file_util.py
+13
-9
Lib/distutils/tests/test_dir_util.py
Lib/distutils/tests/test_dir_util.py
+91
-0
Lib/distutils/tests/test_file_util.py
Lib/distutils/tests/test_file_util.py
+66
-0
Misc/NEWS
Misc/NEWS
+3
-0
No files found.
Lib/distutils/dir_util.py
View file @
d5eb9854
...
...
@@ -16,7 +16,7 @@ _path_created = {}
# I don't use os.makedirs because a) it's new to Python 1.5.2, and
# b) it blows up if the directory already exists (I want to silently
# succeed in that case).
def
mkpath
(
name
,
mode
=
0777
,
verbose
=
0
,
dry_run
=
0
):
def
mkpath
(
name
,
mode
=
0777
,
verbose
=
1
,
dry_run
=
0
):
"""Create a directory and any missing ancestor directories. If the
directory already exists (or if 'name' is the empty string, which
means the current directory, which of course exists), then do
...
...
@@ -49,13 +49,9 @@ def mkpath (name, mode=0777, verbose=0, dry_run=0):
tails
=
[
tail
]
# stack of lone dirs to create
while
head
and
tail
and
not
os
.
path
.
isdir
(
head
):
#print "splitting '%s': " % head,
(
head
,
tail
)
=
os
.
path
.
split
(
head
)
#print "to ('%s','%s')" % (head, tail)
tails
.
insert
(
0
,
tail
)
# push next higher dir onto stack
#print "stack of tails:", tails
# now 'head' contains the deepest directory that already exists
# (that is, the child of 'head' in 'name' is the highest directory
# that does *not* exist)
...
...
@@ -67,7 +63,8 @@ def mkpath (name, mode=0777, verbose=0, dry_run=0):
if
_path_created
.
get
(
abs_head
):
continue
log
.
info
(
"creating %s"
,
head
)
if
verbose
==
1
:
log
.
info
(
"creating %s"
,
head
)
if
not
dry_run
:
try
:
...
...
@@ -83,7 +80,7 @@ def mkpath (name, mode=0777, verbose=0, dry_run=0):
# mkpath ()
def
create_tree
(
base_dir
,
files
,
mode
=
0777
,
verbose
=
0
,
dry_run
=
0
):
def
create_tree
(
base_dir
,
files
,
mode
=
0777
,
verbose
=
1
,
dry_run
=
0
):
"""Create all the empty directories under 'base_dir' needed to
put 'files' there. 'base_dir' is just the a name of a directory
...
...
@@ -102,7 +99,7 @@ def create_tree (base_dir, files, mode=0777, verbose=0, dry_run=0):
# Now create them
for
dir
in
need_dirs
:
mkpath
(
dir
,
mode
,
dry_run
=
dry_run
)
mkpath
(
dir
,
mode
,
verbose
=
verbose
,
dry_run
=
dry_run
)
# create_tree ()
...
...
@@ -112,7 +109,7 @@ def copy_tree (src, dst,
preserve_times
=
1
,
preserve_symlinks
=
0
,
update
=
0
,
verbose
=
0
,
verbose
=
1
,
dry_run
=
0
):
"""Copy an entire directory tree 'src' to a new location 'dst'. Both
...
...
@@ -148,7 +145,7 @@ def copy_tree (src, dst,
"error listing files in '%s': %s"
%
(
src
,
errstr
)
if
not
dry_run
:
mkpath
(
dst
)
mkpath
(
dst
,
verbose
=
verbose
)
outputs
=
[]
...
...
@@ -158,7 +155,8 @@ def copy_tree (src, dst,
if
preserve_symlinks
and
os
.
path
.
islink
(
src_name
):
link_dest
=
os
.
readlink
(
src_name
)
log
.
info
(
"linking %s -> %s"
,
dst_name
,
link_dest
)
if
verbose
==
1
:
log
.
info
(
"linking %s -> %s"
,
dst_name
,
link_dest
)
if
not
dry_run
:
os
.
symlink
(
link_dest
,
dst_name
)
outputs
.
append
(
dst_name
)
...
...
@@ -167,10 +165,11 @@ def copy_tree (src, dst,
outputs
.
extend
(
copy_tree
(
src_name
,
dst_name
,
preserve_mode
,
preserve_times
,
preserve_symlinks
,
update
,
dry_run
=
dry_run
))
verbose
=
verbose
,
dry_run
=
dry_run
))
else
:
copy_file
(
src_name
,
dst_name
,
preserve_mode
,
preserve_times
,
update
,
dry_run
=
dry_run
)
preserve_times
,
update
,
verbose
=
verbose
,
dry_run
=
dry_run
)
outputs
.
append
(
dst_name
)
return
outputs
...
...
@@ -188,14 +187,15 @@ def _build_cmdtuple(path, cmdtuples):
cmdtuples
.
append
((
os
.
rmdir
,
path
))
def
remove_tree
(
directory
,
verbose
=
0
,
dry_run
=
0
):
def
remove_tree
(
directory
,
verbose
=
1
,
dry_run
=
0
):
"""Recursively remove an entire directory tree. Any errors are ignored
(apart from being reported to stdout if 'verbose' is true).
"""
from
distutils.util
import
grok_environment_error
global
_path_created
log
.
info
(
"removing '%s' (and everything under it)"
,
directory
)
if
verbose
==
1
:
log
.
info
(
"removing '%s' (and everything under it)"
,
directory
)
if
dry_run
:
return
cmdtuples
=
[]
...
...
Lib/distutils/file_util.py
View file @
d5eb9854
...
...
@@ -76,7 +76,7 @@ def copy_file (src, dst,
preserve_times
=
1
,
update
=
0
,
link
=
None
,
verbose
=
0
,
verbose
=
1
,
dry_run
=
0
):
"""Copy a file 'src' to 'dst'. If 'dst' is a directory, then 'src' is
...
...
@@ -123,7 +123,8 @@ def copy_file (src, dst,
dir
=
os
.
path
.
dirname
(
dst
)
if
update
and
not
newer
(
src
,
dst
):
log
.
debug
(
"not copying %s (output up-to-date)"
,
src
)
if
verbose
==
1
:
log
.
debug
(
"not copying %s (output up-to-date)"
,
src
)
return
dst
,
0
try
:
...
...
@@ -131,10 +132,12 @@ def copy_file (src, dst,
except
KeyError
:
raise
ValueError
,
\
"invalid value '%s' for 'link' argument"
%
link
if
os
.
path
.
basename
(
dst
)
==
os
.
path
.
basename
(
src
):
log
.
info
(
"%s %s -> %s"
,
action
,
src
,
dir
)
else
:
log
.
info
(
"%s %s -> %s"
,
action
,
src
,
dst
)
if
verbose
==
1
:
if
os
.
path
.
basename
(
dst
)
==
os
.
path
.
basename
(
src
):
log
.
info
(
"%s %s -> %s"
,
action
,
src
,
dir
)
else
:
log
.
info
(
"%s %s -> %s"
,
action
,
src
,
dst
)
if
dry_run
:
return
(
dst
,
1
)
...
...
@@ -178,7 +181,7 @@ def copy_file (src, dst,
# XXX I suspect this is Unix-specific -- need porting help!
def
move_file
(
src
,
dst
,
verbose
=
0
,
verbose
=
1
,
dry_run
=
0
):
"""Move a file 'src' to 'dst'. If 'dst' is a directory, the file will
...
...
@@ -191,7 +194,8 @@ def move_file (src, dst,
from
os.path
import
exists
,
isfile
,
isdir
,
basename
,
dirname
import
errno
log
.
info
(
"moving %s -> %s"
,
src
,
dst
)
if
verbose
==
1
:
log
.
info
(
"moving %s -> %s"
,
src
,
dst
)
if
dry_run
:
return
dst
...
...
@@ -223,7 +227,7 @@ def move_file (src, dst,
"couldn't move '%s' to '%s': %s"
%
(
src
,
dst
,
msg
)
if
copy_it
:
copy_file
(
src
,
dst
)
copy_file
(
src
,
dst
,
verbose
=
verbose
)
try
:
os
.
unlink
(
src
)
except
os
.
error
,
(
num
,
msg
):
...
...
Lib/distutils/tests/test_dir_util.py
0 → 100644
View file @
d5eb9854
"""Tests for distutils.dir_util."""
import
unittest
import
os
import
shutil
from
distutils.dir_util
import
mkpath
from
distutils.dir_util
import
remove_tree
from
distutils.dir_util
import
create_tree
from
distutils.dir_util
import
copy_tree
from
distutils
import
log
class
DirUtilTestCase
(
unittest
.
TestCase
):
def
_log
(
self
,
msg
,
*
args
):
if
len
(
args
)
>
0
:
self
.
_logs
.
append
(
msg
%
args
)
else
:
self
.
_logs
.
append
(
msg
)
def
setUp
(
self
):
self
.
_logs
=
[]
self
.
root_target
=
os
.
path
.
join
(
os
.
path
.
dirname
(
__file__
),
'deep'
)
self
.
target
=
os
.
path
.
join
(
self
.
root_target
,
'here'
)
self
.
target2
=
os
.
path
.
join
(
os
.
path
.
dirname
(
__file__
),
'deep2'
)
self
.
old_log
=
log
.
info
log
.
info
=
self
.
_log
def
tearDown
(
self
):
for
target
in
(
self
.
target
,
self
.
target2
):
if
os
.
path
.
exists
(
target
):
shutil
.
rmtree
(
target
)
log
.
info
=
self
.
old_log
def
test_mkpath_remove_tree_verbosity
(
self
):
mkpath
(
self
.
target
,
verbose
=
0
)
wanted
=
[]
self
.
assertEquals
(
self
.
_logs
,
wanted
)
remove_tree
(
self
.
root_target
,
verbose
=
0
)
mkpath
(
self
.
target
,
verbose
=
1
)
wanted
=
[
'creating %s'
%
self
.
root_target
,
'creating %s'
%
self
.
target
]
self
.
assertEquals
(
self
.
_logs
,
wanted
)
self
.
_logs
=
[]
remove_tree
(
self
.
root_target
,
verbose
=
1
)
wanted
=
[
"removing '%s' (and everything under it)"
%
self
.
root_target
]
self
.
assertEquals
(
self
.
_logs
,
wanted
)
def
test_create_tree_verbosity
(
self
):
create_tree
(
self
.
root_target
,
[
'one'
,
'two'
,
'three'
],
verbose
=
0
)
self
.
assertEquals
(
self
.
_logs
,
[])
remove_tree
(
self
.
root_target
,
verbose
=
0
)
wanted
=
[
'creating %s'
%
self
.
root_target
]
create_tree
(
self
.
root_target
,
[
'one'
,
'two'
,
'three'
],
verbose
=
1
)
self
.
assertEquals
(
self
.
_logs
,
wanted
)
remove_tree
(
self
.
root_target
,
verbose
=
0
)
def
test_copy_tree_verbosity
(
self
):
mkpath
(
self
.
target
,
verbose
=
0
)
copy_tree
(
self
.
target
,
self
.
target2
,
verbose
=
0
)
self
.
assertEquals
(
self
.
_logs
,
[])
remove_tree
(
self
.
root_target
,
verbose
=
0
)
mkpath
(
self
.
target
,
verbose
=
0
)
a_file
=
os
.
path
.
join
(
self
.
target
,
'ok.txt'
)
f
=
open
(
a_file
,
'w'
)
f
.
write
(
'some content'
)
f
.
close
()
wanted
=
[
'copying %s -> %s'
%
(
a_file
,
self
.
target2
)]
copy_tree
(
self
.
target
,
self
.
target2
,
verbose
=
1
)
self
.
assertEquals
(
self
.
_logs
,
wanted
)
remove_tree
(
self
.
root_target
,
verbose
=
0
)
remove_tree
(
self
.
target2
,
verbose
=
0
)
def
test_suite
():
return
unittest
.
makeSuite
(
DirUtilTestCase
)
if
__name__
==
"__main__"
:
unittest
.
main
(
defaultTest
=
"test_suite"
)
Lib/distutils/tests/test_file_util.py
0 → 100644
View file @
d5eb9854
"""Tests for distutils.file_util."""
import
unittest
import
os
import
shutil
from
distutils.file_util
import
move_file
from
distutils
import
log
class
FileUtilTestCase
(
unittest
.
TestCase
):
def
_log
(
self
,
msg
,
*
args
):
if
len
(
args
)
>
0
:
self
.
_logs
.
append
(
msg
%
args
)
else
:
self
.
_logs
.
append
(
msg
)
def
setUp
(
self
):
self
.
_logs
=
[]
self
.
old_log
=
log
.
info
log
.
info
=
self
.
_log
self
.
source
=
os
.
path
.
join
(
os
.
path
.
dirname
(
__file__
),
'f1'
)
self
.
target
=
os
.
path
.
join
(
os
.
path
.
dirname
(
__file__
),
'f2'
)
self
.
target_dir
=
os
.
path
.
join
(
os
.
path
.
dirname
(
__file__
),
'd1'
)
def
tearDown
(
self
):
log
.
info
=
self
.
old_log
for
f
in
(
self
.
source
,
self
.
target
,
self
.
target_dir
):
if
os
.
path
.
exists
(
f
):
if
os
.
path
.
isfile
(
f
):
os
.
remove
(
f
)
else
:
shutil
.
rmtree
(
f
)
def
test_move_file_verbosity
(
self
):
f
=
open
(
self
.
source
,
'w'
)
f
.
write
(
'some content'
)
f
.
close
()
move_file
(
self
.
source
,
self
.
target
,
verbose
=
0
)
wanted
=
[]
self
.
assertEquals
(
self
.
_logs
,
wanted
)
# back to original state
move_file
(
self
.
target
,
self
.
source
,
verbose
=
0
)
move_file
(
self
.
source
,
self
.
target
,
verbose
=
1
)
wanted
=
[
'moving %s -> %s'
%
(
self
.
source
,
self
.
target
)]
self
.
assertEquals
(
self
.
_logs
,
wanted
)
# back to original state
move_file
(
self
.
target
,
self
.
source
,
verbose
=
0
)
self
.
_logs
=
[]
# now the target is a dir
os
.
mkdir
(
self
.
target_dir
)
move_file
(
self
.
source
,
self
.
target_dir
,
verbose
=
1
)
wanted
=
[
'moving %s -> %s'
%
(
self
.
source
,
self
.
target_dir
)]
self
.
assertEquals
(
self
.
_logs
,
wanted
)
def
test_suite
():
return
unittest
.
makeSuite
(
FileUtilTestCase
)
if
__name__
==
"__main__"
:
unittest
.
main
(
defaultTest
=
"test_suite"
)
Misc/NEWS
View file @
d5eb9854
...
...
@@ -149,6 +149,9 @@ Core and Builtins
Library
-------
- Issue #1276768: The verbose option was not used in the code of
distutils.file_util and distutils.dir_util.
- Issue #5132: Fixed trouble building extensions under Solaris with
--enabled-shared activated. Initial patch by Dave Peterson.
...
...
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