blob: c5a658836e99db3033042511eddf90e9059e56b1 [file]
#!/usr/bin/env python3
# Copyright 2026 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import os.path
import shutil
import sys
import unittest
from unittest import mock
import PRESUBMIT
file_dir_path = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, os.path.join(file_dir_path, "..", "..", ".."))
from PRESUBMIT_test_mocks import MockAffectedFile
from PRESUBMIT_test_mocks import MockInputApi, MockOutputApi
sys.path.insert(0, os.path.join(file_dir_path, "common"))
import installer
@unittest.skipIf(
not shutil.which("fakeroot") or not shutil.which("dpkg-deb"),
"fakeroot or dpkg-deb not available",
)
class CheckRepoPackageVersionBumpTest(unittest.TestCase):
def testRepoPackageHashMatches(self):
mock_input_api = MockInputApi()
mock_input_api.files = []
mock_output_api = MockOutputApi()
errors = PRESUBMIT._CheckRepoPackageVersionBump(
mock_input_api, mock_output_api
)
self.assertEqual(0, len(errors))
def testRepoPackageHashMismatch(self):
mock_input_api = MockInputApi()
mock_input_api.files = [
MockAffectedFile(
"chrome/installer/linux/debian/repo_package.include",
[
"REPO_PACKAGE_VERSION=3",
"REPO_PACKAGE_TIMESTAMP=1776966277",
"REPO_PACKAGE_HASH=deadbeef",
],
)
]
mock_output_api = MockOutputApi()
errors = PRESUBMIT._CheckRepoPackageVersionBump(
mock_input_api, mock_output_api
)
self.assertEqual(1, len(errors))
self.assertIn("does not match REPO_PACKAGE_HASH in", errors[0].message)
def testMissingRepoPackageHash(self):
mock_input_api = MockInputApi()
mock_input_api.files = [
MockAffectedFile(
"chrome/installer/linux/debian/repo_package.include",
[
"REPO_PACKAGE_VERSION=3",
"REPO_PACKAGE_TIMESTAMP=1776966277",
],
)
]
mock_output_api = MockOutputApi()
errors = PRESUBMIT._CheckRepoPackageVersionBump(
mock_input_api, mock_output_api
)
self.assertEqual(1, len(errors))
self.assertIn("REPO_PACKAGE_HASH not found in", errors[0].message)
@mock.patch.object(
installer,
"compute_repo_package_hash_for_presubmit",
side_effect=RuntimeError("mocked failure"),
)
def testBuildDebFailure(self, _mock_build):
mock_input_api = MockInputApi()
mock_input_api.files = []
mock_output_api = MockOutputApi()
errors = PRESUBMIT._CheckRepoPackageVersionBump(
mock_input_api, mock_output_api
)
self.assertEqual(1, len(errors))
self.assertIn(
"Failed to build repo package for presubmit check",
errors[0].message,
)
if __name__ == "__main__":
unittest.main()