| | |
| | from __future__ import with_statement |
| | import unittest |
| | from oxt_tool.package import is_package |
| | from oxt_tool.storage import open_storage |
| | from oxt_tool.storage import resolve_path |
| | from oxt_tool.storage.fs import FileSystemStorage |
| | from oxt_tool.manifest import Manifest |
| | from oxt_tool.description import Description |
| |
|
| |
|
| | class PackageTest(unittest.TestCase): |
| |
|
| | def test_package_name_from_desc(self): |
| | from oxt_tool.package import package_name_from_desc |
| | desc = Description(identifier='pyhwp.example', version='') |
| | self.assertEqual('pyhwp.example.oxt', package_name_from_desc(desc)) |
| | desc.version = '0.1' |
| | self.assertEqual('pyhwp.example-0.1.oxt', package_name_from_desc(desc)) |
| |
|
| | def test_make_output_path(self): |
| | from oxt_tool.package import make_output_path |
| |
|
| | self.assertEqual('abc.oxt', make_output_path('abc.oxt')) |
| | self.assertEqual('./abc.oxt', make_output_path('./abc.oxt')) |
| | self.assertEqual('abc/def.oxt', make_output_path('abc/def.oxt')) |
| |
|
| | desc = Description(identifier='example', version='0.1') |
| | self.assertEqual('example-0.1.oxt', make_output_path('', desc)) |
| | self.assertEqual('./example-0.1.oxt', make_output_path('.', desc)) |
| | self.assertEqual('abc/example-0.1.oxt', make_output_path('abc/', desc)) |
| |
|
| | dirpath = self.id() |
| | import shutil |
| | import os.path |
| | if os.path.exists(dirpath): |
| | shutil.rmtree(dirpath) |
| | os.mkdir(dirpath) |
| | self.assertEqual(os.path.join(dirpath, 'example-0.1.oxt'), |
| | make_output_path(dirpath, desc)) |
| |
|
| |
|
| | class BuildPackageTest(unittest.TestCase): |
| |
|
| | def test_build_minimal(self): |
| | from oxt_tool.package import build |
| |
|
| | manifest = Manifest() |
| | description = Description() |
| | oxt_path = self.id() + '.oxt' |
| | build(oxt_path, manifest, description) |
| | with open_storage(oxt_path) as pkg: |
| | self.assertTrue(is_package(pkg)) |
| |
|
| | def test_build_missing(self): |
| | from oxt_tool.package import build |
| |
|
| | oxt_path = self.id() + '.oxt' |
| |
|
| | manifest = Manifest() |
| | description = Description(license=dict(en='COPYING')) |
| | files = dict() |
| | try: |
| | build(oxt_path, manifest, description, files=files) |
| | assert False, 'exception expected' |
| | except Exception: |
| | pass |
| |
|
| | def test_build_typical(self): |
| | from oxt_tool.package import build |
| | from oxt_tool.storage import makedirs_to_file |
| |
|
| | manifest = Manifest() |
| | description = Description() |
| |
|
| | import os.path |
| | import shutil |
| | src_folder_path = self.id() |
| | if os.path.exists(src_folder_path): |
| | shutil.rmtree(src_folder_path) |
| | src_folder = FileSystemStorage(src_folder_path, 'w') |
| |
|
| | license_path = 'COPYING' |
| | license_node = makedirs_to_file(src_folder, license_path) |
| | with license_node.open('w') as f: |
| | f.write('GNU AGPL') |
| | description.license['en'] = license_path |
| |
|
| | oxt_path = self.id() + '.oxt' |
| |
|
| | files = {license_path: license_node} |
| | build(oxt_path, manifest, description, files=files) |
| |
|
| | with open_storage(oxt_path) as pkg: |
| | with resolve_path(pkg, 'COPYING').open() as f: |
| | self.assertEqual('GNU AGPL', f.read()) |
| |
|