Spaces:
Sleeping
Sleeping
| # -*- coding: utf-8 -*- | |
| 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()) | |