Skip to content
This repository was archived by the owner on Sep 12, 2018. It is now read-only.

Commit 09e9e20

Browse files
committed
testing and cleanup
* cleaning up the import of monkey patched tarfile * adding a test for vanilla tarfile (whether it still fails) * fixing the 'assert' formatting Docker-DCO-1.1-Signed-off-by: Vincent Batts <[email protected]> (github: vbatts)
1 parent c1a8ca9 commit 09e9e20

File tree

4 files changed

+37
-41
lines changed

4 files changed

+37
-41
lines changed

docker_registry/images.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,9 @@
1919
from .lib import checksums
2020
from .lib import layers
2121
from .lib import mirroring
22-
from .lib import xtarfile
23-
24-
25-
tarfile = xtarfile.tarfile
22+
# this is our monkey patched snippet from python v2.7.6 'tarfile'
23+
# with xattr support
24+
from .lib.xtarfile import tarfile
2625

2726

2827
store = storage.load()

docker_registry/lib/layers.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,9 @@
1010
from .. import storage
1111
from . import cache
1212
from . import rqueue
13-
# this is our monkey patched 'tarfile' from python v2.7.6, with xattr support
14-
from . import xtarfile
15-
16-
17-
tarfile = xtarfile.tarfile
13+
# this is our monkey patched snippet from python v2.7.6 'tarfile'
14+
# with xattr support
15+
from .xtarfile import tarfile
1816

1917

2018
store = storage.load()

docker_registry/lib/xtarfile.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,6 @@
1010
import re
1111
import tarfile
1212

13-
tarfile.PAX_FIELDS = tarfile.PAX_FIELDS + ("SCHILY.xattr.",)
14-
tarfile.PAX_NUMBER_FIELDS["SCHILY.xattr."] = dict
15-
16-
# class XattrTarInfo(tarfile.TarInfo):
17-
1813

1914
def _proc_pax(self, filetar):
2015
"""Process an extended or global header as described in

tests/test_tarfile.py

Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,31 @@
11
# -*- coding: utf-8 -*-
22

3+
import imp
34
import os
45

6+
from nose import tools
7+
58
import base
69
from docker_registry.lib import checksums
710
from docker_registry.lib import xtarfile
811

12+
13+
# setting like this in test, due to flake8 H302
914
tarfile = xtarfile.tarfile
1015

16+
# To test whether the UnicodeDecodeError still exists
17+
# (it's still present in python 3.4.0)
18+
# ((loading this way, since we've monkey patched currently loaded tarfile))
19+
tarfile_vanilla = imp.load_module('test_failing', *imp.find_module('tarfile'))
20+
1121

1222
class TestTarfile(base.TestCase):
23+
@tools.raises(UnicodeDecodeError)
24+
def test_vanilla_tarfile(self):
25+
layer_fh = open(os.path.join(base.data_dir, "xattr/layer.tar"))
26+
tar = tarfile_vanilla.open(mode='r|*', fileobj=layer_fh)
27+
assert tar
28+
1329
def test_headers(self):
1430
expected = {
1531
"46af0962ab5afeb5ce6740d4d91652e69206fc991fd5328c1a94d364ad00e457/layer.tar": { # noqa
@@ -70,31 +86,21 @@ def test_headers(self):
7086
for member in tar:
7187
member_count += 1
7288
# check that we know the file names
73-
assert(
74-
(len(
75-
filter(
76-
lambda x: member.path in x, expected[file].keys()
77-
)
78-
) > 0), "in %s, did not find file %s" % (
79-
file,
80-
member.path))
89+
msg = "in %s, did not find file %s" % (file, member.path)
90+
l = len(filter(lambda x: member.path in x,
91+
expected[file].keys()))
92+
assert (l > 0), msg
8193
e = expected[file][member.path]
8294
for attr in e["headers"].keys():
83-
assert(e["headers"][attr] == getattr(member, attr),
84-
"in %s:%s, expected %s of %s, but got %s" % (
85-
file,
86-
member.path,
87-
attr,
88-
e["headers"][attr],
89-
getattr(member, attr)))
95+
msg = "in %s:%s, expected %s of %s, but got %s" % (
96+
file, member.path, attr, e["headers"][attr],
97+
getattr(member, attr))
98+
assert e["headers"][attr] == getattr(member, attr), msg
9099
for attr in e["pax"].keys():
91-
assert(e["pax"][attr] == member.pax_headers[attr],
92-
b"in %s:%s, expected %s of %s, but got %s".format(
93-
file,
94-
member.path,
95-
attr,
96-
e["pax"][attr],
97-
member.pax_headers[attr]))
100+
msg = b"in %s:%s, expected %s of %s, but got %s".format(
101+
file, member.path, attr, e["pax"][attr],
102+
member.pax_headers[attr])
103+
assert e["pax"][attr] == member.pax_headers[attr], msg
98104

99105
assert member_count == len(expected[file])
100106
layer_fh.close()
@@ -114,11 +120,9 @@ def test_tarsum(self):
114120
for member in tar:
115121
tarsum.append(member, tar)
116122
sum = tarsum.compute()
117-
assert(expected[layer] == sum,
118-
"layer %s, expected [%s] but got [%s]" % (
119-
layer,
120-
expected[layer],
121-
sum))
123+
msg = "layer %s, expected [%s] but got [%s]" % (
124+
layer, expected[layer], sum)
125+
assert expected[layer] == sum, msg
122126

123127
layer_fh.close()
124128
json_fh.close()

0 commit comments

Comments
 (0)