1
0
mirror of https://github.com/kellyjonbrazil/jc.git synced 2025-07-15 01:24:29 +02:00

zipinfo fix for paths with spaces

This commit is contained in:
Kelly Brazil
2023-01-05 12:00:20 -08:00
parent cad94cc6b3
commit 5cac897beb
5 changed files with 1238 additions and 3 deletions

View File

@ -99,4 +99,4 @@ Returns:
### Parser Information
Compatibility: linux, darwin
Version 1.1 by Matt J (https://github.com/listuser)
Version 1.2 by Matt J (https://github.com/listuser)

View File

@ -77,7 +77,7 @@ import jc.parsers.universal
class info():
"""Provides parser metadata (version, author, etc.)"""
version = '1.1'
version = '1.2'
description = '`zipinfo` command parser'
author = 'Matt J'
author_email = 'https://github.com/listuser'
@ -170,7 +170,8 @@ def parse(data, raw=False, quiet=False):
# 1st line
# Archive: log4j-core-2.16.0.jar
line = archive_item.pop(0)
_, archive = line.split()
# remove prefix but don't split on spaces for files/paths with spaces
archive = line.replace('Archive: ', '', 1)
# 2nd line
# Zip file size: 1789565 bytes, number of entries: 1218

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -15,6 +15,9 @@ class MyTests(unittest.TestCase):
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/zipinfo-multi.out'), 'r', encoding='utf-8') as f:
osx_10_14_6_zipinfo_multi = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/rhel-8/zipinfo-space-in-name.out'), 'r', encoding='utf-8') as f:
rhel_8_zipinfo_space_in_name = f.read()
# output
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/rhel-8/zipinfo.json'), 'r', encoding='utf-8') as f:
rhel_8_zipinfo_json = json.loads(f.read())
@ -22,6 +25,9 @@ class MyTests(unittest.TestCase):
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/zipinfo-multi.json'), 'r', encoding='utf-8') as f:
osx_10_14_6_zipinfo_multi_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/rhel-8/zipinfo-space-in-name.json'), 'r', encoding='utf-8') as f:
rhel_8_zipinfo_space_in_name_json = json.loads(f.read())
def test_zipinfo_nodata(self):
"""
@ -41,6 +47,12 @@ class MyTests(unittest.TestCase):
"""
self.assertEqual(jc.parsers.zipinfo.parse(self.osx_10_14_6_zipinfo_multi, quiet=True), self.osx_10_14_6_zipinfo_multi_json)
def test_zipinfo_rhel_8_space_in_name(self):
"""
Test 'zipinfo' on Red Hat 8 with spaces in the file path
"""
self.assertEqual(jc.parsers.zipinfo.parse(self.rhel_8_zipinfo_space_in_name, quiet=True), self.rhel_8_zipinfo_space_in_name_json)
if __name__ == '__main__':
unittest.main()