mirror of
https://github.com/kellyjonbrazil/jc.git
synced 2025-06-17 00:07:37 +02:00
add tests and doc update
This commit is contained in:
@ -1,12 +1,14 @@
|
||||
jc changelog
|
||||
|
||||
20240907 v1.25.4
|
||||
20240922 v1.25.4
|
||||
- Enhance `ping-s` streaming parser to support error replies
|
||||
- Enhance `ethtool` parser to support `link_partner_advertised_link_modes`
|
||||
- Enhance `ifconfig` parser to support `utun` interfaces with assigned IPv4 addresses on macOS
|
||||
- Fix `df` parser to correctly output binary vs. decimal size outputs
|
||||
- Fix `mount` parser for cases where there are spaces in the filesystem name
|
||||
- Fix `ip-address` parser for Python 3.13 changes to IPv4 mapped IPv6 addresses
|
||||
- Fix `uptime` parser for data that contains `user` instead of `users`
|
||||
- Enhance `jc.utils.convert_size_to_int()` to add `posix_mode` and `decimal_bias` parameters
|
||||
|
||||
20240609 v1.25.3
|
||||
- Enhance `bluetoothctl` parser with added `battery_percentage` field
|
||||
|
@ -124,4 +124,4 @@ Compatibility: linux, darwin, freebsd
|
||||
|
||||
Source: [`jc/parsers/df.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/df.py)
|
||||
|
||||
Version 2.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Version 2.1 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
@ -55,7 +55,10 @@ Returns:
|
||||
### convert_size_to_int
|
||||
|
||||
```python
|
||||
def convert_size_to_int(size: str, binary: bool = False) -> Optional[int]
|
||||
def convert_size_to_int(size: str,
|
||||
binary: bool = False,
|
||||
posix_mode: bool = False,
|
||||
decimal_bias: bool = False) -> Optional[int]
|
||||
```
|
||||
|
||||
Parse a human readable data size and return the number of bytes.
|
||||
@ -66,6 +69,11 @@ Parameters:
|
||||
binary: (boolean) `True` to use binary multiples of bytes
|
||||
(base-2) for ambiguous unit symbols and names,
|
||||
`False` to use decimal multiples of bytes (base-10).
|
||||
posix_mode: Treat one-letter units (k, m, g, etc.) as binary.
|
||||
decimal_bias: (boolean) `True` to treat slightly ambiguous two-
|
||||
letter unit symbols ending in "i" (e.g. Ki, Gi) to
|
||||
use decimal multiples of bytes (base-10). `False`
|
||||
(default) to use binary multiples of bytes.
|
||||
Returns:
|
||||
|
||||
integer/None Integer if successful conversion, otherwise None
|
||||
@ -85,6 +93,10 @@ gigabytes, terabytes and petabytes. Some examples:
|
||||
1000
|
||||
>>> convert_size_to_int('1 KiB')
|
||||
1024
|
||||
>>> convert_size_to_int('1 Ki')
|
||||
1024
|
||||
>>> convert_size_to_int('1 Ki', decimal_bias=True)
|
||||
1000
|
||||
>>> convert_size_to_int('1 KB', binary=True)
|
||||
1024
|
||||
>>> convert_size_to_int('1.5 GB')
|
||||
|
7
man/jc.1
7
man/jc.1
@ -1,4 +1,4 @@
|
||||
.TH jc 1 2024-09-07 1.25.4 "JSON Convert"
|
||||
.TH jc 1 2024-09-22 1.25.4 "JSON Convert"
|
||||
.SH NAME
|
||||
\fBjc\fP \- JSON Convert JSONifies the output of many CLI tools, file-types,
|
||||
and strings
|
||||
@ -507,6 +507,11 @@ openvpn-status.log file parser
|
||||
\fB--os-release\fP
|
||||
`/etc/os-release` file parser
|
||||
|
||||
.TP
|
||||
.B
|
||||
\fB--pacman\fP
|
||||
`pacman` command parser
|
||||
|
||||
.TP
|
||||
.B
|
||||
\fB--passwd\fP
|
||||
|
1
tests/fixtures/osx-10.14.6/df-hh.json
vendored
Normal file
1
tests/fixtures/osx-10.14.6/df-hh.json
vendored
Normal file
@ -0,0 +1 @@
|
||||
[{"filesystem":"/dev/disk3s3s1","size":494000000000,"used":16000000000,"iused":356840,"ifree":3660412200,"mounted_on":"/","available":375000000000,"capacity_percent":5,"iused_percent":0},{"filesystem":"devfs","size":215000,"used":215000,"iused":729,"ifree":0,"mounted_on":"/dev","available":0,"capacity_percent":100,"iused_percent":100},{"filesystem":"/dev/disk3s6","size":494000000000,"used":20000,"iused":0,"ifree":3660412200,"mounted_on":"/System/Volumes/VM","available":375000000000,"capacity_percent":1,"iused_percent":0},{"filesystem":"/dev/disk3s4","size":494000000000,"used":11000000000,"iused":1466,"ifree":3660412200,"mounted_on":"/System/Volumes/Preboot","available":375000000000,"capacity_percent":3,"iused_percent":0},{"filesystem":"/dev/disk3s2","size":494000000000,"used":349000000,"iused":162,"ifree":3660412200,"mounted_on":"/System/Volumes/Update","available":375000000000,"capacity_percent":1,"iused_percent":0},{"filesystem":"/dev/disk1s2","size":524000000,"used":6300000,"iused":1,"ifree":4933600,"mounted_on":"/System/Volumes/xarts","available":505000000,"capacity_percent":2,"iused_percent":0},{"filesystem":"/dev/disk1s1","size":524000000,"used":6500000,"iused":31,"ifree":4933600,"mounted_on":"/System/Volumes/iSCPreboot","available":505000000,"capacity_percent":2,"iused_percent":0},{"filesystem":"/dev/disk1s3","size":524000000,"used":1300000,"iused":63,"ifree":4933600,"mounted_on":"/System/Volumes/Hardware","available":505000000,"capacity_percent":1,"iused_percent":0},{"filesystem":"/dev/disk3s1","size":494000000000,"used":90000000000,"iused":724666,"ifree":3660412200,"mounted_on":"/System/Volumes/Data","available":375000000000,"capacity_percent":20,"iused_percent":0},{"filesystem":"map auto_home","size":0,"used":0,"iused":0,"ifree":0,"mounted_on":"/System/Volumes/Data/home","available":0,"capacity_percent":100,"iused_percent":100},{"filesystem":"/dev/disk2s1","size":5400000000,"used":1700000000,"iused":62,"ifree":35253480,"mounted_on":"/System/Volumes/Update/SFR/mnt1","available":3600000000,"capacity_percent":33,"iused_percent":0},{"filesystem":"/dev/disk3s3","size":494000000000,"used":16000000000,"iused":404477,"ifree":3660412200,"mounted_on":"/System/Volumes/Update/mnt1","available":375000000000,"capacity_percent":5,"iused_percent":0}]
|
13
tests/fixtures/osx-10.14.6/df-hh.out
vendored
Normal file
13
tests/fixtures/osx-10.14.6/df-hh.out
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
|
||||
/dev/disk3s3s1 494G 16G 375G 5% 356840 3660412200 0% /
|
||||
devfs 215k 215k 0B 100% 729 0 100% /dev
|
||||
/dev/disk3s6 494G 20k 375G 1% 0 3660412200 0% /System/Volumes/VM
|
||||
/dev/disk3s4 494G 11G 375G 3% 1466 3660412200 0% /System/Volumes/Preboot
|
||||
/dev/disk3s2 494G 349M 375G 1% 162 3660412200 0% /System/Volumes/Update
|
||||
/dev/disk1s2 524M 6.3M 505M 2% 1 4933600 0% /System/Volumes/xarts
|
||||
/dev/disk1s1 524M 6.5M 505M 2% 31 4933600 0% /System/Volumes/iSCPreboot
|
||||
/dev/disk1s3 524M 1.3M 505M 1% 63 4933600 0% /System/Volumes/Hardware
|
||||
/dev/disk3s1 494G 90G 375G 20% 724666 3660412200 0% /System/Volumes/Data
|
||||
map auto_home 0B 0B 0B 100% 0 0 100% /System/Volumes/Data/home
|
||||
/dev/disk2s1 5.4G 1.7G 3.6G 33% 62 35253480 0% /System/Volumes/Update/SFR/mnt1
|
||||
/dev/disk3s3 494G 16G 375G 5% 404477 3660412200 0% /System/Volumes/Update/mnt1
|
@ -33,6 +33,9 @@ class MyTests(unittest.TestCase):
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/df-h.out'), 'r', encoding='utf-8') as f:
|
||||
osx_10_14_6_df_h = f.read()
|
||||
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/df-hh.out'), 'r', encoding='utf-8') as f:
|
||||
osx_10_14_6_df_hh = f.read()
|
||||
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/df-long-filesystem.out'), 'r', encoding='utf-8') as f:
|
||||
generic_df_long_filesystem = f.read()
|
||||
|
||||
@ -61,6 +64,9 @@ class MyTests(unittest.TestCase):
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/df-h.json'), 'r', encoding='utf-8') as f:
|
||||
osx_10_14_6_df_h_json = json.loads(f.read())
|
||||
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/df-hh.json'), 'r', encoding='utf-8') as f:
|
||||
osx_10_14_6_df_hh_json = json.loads(f.read())
|
||||
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/df-long-filesystem.json'), 'r', encoding='utf-8') as f:
|
||||
generic_df_long_filesystem_json = json.loads(f.read())
|
||||
|
||||
@ -119,6 +125,12 @@ class MyTests(unittest.TestCase):
|
||||
"""
|
||||
self.assertEqual(jc.parsers.df.parse(self.osx_10_14_6_df_h, quiet=True), self.osx_10_14_6_df_h_json)
|
||||
|
||||
def test_df_hh_osx_10_14_6(self):
|
||||
"""
|
||||
Test 'df -H' on OSX 10.14.6
|
||||
"""
|
||||
self.assertEqual(jc.parsers.df.parse(self.osx_10_14_6_df_hh, quiet=True), self.osx_10_14_6_df_hh_json)
|
||||
|
||||
def test_df_long_filesystem(self):
|
||||
"""
|
||||
Test older version of 'df' with long filesystem data
|
||||
|
@ -209,6 +209,34 @@ class MyTests(unittest.TestCase):
|
||||
self.assertEqual(jc.utils.convert_size_to_int(input_string, binary=True), expected_output)
|
||||
|
||||
|
||||
def test_utils_convert_size_to_int_posix_mode(self):
|
||||
io_map = {
|
||||
'1 K': 1024,
|
||||
'1 KiB': 1024,
|
||||
'1 KB': 1000,
|
||||
'1.5 G': 1610612736,
|
||||
'1.5 GiB': 1610612736,
|
||||
'1.5 GB': 1500000000
|
||||
}
|
||||
|
||||
for input_string, expected_output in io_map.items():
|
||||
self.assertEqual(jc.utils.convert_size_to_int(input_string, posix_mode=True), expected_output)
|
||||
|
||||
|
||||
def test_utils_convert_size_to_int_decimal_bias(self):
|
||||
io_map = {
|
||||
'1 K': 1000,
|
||||
'1 Ki': 1000,
|
||||
'1 KiB': 1024,
|
||||
'1.5 G': 1500000000,
|
||||
'1.5 Gi': 1500000000,
|
||||
'1.5 GiB': 1610612736
|
||||
}
|
||||
|
||||
for input_string, expected_output in io_map.items():
|
||||
self.assertEqual(jc.utils.convert_size_to_int(input_string, decimal_bias=True), expected_output)
|
||||
|
||||
|
||||
def test_utils_has_data_nodata(self):
|
||||
self.assertFalse(jc.utils.has_data(' \n '))
|
||||
|
||||
|
Reference in New Issue
Block a user