blob: 0730784e939e8fa02f95922de9110377a6f8f2fc [file]
#!/usr/bin/env vpython3
# 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.
"""Unit tests for parse_gerrit_url.py."""
import unittest
import parse_gerrit_url
class ParseGerritUrlTest(unittest.TestCase):
"""Tests for parse_gerrit_url."""
def test_standard_url_without_patchset(self):
url = 'https://chromium-review.googlesource.com/c/chromium/src/+/7916168'
res = parse_gerrit_url.parse_gerrit_url(url)
self.assertEqual(res['host'], 'chromium-review.googlesource.com')
self.assertEqual(res['project'], 'chromium/src')
self.assertEqual(res['change'], 7916168)
self.assertEqual(res['patchset'], 1)
def test_standard_url_with_patchset(self):
url = 'https://chromium-review.googlesource.com/c/chromium/src/+/7916168/3'
res = parse_gerrit_url.parse_gerrit_url(url)
self.assertEqual(res['host'], 'chromium-review.googlesource.com')
self.assertEqual(res['project'], 'chromium/src')
self.assertEqual(res['change'], 7916168)
self.assertEqual(res['patchset'], 3)
def test_url_with_file_path(self):
url = 'https://chromium-review.googlesource.com/c/chromium/src/+/7916168/2/chrome/browser/tab.cc'
res = parse_gerrit_url.parse_gerrit_url(url)
self.assertEqual(res['host'], 'chromium-review.googlesource.com')
self.assertEqual(res['project'], 'chromium/src')
self.assertEqual(res['change'], 7916168)
self.assertEqual(res['patchset'], 2)
def test_url_with_query_and_fragment(self):
url = 'https://chromium-review.googlesource.com/c/chromium/src/+/7916168/4?tab=checks#message'
res = parse_gerrit_url.parse_gerrit_url(url)
self.assertEqual(res['host'], 'chromium-review.googlesource.com')
self.assertEqual(res['project'], 'chromium/src')
self.assertEqual(res['change'], 7916168)
self.assertEqual(res['patchset'], 4)
def test_url_with_trailing_slash(self):
url = 'https://chromium-review.googlesource.com/c/chromium/src/+/7916168/'
res = parse_gerrit_url.parse_gerrit_url(url)
self.assertEqual(res['host'], 'chromium-review.googlesource.com')
self.assertEqual(res['project'], 'chromium/src')
self.assertEqual(res['change'], 7916168)
self.assertEqual(res['patchset'], 1)
def test_different_project_and_host(self):
url = 'https://skia-review.googlesource.com/c/skia/+/12345/6'
res = parse_gerrit_url.parse_gerrit_url(url)
self.assertEqual(res['host'], 'skia-review.googlesource.com')
self.assertEqual(res['project'], 'skia')
self.assertEqual(res['change'], 12345)
self.assertEqual(res['patchset'], 6)
def test_invalid_url(self):
with self.assertRaises(ValueError):
parse_gerrit_url.parse_gerrit_url('https://example.com/invalid')
def test_invalid_url_no_c_prefix(self):
with self.assertRaises(ValueError):
parse_gerrit_url.parse_gerrit_url(
'https://chromium-review.googlesource.com/q/status:open')
def test_invalid_url_no_change_number(self):
with self.assertRaises(ValueError):
parse_gerrit_url.parse_gerrit_url(
'https://chromium-review.googlesource.com/c/chromium/src/+/invalid')
def test_invalid_empty_url(self):
with self.assertRaises(ValueError):
parse_gerrit_url.parse_gerrit_url('')
if __name__ == '__main__':
unittest.main()