示例#1
0
def test_get_provider_developer_mode_env(monkeypatch, mock_is_developer_mode):
    mock_is_developer_mode.return_value = True
    monkeypatch.setenv("CHARMCRAFT_PROVIDER", "lxd")
    assert isinstance(get_provider(), LXDProvider)

    monkeypatch.setenv("CHARMCRAFT_PROVIDER", "multipass")
    assert isinstance(get_provider(), MultipassProvider)
示例#2
0
def test_get_provider_snap_config(mock_is_snap, mock_snap_config):
    mock_is_snap.return_value = True

    mock_snap_config.return_value = CharmcraftSnapConfiguration(provider="lxd")
    assert isinstance(get_provider(), LXDProvider)

    mock_snap_config.return_value = CharmcraftSnapConfiguration(provider="multipass")
    assert isinstance(get_provider(), MultipassProvider)
示例#3
0
文件: build.py 项目: sed-i/charmcraft
    def __init__(self, args, config):
        self.charmdir = args["from"]
        self.entrypoint = args["entrypoint"]
        self.requirement_paths = args["requirement"]
        self.force_packing = args["force"]
        self.debug = args["debug"]
        self.shell = args["shell"]
        self.shell_after = args["shell_after"]

        self.buildpath = self.charmdir / BUILD_DIRNAME
        self.config = config
        self.metadata = parse_metadata_yaml(self.charmdir)

        if self.config.parts:
            self._parts = self.config.parts.copy()
        else:
            # "parts" not declared, create an implicit "charm" part
            self._parts = {"charm": {"plugin": "charm"}}

        # a part named "charm" using plugin "charm" is special and has
        # predefined values set automatically.
        charm_part = self._parts.get("charm")
        if charm_part and charm_part.get("plugin") == "charm":
            self._special_charm_part = charm_part
        else:
            self._special_charm_part = None

        self.provider = get_provider()
示例#4
0
文件: clean.py 项目: sed-i/charmcraft
    def run(self, parsed_args):
        """Run the command."""
        project_path = self.config.project.dirpath
        metadata = parse_metadata_yaml(project_path)
        emit.progress(f"Cleaning project {metadata.name!r}.")

        provider = get_provider()
        provider.clean_project_environments(charm_name=metadata.name, project_path=project_path)
        emit.message(f"Cleaned project {metadata.name!r}.")
示例#5
0
def test_get_provider_default():
    if sys.platform == "linux":
        assert isinstance(get_provider(), LXDProvider)
    else:
        assert isinstance(get_provider(), MultipassProvider)