snapshot of https://github.com/zulip/zulip.git @ 48c69911c7dd4e03b20552eb3bd77ad8151c1357 (2026-09-15)
Some checks failed
Code scanning / CodeQL (push) Failing after 15s
Zulip production suite / Ubuntu 22.04 production build (push) Failing after 26s
Zulip production suite / Debian 12 production install with custom db name and user (push) Has been skipped
Zulip production suite / Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga (push) Has been skipped
Zulip production suite / Ubuntu 24.04 production install (push) Has been skipped
Zulip production suite / Ubuntu 26.04 production install (push) Has been skipped
Zulip production suite / Debian 13 production install (push) Has been skipped
Zulip production suite / 7.0 Version Upgrade (push) Has been skipped
Zulip production suite / 8.0 Version Upgrade (push) Has been skipped
Zulip production suite / 6.0 Version Upgrade (push) Has been skipped
Zulip production suite / 10.0 Version Upgrade (push) Has been skipped
Zulip production suite / 9.0 Version Upgrade (push) Has been skipped
Zulip production suite / 12.0 Version Upgrade (push) Has been skipped
Zulip production suite / 11.0 Version Upgrade (push) Has been skipped
GitHub Actions Security Analysis with zizmor / zizmor (push) Failing after 3s
Zulip CI / Debian 12 (Python 3.11, backend + documentation) (push) Failing after 26s
Zulip CI / Ubuntu 22.04 (Python 3.10, backend + frontend) (push) Failing after 3s
Zulip CI / Ubuntu 24.04 (Python 3.12, backend) (push) Failing after 25s
Zulip CI / Ubuntu 26.04 (Python 3.14, backend) (push) Failing after 25s
Zulip CI / Debian 13 (Python 3.13, backend) (push) Failing after 28s
Zulip production suite / Required jobs (push) Has been cancelled
Zulip CI / Required jobs (push) Has been cancelled
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled
Some checks failed
Code scanning / CodeQL (push) Failing after 15s
Zulip production suite / Ubuntu 22.04 production build (push) Failing after 26s
Zulip production suite / Debian 12 production install with custom db name and user (push) Has been skipped
Zulip production suite / Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga (push) Has been skipped
Zulip production suite / Ubuntu 24.04 production install (push) Has been skipped
Zulip production suite / Ubuntu 26.04 production install (push) Has been skipped
Zulip production suite / Debian 13 production install (push) Has been skipped
Zulip production suite / 7.0 Version Upgrade (push) Has been skipped
Zulip production suite / 8.0 Version Upgrade (push) Has been skipped
Zulip production suite / 6.0 Version Upgrade (push) Has been skipped
Zulip production suite / 10.0 Version Upgrade (push) Has been skipped
Zulip production suite / 9.0 Version Upgrade (push) Has been skipped
Zulip production suite / 12.0 Version Upgrade (push) Has been skipped
Zulip production suite / 11.0 Version Upgrade (push) Has been skipped
GitHub Actions Security Analysis with zizmor / zizmor (push) Failing after 3s
Zulip CI / Debian 12 (Python 3.11, backend + documentation) (push) Failing after 26s
Zulip CI / Ubuntu 22.04 (Python 3.10, backend + frontend) (push) Failing after 3s
Zulip CI / Ubuntu 24.04 (Python 3.12, backend) (push) Failing after 25s
Zulip CI / Ubuntu 26.04 (Python 3.14, backend) (push) Failing after 25s
Zulip CI / Debian 13 (Python 3.13, backend) (push) Failing after 28s
Zulip production suite / Required jobs (push) Has been cancelled
Zulip CI / Required jobs (push) Has been cancelled
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled
This commit is contained in:
145
tools/tests/test_capitalization_checker.py
Normal file
145
tools/tests/test_capitalization_checker.py
Normal file
@@ -0,0 +1,145 @@
|
||||
from unittest import TestCase
|
||||
|
||||
from bs4 import BeautifulSoup
|
||||
|
||||
from tools.lib.capitalization import check_capitalization, get_safe_text, is_capitalized
|
||||
|
||||
|
||||
class GetSafeTextTestCase(TestCase):
|
||||
def test_get_safe_text(self) -> None:
|
||||
string = "Zulip Zulip. Zulip some text!"
|
||||
safe_text = get_safe_text(string)
|
||||
self.assertEqual(safe_text, "Zulip zulip. Zulip some text!")
|
||||
|
||||
string = "Zulip Zulip? Zulip some text!"
|
||||
safe_text = get_safe_text(string)
|
||||
self.assertEqual(safe_text, "Zulip zulip? Zulip some text!")
|
||||
|
||||
string = "Zulip Zulip! Zulip some text!"
|
||||
safe_text = get_safe_text(string)
|
||||
self.assertEqual(safe_text, "Zulip zulip! Zulip some text!")
|
||||
|
||||
string = "Zulip Zulip, Zulip some text!"
|
||||
safe_text = get_safe_text(string)
|
||||
self.assertEqual(safe_text, "Zulip zulip, zulip some text!")
|
||||
|
||||
string = "Not Ignored Phrase"
|
||||
safe_text = get_safe_text(string)
|
||||
self.assertEqual(safe_text, "Not Ignored Phrase")
|
||||
|
||||
string = "Not ignored phrase"
|
||||
safe_text = get_safe_text(string)
|
||||
self.assertEqual(safe_text, "Not ignored phrase")
|
||||
|
||||
string = ""
|
||||
safe_text = get_safe_text(string)
|
||||
self.assertEqual(safe_text, "")
|
||||
|
||||
string = """
|
||||
<p>Please re-enter your password to confirm your identity.
|
||||
(<a href="/accounts/password/reset/" target="_blank">Forgotten it?</a>)</p>
|
||||
"""
|
||||
safe_text = get_safe_text(string)
|
||||
soup = BeautifulSoup(safe_text, "lxml")
|
||||
rendered_text = " ".join(soup.text.split())
|
||||
self.assertEqual(safe_text, rendered_text)
|
||||
|
||||
string = "Edited (__last_edit_timestr__)"
|
||||
safe_text = get_safe_text(string)
|
||||
self.assertEqual(safe_text, string)
|
||||
|
||||
|
||||
class IsCapitalizedTestCase(TestCase):
|
||||
def test_process_text(self) -> None:
|
||||
string = "Zulip zulip. Zulip some text!"
|
||||
capitalized = is_capitalized(string)
|
||||
self.assertTrue(capitalized)
|
||||
|
||||
string = "Zulip zulip? Zulip some text!"
|
||||
capitalized = is_capitalized(string)
|
||||
self.assertTrue(capitalized)
|
||||
|
||||
string = "Zulip zulip! Zulip some text!"
|
||||
capitalized = is_capitalized(string)
|
||||
self.assertTrue(capitalized)
|
||||
|
||||
string = "Zulip zulip, Zulip some text!"
|
||||
capitalized = is_capitalized(string)
|
||||
self.assertTrue(capitalized)
|
||||
|
||||
string = "Some number 25mib"
|
||||
capitalized = is_capitalized(string)
|
||||
self.assertTrue(capitalized)
|
||||
|
||||
string = "Not Ignored Phrase"
|
||||
capitalized = is_capitalized(string)
|
||||
self.assertFalse(capitalized)
|
||||
|
||||
string = "Not ignored phrase"
|
||||
capitalized = is_capitalized(string)
|
||||
self.assertTrue(capitalized)
|
||||
|
||||
string = ""
|
||||
capitalized = is_capitalized(string)
|
||||
self.assertTrue(capitalized)
|
||||
|
||||
string = "Please re-enter your password to confirm your identity. (Forgotten it?)"
|
||||
capitalized = is_capitalized(string)
|
||||
self.assertTrue(capitalized)
|
||||
|
||||
string = "Edited (__last_edit_timestr__)"
|
||||
capitalized = is_capitalized(string)
|
||||
self.assertTrue(capitalized)
|
||||
|
||||
string = "Iphone application"
|
||||
capitalized = is_capitalized(string)
|
||||
self.assertTrue(capitalized)
|
||||
|
||||
string = "One two etc_ three"
|
||||
capitalized = is_capitalized(string)
|
||||
self.assertTrue(capitalized)
|
||||
|
||||
|
||||
class CheckCapitalizationTestCase(TestCase):
|
||||
def test_check_capitalization(self) -> None:
|
||||
strings = [
|
||||
"Zulip Zulip. Zulip some text!",
|
||||
"Zulip Zulip? Zulip some text!",
|
||||
"Zulip Zulip! Zulip some text!",
|
||||
"Zulip Zulip, Zulip some text!",
|
||||
"Not Ignored Phrase",
|
||||
"Not ignored phrase",
|
||||
"Some text with realm in it",
|
||||
"Realm in capital case",
|
||||
]
|
||||
errored, ignored, banned = check_capitalization(strings)
|
||||
self.assertEqual(errored, ["Not Ignored Phrase"])
|
||||
self.assertEqual(
|
||||
ignored,
|
||||
sorted(
|
||||
[
|
||||
"Zulip Zulip. Zulip some text!",
|
||||
"Zulip Zulip? Zulip some text!",
|
||||
"Zulip Zulip! Zulip some text!",
|
||||
"Zulip Zulip, Zulip some text!",
|
||||
]
|
||||
),
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
banned,
|
||||
sorted(
|
||||
[
|
||||
(
|
||||
"realm found in 'Some text with realm in it'. "
|
||||
"The term realm should not appear in user-facing "
|
||||
"strings. Use organization instead."
|
||||
),
|
||||
(
|
||||
"realm found in 'Realm in capital case'. "
|
||||
"The term realm should not appear in user-facing "
|
||||
"strings. Use organization instead."
|
||||
),
|
||||
]
|
||||
),
|
||||
)
|
||||
Reference in New Issue
Block a user