diff options
| author | Alex Grönholm <alex.gronholm@nextday.fi> | 2018-05-26 20:51:16 +0300 |
|---|---|---|
| committer | Alex Grönholm <alex.gronholm@nextday.fi> | 2018-07-17 15:02:50 +0300 |
| commit | 89492505b968f6bf9ae9cc35f88f8ecd6ce6cbf1 (patch) | |
| tree | 3364662e4c077856db8d06fa3d57b4b544da21f8 /tests | |
| parent | 353217fb496d61b3c5ce287b9c61a229e2ed27fe (diff) | |
| download | wheel-git-89492505b968f6bf9ae9cc35f88f8ecd6ce6cbf1.tar.gz | |
Renamed the wheel.tool package to wheel.cli and migrated CLI stuff there
The VerifyingZipFile class was also merged to the WheelFile class.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/cli/eggnames.txt (renamed from tests/eggnames.txt) | 0 | ||||
| -rw-r--r-- | tests/cli/test_convert.py (renamed from tests/test_egg2wheel.py) | 9 | ||||
| -rw-r--r-- | tests/cli/test_install.py (renamed from tests/headers.dist/header.h) | 0 | ||||
| -rw-r--r-- | tests/cli/test_unpack.py | 10 | ||||
| -rw-r--r-- | tests/conftest.py | 47 | ||||
| -rw-r--r-- | tests/test_install.py | 71 | ||||
| -rw-r--r-- | tests/test_ranking.py | 43 | ||||
| -rw-r--r-- | tests/test_tool.py | 15 | ||||
| -rw-r--r-- | tests/test_wheelfile.py | 180 | ||||
| -rw-r--r-- | tests/testdata/complex-dist/complexdist/__init__.py (renamed from tests/complex-dist/complexdist/__init__.py) | 0 | ||||
| -rw-r--r-- | tests/testdata/complex-dist/setup.py (renamed from tests/complex-dist/setup.py) | 0 | ||||
| -rw-r--r-- | tests/testdata/extension.dist/extension.c (renamed from tests/extension.dist/extension.c) | 0 | ||||
| -rw-r--r-- | tests/testdata/extension.dist/setup.cfg (renamed from tests/extension.dist/setup.cfg) | 0 | ||||
| -rw-r--r-- | tests/testdata/extension.dist/setup.py (renamed from tests/extension.dist/setup.py) | 0 | ||||
| -rw-r--r-- | tests/testdata/headers.dist/header.h (renamed from tests/headers.dist/headersdist.py) | 0 | ||||
| -rw-r--r-- | tests/testdata/headers.dist/headersdist.py (renamed from tests/simple.dist/simpledist/__init__.py) | 0 | ||||
| -rw-r--r-- | tests/testdata/headers.dist/setup.cfg (renamed from tests/headers.dist/setup.cfg) | 0 | ||||
| -rw-r--r-- | tests/testdata/headers.dist/setup.py (renamed from tests/headers.dist/setup.py) | 0 | ||||
| -rw-r--r-- | tests/testdata/simple.dist/setup.py (renamed from tests/simple.dist/setup.py) | 0 | ||||
| -rw-r--r-- | tests/testdata/simple.dist/simpledist/__init__.py (renamed from tests/unicode.dist/unicodedist/__init__.py) | 0 | ||||
| -rw-r--r-- | tests/testdata/test-1.0-py2.py3-none-win32.whl (renamed from tests/test-1.0-py2.py3-none-win32.whl) | bin | 5226 -> 5226 bytes | |||
| -rw-r--r-- | tests/testdata/unicode.dist/setup.py (renamed from tests/unicode.dist/setup.py) | 0 | ||||
| -rw-r--r-- | tests/testdata/unicode.dist/unicodedist/__init__.py (renamed from tests/unicode.dist/unicodedist/åäö_日本語.py) | 0 | ||||
| -rw-r--r-- | tests/testdata/unicode.dist/unicodedist/åäö_日本語.py | 0 |
24 files changed, 147 insertions, 228 deletions
diff --git a/tests/eggnames.txt b/tests/cli/eggnames.txt index d422120..d422120 100644 --- a/tests/eggnames.txt +++ b/tests/cli/eggnames.txt diff --git a/tests/test_egg2wheel.py b/tests/cli/test_convert.py index 1455c55..5ba1947 100644 --- a/tests/test_egg2wheel.py +++ b/tests/cli/test_convert.py @@ -1,6 +1,6 @@ import os.path -from wheel import egg2wheel +from wheel.cli.convert import convert, egg_info_re def test_egg_re(): @@ -10,4 +10,9 @@ def test_egg_re(): for line in egg_names: line = line.strip() if line: - assert egg2wheel.egg_info_re.match(line), line + assert egg_info_re.match(line), line + + +def test_convert_egg(egg_paths, tmpdir): + convert(egg_paths, str(tmpdir), verbose=False) + assert len(tmpdir.listdir()) == len(egg_paths) diff --git a/tests/headers.dist/header.h b/tests/cli/test_install.py index e69de29..e69de29 100644 --- a/tests/headers.dist/header.h +++ b/tests/cli/test_install.py diff --git a/tests/cli/test_unpack.py b/tests/cli/test_unpack.py new file mode 100644 index 0000000..531ca7d --- /dev/null +++ b/tests/cli/test_unpack.py @@ -0,0 +1,10 @@ +from wheel.cli.unpack import unpack + + +def test_unpack(wheel_paths, tmpdir): + """ + Make sure 'wheel unpack' works. + This also verifies the integrity of our testing wheel files. + """ + for wheel_path in wheel_paths: + unpack(wheel_path, str(tmpdir)) diff --git a/tests/conftest.py b/tests/conftest.py index 1431c3f..18cd748 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -2,54 +2,12 @@ pytest local configuration plug-in """ -import gc import os.path import subprocess import sys from shutil import rmtree import pytest -import warnings - -THISDIR = os.path.dirname(__file__) - - -@pytest.fixture(autouse=True) -def error_on_ResourceWarning(): - """This fixture captures ResourceWarning's and reports an "error" - describing the file handles left open. - - This is shown regardless of how successful the test was, if a test fails - and leaves files open then those files will be reported. Ideally, even - those files should be closed properly after a test failure or exception. - - Since only Python 3 and PyPy3 have ResourceWarning's, this context will - have no effect when running tests on Python 2 or PyPy. - - Because of autouse=True, this function will be automatically enabled for - all test_* functions in this module. - - This code is primarily based on the examples found here: - https://stackoverflow.com/questions/24717027/convert-python-3-resourcewarnings-into-exception - """ - try: - ResourceWarning - except NameError: - # Python 2, PyPy - yield - return - - # Python 3, PyPy3 - with warnings.catch_warnings(record=True) as caught: - warnings.resetwarnings() # clear all filters - warnings.simplefilter('ignore') # ignore all - warnings.simplefilter('always', ResourceWarning) # noqa: F821 - yield # run tests in this context - gc.collect() # run garbage collection (for pypy3) - if caught: - pytest.fail('The following file descriptors were not closed properly:\n' + - '\n'.join((str(warning.message) for warning in caught)), - pytrace=False) @pytest.fixture(scope='session') @@ -58,8 +16,9 @@ def wheels_and_eggs(): test_distributions = "complex-dist", "simple.dist", "headers.dist", "unicode.dist" files = [] pwd = os.path.abspath(os.curdir) + this_dir = os.path.dirname(__file__) for dist in test_distributions: - os.chdir(os.path.join(THISDIR, dist)) + os.chdir(os.path.join(this_dir, 'testdata', dist)) subprocess.check_call([sys.executable, 'setup.py', 'bdist_egg', 'bdist_wheel']) dist_path = os.path.join(os.curdir, 'dist') files.extend([os.path.abspath(os.path.join(dist_path, fname)) @@ -72,7 +31,7 @@ def wheels_and_eggs(): for dist in test_distributions: for subdir in ('build', 'dist'): try: - rmtree(os.path.join(THISDIR, dist, subdir)) + rmtree(os.path.join(this_dir, dist, subdir)) except OSError: pass diff --git a/tests/test_install.py b/tests/test_install.py deleted file mode 100644 index aee57cd..0000000 --- a/tests/test_install.py +++ /dev/null @@ -1,71 +0,0 @@ -# Test wheel. -# The file has the following contents: -# hello.pyd -# hello/hello.py -# hello/__init__.py -# test-1.0.data/data/hello.dat -# test-1.0.data/headers/hello.dat -# test-1.0.data/scripts/hello.sh -# test-1.0.dist-info/WHEEL -# test-1.0.dist-info/METADATA -# test-1.0.dist-info/RECORD -# The root is PLATLIB -# So, some in PLATLIB, and one in each of DATA, HEADERS and SCRIPTS. - -import os - -from wheel.install import WheelFile - -THISDIR = os.path.dirname(__file__) -TESTWHEEL = os.path.join(THISDIR, 'test-1.0-py2.py3-none-win32.whl') - - -def test_compatibility_tags(): - """Test compatibilty tags are working.""" - wf = WheelFile("package-1.0.0-cp32.cp33-noabi-noarch.whl") - assert (list(wf.compatibility_tags) == - [('cp32', 'noabi', 'noarch'), ('cp33', 'noabi', 'noarch')]) - assert wf.arity == 2 - - wf2 = WheelFile("package-1.0.0-1st-cp33-noabi-noarch.whl") - wf2_info = wf2.parsed_filename.groupdict() - assert wf2_info['build'] == '1st', wf2_info - - -def test_pick_best(): - """Test the wheel ranking algorithm.""" - def get_tags(res): - info = res[-1].parsed_filename.groupdict() - return info['pyver'], info['abi'], info['plat'] - - cand_tags = [('py27', 'noabi', 'noarch'), ('py26', 'noabi', 'noarch'), - ('cp27', 'noabi', 'linux_i686'), - ('cp26', 'noabi', 'linux_i686'), - ('cp27', 'noabi', 'linux_x86_64'), - ('cp26', 'noabi', 'linux_x86_64')] - cand_wheels = [WheelFile('testpkg-1.0-%s-%s-%s.whl' % t) - for t in cand_tags] - - supported = [('cp27', 'noabi', 'linux_i686'), ('py27', 'noabi', 'noarch')] - supported2 = [('cp27', 'noabi', 'linux_i686'), ('py27', 'noabi', 'noarch'), - ('cp26', 'noabi', 'linux_i686'), ('py26', 'noabi', 'noarch')] - supported3 = [('cp26', 'noabi', 'linux_i686'), ('py26', 'noabi', 'noarch'), - ('cp27', 'noabi', 'linux_i686'), ('py27', 'noabi', 'noarch')] - - for supp in (supported, supported2, supported3): - def context(): - return list(supp) - - for wheel_ in cand_wheels: - wheel_.context = context - best = max(cand_wheels) - assert list(best.tags)[0] == supp[0] - - # assert_equal( - # list(map(get_tags, pick_best(cand_wheels, supp, top=False))), supp) - - -def test_wheelfile_re(): - # Regression test for #208 - wf = WheelFile('foo-2-py3-none-any.whl') - assert wf.distinfo_name == 'foo-2.dist-info' diff --git a/tests/test_ranking.py b/tests/test_ranking.py deleted file mode 100644 index fed2de7..0000000 --- a/tests/test_ranking.py +++ /dev/null @@ -1,43 +0,0 @@ -from wheel.install import WheelFile -from wheel.pep425tags import get_supported - -WHEELPAT = "%(name)s-%(ver)s-%(pyver)s-%(abi)s-%(arch)s.whl" - - -def make_wheel(name, ver, pyver, abi, arch): - name = WHEELPAT % {'name': name, 'ver': ver, 'pyver': pyver, 'abi': abi, 'arch': arch} - return WheelFile(name) - - -# This relies on the fact that generate_supported will always return the -# exact pyver, abi, and architecture for its first (best) match. -sup = get_supported() -pyver, abi, arch = sup[0] -genver = 'py' + pyver[2:] -majver = genver[:3] - -COMBINATIONS = ( - ('bar', '0.9', 'py2.py3', 'none', 'any'), - ('bar', '0.9', majver, 'none', 'any'), - ('bar', '0.9', genver, 'none', 'any'), - ('bar', '0.9', pyver, abi, arch), - ('bar', '1.3.2', majver, 'none', 'any'), - ('bar', '3.1', genver, 'none', 'any'), - ('bar', '3.1', pyver, abi, arch), - ('foo', '1.0', majver, 'none', 'any'), - ('foo', '1.1', pyver, abi, arch), - ('foo', '2.1', majver + '0', 'none', 'any'), - # This will not be compatible for Python x.0. Beware when we hit Python - # 4.0, and don't test with 3.0!!! - ('foo', '2.1', majver + '1', 'none', 'any'), - ('foo', '2.1', pyver, 'none', 'any'), - ('foo', '2.1', pyver, abi, arch), -) - -WHEELS = [make_wheel(*args) for args in COMBINATIONS] - - -def test_comparison(): - for i in range(len(WHEELS)-1): - for j in range(i): - assert WHEELS[j] < WHEELS[i] diff --git a/tests/test_tool.py b/tests/test_tool.py deleted file mode 100644 index 2af28e1..0000000 --- a/tests/test_tool.py +++ /dev/null @@ -1,15 +0,0 @@ -from wheel import tool - - -def test_convert_egg(egg_paths, tmpdir): - tool.convert(egg_paths, str(tmpdir), verbose=False) - assert len(tmpdir.listdir()) == len(egg_paths) - - -def test_unpack(wheel_paths, tmpdir): - """ - Make sure 'wheel unpack' works. - This also verifies the integrity of our testing wheel files. - """ - for wheel_path in wheel_paths: - tool.unpack(wheel_path, str(tmpdir)) diff --git a/tests/test_wheelfile.py b/tests/test_wheelfile.py index 16ca83e..03eeac7 100644 --- a/tests/test_wheelfile.py +++ b/tests/test_wheelfile.py @@ -1,89 +1,163 @@ -import hashlib -import zipfile -from io import BytesIO +# coding: utf-8 +from __future__ import unicode_literals + +from zipfile import ZipFile, ZIP_DEFLATED import pytest -import wheel.archive -import wheel.install +from wheel.cli import WheelError +from wheel.util import native, as_bytes +from wheel.wheelfile import WheelFile + + +@pytest.fixture +def wheel_path(tmpdir): + return str(tmpdir.join('test-1.0-py2.py3-none-any.whl')) + + +def test_wheelfile_re(tmpdir): + # Regression test for #208 + path = tmpdir.join('foo-2-py3-none-any.whl') + with WheelFile(str(path), 'w') as wf: + assert wf.parsed_filename.group('namever') == 'foo-2' + + +@pytest.mark.parametrize('filename', [ + 'test.whl', + 'test-1.0.whl', + 'test-1.0-py2.whl', + 'test-1.0-py2-none.whl', + 'test-1.0-py2-none-any' +]) +def test_bad_wheel_filename(filename): + exc = pytest.raises(WheelError, WheelFile, filename) + exc.match('^Bad wheel filename {!r}$'.format(filename)) + + +def test_missing_record(wheel_path): + with ZipFile(wheel_path, 'w') as zf: + zf.writestr(native('hello/héllö.py'), as_bytes('print("Héllö, w0rld!")\n')) + exc = pytest.raises(WheelError, WheelFile, wheel_path) + exc.match("^Missing test-1.0.dist-info/RECORD file$") -def test_verifying_zipfile(): - if not hasattr(zipfile.ZipExtFile, '_update_crc'): - pytest.skip('No ZIP verification. Missing ZipExtFile._update_crc.') - bio = BytesIO() - zf = zipfile.ZipFile(bio, 'w') - zf.writestr("one", b"first file") - zf.writestr("two", b"second file") - zf.writestr("three", b"third file") - zf.close() +def test_unsupported_hash_algorithm(wheel_path): + with ZipFile(wheel_path, 'w') as zf: + zf.writestr(native('hello/héllö.py'), as_bytes('print("Héllö, w0rld!")\n')) + zf.writestr( + 'test-1.0.dist-info/RECORD', + as_bytes('hello/héllö.py,sha000=bv-QV3RciQC2v3zL8Uvhd_arp40J5A9xmyubN34OVwo,25')) - # In default mode, VerifyingZipFile checks the hash of any read file - # mentioned with set_expected_hash(). Files not mentioned with - # set_expected_hash() are not checked. - vzf = wheel.install.VerifyingZipFile(bio, 'r') - vzf.set_expected_hash("one", hashlib.sha256(b"first file").digest()) - vzf.set_expected_hash("three", "blurble") - vzf.open("one").read() - vzf.open("two").read() - pytest.raises(wheel.install.BadWheelFile, vzf.open("three").read) + exc = pytest.raises(WheelError, WheelFile, wheel_path) + exc.match("^Unsupported hash algorithm: sha000$") - # In strict mode, VerifyingZipFile requires every read file to be - # mentioned with set_expected_hash(). - vzf.strict = True - pytest.raises(wheel.install.BadWheelFile, vzf.open, "two") - vzf.set_expected_hash("two", None) - vzf.open("two").read() +@pytest.mark.parametrize('algorithm, digest', [ + ('md5', '4J-scNa2qvSgy07rS4at-Q'), + ('sha1', 'QjCnGu5Qucb6-vir1a6BVptvOA4') +], ids=['md5', 'sha1']) +def test_weak_hash_algorithm(wheel_path, algorithm, digest): + hash_string = '{}={}'.format(algorithm, digest) + with ZipFile(wheel_path, 'w') as zf: + zf.writestr(native('hello/héllö.py'), as_bytes('print("Héllö, w0rld!")\n')) + zf.writestr('test-1.0.dist-info/RECORD', + as_bytes('hello/héllö.py,{},25'.format(hash_string))) + exc = pytest.raises(WheelError, WheelFile, wheel_path) + exc.match(r"^Weak hash algorithm \({}\) is not permitted by PEP 427$".format(algorithm)) -def test_pop_zipfile(): - bio = BytesIO() - zf = wheel.install.VerifyingZipFile(bio, 'w') - zf.writestr("one", b"first file") - zf.writestr("two", b"second file") - zf.close() - pytest.raises(RuntimeError, zf.pop) +@pytest.mark.parametrize('algorithm, digest', [ + ('sha256', 'bv-QV3RciQC2v3zL8Uvhd_arp40J5A9xmyubN34OVwo'), + ('sha384', 'cDXriAy_7i02kBeDkN0m2RIDz85w6pwuHkt2PZ4VmT2PQc1TZs8Ebvf6eKDFcD_S'), + ('sha512', 'kdX9CQlwNt4FfOpOKO_X0pn_v1opQuksE40SrWtMyP1NqooWVWpzCE3myZTfpy8g2azZON_' + 'iLNpWVxTwuDWqBQ') +], ids=['sha256', 'sha384', 'sha512']) +def test_testzip(wheel_path, algorithm, digest): + hash_string = '{}={}'.format(algorithm, digest) + with ZipFile(wheel_path, 'w') as zf: + zf.writestr(native('hello/héllö.py'), as_bytes('print("Héllö, world!")\n')) + zf.writestr('test-1.0.dist-info/RECORD', + as_bytes('hello/héllö.py,{},25'.format(hash_string))) - zf = wheel.install.VerifyingZipFile(bio, 'a') - zf.pop() - zf.close() + with WheelFile(wheel_path) as wf: + wf.testzip() - zf = wheel.install.VerifyingZipFile(bio, 'r') - assert len(zf.infolist()) == 1 +def test_testzip_missing_hash(wheel_path): + with ZipFile(wheel_path, 'w') as zf: + zf.writestr(native('hello/héllö.py'), as_bytes('print("Héllö, world!")\n')) + zf.writestr('test-1.0.dist-info/RECORD', '') -def test_zipfile_timestamp(tmpdir, monkeypatch): + with WheelFile(wheel_path) as wf: + exc = pytest.raises(WheelError, wf.testzip) + exc.match(native("^No hash found for file 'hello/héllö.py'$")) + + +def test_testzip_bad_hash(wheel_path): + with ZipFile(wheel_path, 'w') as zf: + zf.writestr(native('hello/héllö.py'), as_bytes('print("Héllö, w0rld!")\n')) + zf.writestr( + 'test-1.0.dist-info/RECORD', + as_bytes('hello/héllö.py,sha256=bv-QV3RciQC2v3zL8Uvhd_arp40J5A9xmyubN34OVwo,25')) + + with WheelFile(wheel_path) as wf: + exc = pytest.raises(WheelError, wf.testzip) + exc.match(native("^Hash mismatch for file 'hello/héllö.py'$")) + + +def test_write_str(wheel_path): + with WheelFile(wheel_path, 'w') as wf: + wf.writestr(native('hello/héllö.py'), as_bytes('print("Héllö, world!")\n')) + + with ZipFile(wheel_path, 'r') as zf: + infolist = zf.infolist() + assert len(infolist) == 2 + assert infolist[0].filename == native('hello/héllö.py') + assert infolist[0].file_size == 25 + assert infolist[1].filename == 'test-1.0.dist-info/RECORD' + + record = zf.read('test-1.0.dist-info/RECORD') + assert record == as_bytes( + 'hello/héllö.py,sha256=bv-QV3RciQC2v3zL8Uvhd_arp40J5A9xmyubN34OVwo,25\n' + 'test-1.0.dist-info/RECORD,,\n') + + +def test_timestamp(tmpdir_factory, wheel_path, monkeypatch): # An environment variable can be used to influence the timestamp on # TarInfo objects inside the zip. See issue #143. + build_dir = tmpdir_factory.mktemp('build') for filename in ('one', 'two', 'three'): - tmpdir.join(filename).write(filename + '\n') + build_dir.join(filename).write(filename + '\n') # The earliest date representable in TarInfos, 1980-01-01 monkeypatch.setenv('SOURCE_DATE_EPOCH', '315576060') - zip_base_name = str(tmpdir.join('dummy')) - zip_filename = wheel.archive.make_wheelfile_inner(zip_base_name, str(tmpdir)) - with zipfile.ZipFile(zip_filename, 'r') as zf: + with WheelFile(wheel_path, 'w') as wf: + wf.write_files(str(build_dir)) + + with ZipFile(wheel_path, 'r') as zf: for info in zf.infolist(): assert info.date_time[:3] == (1980, 1, 1) + assert info.compress_type == ZIP_DEFLATED -def test_zipfile_attributes(tmpdir): +def test_attributes(tmpdir_factory, wheel_path): # With the change from ZipFile.write() to .writestr(), we need to manually # set member attributes. + build_dir = tmpdir_factory.mktemp('build') files = (('foo', 0o644), ('bar', 0o755)) for filename, mode in files: - path = tmpdir.join(filename) + path = build_dir.join(filename) path.write(filename + '\n') path.chmod(mode) - zip_base_name = str(tmpdir.join('dummy')) - zip_filename = wheel.archive.make_wheelfile_inner(zip_base_name, str(tmpdir)) - with zipfile.ZipFile(zip_filename, 'r') as zf: + with WheelFile(wheel_path, 'w') as wf: + wf.write_files(str(build_dir)) + + with ZipFile(wheel_path, 'r') as zf: for filename, mode in files: - info = zf.getinfo(str(tmpdir.join(filename))) + info = zf.getinfo(filename) assert info.external_attr == (mode | 0o100000) << 16 - assert info.compress_type == zipfile.ZIP_DEFLATED + assert info.compress_type == ZIP_DEFLATED diff --git a/tests/complex-dist/complexdist/__init__.py b/tests/testdata/complex-dist/complexdist/__init__.py index 559fbb7..559fbb7 100644 --- a/tests/complex-dist/complexdist/__init__.py +++ b/tests/testdata/complex-dist/complexdist/__init__.py diff --git a/tests/complex-dist/setup.py b/tests/testdata/complex-dist/setup.py index 41cfb04..41cfb04 100644 --- a/tests/complex-dist/setup.py +++ b/tests/testdata/complex-dist/setup.py diff --git a/tests/extension.dist/extension.c b/tests/testdata/extension.dist/extension.c index a37c3fa..a37c3fa 100644 --- a/tests/extension.dist/extension.c +++ b/tests/testdata/extension.dist/extension.c diff --git a/tests/extension.dist/setup.cfg b/tests/testdata/extension.dist/setup.cfg index 9f6ff39..9f6ff39 100644 --- a/tests/extension.dist/setup.cfg +++ b/tests/testdata/extension.dist/setup.cfg diff --git a/tests/extension.dist/setup.py b/tests/testdata/extension.dist/setup.py index 3ffd839..3ffd839 100644 --- a/tests/extension.dist/setup.py +++ b/tests/testdata/extension.dist/setup.py diff --git a/tests/headers.dist/headersdist.py b/tests/testdata/headers.dist/header.h index e69de29..e69de29 100644 --- a/tests/headers.dist/headersdist.py +++ b/tests/testdata/headers.dist/header.h diff --git a/tests/simple.dist/simpledist/__init__.py b/tests/testdata/headers.dist/headersdist.py index e69de29..e69de29 100644 --- a/tests/simple.dist/simpledist/__init__.py +++ b/tests/testdata/headers.dist/headersdist.py diff --git a/tests/headers.dist/setup.cfg b/tests/testdata/headers.dist/setup.cfg index 7c964b4..7c964b4 100644 --- a/tests/headers.dist/setup.cfg +++ b/tests/testdata/headers.dist/setup.cfg diff --git a/tests/headers.dist/setup.py b/tests/testdata/headers.dist/setup.py index 67cada3..67cada3 100644 --- a/tests/headers.dist/setup.py +++ b/tests/testdata/headers.dist/setup.py diff --git a/tests/simple.dist/setup.py b/tests/testdata/simple.dist/setup.py index d2aaac9..d2aaac9 100644 --- a/tests/simple.dist/setup.py +++ b/tests/testdata/simple.dist/setup.py diff --git a/tests/unicode.dist/unicodedist/__init__.py b/tests/testdata/simple.dist/simpledist/__init__.py index e69de29..e69de29 100644 --- a/tests/unicode.dist/unicodedist/__init__.py +++ b/tests/testdata/simple.dist/simpledist/__init__.py diff --git a/tests/test-1.0-py2.py3-none-win32.whl b/tests/testdata/test-1.0-py2.py3-none-win32.whl Binary files differindex dfd3070..dfd3070 100644 --- a/tests/test-1.0-py2.py3-none-win32.whl +++ b/tests/testdata/test-1.0-py2.py3-none-win32.whl diff --git a/tests/unicode.dist/setup.py b/tests/testdata/unicode.dist/setup.py index bb0ff60..bb0ff60 100644 --- a/tests/unicode.dist/setup.py +++ b/tests/testdata/unicode.dist/setup.py diff --git a/tests/unicode.dist/unicodedist/åäö_日本語.py b/tests/testdata/unicode.dist/unicodedist/__init__.py index e69de29..e69de29 100644 --- a/tests/unicode.dist/unicodedist/åäö_日本語.py +++ b/tests/testdata/unicode.dist/unicodedist/__init__.py diff --git a/tests/testdata/unicode.dist/unicodedist/åäö_日本語.py b/tests/testdata/unicode.dist/unicodedist/åäö_日本語.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tests/testdata/unicode.dist/unicodedist/åäö_日本語.py |
