commit 926ee873a78f5557a8f3900d390024cdcacaeaac Author: Michal Srb msrb@redhat.com Date: Thu Jul 24 08:26:47 2014 +0200
py3k: open manifests always in text mode (+tests)
This fixes previous commit
python/javapackages/common/osgi.py | 15 ++++++++++----- test/data/osgi/basic_jar/basic.jar | Bin 0 -> 892 bytes test/osgi_prov_test.py | 6 ++++++ test/osgi_req_test.py | 6 ++++++ 4 files changed, 22 insertions(+), 5 deletions(-) --- diff --git a/python/javapackages/common/osgi.py b/python/javapackages/common/osgi.py index 7b6fad2..bdbde2f 100644 --- a/python/javapackages/common/osgi.py +++ b/python/javapackages/common/osgi.py @@ -32,6 +32,7 @@ # Authors: Alexander Kurtakov akurtako@redhat.com
import os +import io import pickle import zipfile from zipfile import ZipFile @@ -49,7 +50,7 @@ def print_provides(provides): def normalize_manifest(manifest): lines = [] for line in manifest.readlines(): - if line.startswith(b' '): + if line.startswith(' '): lines[-1] += line.strip() else: lines.append(line.strip()) @@ -58,7 +59,7 @@ def normalize_manifest(manifest):
def parse_manifest(manifest): headers = {} - DELIM = b": " + DELIM = ": " for line in normalize_manifest(manifest): split = line.split(DELIM) if len(split) > 1: @@ -98,7 +99,11 @@ def open_manifest(path): try: jarfile = ZipFile(path) if "META-INF/MANIFEST.MF" in jarfile.namelist(): - return jarfile.open("META-INF/MANIFEST.MF") + b_manifest = jarfile.open("META-INF/MANIFEST.MF", "rU") + t_manifest = io.TextIOWrapper(b_manifest, + encoding='utf-8', + newline='') + return t_manifest except IOError: pass return None @@ -128,10 +133,10 @@ def get_provides_from_manifest(manifest): symbolicName = None version = None for line in normalize_manifest(manifest): - if line.startswith(b"Bundle-SymbolicName:"): + if line.startswith("Bundle-SymbolicName:"): symbolicName = line.split(':')[1].strip() symbolicName = symbolicName.split(";")[0].strip() - if line.startswith(b"Bundle-Version:"): + if line.startswith("Bundle-Version:"): versions = line.split(':')[1].strip() versions = versions.split('.')[0:3] version = ".".join(versions) diff --git a/test/data/osgi/basic_jar/basic.jar b/test/data/osgi/basic_jar/basic.jar new file mode 100644 index 0000000..982ff18 Binary files /dev/null and b/test/data/osgi/basic_jar/basic.jar differ diff --git a/test/osgi_prov_test.py b/test/osgi_prov_test.py index 4ebeea6..3afb6dc 100644 --- a/test/osgi_prov_test.py +++ b/test/osgi_prov_test.py @@ -17,5 +17,11 @@ class TestOSGiProv(unittest.TestCase): sout = [x for x in stdout.split('\n') if x] assertIn(self, "osgi(org.junit) = 4.10.0", sout)
+ @osgiprov(["data/osgi/basic_jar/basic.jar"]) + def test_basic_jar(self, stdout, stderr, return_value): + self.assertEquals(return_value, 0, stderr) + sout = [x for x in stdout.split('\n') if x] + assertIn(self, "osgi(org.junit) = 4.10.0", sout) + if __name__ == '__main__': unittest.main() diff --git a/test/osgi_req_test.py b/test/osgi_req_test.py index b64c09d..73d714b 100644 --- a/test/osgi_req_test.py +++ b/test/osgi_req_test.py @@ -17,5 +17,11 @@ class TestOSGiReq(unittest.TestCase): sout = [x for x in stdout.split('\n') if x] assertIn(self, "osgi(org.hamcrest.core)", sout)
+ @osgireq(["data/osgi/basic_jar/basic.jar"]) + def test_basic_jar(self, stdout, stderr, return_value): + self.assertEquals(return_value, 0, stderr) + sout = [x for x in stdout.split('\n') if x] + assertIn(self, "osgi(org.hamcrest.core)", sout) + if __name__ == '__main__': unittest.main()
java-sig-commits@lists.fedoraproject.org