Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
setuptools
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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jérome Perrin
setuptools
Commits
31babd18
Commit
31babd18
authored
Feb 16, 2009
by
Tarek Ziadé
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed #2279: distutils.sdist.add_defaults now add files listed in package_data and data_files
parent
9fa930f8
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
129 additions
and
43 deletions
+129
-43
command/sdist.py
command/sdist.py
+21
-1
tests/support.py
tests/support.py
+13
-0
tests/test_sdist.py
tests/test_sdist.py
+95
-42
No files found.
command/sdist.py
View file @
31babd18
...
...
@@ -259,6 +259,9 @@ class sdist (Command):
- setup.py
- test/test*.py
- all pure Python modules mentioned in setup script
- all files pointed by package_data (build_py)
- all files defined in data_files.
- all files defined as scripts.
- all C sources listed as part of extensions or C libraries
in the setup script (doesn't catch C headers!)
Warns if (README or README.txt) or setup.py are missing; everything
...
...
@@ -291,10 +294,27 @@ class sdist (Command):
if
files
:
self
.
filelist
.
extend
(
files
)
# build_py is used to get:
# - python modules
# - files defined in package_data
build_py
=
self
.
get_finalized_command
(
'build_py'
)
# getting python files
if
self
.
distribution
.
has_pure_modules
():
build_py
=
self
.
get_finalized_command
(
'build_py'
)
self
.
filelist
.
extend
(
build_py
.
get_source_files
())
# getting package_data files
# (computed in build_py.data_files by build_py.finalize_options)
for
pkg
,
src_dir
,
build_dir
,
filenames
in
build_py
.
data_files
:
for
filename
in
filenames
:
self
.
filelist
.
append
(
os
.
path
.
join
(
src_dir
,
filename
))
# getting distribution.data_files
if
self
.
distribution
.
has_data_files
():
for
dirname
,
filenames
in
self
.
distribution
.
data_files
:
for
filename
in
filenames
:
self
.
filelist
.
append
(
os
.
path
.
join
(
dirname
,
filename
))
if
self
.
distribution
.
has_ext_modules
():
build_ext
=
self
.
get_finalized_command
(
'build_ext'
)
self
.
filelist
.
extend
(
build_ext
.
get_source_files
())
...
...
tests/support.py
View file @
31babd18
...
...
@@ -42,6 +42,19 @@ class TempdirManager(object):
self
.
tempdirs
.
append
(
d
)
return
d
def
write_file
(
self
,
path
,
content
):
"""Writes a file in the given path.
path can be a string or a sequence.
"""
if
isinstance
(
path
,
(
list
,
tuple
)):
path
=
os
.
path
.
join
(
*
path
)
f
=
open
(
path
,
'w'
)
try
:
f
.
write
(
content
)
finally
:
f
.
close
()
class
DummyCommand
:
"""Class to store options for retrieval via set_undefined_options()."""
...
...
tests/test_sdist.py
View file @
31babd18
...
...
@@ -12,6 +12,7 @@ from distutils.core import Distribution
from
distutils.tests.test_config
import
PyPIRCCommandTestCase
from
distutils.errors
import
DistutilsExecError
from
distutils.spawn
import
find_executable
from
distutils.tests
import
support
SETUP_PY
=
"""
from distutils.core import setup
...
...
@@ -20,13 +21,20 @@ import somecode
setup(name='fake')
"""
MANIFEST_IN
=
"""
recursive-include somecode *
MANIFEST
=
"""
\
README
setup.py
data/data.dt
scripts/script.py
somecode/__init__.py
somecode/doc.dat
somecode/doc.txt
"""
class
sdistTestCase
(
PyPIRCCommandTestCase
):
class
sdistTestCase
(
support
.
LoggingSilencer
,
PyPIRCCommandTestCase
):
def
setUp
(
self
):
support
.
LoggingSilencer
.
setUp
(
self
)
# PyPIRCCommandTestCase creates a temp dir already
# and put it in self.tmp_dir
PyPIRCCommandTestCase
.
setUp
(
self
)
...
...
@@ -34,24 +42,34 @@ class sdistTestCase(PyPIRCCommandTestCase):
self
.
old_path
=
os
.
getcwd
()
os
.
mkdir
(
join
(
self
.
tmp_dir
,
'somecode'
))
os
.
mkdir
(
join
(
self
.
tmp_dir
,
'dist'
))
# creating a MANIFEST, a package, and a README
self
.
_write
(
join
(
self
.
tmp_dir
,
'MANIFEST.in'
),
MANIFEST_IN
)
self
.
_write
(
join
(
self
.
tmp_dir
,
'README'
),
'xxx'
)
self
.
_write
(
join
(
self
.
tmp_dir
,
'somecode'
,
'__init__.py'
),
'#'
)
self
.
_write
(
join
(
self
.
tmp_dir
,
'setup.py'
),
SETUP_PY
)
# a package, and a README
self
.
write_file
((
self
.
tmp_dir
,
'README'
),
'xxx'
)
self
.
write_file
((
self
.
tmp_dir
,
'somecode'
,
'__init__.py'
),
'#'
)
self
.
write_file
((
self
.
tmp_dir
,
'setup.py'
),
SETUP_PY
)
os
.
chdir
(
self
.
tmp_dir
)
def
tearDown
(
self
):
# back to normal
os
.
chdir
(
self
.
old_path
)
PyPIRCCommandTestCase
.
tearDown
(
self
)
def
_write
(
self
,
path
,
content
):
f
=
open
(
path
,
'w'
)
try
:
f
.
write
(
content
)
finally
:
f
.
close
()
support
.
LoggingSilencer
.
tearDown
(
self
)
def
get_cmd
(
self
,
metadata
=
None
):
"""Returns a cmd"""
if
metadata
is
None
:
metadata
=
{
'name'
:
'fake'
,
'version'
:
'1.0'
,
'url'
:
'xxx'
,
'author'
:
'xxx'
,
'author_email'
:
'xxx'
}
dist
=
Distribution
(
metadata
)
dist
.
script_name
=
'setup.py'
dist
.
packages
=
[
'somecode'
]
dist
.
include_package_data
=
True
cmd
=
sdist
(
dist
)
cmd
.
dist_dir
=
'dist'
def
_warn
(
*
args
):
pass
cmd
.
warn
=
_warn
return
dist
,
cmd
def
test_prune_file_list
(
self
):
# this test creates a package with some vcs dirs in it
...
...
@@ -60,33 +78,24 @@ class sdistTestCase(PyPIRCCommandTestCase):
# creating VCS directories with some files in them
os
.
mkdir
(
join
(
self
.
tmp_dir
,
'somecode'
,
'.svn'
))
self
.
_write
(
join
(
self
.
tmp_dir
,
'somecode'
,
'.svn'
,
'ok.py'
),
'xxx'
)
self
.
write_file
(
(
self
.
tmp_dir
,
'somecode'
,
'.svn'
,
'ok.py'
),
'xxx'
)
os
.
mkdir
(
join
(
self
.
tmp_dir
,
'somecode'
,
'.hg'
))
self
.
_write
(
join
(
self
.
tmp_dir
,
'somecode'
,
'.hg'
,
self
.
write_file
(
(
self
.
tmp_dir
,
'somecode'
,
'.hg'
,
'ok'
),
'xxx'
)
os
.
mkdir
(
join
(
self
.
tmp_dir
,
'somecode'
,
'.git'
))
self
.
_write
(
join
(
self
.
tmp_dir
,
'somecode'
,
'.git'
,
self
.
write_file
(
(
self
.
tmp_dir
,
'somecode'
,
'.git'
,
'ok'
),
'xxx'
)
# now building a sdist
dist
=
Distribution
()
dist
.
script_name
=
'setup.py'
dist
.
metadata
.
name
=
'fake'
dist
.
metadata
.
version
=
'1.0'
dist
.
metadata
.
url
=
'http://xxx'
dist
.
metadata
.
author
=
dist
.
metadata
.
author_email
=
'xxx'
dist
.
packages
=
[
'somecode'
]
dist
.
include_package_data
=
True
cmd
=
sdist
(
dist
)
cmd
.
manifest
=
'MANIFEST'
cmd
.
template
=
'MANIFEST.in'
cmd
.
dist_dir
=
'dist'
dist
,
cmd
=
self
.
get_cmd
()
# zip is available universally
# (tar might not be installed under win32)
cmd
.
formats
=
[
'zip'
]
cmd
.
ensure_finalized
()
cmd
.
run
()
# now let's check what we have
...
...
@@ -111,21 +120,11 @@ class sdistTestCase(PyPIRCCommandTestCase):
return
# now building a sdist
dist
=
Distribution
()
dist
.
script_name
=
'setup.py'
dist
.
metadata
.
name
=
'fake'
dist
.
metadata
.
version
=
'1.0'
dist
.
metadata
.
url
=
'http://xxx'
dist
.
metadata
.
author
=
dist
.
metadata
.
author_email
=
'xxx'
dist
.
packages
=
[
'somecode'
]
dist
.
include_package_data
=
True
cmd
=
sdist
(
dist
)
cmd
.
manifest
=
'MANIFEST'
cmd
.
template
=
'MANIFEST.in'
cmd
.
dist_dir
=
'dist'
dist
,
cmd
=
self
.
get_cmd
()
# creating a gztar then a tar
cmd
.
formats
=
[
'gztar'
,
'tar'
]
cmd
.
ensure_finalized
()
cmd
.
run
()
# making sure we have two files
...
...
@@ -140,6 +139,8 @@ class sdistTestCase(PyPIRCCommandTestCase):
# now trying a tar then a gztar
cmd
.
formats
=
[
'tar'
,
'gztar'
]
cmd
.
ensure_finalized
()
cmd
.
run
()
result
=
os
.
listdir
(
dist_folder
)
...
...
@@ -147,6 +148,58 @@ class sdistTestCase(PyPIRCCommandTestCase):
self
.
assertEquals
(
result
,
[
'fake-1.0.tar'
,
'fake-1.0.tar.gz'
])
def
test_add_defaults
(
self
):
# http://bugs.python.org/issue2279
# add_default should also include
# data_files and package_data
dist
,
cmd
=
self
.
get_cmd
()
# filling data_files by pointing files
# in package_data
dist
.
package_data
=
{
''
:
[
'*.cfg'
,
'*.dat'
],
'somecode'
:
[
'*.txt'
]}
self
.
write_file
((
self
.
tmp_dir
,
'somecode'
,
'doc.txt'
),
'#'
)
self
.
write_file
((
self
.
tmp_dir
,
'somecode'
,
'doc.dat'
),
'#'
)
# adding some data in data_files
data_dir
=
join
(
self
.
tmp_dir
,
'data'
)
os
.
mkdir
(
data_dir
)
self
.
write_file
((
data_dir
,
'data.dt'
),
'#'
)
dist
.
data_files
=
[(
'data'
,
[
'data.dt'
])]
# adding a script
script_dir
=
join
(
self
.
tmp_dir
,
'scripts'
)
os
.
mkdir
(
script_dir
)
self
.
write_file
((
script_dir
,
'script.py'
),
'#'
)
dist
.
scripts
=
[
join
(
'scripts'
,
'script.py'
)]
cmd
.
formats
=
[
'zip'
]
cmd
.
use_defaults
=
True
cmd
.
ensure_finalized
()
cmd
.
run
()
# now let's check what we have
dist_folder
=
join
(
self
.
tmp_dir
,
'dist'
)
files
=
os
.
listdir
(
dist_folder
)
self
.
assertEquals
(
files
,
[
'fake-1.0.zip'
])
zip_file
=
zipfile
.
ZipFile
(
join
(
dist_folder
,
'fake-1.0.zip'
))
try
:
content
=
zip_file
.
namelist
()
finally
:
zip_file
.
close
()
# making sure everything was added
self
.
assertEquals
(
len
(
content
),
8
)
# checking the MANIFEST
manifest
=
open
(
join
(
self
.
tmp_dir
,
'MANIFEST'
)).
read
()
self
.
assertEquals
(
manifest
,
MANIFEST
)
def
test_suite
():
return
unittest
.
makeSuite
(
sdistTestCase
)
...
...
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