| # Copyright 2022 The ChromiumOS Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """Unittest for the get_profile_use_spider.""" |
| |
| from chromite.contrib.portage_explorer import get_profile_use_spider |
| from chromite.contrib.portage_explorer import spider_testables |
| from chromite.contrib.portage_explorer import spiderlib |
| |
| |
| def test_execute(monkeypatch, tmp_path) -> None: |
| """Test the get_profile_use_spider's execute function. |
| |
| Ensure that we are only getting the use flags when sourcing a profile's |
| make.defaults file, setting the enabled/disabled property correctly, and |
| sorting the use flags. |
| """ |
| test_elm, overlay_elm = spider_testables.create_overlays(tmp_path, "elm") |
| ( |
| test_elm_profiles, |
| overlay_elm_profiles, |
| overlay_elm_profiles_use, |
| ) = spider_testables.create_profiles( |
| tmp_path, |
| test_elm, |
| ["base", "foo"], |
| make_defaults={"base": {"USE": "use -flag", "OTHER_KEY": "foo bar"}}, |
| ) |
| make_defaults_file = test_elm_profiles["base"].full_path / "make.defaults" |
| with make_defaults_file.open("a", encoding="utf-8") as make_defaults_opened: |
| make_defaults_opened.write( |
| 'USE="${USE} -use abc" # USE="${USE} not_flag"' |
| ) |
| overlay_elm_profiles_use["base"].use_flags.insert( |
| 0, spiderlib.ProfileUse("abc", spiderlib.UseState.ENABLED) |
| ) |
| overlay_elm_profiles_use["base"].set_enabled("use", False) |
| overlay_elm.profiles = [ |
| overlay_elm_profiles["base"], |
| overlay_elm_profiles["foo"], |
| ] |
| test_output = spiderlib.SpiderOutput( |
| [], |
| [ |
| overlay_elm, |
| ], |
| ) |
| monkeypatch.setattr("chromite.lib.constants.SOURCE_ROOT", tmp_path) |
| get_profile_use_spider.execute(test_output) |
| assert test_output.build_targets == [] |
| assert test_output.overlays[0].profiles == [ |
| overlay_elm_profiles_use["base"], |
| overlay_elm_profiles_use["foo"], |
| ] |