diff --git a/CHANGELOG b/CHANGELOG index a1cd1613..4188876b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,6 @@ jc changelog -20220404 v1.18.7 (in progress) +20220404 v1.18.7 - Add git log command parser - Add update-alternatives --query parser - Add update-alternatives --get-selections parser diff --git a/tests/fixtures/generic/update-alternatives-get-selections.json b/tests/fixtures/generic/update-alternatives-get-selections.json new file mode 100644 index 00000000..2b93fec5 --- /dev/null +++ b/tests/fixtures/generic/update-alternatives-get-selections.json @@ -0,0 +1 @@ +[{"name":"arptables","status":"auto","current":"/usr/sbin/arptables-nft"},{"name":"awk","status":"auto","current":"/usr/bin/gawk"},{"name":"builtins.7.gz","status":"auto","current":"/usr/share/man/man7/bash-builtins.7.gz"},{"name":"c++","status":"auto","current":"/usr/bin/g++"},{"name":"c89","status":"auto","current":"/usr/bin/c89-gcc"},{"name":"c99","status":"auto","current":"/usr/bin/c99-gcc"},{"name":"cc","status":"auto","current":"/usr/bin/gcc"},{"name":"cpp","status":"auto","current":"/usr/bin/cpp"},{"name":"ebtables","status":"auto","current":"/usr/sbin/ebtables-nft"},{"name":"editor","status":"auto","current":"/bin/nano"},{"name":"ex","status":"auto","current":"/usr/bin/vim.basic"},{"name":"fakeroot","status":"auto","current":"/usr/bin/fakeroot-sysv"},{"name":"ftp","status":"auto","current":"/usr/bin/netkit-ftp"},{"name":"infobrowser","status":"auto","current":"/usr/bin/info"},{"name":"ip6tables","status":"auto","current":"/usr/sbin/ip6tables-nft"},{"name":"iptables","status":"auto","current":"/usr/sbin/iptables-nft"},{"name":"jsondiff","status":"auto","current":"/usr/bin/json-patch-jsondiff"},{"name":"lzma","status":"auto","current":"/usr/bin/xz"},{"name":"mt","status":"auto","current":"/bin/mt-gnu"},{"name":"nc","status":"auto","current":"/bin/nc.openbsd"},{"name":"newt-palette","status":"auto","current":"/etc/newt/palette.ubuntu"},{"name":"pager","status":"auto","current":"/usr/bin/less"},{"name":"pico","status":"auto","current":"/bin/nano"},{"name":"pinentry","status":"auto","current":"/usr/bin/pinentry-curses"},{"name":"rcp","status":"auto","current":"/usr/bin/scp"},{"name":"rlogin","status":"auto","current":"/usr/bin/slogin"},{"name":"rmt","status":"auto","current":"/usr/sbin/rmt-tar"},{"name":"rsh","status":"auto","current":"/usr/bin/ssh"},{"name":"rview","status":"auto","current":"/usr/bin/vim.basic"},{"name":"rvim","status":"auto","current":"/usr/bin/vim.basic"},{"name":"sar","status":"auto","current":"/usr/bin/sar.sysstat"},{"name":"telnet","status":"auto","current":"/usr/bin/telnet.netkit"},{"name":"text.plymouth","status":"auto","current":"/usr/share/plymouth/themes/ubuntu-text/ubuntu-text.plymouth"},{"name":"traceroute6","status":"auto","current":"/usr/bin/traceroute6.iputils"},{"name":"vi","status":"auto","current":"/usr/bin/vim.basic"},{"name":"view","status":"auto","current":"/usr/bin/vim.basic"},{"name":"vim","status":"auto","current":"/usr/bin/vim.basic"},{"name":"vimdiff","status":"auto","current":"/usr/bin/vim.basic"},{"name":"vtrgb","status":"auto","current":"/etc/console-setup/vtrgb"},{"name":"w","status":"auto","current":"/usr/bin/w.procps"},{"name":"write","status":"auto","current":"/usr/bin/write.ul"}] diff --git a/tests/fixtures/generic/update-alternatives-get-selection.out b/tests/fixtures/generic/update-alternatives-get-selections.out similarity index 100% rename from tests/fixtures/generic/update-alternatives-get-selection.out rename to tests/fixtures/generic/update-alternatives-get-selections.out diff --git a/tests/fixtures/generic/update-alternatives-query.json b/tests/fixtures/generic/update-alternatives-query.json new file mode 100644 index 00000000..d688fe66 --- /dev/null +++ b/tests/fixtures/generic/update-alternatives-query.json @@ -0,0 +1 @@ +{"name":"editor","link":"/usr/bin/editor","slaves":[{"name":"editor.1.gz","path":"/usr/share/man/man1/editor.1.gz"},{"name":"editor.da.1.gz","path":"/usr/share/man/da/man1/editor.1.gz"},{"name":"editor.de.1.gz","path":"/usr/share/man/de/man1/editor.1.gz"},{"name":"editor.fr.1.gz","path":"/usr/share/man/fr/man1/editor.1.gz"},{"name":"editor.it.1.gz","path":"/usr/share/man/it/man1/editor.1.gz"},{"name":"editor.ja.1.gz","path":"/usr/share/man/ja/man1/editor.1.gz"},{"name":"editor.pl.1.gz","path":"/usr/share/man/pl/man1/editor.1.gz"},{"name":"editor.ru.1.gz","path":"/usr/share/man/ru/man1/editor.1.gz"}],"status":"auto","best":"/bin/nano","value":"/bin/nano","alternatives":[{"name":"/bin/ed","priority":-100,"slaves":[{"name":"editor.1.gz","path":"/usr/share/man/man1/ed.1.gz"}]},{"name":"/bin/nano","priority":40,"slaves":[{"name":"editor.1.gz","path":"/usr/share/man/man1/nano.1.gz"}]},{"name":"/usr/bin/vim.basic","priority":30,"slaves":[{"name":"editor.1.gz","path":"/usr/share/man/man1/vim.1.gz"},{"name":"editor.da.1.gz","path":"/usr/share/man/da/man1/vim.1.gz"},{"name":"editor.de.1.gz","path":"/usr/share/man/de/man1/vim.1.gz"},{"name":"editor.fr.1.gz","path":"/usr/share/man/fr/man1/vim.1.gz"},{"name":"editor.it.1.gz","path":"/usr/share/man/it/man1/vim.1.gz"},{"name":"editor.ja.1.gz","path":"/usr/share/man/ja/man1/vim.1.gz"},{"name":"editor.pl.1.gz","path":"/usr/share/man/pl/man1/vim.1.gz"},{"name":"editor.ru.1.gz","path":"/usr/share/man/ru/man1/vim.1.gz"}]},{"name":"/usr/bin/vim.tiny","priority":15,"slaves":[{"name":"editor.1.gz","path":"/usr/share/man/man1/vim.1.gz"},{"name":"editor.da.1.gz","path":"/usr/share/man/da/man1/vim.1.gz"},{"name":"editor.de.1.gz","path":"/usr/share/man/de/man1/vim.1.gz"},{"name":"editor.fr.1.gz","path":"/usr/share/man/fr/man1/vim.1.gz"},{"name":"editor.it.1.gz","path":"/usr/share/man/it/man1/vim.1.gz"},{"name":"editor.ja.1.gz","path":"/usr/share/man/ja/man1/vim.1.gz"},{"name":"editor.pl.1.gz","path":"/usr/share/man/pl/man1/vim.1.gz"},{"name":"editor.ru.1.gz","path":"/usr/share/man/ru/man1/vim.1.gz"}]}]} diff --git a/tests/test_update_alt_gs.py b/tests/test_update_alt_gs.py new file mode 100644 index 00000000..fdda7f45 --- /dev/null +++ b/tests/test_update_alt_gs.py @@ -0,0 +1,35 @@ +import os +import unittest +import json +import jc.parsers.update_alt_gs + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + + def setUp(self): + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/update-alternatives-get-selections.out'), 'r', encoding='utf-8') as f: + self.update_alternatives_get_selections = f.read() + + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/update-alternatives-get-selections.json'), 'r', encoding='utf-8') as f: + self.update_alternatives_get_selections_json = json.loads(f.read()) + + + def test_update_alt_gs_nodata(self): + """ + Test 'update-alternatives --get-selections' with no data + """ + self.assertEqual(jc.parsers.update_alt_gs.parse('', quiet=True), []) + + def test_update_alt_gs(self): + """ + Test 'update-alternatives --get-selections' + """ + self.assertEqual(jc.parsers.update_alt_gs.parse(self.update_alternatives_get_selections, quiet=True), self.update_alternatives_get_selections_json) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_update_alt_q.py b/tests/test_update_alt_q.py new file mode 100644 index 00000000..932cd45f --- /dev/null +++ b/tests/test_update_alt_q.py @@ -0,0 +1,35 @@ +import os +import unittest +import json +import jc.parsers.update_alt_q + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + + def setUp(self): + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/update-alternatives-query.out'), 'r', encoding='utf-8') as f: + self.update_alternatives_query = f.read() + + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/update-alternatives-query.json'), 'r', encoding='utf-8') as f: + self.update_alternatives_query_json = json.loads(f.read()) + + + def test_update_alt_q_nodata(self): + """ + Test 'update-alternatives --query' with no data + """ + self.assertEqual(jc.parsers.update_alt_q.parse('', quiet=True), {}) + + def test_update_alt_q(self): + """ + Test 'update-alternatives --query' + """ + self.assertEqual(jc.parsers.update_alt_q.parse(self.update_alternatives_query, quiet=True), self.update_alternatives_query_json) + + +if __name__ == '__main__': + unittest.main()