mirror of
https://github.com/kellyjonbrazil/jc.git
synced 2026-04-24 20:56:11 +02:00
27ef603acc
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
69 lines
2.7 KiB
Python
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() |