sdk_subtools: Implement CIPD export.
When run from the user script, default to exporting nothing, but list
subtools that are available for export. Provide a commandline argument
to select one or more. Users will need CIPD WRITER permissions for the
CIPD prefix configured for the selected subtool(s).
When run via the Build API, default to exporting all available subtools.
BUG=b:277992359
TEST=./run_tests + bin/build_sdk_subtools --export shellcheck
Change-Id: Ia26f04d51615b105288b34fd0176b10bc75f025a
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/4840805
Tested-by: Trent Apted <tapted@chromium.org>
Commit-Queue: Trent Apted <tapted@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
diff --git a/scripts/build_sdk_subtools_unittest.py b/scripts/build_sdk_subtools_unittest.py
index b8f11d7..8530674 100644
--- a/scripts/build_sdk_subtools_unittest.py
+++ b/scripts/build_sdk_subtools_unittest.py
@@ -188,10 +188,28 @@
def test_invokes_exporter(mock_emerge, mock_exporter) -> None:
- """Tests that the exporter is invoked."""
+ """The exporter is invoked to bundle, but to export [] by default."""
assert build_sdk_subtools.main([]) == 0
assert mock_emerge.call_count == 1
assert mock_exporter.called
installed_subtools = mock_exporter.return_value
assert installed_subtools.bundle_all.called
- assert installed_subtools.export_all.called
+ installed_subtools.export.assert_called_once_with(False, [])
+
+
+def test_export_option(mock_emerge, mock_exporter) -> None:
+ """Tests that the exporter is invoked with provided exports."""
+ cmdline = ["--export", "subtool1", "subtool2", "--", "dev-some/package"]
+ assert build_sdk_subtools.main(cmdline) == 0
+ assert mock_emerge.call_args.args[0][-1] == "dev-some/package"
+ installed_subtools = mock_exporter.return_value
+ installed_subtools.export.assert_called_once_with(
+ False, ["subtool1", "subtool2"]
+ )
+
+
+def test_production_option(mock_emerge, mock_exporter) -> None:
+ """Tests that --production is passed to the exporter."""
+ assert build_sdk_subtools.main(["--production"]) == 0
+ assert mock_emerge.call_count == 1
+ mock_exporter.return_value.export.assert_called_once_with(True, [])