/
EvilBeaver
/
OneScript
Обзор
Документация
Войти
/
EvilBeaver
/
OneScript
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
tests/config.os
141 строка
9 KB
Sergey Batanov
Обновляем настройки системы при падении теста config.
09 май 2026, 16:19
09 май 2026, 16:19
3113d1f
Код
Авторство
О чём код?
Перем юТест; Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт юТест = ЮнитТестирование; ВсеТесты = Новый Массив; ВсеТесты.Добавить("ТестДолженПроверитьПорядокПрименения_ПеременнаяОкруженияИмеетВысшийПриоритет"); ВсеТесты.Добавить("ТестДолженПроверитьЧтениеЗначенияПоУмолчанию"); ВсеТесты.Добавить("ТестДолженПроверитьПереопределениеНесколькихПараметровОдновременно"); Возврат ВсеТесты; КонецФункции Процедура ТестДолженПроверитьПорядокПрименения_ПеременнаяОкруженияИмеетВысшийПриоритет() Экспорт ИсходноеЗначениеПеременной = ПолучитьПеременнуюСреды("OSCRIPT_CONFIG"); УстановитьПеременнуюСреды("OSCRIPT_CONFIG", ""); ОбновитьНастройкиСистемы(); // Получаем исходное значение языка системы ИсходноеЗначениеЯзыка = ПолучитьЗначениеСистемнойНастройки("SystemLanguage"); // Определяем тестовое значение, отличное от текущего Если ИсходноеЗначениеЯзыка = "ru" Тогда ТестовоеЗначение = "en"; Иначе ТестовоеЗначение = "ru"; КонецЕсли; // Устанавливаем переменную окружения с новым значением УстановитьПеременнуюСреды("OSCRIPT_CONFIG", "SystemLanguage=" + ТестовоеЗначение); Попытка // Перечитываем конфигурацию ОбновитьНастройкиСистемы(); // Проверяем, что значение изменилось НовоеЗначениеЯзыка = ПолучитьЗначениеСистемнойНастройки("SystemLanguage"); юТест.ПроверитьРавенство(ТестовоеЗначение, НовоеЗначениеЯзыка, "Переменная окружения OSCRIPT_CONFIG должна иметь наивысший приоритет"); Исключение // Возвращаем переменную окружения в исходное состояние УстановитьПеременнуюСреды("OSCRIPT_CONFIG", ИсходноеЗначениеПеременной); ОбновитьНастройкиСистемы(); ВызватьИсключение; КонецПопытки; // Очищаем переменную окружения УстановитьПеременнуюСреды("OSCRIPT_CONFIG", ""); ОбновитьНастройкиСистемы(); // Проверяем, что значение вернулось к исходному ВосстановленноеЗначение = ПолучитьЗначениеСистемнойНастройки("SystemLanguage"); юТест.ПроверитьРавенство(ИсходноеЗначениеЯзыка, ВосстановленноеЗначение, "После очистки переменной окружения значение должно вернуться к исходному"); // Возвращаем переменную окружения в исходное состояние УстановитьПеременнуюСреды("OSCRIPT_CONFIG", ИсходноеЗначениеПеременной); ОбновитьНастройкиСистемы(); КонецПроцедуры Процедура ТестДолженПроверитьЧтениеЗначенияПоУмолчанию() Экспорт // Проверяем, что можем прочитать существующий параметр ЗначениеКодировки = ПолучитьЗначениеСистемнойНастройки("encoding.script"); // Значение может быть Неопределено, если не задано в конфигурации // Это нормальное поведение юТест.ПроверитьИстину( ЗначениеКодировки = Неопределено ИЛИ ТипЗнч(ЗначениеКодировки) = Тип("Строка"), "Значение encoding.script должно быть либо строкой, либо Неопределено"); // Проверяем чтение несуществующего параметра НесуществующийПараметр = ПолучитьЗначениеСистемнойНастройки("несуществующий.параметр.test"); юТест.ПроверитьРавенство(Неопределено, НесуществующийПараметр, "Несуществующий параметр должен возвращать Неопределено"); КонецПроцедуры Процедура ТестДолженПроверитьПереопределениеНесколькихПараметровОдновременно() Экспорт ИсходноеЗначениеПеременной = ПолучитьПеременнуюСреды("OSCRIPT_CONFIG"); // Получаем исходные значения ИсходныйЯзык = ПолучитьЗначениеСистемнойНастройки("SystemLanguage"); ИсходнаяКодировка = ПолучитьЗначениеСистемнойНастройки("encoding.script"); // Устанавливаем несколько параметров через точку с запятой Если ИсходныйЯзык = "ru" Тогда НовыйЯзык = "en"; Иначе НовыйЯзык = "ru"; КонецЕсли; НоваяКодировка = "utf-8"; КонфигурационнаяСтрока = "SystemLanguage=" + НовыйЯзык + ";encoding.script=" + НоваяКодировка; УстановитьПеременнуюСреды("OSCRIPT_CONFIG", КонфигурационнаяСтрока); Попытка // Перечитываем конфигурацию ОбновитьНастройкиСистемы(); // Проверяем, что оба значения изменились ЗначениеЯзыка = ПолучитьЗначениеСистемнойНастройки("SystemLanguage"); ЗначениеКодировки = ПолучитьЗначениеСистемнойНастройки("encoding.script"); юТест.ПроверитьРавенство(НовыйЯзык, ЗначениеЯзыка, "Язык системы должен измениться на " + НовыйЯзык); юТест.ПроверитьРавенство(НоваяКодировка, ЗначениеКодировки, "Кодировка должна измениться на " + НоваяКодировка); Исключение // Восстанавливаем переменную окружения даже в случае ошибки УстановитьПеременнуюСреды("OSCRIPT_CONFIG", ИсходноеЗначениеПеременной); ОбновитьНастройкиСистемы(); ВызватьИсключение; КонецПопытки; // Восстанавливаем переменную окружения УстановитьПеременнуюСреды("OSCRIPT_CONFIG", ИсходноеЗначениеПеременной); ОбновитьНастройкиСистемы(); // Проверяем, что значения вернулись (или стали Неопределено) ВосстановленныйЯзык = ПолучитьЗначениеСистемнойНастройки("SystemLanguage"); ВосстановленнаяКодировка = ПолучитьЗначениеСистемнойНастройки("encoding.script"); юТест.ПроверитьРавенство(ИсходныйЯзык, ВосстановленныйЯзык, "Язык системы должен вернуться к исходному значению"); юТест.ПроверитьРавенство(ИсходнаяКодировка, ВосстановленнаяКодировка, "Кодировка должна вернуться к исходному значению"); КонецПроцедуры