1#!/usr/bin/env vpython3 2# Copyright 2022 The Chromium Authors 3# Use of this source code is governed by a BSD-style license that can be 4# found in the LICENSE file. 5"""File for testing publish_package.py.""" 6 7import argparse 8import unittest 9import unittest.mock as mock 10 11from io import StringIO 12 13import publish_package 14 15_PACKAGES = ['test_package'] 16_REPO = 'test_repo' 17 18 19class PublishPackageTest(unittest.TestCase): 20 """Unittests for publish_package.py.""" 21 22 def setUp(self) -> None: 23 self._ffx_patcher = mock.patch('publish_package.run_ffx_command') 24 self._ffx_mock = self._ffx_patcher.start() 25 self.addCleanup(self._ffx_mock.stop) 26 27 def test_new_repo(self) -> None: 28 """Test setting |new_repo| to True in |publish_packages|.""" 29 30 publish_package.publish_packages(_PACKAGES, _REPO, True) 31 self.assertEqual(self._ffx_mock.call_count, 2) 32 first_call, second_call = self._ffx_mock.call_args_list 33 self.assertEqual(['repository', 'create', _REPO], 34 first_call.kwargs['cmd']) 35 self.assertEqual([ 36 'repository', 'publish', '--package-archive', _PACKAGES[0], _REPO 37 ], second_call.kwargs['cmd']) 38 39 def test_no_new_repo(self) -> None: 40 """Test setting |new_repo| to False in |publish_packages|.""" 41 42 publish_package.publish_packages(['test_package'], 'test_repo', False) 43 self.assertEqual(self._ffx_mock.call_count, 1) 44 45 46 def test_allow_temp_repo(self) -> None: 47 """Test setting |allow_temp_repo| to True in |register_package_args|.""" 48 49 parser = argparse.ArgumentParser() 50 publish_package.register_package_args(parser, True) 51 args = parser.parse_args(['--no-repo-init']) 52 self.assertEqual(args.no_repo_init, True) 53 54 @mock.patch('sys.stderr', new_callable=StringIO) 55 def test_not_allow_temp_repo(self, mock_stderr) -> None: 56 """Test setting |allow_temp_repo| to False in 57 |register_package_args|.""" 58 59 parser = argparse.ArgumentParser() 60 publish_package.register_package_args(parser) 61 with self.assertRaises(SystemExit): 62 parser.parse_args(['--no-repo-init']) 63 self.assertRegex(mock_stderr.getvalue(), 'unrecognized arguments') 64 65 66if __name__ == '__main__': 67 unittest.main() 68