Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
04861dc8
Kaydet (Commit)
04861dc8
authored
Eyl 06, 2015
tarafından
Serhiy Storchaka
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Fix, refactor and extend tests for shutil.make_archive().
üst
7c7b4b5d
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
66 additions
and
73 deletions
+66
-73
test_shutil.py
Lib/test/test_shutil.py
+66
-73
No files found.
Lib/test/test_shutil.py
Dosyayı görüntüle @
04861dc8
...
@@ -10,7 +10,7 @@ import os.path
...
@@ -10,7 +10,7 @@ import os.path
import
errno
import
errno
from
os.path
import
splitdrive
from
os.path
import
splitdrive
from
distutils.spawn
import
find_executable
,
spawn
from
distutils.spawn
import
find_executable
,
spawn
from
shutil
import
(
_make_tarball
,
_make_zipfile
,
make_archive
,
from
shutil
import
(
make_archive
,
register_archive_format
,
unregister_archive_format
,
register_archive_format
,
unregister_archive_format
,
get_archive_formats
)
get_archive_formats
)
import
tarfile
import
tarfile
...
@@ -374,114 +374,106 @@ class TestShutil(unittest.TestCase):
...
@@ -374,114 +374,106 @@ class TestShutil(unittest.TestCase):
@unittest.skipUnless
(
zlib
,
"requires zlib"
)
@unittest.skipUnless
(
zlib
,
"requires zlib"
)
def
test_make_tarball
(
self
):
def
test_make_tarball
(
self
):
# creating something to tar
# creating something to tar
tmpdir
=
self
.
mkdtemp
()
root_dir
,
base_dir
=
self
.
_create_files
(
''
)
self
.
write_file
([
tmpdir
,
'file1'
],
'xxx'
)
self
.
write_file
([
tmpdir
,
'file2'
],
'xxx'
)
os
.
mkdir
(
os
.
path
.
join
(
tmpdir
,
'sub'
))
self
.
write_file
([
tmpdir
,
'sub'
,
'file3'
],
'xxx'
)
tmpdir2
=
self
.
mkdtemp
()
tmpdir2
=
self
.
mkdtemp
()
# force shutil to create the directory
# force shutil to create the directory
os
.
rmdir
(
tmpdir2
)
os
.
rmdir
(
tmpdir2
)
unittest
.
skipUnless
(
splitdrive
(
tmp
dir
)[
0
]
==
splitdrive
(
tmpdir2
)[
0
],
unittest
.
skipUnless
(
splitdrive
(
root_
dir
)[
0
]
==
splitdrive
(
tmpdir2
)[
0
],
"source and target should be on same drive"
)
"source and target should be on same drive"
)
base_name
=
os
.
path
.
join
(
tmpdir2
,
'archive'
)
base_name
=
os
.
path
.
join
(
tmpdir2
,
'archive'
)
# working with relative paths to avoid tar warnings
# working with relative paths to avoid tar warnings
with
support
.
change_cwd
(
tmpdir
):
make_archive
(
splitdrive
(
base_name
)[
1
],
'gztar'
,
root_dir
,
'.'
)
_make_tarball
(
splitdrive
(
base_name
)[
1
],
'.'
)
# check if the compressed tarball was created
# check if the compressed tarball was created
tarball
=
base_name
+
'.tar.gz'
tarball
=
base_name
+
'.tar.gz'
self
.
assertTrue
(
os
.
path
.
exists
(
tarball
))
self
.
assertTrue
(
os
.
path
.
isfile
(
tarball
))
self
.
assertTrue
(
tarfile
.
is_tarfile
(
tarball
))
with
tarfile
.
open
(
tarball
,
'r:gz'
)
as
tf
:
self
.
assertEqual
(
sorted
(
tf
.
getnames
()),
[
'.'
,
'./file1'
,
'./file2'
,
'./sub'
,
'./sub/file3'
,
'./sub2'
])
# trying an uncompressed one
# trying an uncompressed one
base_name
=
os
.
path
.
join
(
tmpdir2
,
'archive'
)
base_name
=
os
.
path
.
join
(
tmpdir2
,
'archive'
)
with
support
.
change_cwd
(
tmpdir
):
make_archive
(
splitdrive
(
base_name
)[
1
],
'tar'
,
root_dir
,
'.'
)
_make_tarball
(
splitdrive
(
base_name
)[
1
],
'.'
,
compress
=
None
)
tarball
=
base_name
+
'.tar'
tarball
=
base_name
+
'.tar'
self
.
assertTrue
(
os
.
path
.
exists
(
tarball
))
self
.
assertTrue
(
os
.
path
.
isfile
(
tarball
))
self
.
assertTrue
(
tarfile
.
is_tarfile
(
tarball
))
with
tarfile
.
open
(
tarball
,
'r'
)
as
tf
:
self
.
assertEqual
(
sorted
(
tf
.
getnames
()),
[
'.'
,
'./file1'
,
'./file2'
,
'./sub'
,
'./sub/file3'
,
'./sub2'
])
def
_tarinfo
(
self
,
path
):
def
_tarinfo
(
self
,
path
):
tar
=
tarfile
.
open
(
path
)
with
tarfile
.
open
(
path
)
as
tar
:
try
:
names
=
tar
.
getnames
()
names
=
tar
.
getnames
()
names
.
sort
()
names
.
sort
()
return
tuple
(
names
)
return
tuple
(
names
)
finally
:
tar
.
close
()
def
_create_files
(
self
):
def
_create_files
(
self
,
base_dir
=
'dist'
):
# creating something to tar
# creating something to tar
tmpdir
=
self
.
mkdtemp
()
root_dir
=
self
.
mkdtemp
()
dist
=
os
.
path
.
join
(
tmpdir
,
'dist'
)
dist
=
os
.
path
.
join
(
root_dir
,
base_dir
)
os
.
mkdir
(
dist
)
if
not
os
.
path
.
isdir
(
dist
):
self
.
write_file
([
dist
,
'file1'
],
'xxx'
)
os
.
makedirs
(
dist
)
self
.
write_file
([
dist
,
'file2'
],
'xxx'
)
self
.
write_file
((
dist
,
'file1'
),
'xxx'
)
self
.
write_file
((
dist
,
'file2'
),
'xxx'
)
os
.
mkdir
(
os
.
path
.
join
(
dist
,
'sub'
))
os
.
mkdir
(
os
.
path
.
join
(
dist
,
'sub'
))
self
.
write_file
(
[
dist
,
'sub'
,
'file3'
]
,
'xxx'
)
self
.
write_file
(
(
dist
,
'sub'
,
'file3'
)
,
'xxx'
)
os
.
mkdir
(
os
.
path
.
join
(
dist
,
'sub2'
))
os
.
mkdir
(
os
.
path
.
join
(
dist
,
'sub2'
))
tmpdir2
=
self
.
mkdtemp
()
if
base_dir
:
base_name
=
os
.
path
.
join
(
tmpdir2
,
'archive
'
)
self
.
write_file
((
root_dir
,
'outer'
),
'xxx
'
)
return
tmpdir
,
tmpdir2
,
base_name
return
root_dir
,
base_dir
@unittest.skipUnless
(
zlib
,
"Requires zlib"
)
@unittest.skipUnless
(
zlib
,
"Requires zlib"
)
@unittest.skipUnless
(
find_executable
(
'tar'
)
and
find_executable
(
'gzip'
)
,
@unittest.skipUnless
(
find_executable
(
'tar'
),
'Need the tar command to run'
)
'Need the tar command to run'
)
def
test_tarfile_vs_tar
(
self
):
def
test_tarfile_vs_tar
(
self
):
tmpdir
,
tmpdir2
,
base_name
=
self
.
_create_files
()
root_dir
,
base_dir
=
self
.
_create_files
()
with
support
.
change_cwd
(
tmpdir
):
base_name
=
os
.
path
.
join
(
self
.
mkdtemp
(),
'archive'
)
_make_tarball
(
base_name
,
'dist'
)
make_archive
(
base_name
,
'gztar'
,
root_dir
,
base_dir
)
# check if the compressed tarball was created
# check if the compressed tarball was created
tarball
=
base_name
+
'.tar.gz'
tarball
=
base_name
+
'.tar.gz'
self
.
assertTrue
(
os
.
path
.
exists
(
tarball
))
self
.
assertTrue
(
os
.
path
.
isfile
(
tarball
))
# now create another tarball using `tar`
# now create another tarball using `tar`
tarball2
=
os
.
path
.
join
(
tmpdir
,
'archive2.tar.gz'
)
tarball2
=
os
.
path
.
join
(
root_dir
,
'archive2.tar'
)
tar_cmd
=
[
'tar'
,
'-cf'
,
'archive2.tar'
,
'dist'
]
tar_cmd
=
[
'tar'
,
'-cf'
,
'archive2.tar'
,
base_dir
]
gzip_cmd
=
[
'gzip'
,
'-f9'
,
'archive2.tar'
]
with
support
.
change_cwd
(
root_dir
),
captured_stdout
():
with
support
.
change_cwd
(
tmpdir
):
spawn
(
tar_cmd
)
with
captured_stdout
()
as
s
:
spawn
(
tar_cmd
)
self
.
assertTrue
(
os
.
path
.
isfile
(
tarball2
))
spawn
(
gzip_cmd
)
self
.
assertTrue
(
os
.
path
.
exists
(
tarball2
))
# let's compare both tarballs
# let's compare both tarballs
self
.
assertEqual
(
self
.
_tarinfo
(
tarball
),
self
.
_tarinfo
(
tarball2
))
self
.
assertEqual
(
self
.
_tarinfo
(
tarball
),
self
.
_tarinfo
(
tarball2
))
# trying an uncompressed one
# trying an uncompressed one
base_name
=
os
.
path
.
join
(
tmpdir2
,
'archive'
)
make_archive
(
base_name
,
'tar'
,
root_dir
,
base_dir
)
with
support
.
change_cwd
(
tmpdir
):
_make_tarball
(
base_name
,
'dist'
,
compress
=
None
)
tarball
=
base_name
+
'.tar'
tarball
=
base_name
+
'.tar'
self
.
assertTrue
(
os
.
path
.
exists
(
tarball
))
self
.
assertTrue
(
os
.
path
.
isfile
(
tarball
))
# now for a dry_run
# now for a dry_run
base_name
=
os
.
path
.
join
(
tmpdir2
,
'archive'
)
make_archive
(
base_name
,
'tar'
,
root_dir
,
base_dir
,
dry_run
=
True
)
with
support
.
change_cwd
(
tmpdir
):
_make_tarball
(
base_name
,
'dist'
,
compress
=
None
,
dry_run
=
True
)
tarball
=
base_name
+
'.tar'
tarball
=
base_name
+
'.tar'
self
.
assertTrue
(
os
.
path
.
exists
(
tarball
))
self
.
assertTrue
(
os
.
path
.
isfile
(
tarball
))
@unittest.skipUnless
(
zlib
,
"Requires zlib"
)
@unittest.skipUnless
(
zlib
,
"Requires zlib"
)
@unittest.skipUnless
(
ZIP_SUPPORT
,
'Need zip support to run'
)
@unittest.skipUnless
(
ZIP_SUPPORT
,
'Need zip support to run'
)
def
test_make_zipfile
(
self
):
def
test_make_zipfile
(
self
):
# creating something to
tar
# creating something to
zip
tmpdir
=
self
.
mkdtemp
()
root_dir
,
base_dir
=
self
.
_create_files
()
self
.
write_file
([
tmpdir
,
'file1'
],
'xxx
'
)
base_name
=
os
.
path
.
join
(
self
.
mkdtemp
(),
'archive
'
)
self
.
write_file
([
tmpdir
,
'file2'
],
'xxx
'
)
res
=
make_archive
(
base_name
,
'zip'
,
root_dir
,
'dist
'
)
tmpdir2
=
self
.
mkdtemp
()
self
.
assertEqual
(
res
,
base_name
+
'.zip'
)
# force shutil to create the directory
self
.
assertTrue
(
os
.
path
.
isfile
(
res
))
os
.
rmdir
(
tmpdir2
)
self
.
assertTrue
(
zipfile
.
is_zipfile
(
res
))
base_name
=
os
.
path
.
join
(
tmpdir2
,
'archive'
)
with
zipfile
.
ZipFile
(
res
)
as
zf
:
_make_zipfile
(
base_name
,
tmpdir
)
self
.
assertEqual
(
sorted
(
zf
.
namelist
()),
[
'dist/file1'
,
'dist/file2'
,
'dist/sub/file3'
])
# check if the compressed tarball was created
tarball
=
base_name
+
'.zip'
self
.
assertTrue
(
os
.
path
.
exists
(
tarball
))
def
test_make_archive
(
self
):
def
test_make_archive
(
self
):
...
@@ -499,35 +491,36 @@ class TestShutil(unittest.TestCase):
...
@@ -499,35 +491,36 @@ class TestShutil(unittest.TestCase):
else
:
else
:
group
=
owner
=
'root'
group
=
owner
=
'root'
base_dir
,
root_dir
,
base_name
=
self
.
_create_files
()
root_dir
,
base_dir
=
self
.
_create_files
()
base_name
=
os
.
path
.
join
(
self
.
mkdtemp
()
,
'archive'
)
base_name
=
os
.
path
.
join
(
self
.
mkdtemp
(),
'archive'
)
res
=
make_archive
(
base_name
,
'zip'
,
root_dir
,
base_dir
,
owner
=
owner
,
res
=
make_archive
(
base_name
,
'zip'
,
root_dir
,
base_dir
,
owner
=
owner
,
group
=
group
)
group
=
group
)
self
.
assertTrue
(
os
.
path
.
exists
(
res
))
self
.
assertTrue
(
os
.
path
.
isfile
(
res
))
res
=
make_archive
(
base_name
,
'zip'
,
root_dir
,
base_dir
)
res
=
make_archive
(
base_name
,
'zip'
,
root_dir
,
base_dir
)
self
.
assertTrue
(
os
.
path
.
exists
(
res
))
self
.
assertTrue
(
os
.
path
.
isfile
(
res
))
res
=
make_archive
(
base_name
,
'tar'
,
root_dir
,
base_dir
,
res
=
make_archive
(
base_name
,
'tar'
,
root_dir
,
base_dir
,
owner
=
owner
,
group
=
group
)
owner
=
owner
,
group
=
group
)
self
.
assertTrue
(
os
.
path
.
exists
(
res
))
self
.
assertTrue
(
os
.
path
.
isfile
(
res
))
res
=
make_archive
(
base_name
,
'tar'
,
root_dir
,
base_dir
,
res
=
make_archive
(
base_name
,
'tar'
,
root_dir
,
base_dir
,
owner
=
'kjhkjhkjg'
,
group
=
'oihohoh'
)
owner
=
'kjhkjhkjg'
,
group
=
'oihohoh'
)
self
.
assertTrue
(
os
.
path
.
exists
(
res
))
self
.
assertTrue
(
os
.
path
.
isfile
(
res
))
@unittest.skipUnless
(
zlib
,
"Requires zlib"
)
@unittest.skipUnless
(
zlib
,
"Requires zlib"
)
@unittest.skipUnless
(
UID_GID_SUPPORT
,
"Requires grp and pwd support"
)
@unittest.skipUnless
(
UID_GID_SUPPORT
,
"Requires grp and pwd support"
)
def
test_tarfile_root_owner
(
self
):
def
test_tarfile_root_owner
(
self
):
tmpdir
,
tmpdir2
,
base_name
=
self
.
_create_files
()
root_dir
,
base_dir
=
self
.
_create_files
()
base_name
=
os
.
path
.
join
(
self
.
mkdtemp
(),
'archive'
)
group
=
grp
.
getgrgid
(
0
)[
0
]
group
=
grp
.
getgrgid
(
0
)[
0
]
owner
=
pwd
.
getpwuid
(
0
)[
0
]
owner
=
pwd
.
getpwuid
(
0
)[
0
]
with
support
.
change_cwd
(
tmp
dir
):
with
support
.
change_cwd
(
root_
dir
):
archive_name
=
_make_tarball
(
base_name
,
'dist'
,
compress
=
None
,
archive_name
=
make_archive
(
base_name
,
'gztar'
,
root_dir
,
'dist'
,
owner
=
owner
,
group
=
group
)
owner
=
owner
,
group
=
group
)
# check if the compressed tarball was created
# check if the compressed tarball was created
self
.
assertTrue
(
os
.
path
.
exists
(
archive_name
))
self
.
assertTrue
(
os
.
path
.
isfile
(
archive_name
))
# now checks the rights
# now checks the rights
archive
=
tarfile
.
open
(
archive_name
)
archive
=
tarfile
.
open
(
archive_name
)
...
...
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