def test_run_from_config_and_overwrite_params(self): output = '../temp/output/run-config-params-overwrite' utils.rmdir(output) linker = PackageLinker( config_file='../test_data/config-params-overwrite.yaml', params={'output': output}) linker.run() self.assertTrue( os.path.isfile('%s/project-ios/assets/images/fake-image.txt' % output)) self.assertTrue( os.path.isfile('%s/project-ios/assets/plugins/lib-c/c-data.txt' % output)) linker = PackageLinker( config_file='../test_data/config-params-overwrite.yaml', params={ 'output': output, 'platform': 'android' }) linker.run() self.assertTrue( os.path.isfile('%s/project-android/assets/images/fake-image.txt' % output)) self.assertTrue( os.path.isfile( '%s/project-android/assets/plugins/lib-c/c-data.txt' % output))
def test_overwrite_linkspec(self): import os content = """ links: - source: '{{__dir__}}/aaa' target: '{{__target__}}/aaa' external_links: - source: '{{resources_package}}' target: '{{__dir__}}/aaa/resources' default_content: ['{{__dir__}}/_resources/*'] """ package_linkspec = yaml.load(content) if os.path.exists('../test_data/empty_resources/default-data.txt'): os.remove('../test_data/empty_resources/default-data.txt') if os.path.exists('../test_data/empty_resources/a'): utils.rmdir('../test_data/empty_resources/a') output = '../temp/output/lib-a' utils.rmdir(output) linker = PackageLinker() linker.link( source='../test_data/lib-a.1.0.8/content', target=output, forced=True, params=dict(resources_package='../test_data/empty_resources'), **package_linkspec) self.assertTrue(os.path.isfile('%s/aaa/data.txt' % output)) self.assertTrue( os.path.isfile('%s/aaa/resources/default-data.txt' % output)) self.assertTrue(os.path.isfile('%s/aaa/resources/a/data.txt' % output))
def test_run_from_config_with_no_link_targets(self): output = '../temp/output/run-config-no-link-targets' utils.rmdir(output) linker = PackageLinker( config_file='../test_data/config-no-link-targets.yaml', params={'output': output}) linker.run() self.assertTrue(os.path.isfile('%s/child/data.txt' % output))
def test_link_with_no_target_if_linkspec_has_links(self): output = '../temp/output/lib-a' utils.rmdir(output) linker = PackageLinker() linker.link(source='../test_data/lib-a.1.0.9/content', forced=True, params={'output': output}) self.assertTrue(os.path.isfile('%s/child/data.txt' % output))
def test_link_with_empty_child_links_in_linkspec(self): output = '../temp/output/lib-a' utils.rmdir(output) linker = PackageLinker() linker.link(source='../test_data/lib-a.1.0.3/content', target=output, forced=True) self.assertTrue(os.path.isfile('%s/data.txt' % output))
def test_should_not_link_with_default_unity_project_link_template_without_required_project_param(self): output = '../temp/output/project-b' utils.rmdir(output) command = LinkPackageCommand() args_type = namedtuple('args', ['config', 'package_folder', 'params']) args = args_type(config='../test_data/project-b/upkit.yaml', package_folder=None, params={}) with self.assertRaises(SystemExit): command.run(args)
def test_link_with_external_links_in_linkspec(self): output = '../temp/output/lib-a' utils.rmdir(output) linker = PackageLinker() linker.link(source='../test_data/lib-a.1.0.7/content', target=output, forced=True, params=dict(resources_package='../test_data/resources')) self.assertTrue(os.path.isfile('%s/data.txt' % output)) self.assertTrue(os.path.isfile('%s/resources/data.txt' % output))
def test_link_with_content_selection_in_linkspec(self): output = '../temp/output/lib-a' utils.rmdir(output) linker = PackageLinker() linker.link(source='../test_data/lib-a.1.0.5/content', target=output, forced=True) self.assertTrue(os.path.isfile('%s/data0.txt' % output)) self.assertTrue(os.path.isfile('%s/data1.txt' % output)) self.assertTrue(os.path.isfile('%s/data2.txt' % output)) self.assertFalse(os.path.isfile('%s/data.txt' % output))
def test_should_link_with_default_unity_project_link_template(self): output = '../temp/output/project-a' utils.rmdir(output) command = LinkPackageCommand() args_type = namedtuple('args', ['config', 'package_folder', 'params']) args = args_type(config='../test_data/project-a/upkit.yaml', package_folder=None, params={}) command.run(args) self.assertTrue(os.path.isdir(output)) self.assertTrue(os.path.isdir(os.path.join(output, 'Assets/Scripts'))) self.assertTrue(os.path.isfile(os.path.join(output, 'Assets/Scripts.meta'))) self.assertFalse(os.path.exists(os.path.join(output, 'Assets/.gitignore')))
def test_should_create_package_when_location_not_exist(self): output = '../temp/output/test-package' utils.rmdir(output) command = CreatePackageCommand() args_type = namedtuple('args', 'location') args = args_type(location=output) command.run(args) self.assertTrue(os.path.isdir(output)) self.assertTrue(os.path.isfile(os.path.join(output, 'upkit.yaml'))) self.assertTrue(os.path.isfile(os.path.join(output, 'linkspec.yaml'))) self.assertTrue(os.path.isfile(os.path.join(output, 'package.nuspec')))
def test_support_git_source_with_branch_and_path(self): output = '../temp/output/lib-a' package_folder = '../temp/output/packages' utils.rmdir(output) utils.rmdir(package_folder) linker = PackageLinker(package_folder=package_folder) linker.link( source= 'git:https://bitbucket.org/tuongvu/upkit-test-package.git@feature/ccc#ccc', target=output, forced=True) self.assertTrue(os.path.isfile(os.path.join(output, '333.txt')))
def resolve(self, source): if not self.package_linker.package_folder: raise ValueError( '"package_folder" is required but not specified, see -w parameter.' ) repo_uri = source[len(self.scheme):] repo_uri, branch_or_tag, sub_path = _normalize_uri(repo_uri) # branch = branch_or_tag # tag = None # if branch_or_tag and ':' in branch_or_tag: # idx = branch_or_tag.index(':') # tag = branch_or_tag[idx + 1:] # branch = branch_or_tag[:idx] repo_id = repo_uri if branch_or_tag: repo_id = '%s.%s' % (repo_uri, branch_or_tag) repo_id = repo_id.replace('.', '_').replace(':', '_').replace('/', '_') repo_path = os.path.join(self.package_linker.package_folder, repo_id) utils.mkdir_p(self.package_linker.package_folder) # Check if the repo already exists repo = None if os.path.isdir(repo_path): try: repo = Repo(repo_path) if not hasattr( repo.remotes, 'origin') or not repo_uri == repo.remotes.origin.url: raise RuntimeError('Invalid existing repository %s' % repo_path) else: repo.remotes.origin.pull() except: utils.rmdir(repo_path) repo = None # the repository does not exist. if not repo: repo = Repo.clone_from(repo_uri, repo_path) self._swith_branch_or_tag(repo, branch_or_tag) return os.path.join(repo_path, sub_path)
def test_should_not_create_package_when_location_is_not_empty(self): output = '../temp/output/test-package' utils.rmdir(output) utils.mkdir_p(output) utils.touch(os.path.join(os.path.abspath(output), 'data.txt')) with self.assertRaises(SystemExit): command = CreatePackageCommand() args_type = namedtuple('args', 'location') args = args_type(location=output) command.run(args) self.assertFalse(os.path.isfile(os.path.join(output, 'upkit.yaml'))) self.assertFalse(os.path.isfile(os.path.join(output, 'linkspec.yaml'))) self.assertFalse(os.path.isfile(os.path.join(output, 'package.nuspec')))
def test_run_from_config_and_overwrite_linkspec(self): output = '../temp/output/run-config-overwrite' utils.rmdir(output) linker = PackageLinker( config_file='../test_data/config-overwrite.yaml', params={'output': output}) linker.run() self.assertTrue(os.path.isfile('%s/lib-a/aaa/data.txt' % output)) self.assertTrue( os.path.isfile('%s/lib-a/aaa/resources/default-data.txt' % output)) self.assertTrue( os.path.isfile('%s/lib-a/aaa/resources/a/data.txt' % output)) self.assertTrue(os.path.isfile('%s/lib-c/c-data.txt' % output))
def test_support_nuget_source_with_deep_path(self): output = '../temp/output/lib-a' package_folder = '../temp/output/packages' utils.rmdir(output) utils.rmdir(package_folder) linker = PackageLinker(package_folder=package_folder) linker.link(source='nuget:[email protected]#lib/net40-Client', target=output, forced=True) # linker.link(source='git:http://[email protected]', target=output, forced=True) self.assertTrue( os.path.isdir(os.path.join(package_folder, 'Nuget.Core.2.14.0'))) self.assertTrue(os.path.isfile(os.path.join(output, 'NuGet.Core.Dll')))
def test_support_git_source_using_ssh(self): output = '../temp/output/lib-a' package_folder = '../temp/output/packages' utils.rmdir(output) utils.rmdir(package_folder) linker = PackageLinker(package_folder=package_folder) linker.link( source='git:[email protected]:tuongvu/upkit-test-package.git', target=output, forced=True) # linker.link(source='git:http://[email protected]', target=output, forced=True) # self.assertTrue(os.path.isfile(os.path.join(package_folder, 'README.md'))) self.assertTrue(os.path.isfile(os.path.join(output, 'README.md')))
def test_support_git_source_with_branch_via_ssh(self): output = '../temp/output/lib-a' package_folder = '../temp/output/packages' utils.rmdir(output) utils.rmdir(package_folder) linker = PackageLinker(package_folder=package_folder) linker.link( source= 'git:[email protected]:tuongvu/upkit-test-package.git@feature/ccc', target=output, forced=True) self.assertTrue(os.path.isdir(os.path.join(output, 'ccc'))) self.assertTrue(os.path.isfile(os.path.join(output, 'README.md')))
def test_support_git_source_with_tag(self): output = '../temp/output/lib-a' package_folder = '../temp/output/packages' utils.rmdir(output) utils.rmdir(package_folder) linker = PackageLinker(package_folder=package_folder) linker.link( source= 'git:https://bitbucket.org/tuongvu/upkit-test-package.git@tag-1', target=output, forced=True) # linker.link(source='git:http://[email protected]', target=output, forced=True) self.assertTrue(os.path.isdir(os.path.join(output, 'ccc'))) self.assertFalse(os.path.isdir(os.path.join(output, 'eee'))) self.assertTrue(os.path.isfile(os.path.join(output, 'README.md')))
def test_link_with_external_links_default_content_in_linkspec(self): if os.path.exists('../test_data/empty_resources/default-data.txt'): os.remove('../test_data/empty_resources/default-data.txt') if os.path.exists('../test_data/empty_resources/a'): utils.rmdir('../test_data/empty_resources/a') output = '../temp/output/lib-a' utils.rmdir(output) linker = PackageLinker() linker.link( source='../test_data/lib-a.1.0.8/content', target=output, forced=True, params=dict(resources_package='../test_data/empty_resources')) self.assertTrue(os.path.isfile('%s/child/data.txt' % output)) self.assertTrue( os.path.isfile('%s/child/resources/default-data.txt' % output)) self.assertTrue( os.path.isfile('%s/child/resources/a/data.txt' % output))
def test_support_git_source_if_already_cloned(self): output = '../temp/output/lib-a' package_folder = '../temp/output/packages' utils.rmdir(output) utils.rmdir(package_folder) linker = PackageLinker(package_folder=package_folder) linker.link( source='git:https://bitbucket.org/tuongvu/upkit-test-package.git', target=output, forced=True) # link again, with existing package folder utils.rmdir(output) linker.link( source='git:https://bitbucket.org/tuongvu/upkit-test-package.git', target=output, forced=True) self.assertTrue(os.path.isfile(os.path.join(output, 'README.md')))