mirror of
https://github.com/botlabsDev/npkpy.git
synced 2025-12-10 06:54:37 +01:00
66 lines
2.9 KiB
Python
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")
|