1
0
mirror of https://github.com/kellyjonbrazil/jc.git synced 2026-04-24 20:56:11 +02:00
Files
jc/tests/test_lsattr.py
T
fuleinist 27ef603acc Fix lsattr parser for filenames with spaces
Use maxsplit=1 with line.split() to properly handle filenames
containing spaces or newlines. Previously split() without maxsplit
would incorrectly split './ok ok ok ok ok' into 6 parts instead of 2.

Fixes: https://github.com/kellyjonbrazil/jc/issues/694
2026-04-17 08:06:11 +08:00

69 lines
2.7 KiB
Python

import os
import json
import unittest
import jc.parsers.lsattr
THIS_DIR = os.path.dirname(os.path.abspath(__file__))
class MyTests(unittest.TestCase):
# input
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.04/lsattr-error.out'), 'r', encoding='utf-8') as f:
ubuntu_20_4_lsattr_error = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.04/lsattr-R.out'), 'r', encoding='utf-8') as f:
ubuntu_20_4_lsattr_R = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.04/lsattr.out'), 'r', encoding='utf-8') as f:
ubuntu_20_4_lsattr = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.04/lsattr-spaces.out'), 'r', encoding='utf-8') as f:
ubuntu_20_4_lsattr_spaces = f.read()
# output
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.04/lsattr-error.json'), 'r', encoding='utf-8') as f:
ubuntu_20_4_lsattr_error_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.04/lsattr-R.json'), 'r', encoding='utf-8') as f:
ubuntu_20_4_lsattr_R_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.04/lsattr.json'), 'r', encoding='utf-8') as f:
ubuntu_20_4_lsattr_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.04/lsattr-spaces.json'), 'r', encoding='utf-8') as f:
ubuntu_20_4_lsattr_spaces_json = json.loads(f.read())
def test_lsattr_nodata(self):
"""
Test 'lsattr' with no data
"""
self.assertEqual(jc.parsers.lsattr.parse('', quiet=True), [])
def test_lsattr_error(self):
"""
Test 'lsattr' with permission error
"""
self.assertEqual(jc.parsers.lsattr.parse(self.ubuntu_20_4_lsattr_error, quiet=True), self.ubuntu_20_4_lsattr_error_json)
def test_lsattr_R_ubuntu_20_4(self):
"""
Test 'sudo lsattr -R' on Ubuntu 20.4
"""
self.assertEqual(jc.parsers.lsattr.parse(self.ubuntu_20_4_lsattr_R, quiet=True), self.ubuntu_20_4_lsattr_R_json)
def test_lsattr_ubuntu_20_4(self):
"""
Test 'sudo lsattr' on Ubuntu 20.4
"""
self.assertEqual(jc.parsers.lsattr.parse(self.ubuntu_20_4_lsattr, quiet=True), self.ubuntu_20_4_lsattr_json)
def test_lsattr_spaces(self):
"""
Test 'lsattr' with filenames containing spaces
"""
self.assertEqual(jc.parsers.lsattr.parse(self.ubuntu_20_4_lsattr_spaces, quiet=True), self.ubuntu_20_4_lsattr_spaces_json)
if __name__ == '__main__':
unittest.main()