(self)
| 1212 | self.assertEqual(coder.cur_messages[-1]["role"], "assistant") |
| 1213 | |
| 1214 | def test_normalize_language(self): |
| 1215 | coder = Coder.create(self.GPT35, None, io=InputOutput()) |
| 1216 | |
| 1217 | # Test None and empty |
| 1218 | self.assertIsNone(coder.normalize_language(None)) |
| 1219 | self.assertIsNone(coder.normalize_language("")) |
| 1220 | |
| 1221 | # Test "C" and "POSIX" |
| 1222 | self.assertIsNone(coder.normalize_language("C")) |
| 1223 | self.assertIsNone(coder.normalize_language("POSIX")) |
| 1224 | |
| 1225 | # Test already formatted names |
| 1226 | self.assertEqual(coder.normalize_language("English"), "English") |
| 1227 | self.assertEqual(coder.normalize_language("French"), "French") |
| 1228 | |
| 1229 | # Test common locale codes (fallback map, assuming babel is not installed or fails) |
| 1230 | with patch("aider.coders.base_coder.Locale", None): |
| 1231 | self.assertEqual(coder.normalize_language("en_US"), "English") |
| 1232 | self.assertEqual(coder.normalize_language("fr_FR"), "French") |
| 1233 | self.assertEqual(coder.normalize_language("es"), "Spanish") |
| 1234 | self.assertEqual(coder.normalize_language("de_DE.UTF-8"), "German") |
| 1235 | self.assertEqual( |
| 1236 | coder.normalize_language("zh-CN"), "Chinese" |
| 1237 | ) # Test hyphen in fallback |
| 1238 | self.assertEqual(coder.normalize_language("ja"), "Japanese") |
| 1239 | self.assertEqual( |
| 1240 | coder.normalize_language("unknown_code"), "unknown_code" |
| 1241 | ) # Fallback to original |
| 1242 | |
| 1243 | # Test with babel.Locale mocked (available) |
| 1244 | mock_babel_locale = MagicMock() |
| 1245 | mock_locale_instance = MagicMock() |
| 1246 | mock_babel_locale.parse.return_value = mock_locale_instance |
| 1247 | |
| 1248 | with patch("aider.coders.base_coder.Locale", mock_babel_locale): |
| 1249 | mock_locale_instance.get_display_name.return_value = "english" # For en_US |
| 1250 | self.assertEqual(coder.normalize_language("en_US"), "English") |
| 1251 | mock_babel_locale.parse.assert_called_with("en_US") |
| 1252 | mock_locale_instance.get_display_name.assert_called_with("en") |
| 1253 | |
| 1254 | mock_locale_instance.get_display_name.return_value = "french" # For fr-FR |
| 1255 | self.assertEqual(coder.normalize_language("fr-FR"), "French") # Test with hyphen |
| 1256 | mock_babel_locale.parse.assert_called_with("fr_FR") # Hyphen replaced |
| 1257 | mock_locale_instance.get_display_name.assert_called_with("en") |
| 1258 | |
| 1259 | # Test with babel.Locale raising an exception (simulating parse failure) |
| 1260 | mock_babel_locale_error = MagicMock() |
| 1261 | mock_babel_locale_error.parse.side_effect = Exception("Babel parse error") |
| 1262 | with patch("aider.coders.base_coder.Locale", mock_babel_locale_error): |
| 1263 | self.assertEqual(coder.normalize_language("en_US"), "English") # Falls back to map |
| 1264 | |
| 1265 | def test_get_user_language(self): |
| 1266 | io = InputOutput() |
nothing calls this directly
no test coverage detected