From 5a3a5f7cec40c70d8c5ceb473f828e1149724962 Mon Sep 17 00:00:00 2001 From: Jason Chang Date: Thu, 17 Aug 2023 11:36:41 -0700 Subject: upload: fix error handling There was a bug in error handeling code that caused an uncaught exception to be raised. Bug: b/296316540 Change-Id: I49c72f29c00f26ba60de552f958bc6eddf841162 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/383254 Reviewed-by: Mike Frysinger Commit-Queue: Jason Chang Tested-by: Jason Chang --- tests/test_subcmds_upload.py | 69 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 tests/test_subcmds_upload.py (limited to 'tests/test_subcmds_upload.py') diff --git a/tests/test_subcmds_upload.py b/tests/test_subcmds_upload.py new file mode 100644 index 00000000..75811996 --- /dev/null +++ b/tests/test_subcmds_upload.py @@ -0,0 +1,69 @@ +# Copyright (C) 2023 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Unittests for the subcmds/upload.py module.""" + +import unittest +from unittest import mock + +from subcmds import upload +from error import UploadError, GitError + + +class UnexpectedError(Exception): + """An exception not expected by upload command.""" + + +class UploadCommand(unittest.TestCase): + """Check registered all_commands.""" + + def setUp(self): + self.cmd = upload.Upload() + self.branch = mock.MagicMock() + self.people = mock.MagicMock() + self.opt, _ = self.cmd.OptionParser.parse_args([]) + mock.patch.object( + self.cmd, "_AppendAutoList", return_value=None + ).start() + mock.patch.object(self.cmd, "git_event_log").start() + + def tearDown(self): + mock.patch.stopall() + + def test_UploadAndReport_UploadError(self): + """Check UploadExitError raised when UploadError encountered.""" + side_effect = UploadError("upload error") + with mock.patch.object( + self.cmd, "_UploadBranch", side_effect=side_effect + ): + with self.assertRaises(upload.UploadExitError): + self.cmd._UploadAndReport(self.opt, [self.branch], self.people) + + def test_UploadAndReport_GitError(self): + """Check UploadExitError raised when GitError encountered.""" + side_effect = GitError("some git error") + with mock.patch.object( + self.cmd, "_UploadBranch", side_effect=side_effect + ): + with self.assertRaises(upload.UploadExitError): + self.cmd._UploadAndReport(self.opt, [self.branch], self.people) + + def test_UploadAndReport_UnhandledError(self): + """Check UnexpectedError passed through.""" + side_effect = UnexpectedError("some os error") + with mock.patch.object( + self.cmd, "_UploadBranch", side_effect=side_effect + ): + with self.assertRaises(type(side_effect)): + self.cmd._UploadAndReport(self.opt, [self.branch], self.people) -- cgit v1.2.3-54-g00ecf