test_l10n_locales.py (3559B)
1 import os 2 import shutil 3 import unittest 4 from unittest import mock 5 6 import mozunit 7 from mozharness.base import script 8 from mozharness.mozilla.l10n import locales 9 10 ALL_LOCALES = ["ar", "be", "de", "es-ES"] 11 12 MH_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 13 14 15 def cleanup(): 16 if os.path.exists("test_logs"): 17 shutil.rmtree("test_logs", ignore_errors=True) 18 19 20 class LocalesTest(locales.LocalesMixin, script.BaseScript): 21 def __init__(self, **kwargs): 22 if "config" not in kwargs: 23 kwargs["config"] = {"log_type": "simple", "log_level": "error"} 24 if "initial_config_file" not in kwargs: 25 kwargs["initial_config_file"] = "test/test.json" 26 super().__init__(**kwargs) 27 self.config = {} 28 self.log_obj = None 29 30 31 @mock.patch.dict("os.environ", GECKO_PATH="gecko_src") 32 class TestLocalesMixin(unittest.TestCase): 33 BASE_ABS_DIRS = { 34 "abs_log_dir", 35 "abs_work_dir", 36 "base_work_dir", 37 "abs_src_dir", 38 "abs_locales_src_dir", 39 "abs_l10n_dir", 40 "abs_obj_dir", 41 "abs_locales_dir", 42 } 43 44 def setUp(self): 45 cleanup() 46 47 def tearDown(self): 48 cleanup() 49 50 def test_query_locales_locales(self): 51 l = LocalesTest() 52 l.locales = ["a", "b", "c"] 53 self.assertEqual(l.locales, l.query_locales()) 54 55 def test_query_locales_ignore_locales(self): 56 l = LocalesTest() 57 l.config["locales"] = ["a", "b", "c"] 58 l.config["ignore_locales"] = ["a", "c"] 59 self.assertEqual(["b"], l.query_locales()) 60 61 def test_query_locales_config(self): 62 l = LocalesTest() 63 l.config["locales"] = ["a", "b", "c"] 64 self.assertEqual(l.config["locales"], l.query_locales()) 65 66 def test_query_locales_json(self): 67 l = LocalesTest() 68 l.config["locales_file"] = os.path.join( 69 MH_DIR, "test/helper_files/locales.json" 70 ) 71 l.config["base_work_dir"] = "." 72 l.config["work_dir"] = "." 73 l.config["locales_dir"] = "locales_dir" 74 l.config["objdir"] = "objdir" 75 locales = l.query_locales() 76 locales.sort() 77 self.assertEqual(ALL_LOCALES, locales) 78 79 # Commenting out til we can hide the FATAL ? 80 # def test_query_locales_no_file(self): 81 # l = LocalesTest() 82 # l.config['base_work_dir'] = '.' 83 # l.config['work_dir'] = '.' 84 # try: 85 # l.query_locales() 86 # except SystemExit: 87 # pass # Good 88 # else: 89 # self.assertTrue(False, "query_locales with no file doesn't fatal()!") 90 91 def test_parse_locales_file(self): 92 l = LocalesTest() 93 self.assertEqual( 94 ALL_LOCALES, 95 l.parse_locales_file(os.path.join(MH_DIR, "test/helper_files/locales.txt")), 96 ) 97 98 def _get_query_abs_dirs_obj(self): 99 l = LocalesTest() 100 l.config["base_work_dir"] = "base_work_dir" 101 l.config["work_dir"] = "work_dir" 102 l.config["locales_dir"] = "locales_dir" 103 l.config["objdir"] = "objdir" 104 return l 105 106 def test_query_abs_dirs_base(self): 107 l = self._get_query_abs_dirs_obj() 108 dirs = set(l.query_abs_dirs().keys()) 109 self.assertEqual(dirs, self.BASE_ABS_DIRS) 110 111 def test_query_abs_dirs_base2(self): 112 l = self._get_query_abs_dirs_obj() 113 l.query_abs_dirs().keys() 114 dirs = set(l.query_abs_dirs().keys()) 115 self.assertEqual(dirs, self.BASE_ABS_DIRS) 116 117 118 if __name__ == "__main__": 119 mozunit.main()