def test_get_build_plan_build_for_all(snapcraft_yaml, mocker, new_dir): """Test get_build_plan with `build-for: all`.""" mocker.patch( "snapcraft.parts.lifecycle.get_host_architecture", return_value="aarch64" ) yaml_data = { "base": "core22", "architectures": [{"build-on": "aarch64", "build-for": "all"}], } snapcraft_yaml_data = snapcraft_yaml(**yaml_data) assert parts_lifecycle.get_build_plan( snapcraft_yaml_data, parsed_args=argparse.Namespace(build_for=None) ) == [("aarch64", "all")]
def test_get_build_plan_list_with_matching_element_and_env_var( snapcraft_yaml, mocker, monkeypatch, new_dir ): """The build plan should be filtered down when `SNAPCRAFT_BUILD_FOR` is defined.""" mocker.patch( "snapcraft.parts.lifecycle.get_host_architecture", return_value="aarch64" ) yaml_data = { "base": "core22", "architectures": [ {"build-on": "aarch64", "build-for": "aarch64"}, {"build-on": "aarch64", "build-for": "armhf"}, ], } snapcraft_yaml_data = snapcraft_yaml(**yaml_data) assert parts_lifecycle.get_build_plan( snapcraft_yaml_data, parsed_args=argparse.Namespace(build_for="aarch64") ) == [("aarch64", "aarch64")]
def test_get_build_plan_list_without_matching_element(snapcraft_yaml, mocker, new_dir): """The build plan should be empty when no build has a `build-on` that matches the host architecture. """ mocker.patch( "snapcraft.parts.lifecycle.get_host_architecture", return_value="aarch64" ) yaml_data = { "base": "core22", "architectures": ["powerpc", "armhf"], } snapcraft_yaml_data = snapcraft_yaml(**yaml_data) assert ( parts_lifecycle.get_build_plan( snapcraft_yaml_data, parsed_args=argparse.Namespace(build_for=None) ) == [] )
def test_get_build_plan_list_without_matching_element_and_build_for_arg( snapcraft_yaml, mocker, monkeypatch, new_dir ): """The build plan should be empty when no plan has a matching `build_for` matching `SNAPCRAFT_BUILD_FOR.`""" mocker.patch( "snapcraft.parts.lifecycle.get_host_architecture", return_value="aarch64" ) yaml_data = { "base": "core22", "architectures": [ {"build-on": "aarch64", "build-for": "aarch64"}, {"build-on": "aarch64", "build-for": "armhf"}, ], } snapcraft_yaml_data = snapcraft_yaml(**yaml_data) assert ( parts_lifecycle.get_build_plan( snapcraft_yaml_data, parsed_args=argparse.Namespace(build_for="arm64") ) == [] )
def test_get_build_plan_with_matching_elements(snapcraft_yaml, mocker, new_dir): """The build plan should only contain builds where `build-on` matches the host architecture. """ mocker.patch( "snapcraft.parts.lifecycle.get_host_architecture", return_value="aarch64" ) yaml_data = { "base": "core22", "architectures": [ {"build-on": "aarch64", "build-for": "aarch64"}, {"build-on": "aarch64", "build-for": "arm64"}, {"build-on": "armhf", "build-for": "armhf"}, ], } snapcraft_yaml_data = snapcraft_yaml(**yaml_data) assert parts_lifecycle.get_build_plan( snapcraft_yaml_data, parsed_args=argparse.Namespace(build_for=None) ) == [ ("aarch64", "aarch64"), ("aarch64", "arm64"), ]