def test_all_extension_docs(self): for extension_name in supported_extension_names(): try: self.run_command(["extension", extension_name]) except Exception: self.fail( "The {!r} extension appears to be missing documentation". format(extension_name))
class ExtensionCombinationTest(ProjectLoaderBaseTest): scenarios = multiply_scenarios(*( [[ ( "{} extension".format(extension_name), { "extension_{}".format(extension_name): extension_name }, ), ( "no {} extension".format(extension_name), { "extension_{}".format(extension_name): None }, ), ] for extension_name in supported_extension_names()] or [[]] # This guard can be removed once at least one extension is added )) def test_extensions_all_combinations_validate(self): common_bases = set(["core18", "core20"]) # Determine extension list given scenarios extension_names = list() for member_pair in inspect.getmembers(self): name = member_pair[0] if name.startswith("extension_"): value = getattr(self, name) if value: extension_names.append(value) ext = find_extension(value) common_bases &= set(ext.get_supported_bases()) # This shouldn't have any validation issues if common_bases: base = common_bases.pop() self.make_snapcraft_project( textwrap.dedent("""\ name: test version: "1" summary: test description: test base: {base} grade: stable confinement: strict apps: test-app: command: test-command adapter: full extensions: {extensions} parts: part1: plugin: nil """).format(base=base, extensions=extension_names)) else: self.skipTest(f"no common base: {extension_names!r}")
def list_extensions(**kwargs): """List available extensions. This command has an alias of `extensions`. """ extension_names = project_loader.supported_extension_names() if not extension_names: click.echo("No extensions supported") return extensions = [] for extension_name in sorted(extension_names): extension = project_loader.find_extension(extension_name) extension_info = collections.OrderedDict() extension_info["Extension name"] = extension_name extension_info["Supported bases"] = ", ".join(sorted(extension.supported_bases)) extensions.append(extension_info) click.echo(tabulate.tabulate(extensions, headers="keys"))