Skip to content

Commit 309ec55

Browse files
Update locale related code
1 parent 465bbd5 commit 309ec55

File tree

5 files changed

+69
-2
lines changed

5 files changed

+69
-2
lines changed

.github/workflows/pythonpackage.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ jobs:
3434
pybabel compile -d inclusivewriting/locales -D inclusivewriting
3535
coverage run --source=inclusivewriting -m unittest tests.tests
3636
coverage report -m
37+
- name: Validate resource schema
38+
run: |
39+
python -m unittest tests.resource_schema_test
3740
- name: Generate documentation
3841
run: |
3942
rm -rf build/html

inclusivewriting/locale_utils.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,14 @@ def get_default_locale_encoding():
1515
"""
1616
Get default locale information
1717
"""
18-
default, encoding = locale.getdefaultlocale()
19-
return default, encoding
18+
default_locale, _ = locale.getlocale()
19+
encoding = locale.getencoding()
20+
21+
if default_locale is None or default_locale == "":
22+
default_locale = "en_US"
23+
if encoding is None or encoding == "":
24+
encoding = "utf-8"
25+
return default_locale, encoding
2026

2127

2228
def get_default_locale_message_handler():

tests/locale_utils_test.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"""
1010

1111
import unittest
12+
from unittest.mock import patch
1213
from inclusivewriting.locale_utils import (
1314
get_default_locale_encoding,
1415
get_default_locale_message_handler,
@@ -42,6 +43,16 @@ def test_get_default_locale_encoding(self):
4243
self.assertTrue(language is not None)
4344
self.assertTrue(encoding is not None)
4445

46+
@patch("inclusivewriting.locale_utils.locale.getencoding", return_value=None)
47+
@patch("inclusivewriting.locale_utils.locale.getlocale", return_value=(None, None))
48+
def test_get_default_locale_encoding_fallback(self, _, __):
49+
"""
50+
Test locale fallback values when system locale details are unavailable.
51+
"""
52+
language, encoding = get_default_locale_encoding()
53+
self.assertEqual(language, "en_US")
54+
self.assertEqual(encoding, "utf-8")
55+
4556

4657
if __name__ == "__main__":
4758
unittest.main()

tests/resource_schema_test.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#
2+
# SPDX-FileCopyrightText: 2026 John Samuel <johnsamuelwrites@gmail.com>
3+
#
4+
# SPDX-License-Identifier: GPL-3.0-or-later
5+
#
6+
7+
"""
8+
Test suite for validating resource schema consistency
9+
"""
10+
11+
import json
12+
import unittest
13+
14+
import pkg_resources
15+
16+
from inclusivewriting.configuration import get_all_language_resources
17+
from inclusivewriting.file_utils import read_file
18+
from inclusivewriting.suggestions import _validate_and_build_suggestion
19+
20+
21+
class ResourceSchemaTestSuite(unittest.TestCase):
22+
"""
23+
Test cases for resource schema validation.
24+
"""
25+
26+
def test_all_configured_suggestion_resources_are_valid(self):
27+
"""
28+
Validate all configured JSON suggestion resources.
29+
"""
30+
resources = get_all_language_resources("./inclusivewriting/configuration.json")
31+
for resource_type, resource_files in resources.items():
32+
if resource_type == "separators":
33+
continue
34+
35+
for resource_file in resource_files:
36+
path = pkg_resources.resource_filename("inclusivewriting", resource_file)
37+
parsed_data = json.loads(read_file(path))
38+
self.assertTrue(isinstance(parsed_data, dict))
39+
for key, value in parsed_data.items():
40+
self.assertTrue(_validate_and_build_suggestion(key, value) is not None)
41+
42+
43+
if __name__ == "__main__":
44+
unittest.main()

tests/tests.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,23 @@
1414
from tests.locale_utils_test import LocaleUtilsTestSuite
1515
from tests.suggestions_test import SuggestionsTestSuite
1616
from tests.cli_test import CliTestSuite
17+
from tests.resource_schema_test import ResourceSchemaTestSuite
1718

1819
if __name__ == "__main__":
1920
unicode_utils_tests = UnicodeUtilsTestSuite()
2021
file_utils_tests = FileUtilsTestSuite()
2122
suggestions_tests = SuggestionsTestSuite()
2223
locales_tests = LocaleUtilsTestSuite()
2324
cli_tests = CliTestSuite()
25+
resource_schema_tests = ResourceSchemaTestSuite()
2426
tests = unittest.TestSuite(
2527
[
2628
unicode_utils_tests,
2729
file_utils_tests,
2830
suggestions_tests,
2931
locales_tests,
3032
cli_tests,
33+
resource_schema_tests,
3134
]
3235
)
3336
unittest.main()

0 commit comments

Comments
 (0)