npkpy/tests_acceptance_test/acceptance_test.py
2021-10-22 14:48:20 +02:00

75 lines
3.4 KiB
Python

import subprocess
import tempfile
import unittest
from pathlib import Path
class Test_npkpy(unittest.TestCase):
def setUp(self) -> None:
# TODO: create DummyPkg and replace gps-6.45.6.npk
self.npk_file = Path("tests/testData/6_48_4/gps-6.48.4.npk")
self.path_to_npk = str(self.npk_file.absolute())
self.npk_container_list = Path("tests/testData/6_48_4/gps-6.48.4.result").read_text()
self.dst_folder = Path(tempfile.mkdtemp())
def tearDown(self) -> None:
for _file in self.dst_folder.rglob("*"):
if _file.is_file():
_file.unlink()
for _file in self.dst_folder.rglob("*"):
_file.rmdir()
self.dst_folder.rmdir()
def test_list_all_containers_from_npk_pkg(self):
cmd = ["npkpy", "--file", self.path_to_npk, "--show-container"]
output = run_command_in_terminal(cmd)
self.assertEqual(self.npk_container_list, output)
def test_list_in_folder(self):
cmd = ["npkpy", "--src-folder", str(self.npk_file.parent), "--show-container"]
output = run_command_in_terminal(cmd)
self.assertEqual(self.npk_container_list, output)
def test_export_all_container_from_npk(self):
cmd = ["npkpy", "--file", self.path_to_npk, "--dst-folder", self.dst_folder.absolute(), "--export-all"]
run_command_in_terminal(cmd)
exported_container = sorted(str(_file.relative_to(self.dst_folder)) for _file in self.dst_folder.rglob('*'))
self.assertEqual(['npkPyExport_gps-6.48.4',
'npkPyExport_gps-6.48.4/000_cnt_PckPreHeader.raw',
'npkPyExport_gps-6.48.4/001_cnt_PckHeader.raw',
'npkPyExport_gps-6.48.4/002_cnt_PckReleaseTyp.raw',
'npkPyExport_gps-6.48.4/003_cnt_CntArchitectureTag.raw',
'npkPyExport_gps-6.48.4/004_cnt_PckDescription.raw',
'npkPyExport_gps-6.48.4/005_cnt_PckEckcdsaHash.raw',
'npkPyExport_gps-6.48.4/006_cnt_PckRequirementsHeader.raw',
'npkPyExport_gps-6.48.4/007_cnt_CntNullBlock.raw',
'npkPyExport_gps-6.48.4/008_cnt_CntSquashFsImage.raw',
'npkPyExport_gps-6.48.4/009_cnt_CntSquashFsHashSignature.raw',
'npkPyExport_gps-6.48.4/010_cnt_CntArchitectureTag.raw'], exported_container)
def test_extract_squashfs_container_from_npk(self):
cmd = ["npkpy", "--file", self.path_to_npk, "--dst-folder", self.dst_folder.absolute(), "--export-squashfs"]
run_command_in_terminal(cmd)
self.assert_container_extracted(['npkPyExport_gps-6.48.4',
'npkPyExport_gps-6.48.4/008_cnt_CntSquashFsImage.raw'])
def test_extract_zlib_container_from_npk_nonexisting_not_extracted(self):
cmd = ["npkpy", "--file", self.path_to_npk, "--dst-folder", self.dst_folder.absolute(), "--export-zlib"]
run_command_in_terminal(cmd)
self.assert_container_extracted([])
def assert_container_extracted(self, expected_files):
extracted_container = sorted(str(_file.relative_to(self.dst_folder)) for _file in self.dst_folder.rglob('*'))
self.assertEqual(expected_files, extracted_container)
def run_command_in_terminal(cmd):
return subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, check=True).stdout.decode("UTF-8")