npkpy/tests_acceptance_test/acceptance_test.py
2020-06-13 18:19:32 +02:00

66 lines
2.9 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.npkFile = Path("tests/testData/gps-6.45.6.npk")
self.pathToNpk = str(self.npkFile.absolute())
self.npkContainerList = Path("tests/testData/gps-6.45.6.result").read_text()
self.dstFolder = Path(tempfile.mkdtemp())
def tearDown(self) -> None:
[f.unlink() for f in self.dstFolder.rglob("*") if f.is_file()]
[f.rmdir() for f in self.dstFolder.rglob("*")]
self.dstFolder.rmdir()
def test_showAllContainersFromNpkPkg(self):
cmd = ["npkPy", "--file", self.pathToNpk, "--showContainer"]
output = runCmdInTerminal(cmd)
self.assertEqual(self.npkContainerList, output)
def test_exportAllContainerFromNpk(self):
cmd = ["npkPy", "--file", self.pathToNpk, "--dstFolder", self.dstFolder.absolute(), "--exportAll"]
runCmdInTerminal(cmd)
exportedContainer = sorted(str(f.relative_to(self.dstFolder)) for f in self.dstFolder.rglob('*'))
self.assertEqual(['npkPyExport_gps-6.45.6',
'npkPyExport_gps-6.45.6/000_cnt_PckHeader.raw',
'npkPyExport_gps-6.45.6/001_cnt_PckReleaseTyp.raw',
'npkPyExport_gps-6.45.6/002_cnt_CntArchitectureTag.raw',
'npkPyExport_gps-6.45.6/003_cnt_PckDescription.raw',
'npkPyExport_gps-6.45.6/004_cnt_PckEckcdsaHash.raw',
'npkPyExport_gps-6.45.6/005_cnt_PckRequirementsHeader.raw',
'npkPyExport_gps-6.45.6/006_cnt_CntNullBlock.raw',
'npkPyExport_gps-6.45.6/007_cnt_CntSquashFsImage.raw',
'npkPyExport_gps-6.45.6/008_cnt_CntSquashFsHashSignature.raw',
'npkPyExport_gps-6.45.6/009_cnt_CntArchitectureTag.raw'], exportedContainer)
def test_extractSquashFsContainerFromNpk(self):
cmd = ["npkPy", "--file", self.pathToNpk, "--dstFolder", self.dstFolder.absolute(), "--exportSquashFs"]
runCmdInTerminal(cmd)
self.assertContainerExtracted(['npkPyExport_gps-6.45.6',
'npkPyExport_gps-6.45.6/007_cnt_CntSquashFsImage.raw'])
#
def test_extractZlibContainerFromNpk_NonExisitngNotExtracted(self):
cmd = ["npkPy", "--file", self.pathToNpk, "--dstFolder", self.dstFolder.absolute(), "--exportZlib"]
runCmdInTerminal(cmd)
self.assertContainerExtracted([])
def assertContainerExtracted(self, expectedFiles):
extractedContainer = sorted(str(f.relative_to(self.dstFolder)) for f in self.dstFolder.rglob('*'))
self.assertEqual(expectedFiles, extractedContainer)
def runCmdInTerminal(cmd):
return subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode("UTF-8")