diff --git a/CHANGELOG b/CHANGELOG index 6ddad1ef..5573d12c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,9 +1,10 @@ jc changelog -20231104 v1.23.7 +20231114 v1.23.7 - Add `deb-packages` parser for Debian/Ubuntu Package Index files - Fix `iptables` parser for cases where the `target` field is blank in a rule - Fix `vmstat` parsers for some cases where wide output is used +- Fix `mount` parser for cases with spaces in the mount point name 20231023 v1.23.6 - Fix XML parser for xmltodict library versions < 0.13.0 diff --git a/docs/parsers/mount.md b/docs/parsers/mount.md index 04e355b0..756bc795 100644 --- a/docs/parsers/mount.md +++ b/docs/parsers/mount.md @@ -98,4 +98,4 @@ Returns: ### Parser Information Compatibility: linux, darwin, freebsd, aix -Version 1.8 by Kelly Brazil (kellyjonbrazil@gmail.com) +Version 1.9 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/parsers/mount.py b/jc/parsers/mount.py index 65cd5ebc..945ed81a 100644 --- a/jc/parsers/mount.py +++ b/jc/parsers/mount.py @@ -77,7 +77,7 @@ import jc.utils class info(): """Provides parser metadata (version, author, etc.)""" - version = '1.8' + version = '1.9' description = '`mount` command parser' author = 'Kelly Brazil' author_email = 'kellyjonbrazil@gmail.com' @@ -149,11 +149,13 @@ def _linux_parse(data): match = pattern.match(entry) groups = match.groupdict() - output_line['filesystem'] = groups["filesystem"] - output_line['mount_point'] = groups["mount_point"] - output_line['type'] = groups["type"] - output_line['options'] = groups["options"].split(',') - output.append(output_line) + if groups: + output_line['filesystem'] = groups["filesystem"] + output_line['mount_point'] = groups["mount_point"] + output_line['type'] = groups["type"] + output_line['options'] = groups["options"].split(',') + output.append(output_line) + return output def _aix_parse(data): diff --git a/man/jc.1 b/man/jc.1 index a362c4b2..70de735b 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -1,4 +1,4 @@ -.TH jc 1 2023-11-04 1.23.7 "JSON Convert" +.TH jc 1 2023-11-14 1.23.7 "JSON Convert" .SH NAME \fBjc\fP \- JSON Convert JSONifies the output of many CLI tools, file-types, and strings diff --git a/tests/fixtures/generic/mount-spaces-in-mountpoint.json b/tests/fixtures/generic/mount-spaces-in-mountpoint.json new file mode 100644 index 00000000..c4db756a --- /dev/null +++ b/tests/fixtures/generic/mount-spaces-in-mountpoint.json @@ -0,0 +1 @@ +[{"filesystem":"/dev/sda1","mount_point":"/media/ingo/Ubuntu 22.04.3 LTS amd64","type":"iso9660","options":["ro","nosuid","nodev","relatime","nojoliet","check=s","map=n","blocksize=2048","uid=1000","gid=1000","dmode=500","fmode=400","iocharset=utf8","uhelper=udisks2"]}] diff --git a/tests/fixtures/generic/mount-spaces-in-mountpoint.out b/tests/fixtures/generic/mount-spaces-in-mountpoint.out new file mode 100644 index 00000000..2d217ace --- /dev/null +++ b/tests/fixtures/generic/mount-spaces-in-mountpoint.out @@ -0,0 +1 @@ +/dev/sda1 on /media/ingo/Ubuntu 22.04.3 LTS amd64 type iso9660 (ro,nosuid,nodev,relatime,nojoliet,check=s,map=n,blocksize=2048,uid=1000,gid=1000,dmode=500,fmode=400,iocharset=utf8,uhelper=udisks2) diff --git a/tests/test_mount.py b/tests/test_mount.py index 73effd1d..f1d6bca9 100644 --- a/tests/test_mount.py +++ b/tests/test_mount.py @@ -24,6 +24,9 @@ class MyTests(unittest.TestCase): with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/aix-7.1/mount.out'), 'r', encoding='utf-8') as f: aix_7_1_mount = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mount-spaces-in-mountpoint.out'), 'r', encoding='utf-8') as f: + generic_mount_spaces_in_mountpoint = f.read() + # output with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mount.json'), 'r', encoding='utf-8') as f: centos_7_7_mount_json = json.loads(f.read()) @@ -40,6 +43,9 @@ class MyTests(unittest.TestCase): with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/aix-7.1/mount.json'), 'r', encoding='utf-8') as f: aix_7_1_mount_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mount-spaces-in-mountpoint.json'), 'r', encoding='utf-8') as f: + generic_mount_spaces_in_mountpoint_json = json.loads(f.read()) + def test_mount_nodata(self): """ @@ -77,6 +83,12 @@ class MyTests(unittest.TestCase): """ self.assertEqual(jc.parsers.mount.parse(self.aix_7_1_mount, quiet=True), self.aix_7_1_mount_json) + def test_mount_spaces_in_mountpoint(self): + """ + Test 'mount' with spaces in the mountpoint + """ + self.assertEqual(jc.parsers.mount.parse(self.generic_mount_spaces_in_mountpoint, quiet=True), self.generic_mount_spaces_in_mountpoint_json) + if __name__ == '__main__': unittest.main()