diff --git a/README.md b/README.md
index 9613a20..26f4cb7 100644
--- a/README.md
+++ b/README.md
@@ -35,7 +35,6 @@
В комплекте присутствуют следующие сценарии обработки файлов:
- `ДобавлениеПробеловПередКлючевымиСловами` - добавляет отсутствующие пробелы перед ключевыми словами в файлах модулей. На данный момент обрабатывается только ключевое слово `Экспорт`.
-- `ДобавлениеТестовВРасширение` - добавляет отсутствующие сценарии в расширение с unit-тестами. [См. подробнее](/docs/ДобавлениеТестовВРасширение.md)
- `ЗапретИспользованияПерейти` - проверяет модуль на использование методов `Перейти`.
- `ИсправлениеНеКаноническогоНаписания` - исправляет неканоничное написание ключевых слов в модулях.
- `КорректировкаXMLФорм` - исправляет дубли индексов элементов в файлах описаний форм (могут образоваться при объединениях). Поддерживаются как файлы в формате выгрузки конфигуратора (`Form.xml`), так и в формате EDT (`Form.form`).
diff --git a/docs/ДобавлениеТестовВРасширение.md b/docs/ДобавлениеТестовВРасширение.md
deleted file mode 100644
index 2baea0a..0000000
--- a/docs/ДобавлениеТестовВРасширение.md
+++ /dev/null
@@ -1,14 +0,0 @@
-# Сценарий `ДобавлениеТестовВРасширение`
-
-Добавляет отсутствующие сценарии тестов в расширение с unit-тестами для всех экспортных методов.
-
-Обрабатываются:
-
-- общие модули
-- модули менеджеров
-- модули объектов
-- модули наборов записей
-
-Поддерживаются только исходные файлы в формате EDT.
-
-Публичный репозиторий тестового расширения и документация по нему находятся в разработке.
diff --git a/features/ИнтерактивнаяНастройка.feature b/features/ИнтерактивнаяНастройка.feature
index dd51632..3dc78a9 100644
--- a/features/ИнтерактивнаяНастройка.feature
+++ b/features/ИнтерактивнаяНастройка.feature
@@ -41,7 +41,6 @@ y
y
y
y
-y
local
n
"""
@@ -54,7 +53,6 @@ n
"КаталогЛокальныхСценариев": "local",
"ГлобальныеСценарии": [
"ДобавлениеПробеловПередКлючевымиСловами.os",
- "ДобавлениеТестовВРасширение.os",
"ЗапретИспользованияПерейти.os",
"ИсправлениеНеКаноническогоНаписания.os",
"КорректировкаXMLФорм.os",
diff --git a/features/Конфигурирование.feature b/features/Конфигурирование.feature
index edf34fa..fd7688e 100644
--- a/features/Конфигурирование.feature
+++ b/features/Конфигурирование.feature
@@ -10,7 +10,7 @@
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os configure -global"
Тогда Код возврата команды "oscript" равен 0
И Я сообщаю вывод команды "oscript"
- И Вывод команды "oscript" содержит "precommit4onec v22.11"
+ И Вывод команды "oscript" содержит "precommit4onec v23.04"
И Вывод команды "oscript" содержит "Установленные настройки:"
И Вывод команды "oscript" содержит "ИспользоватьСценарииРепозитория ="
И Вывод команды "oscript" содержит "КаталогЛокальныхСценариев ="
@@ -36,17 +36,15 @@
И Я сообщаю вывод команды "oscript"
И Вывод команды "oscript" содержит
"""
- precommit4onec v22.11
+ precommit4onec v23.04
Установленные настройки: Базовые настройки
ИспользоватьСценарииРепозитория = Нет
КаталогЛокальныхСценариев =
- ГлобальныеСценарии = ДобавлениеПробеловПередКлючевымиСловами.os,ДобавлениеТестовВРасширение.os,ЗапретИспользованияПерейти.os,ИсправлениеНеКаноническогоНаписания.os,КорректировкаXMLФорм.os,ОбработкаЮнитТестов.os,ОтключениеПолнотекстовогоПоиска.os,ОтключениеРазрешенияИзменятьФорму.os,ПроверкаДублейПроцедурИФункций.os,ПроверкаКорректностиИнструкцийПрепроцессора.os,ПроверкаКорректностиОбластей.os,ПроверкаНецензурныхСлов.os,РазборОбычныхФормНаИсходники.os,РазборОтчетовОбработокРасширений.os,СинхронизацияОбъектовМетаданныхИФайлов.os,СортировкаДереваМетаданных.os,СортировкаСоставаПодсистем.os,УдалениеДублейМетаданных.os,УдалениеЛишнихКонцевыхПробелов.os,УдалениеЛишнихПустыхСтрок.os
+ ГлобальныеСценарии = ДобавлениеПробеловПередКлючевымиСловами.os,ЗапретИспользованияПерейти.os,ИсправлениеНеКаноническогоНаписания.os,КорректировкаXMLФорм.os,ОбработкаЮнитТестов.os,ОтключениеПолнотекстовогоПоиска.os,ОтключениеРазрешенияИзменятьФорму.os,ПроверкаДублейПроцедурИФункций.os,ПроверкаКорректностиИнструкцийПрепроцессора.os,ПроверкаКорректностиОбластей.os,ПроверкаНецензурныхСлов.os,РазборОбычныхФормНаИсходники.os,РазборОтчетовОбработокРасширений.os,СинхронизацияОбъектовМетаданныхИФайлов.os,СортировкаДереваМетаданных.os,СортировкаСоставаПодсистем.os,УдалениеДублейМетаданных.os,УдалениеЛишнихКонцевыхПробелов.os,УдалениеЛишнихПустыхСтрок.os
ОтключенныеСценарии =
НастройкиСценариев = Соответствие
ОтключениеПолнотекстовогоПоиска = Соответствие
- МетаданныеДляИсключения = Соответствие
- src\_example.xml = Номер,ТабличнаяЧасть1.Реквизит
- src\_example2.xml =
+ МетаданныеДляИсключения = Соответствие
ПроверкаНецензурныхСлов = Соответствие
ФайлСНецензурнымиСловами = НецензурныеСлова.txt
РазборОтчетовОбработокРасширений = Соответствие
diff --git a/features/ПростыеКоманды.feature b/features/ПростыеКоманды.feature
index 86a4b8f..448ad3f 100644
--- a/features/ПростыеКоманды.feature
+++ b/features/ПростыеКоманды.feature
@@ -14,7 +14,7 @@
Сценарий: Получение версии продукта
Когда Я выполняю команду "oscript" с параметрами "src/main.os version"
Тогда Я сообщаю вывод команды "oscript"
- И Вывод команды "oscript" содержит "22.11"
+ И Вывод команды "oscript" содержит "23.04"
И Вывод команды "oscript" не содержит "precommit4onec v"
И Код возврата команды "oscript" равен 0
@@ -22,7 +22,7 @@
Когда Я выполняю команду "oscript" с параметрами "src/main.os help"
Тогда Вывод команды "oscript" содержит
"""
- precommit4onec v22.11
+ precommit4onec v23.04
Возможные команды:
help - Выводит справку по командам
version - Выводит версию приложения
@@ -37,7 +37,7 @@
Когда Я выполняю команду "oscript" с параметрами "src/main.os"
Тогда Вывод команды "oscript" содержит
"""
- precommit4onec v22.11
+ precommit4onec v23.04
Возможные команды:
help - Выводит справку по командам
version - Выводит версию приложения
diff --git a/features/УстановкаПрекоммита.feature b/features/УстановкаПрекоммита.feature
index 6890b89..3aea64d 100644
--- a/features/УстановкаПрекоммита.feature
+++ b/features/УстановкаПрекоммита.feature
@@ -18,7 +18,7 @@
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install rep1"
Тогда Код возврата команды "oscript" равен 0
И Я сообщаю вывод команды "oscript"
- И Вывод команды "oscript" содержит "precommit4onec v22.11"
+ И Вывод команды "oscript" содержит "precommit4onec v23.04"
И Вывод команды "oscript" содержит "Pre-commit hook для rep1 создан"
И В каталоге ".git/hooks" репозитория "Репозиторий1" есть файл "pre-commit"
@@ -28,14 +28,14 @@
И Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install ./"
Тогда Код возврата команды "oscript" равен 0
И Я сообщаю вывод команды "oscript"
- И Вывод команды "oscript" содержит "precommit4onec v22.11"
+ И Вывод команды "oscript" содержит "precommit4onec v23.04"
И Вывод команды "oscript" содержит "не является репозиторием git"
Сценарий: Установка precommit4onec во вложенные каталоги
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install ./ -r"
Тогда Код возврата команды "oscript" равен 0
И Я сообщаю вывод команды "oscript"
- И Вывод команды "oscript" содержит "precommit4onec v22.11"
+ И Вывод команды "oscript" содержит "precommit4onec v23.04"
И В каталоге ".git/hooks" репозитория "Репозиторий1" есть файл "pre-commit"
И В каталоге ".git/hooks" репозитория "Репозиторий2" есть файл "pre-commit"
@@ -51,6 +51,6 @@
И Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install ./ -r"
Тогда Код возврата команды "oscript" равен 0
И Я сообщаю вывод команды "oscript"
- И Вывод команды "oscript" содержит "precommit4onec v22.11"
+ И Вывод команды "oscript" содержит "precommit4onec v23.04"
И В каталоге ".git/hooks" репозитория "Репозиторий1" есть файл "pre-commit"
И В каталоге ".git/hooks" репозитория "Репозиторий2" есть файл "pre-commit"
diff --git a/packagedef b/packagedef
index c3a1ce1..b79ff18 100644
--- a/packagedef
+++ b/packagedef
@@ -4,13 +4,13 @@
ИмяПродукта = НРег(ПараметрыСистемы_ЛокальнаяВерсия.ИмяПродукта());
Описание.Имя(ИмяПродукта)
- .ВерсияСреды("1.5.0.178")
+ .ВерсияСреды("1.8.1")
.Версия(ПараметрыСистемы_ЛокальнаяВерсия.ВерсияПродукта())
- .ЗависитОт("logos", "1.3.0")
+ .ЗависитОт("logos", "1.4.0")
.ЗависитОт("cmdline", "1.0.0")
- .ЗависитОт("1bdd", "1.9.0")
- .ЗависитОт("gitrunner", "1.6.0")
- .ЗависитОт("v8runner", "1.8.0")
+ .ЗависитОт("1bdd", "1.13.0")
+ .ЗависитОт("gitrunner", "1.7.0")
+ .ЗависитОт("v8runner", "1.8.2")
.ЗависитОт("v8unpack", "1.0.4")
.ВключитьФайл("src")
.ВключитьФайл("v8config.json")
diff --git a/src/Модули/МенеджерНастроек.os b/src/Модули/МенеджерНастроек.os
index 544b5d7..bdf1ce6 100644
--- a/src/Модули/МенеджерНастроек.os
+++ b/src/Модули/МенеджерНастроек.os
@@ -282,7 +282,11 @@
Функция ЭтоНовый() Экспорт
- Возврат Настройки().ЭтоНовый();
+ Если НЕ НастройкиИнициализированы Тогда
+ Возврат Истина;
+ Иначе
+ Возврат Настройки().ЭтоНовый();
+ КонецЕсли;
КонецФункции
diff --git a/src/Модули/ПараметрыПриложения.os b/src/Модули/ПараметрыПриложения.os
index 847213a..b6da169 100644
--- a/src/Модули/ПараметрыПриложения.os
+++ b/src/Модули/ПараметрыПриложения.os
@@ -24,7 +24,7 @@
//
Функция ВерсияПродукта() Экспорт
- Возврат "22.11";
+ Возврат "23.04";
КонецФункции // ВерсияПродукта
diff --git a/src/Модули/СценарииОбработки.os b/src/Модули/СценарииОбработки.os
index 2a773c9..9cb8048 100644
--- a/src/Модули/СценарииОбработки.os
+++ b/src/Модули/СценарииОбработки.os
@@ -3,8 +3,7 @@
ТекущийКаталогСценариев = МенеджерПриложения.КаталогСценариев();
ВсеЗагруженные = Новый Массив;
ФайлыГлобальныхСценариев = НайтиФайлы(ТекущийКаталогСценариев, "*.os");
- ФайлыЛокальныхСценариев = Новый Массив;
-
+ ФайлыЛокальныхСценариев = Новый Массив;
Лог = МенеджерПриложения.ПолучитьЛог();
diff --git a/src/СценарииОбработки/ДобавлениеТестовВРасширение.os b/src/СценарииОбработки/ДобавлениеТестовВРасширение.os
deleted file mode 100644
index c372bb9..0000000
--- a/src/СценарииОбработки/ДобавлениеТестовВРасширение.os
+++ /dev/null
@@ -1,460 +0,0 @@
-Перем Лог;
-Перем ЗаголовокЛога;
-
-// ИмяСценария
-// Возвращает имя сценария обработки файлов
-//
-// Возвращаемое значение:
-// Строка - Имя текущего сценария обработки файлов
-//
-Функция ИмяСценария() Экспорт
-
- Возврат "ДобавлениеТестовВРасширение";
-
-КонецФункции // ИмяСценария()
-
-// ОбработатьФайл
-// Выполняет обработку файла
-//
-// Параметры:
-// АнализируемыйФайл - Файл - Файл из журнала git для анализа
-// КаталогИсходныхФайлов - Строка - Каталог расположения исходных файлов относительно каталог репозитория
-// ДополнительныеПараметры - Структура - Набор дополнительных параметров, которые можно использовать
-// * Лог - Объект - Текущий лог
-// * ИзмененныеКаталоги - Массив - Каталоги / файлы, которые необходимо добавить в индекс
-// * КаталогРепозитория - Строка - Адрес каталога репозитория
-// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образовавшиеся в результате работы сценария
-// и которые необходимо дообработать
-//
-// Возвращаемое значение:
-// Булево - Признак выполненной обработки файла
-//
-Функция ОбработатьФайл(АнализируемыйФайл, КаталогИсходныхФайлов, ДополнительныеПараметры) Экспорт
-
- Лог = ДополнительныеПараметры.Лог;
- ЗаголовокЛога = СтрШаблон("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
-
- Если Не ЗначениеЗаполнено(КаталогИсходныхФайлов) Тогда
- ВызватьИсключение ЗаголовокЛога + ": не заполнен параметр 'КаталогИсходныхФайлов'";
- КонецЕсли;
-
- Если Не ЗначениеЗаполнено(ДополнительныеПараметры.КаталогРепозитория) Тогда
- ВызватьИсключение ЗаголовокЛога + ": не заполнен параметр 'ДополнительныеПараметры.КаталогРепозитория'";
- КонецЕсли;
-
- Если Не ИспользуетсяФорматEDT(КаталогИсходныхФайлов) Тогда
-
- Лог.Отладка(ЗаголовокЛога + ": это не формат EDT в каталоге исходных файлов '%1'", КаталогИсходныхФайлов);
- Возврат Ложь;
-
- КонецЕсли;
-
- Если Не ИспользуетсяРасширениеСТестами(ДополнительныеПараметры.КаталогРепозитория) Тогда
-
- Лог.Отладка(ЗаголовокЛога + ": нет расширения с тестами в каталоге репозитория 'tests'");
- Возврат Ложь;
-
- КонецЕсли;
-
- Если Не АнализируемыйФайл.Существует()
- Или Не ТипыФайлов.ЭтоФайлИсходников(АнализируемыйФайл)
- Или ТипыФайлов.ЭтоФайлЧастьТеста(АнализируемыйФайл, ДополнительныеПараметры.КаталогРепозитория) Тогда
-
- Лог.Отладка(ЗаголовокЛога + ": это не файл исходников проекта");
- Возврат Ложь;
-
- КонецЕсли;
-
- МетодыМодуля = МетодыМодуля(
- АнализируемыйФайл.ПолноеИмя,
- "^\s*?(?:Процедура|Функция|Procedure|Function)\s+?([а-яА-ЯёЁ0-9_\w]+?)\s*?\([^\)]*?\)\s*?(?:Экспорт|Export)");
- Если МетодыМодуля.Количество() = 0 Тогда
-
- Лог.Отладка(ЗаголовокЛога + ": нет экспортных методов в файле исходников");
- Возврат Ложь;
-
- КонецЕсли;
-
- МетаИнформацияФайла = МетаинформацияФайла(КаталогИсходныхФайлов, АнализируемыйФайл);
- Если МетаИнформацияФайла = Неопределено Тогда
- Возврат Ложь;
- КонецЕсли;
-
- Лог.Информация(ЗаголовокЛога);
-
- Возврат ТестыОбновлены(ДополнительныеПараметры, МетаИнформацияФайла, МетодыМодуля);
-
-КонецФункции
-
-Функция ИспользуетсяФорматEDT(КаталогИсходныхФайлов)
-
- ФайлОписанияКонфигурации = Новый Файл(ОбъединитьПути(КаталогИсходныхФайлов, ОтносительныйПутьФайлаОписанияКонфигурацииEDT()));
- Возврат ФайлОписанияКонфигурации.Существует();
-
-КонецФункции
-
-Функция ИспользуетсяРасширениеСТестами(КаталогРепозитория)
-
- ФайлОписанияКонфигурации = Новый Файл(ОбъединитьПути(КаталогРепозитория, "tests", ОтносительныйПутьФайлаОписанияКонфигурацииEDT()));
- Возврат ФайлОписанияКонфигурации.Существует();
-
-КонецФункции
-
-Функция ОтносительныйПутьФайлаОписанияКонфигурацииEDT()
-
- Возврат ОбъединитьПути("src", "Configuration", "Configuration.mdo");
-
-КонецФункции
-
-Функция МетодыМодуля(ИмяФайла, Паттерн)
-
- Методы = Новый Массив();
-
- ТекстМодуля = ФайловыеОперации.ПрочитатьТекстФайла(ИмяФайла);
- Если ПустаяСтрока(ТекстМодуля) Тогда
- Возврат Методы;
- КонецЕсли;
-
- ШаблонПоиска = Новый РегулярноеВыражение(Паттерн);
- ШаблонПоиска.Многострочный = Истина;
- ШаблонПоиска.ИгнорироватьРегистр = Истина;
- Совпадения = ШаблонПоиска.НайтиСовпадения(ТекстМодуля);
-
- Для Каждого Совпадение Из Совпадения Цикл
-
- Методы.Добавить(Совпадение.Группы[1].Значение);
-
- КонецЦикла;
-
- Возврат Методы;
-
-КонецФункции
-
-Функция МетаинформацияФайла(КаталогИсходныхФайлов, АнализируемыйФайл)
-
- ФайлКаталогИсходников = Новый Файл(КаталогИсходныхФайлов);
- КраткийПуть = СтрЗаменить(АнализируемыйФайл.ПолноеИмя, ФайлКаталогИсходников.ПолноеИмя, "");
- Если СтрНачинаетсяС(КраткийПуть, ПолучитьРазделительПути()) Тогда
- КраткийПуть = Сред(КраткийПуть, 2);
- КонецЕсли;
- СоставКраткогоПутиКФайлу = СтрРазделить(КраткийПуть, ПолучитьРазделительПути());
- ОжидаемоеКоличествоУровней = 4; // src\<КаталогТипаМетаданных>\<ИмяОбъектаМетаданных>\<ФайлИсходников>
- Если СоставКраткогоПутиКФайлу.Количество() < ОжидаемоеКоличествоУровней Тогда
-
- Лог.Отладка(ЗаголовокЛога + ": неизвестное расположение в каталоге исходных файлов");
- Возврат Неопределено;
-
- КонецЕсли;
- КаталогТипаМетаданных = СоставКраткогоПутиКФайлу[1];
-
- ЭлементСписка = МетаданныеКонфигурации.КаталогиТиповМетаданных().НайтиПоЗначению(КаталогТипаМетаданных);
- Если ЭлементСписка = Неопределено Тогда
-
- Лог.Отладка(ЗаголовокЛога + ": не удалось определить тип объекта метаданных '%1'", КаталогТипаМетаданных);
- Возврат Неопределено;
-
- КонецЕсли;
- ТипМетаданных = ЭлементСписка.Представление;
-
- ЭлементСписка = МетаданныеКонфигурации.КаталогиТиповМетаданныхДляТестов().НайтиПоЗначению(КаталогТипаМетаданных);
- Если ЭлементСписка = Неопределено Тогда
-
- Лог.Отладка(ЗаголовокЛога + ": тесты не генерируются для типа метаданных '%1' ", КаталогТипаМетаданных);
- Возврат Неопределено;
-
- КонецЕсли;
- КраткоеПредставлениеТипаМетаданных = ЭлементСписка.Представление;
-
- ИмяОбъектаМетаданных = СоставКраткогоПутиКФайлу[2];
- ИмяТестовогоМодуля = СтрШаблон("%1_%2", КраткоеПредставлениеТипаМетаданных, ИмяОбъектаМетаданных);
-
- Метаинформация = Новый Структура();
- Метаинформация.Вставить("ТипМетаданных", ТипМетаданных);
- Метаинформация.Вставить("КраткоеПредставление", КраткоеПредставлениеТипаМетаданных);
- Метаинформация.Вставить("ИмяТестовогоМодуля", ИмяТестовогоМодуля);
- Метаинформация.Вставить("Глобальный", Ложь);
- Метаинформация.Вставить("Клиент", Ложь);
- Метаинформация.Вставить("Сервер", Ложь);
-
- Если ТипыФайлов.ЭтоОбщийМодуль(АнализируемыйФайл, КаталогИсходныхФайлов) Тогда
-
- // src\CommonModules\ОбщийМодуль\Module.bsl
- ФайлОписания = Новый Файл(ОбъединитьПути(АнализируемыйФайл.Путь, ИмяОбъектаМетаданных + ".mdo"));
- Если ФайлОписания.Существует() Тогда
-
- ТекстОписания = ФайловыеОперации.ПрочитатьТекстФайла(ФайлОписания.ПолноеИмя);
- Метаинформация.Глобальный = СтрНайти(ТекстОписания, "true") <> 0;
- Метаинформация.Клиент = СтрНайти(ТекстОписания, "true") <> 0;
- Метаинформация.Сервер = СтрНайти(ТекстОписания, "true") <> 0;
-
- Иначе
-
- ВызватьИсключение СтрШаблон(ЗаголовокЛога + ": не найден файл описания общего модуля");
-
- КонецЕсли;
-
- ИначеЕсли ТипыФайлов.ЭтоМодульМенеджера(АнализируемыйФайл) Тогда
-
- // src\Catalogs\Справочник\ManagerModule.bsl
- Метаинформация.Сервер = Истина;
- Метаинформация.ИмяТестовогоМодуля = СтрШаблон("%1_%2", Метаинформация.ИмяТестовогоМодуля, "ММ");
-
- ИначеЕсли ТипыФайлов.ЭтоМодульОбъекта(АнализируемыйФайл) Тогда
-
- // src\Catalogs\Справочник\ObjectModule.bsl
- Метаинформация.Сервер = Истина;
- Метаинформация.ИмяТестовогоМодуля = СтрШаблон("%1_%2", Метаинформация.ИмяТестовогоМодуля, "МО");
-
- ИначеЕсли ТипыФайлов.ЭтоМодульНабораЗаписей(АнализируемыйФайл) Тогда
-
- // src\InformationRegisters\Регистр\RecordSetModule.bsl
- Метаинформация.Сервер = Истина;
- Метаинформация.ИмяТестовогоМодуля = СтрШаблон("%1_%2", Метаинформация.ИмяТестовогоМодуля, "МНЗ");
-
- Иначе
-
- Лог.Отладка(ЗаголовокЛога + ": неподходящий тип исходного файла");
- Возврат Неопределено;
-
- КонецЕсли;
-
- Возврат Метаинформация;
-
-КонецФункции
-
-Функция ТестыОбновлены(ДополнительныеПараметры, МетаИнформацияФайла, Методы)
-
- ИзмененныеФайлы = Новый Массив();
-
- КаталогТестов = ОбъединитьПути(ДополнительныеПараметры.КаталогРепозитория, "tests");
- КаталогМодулей = ОбъединитьПути(КаталогТестов, "src", "CommonModules");
-
- ПутьФайлаМодуляТеста = ОбъединитьПути(КаталогМодулей, МетаИнформацияФайла.ИмяТестовогоМодуля, "Module.bsl");
- ФайлМодуляТеста = Новый Файл(ПутьФайлаМодуляТеста);
- Если Не ФайлМодуляТеста.Существует() Тогда
-
- // Добавление общего модуля в расширение.
- ФайлКаталогаМодуляТеста = Новый Файл(ФайлМодуляТеста.Путь);
- Если Не ФайлКаталогаМодуляТеста.Существует() Тогда
- СоздатьКаталог(ФайлКаталогаМодуляТеста.ПолноеИмя);
- КонецЕсли;
-
- // Описание модуля.
- ПутьФайлаОписанияТеста = ОбъединитьПути(
- КаталогМодулей,
- МетаИнформацияФайла.ИмяТестовогоМодуля,
- МетаИнформацияФайла.ИмяТестовогоМодуля + ".mdo");
- ОписаниеМодуля = СтрШаблон(
- ШаблонОписанияТеста(),
- Строка(Новый УникальныйИдентификатор()),
- МетаИнформацияФайла.ИмяТестовогоМодуля,
- XMLСтрока(МетаИнформацияФайла.Клиент),
- XMLСтрока(МетаИнформацияФайла.Сервер));
- ТекстовыйДокумент = Новый ТекстовыйДокумент();
- ТекстовыйДокумент.УстановитьТекст(ОписаниеМодуля);
- ТекстовыйДокумент.Записать(ПутьФайлаОписанияТеста, КодировкаТекста.UTF8);
-
- // Текст модуля.
- ТекстыТеста = ТекстыТеста(Методы, МетаИнформацияФайла);
-
- ТекстМодуля = СтрШаблон(
- ШаблонТестовогоМодуля(),
- СтрСоединить(ТекстыТеста.ИсполняемыеСценарии, Символы.ПС),
- СтрСоединить(ТекстыТеста.ТестовыеМетоды, Символы.ПС + Символы.ПС));
- ТекстовыйДокумент = Новый ТекстовыйДокумент();
- ТекстовыйДокумент.УстановитьТекст(ТекстМодуля);
- ТекстовыйДокумент.Записать(ПутьФайлаМодуляТеста, КодировкаТекста.UTF8);
-
- // Описание конфигурации тестов.
- ПутьФайлаОписанияРасширенияТестов = ОбъединитьПути(КаталогТестов, "src", "Configuration", "Configuration.mdo");
- ТекстОписанияРасширенияТестов = ФайловыеОперации.ПрочитатьТекстФайла(ПутьФайлаОписанияРасширенияТестов);
- ТекстОписанияРасширенияТестов = СтрЗаменить(
- ТекстОписанияРасширенияТестов,
- "",
- СтрШаблон(
- " CommonModule.%1
- |",
- МетаИнформацияФайла.ИмяТестовогоМодуля));
- ФайловыеОперации.ЗаписатьТекстФайла(ПутьФайлаОписанияРасширенияТестов, ТекстОписанияРасширенияТестов);
-
- ИзмененныеФайлы.Добавить(ПутьФайлаОписанияТеста);
- ИзмененныеФайлы.Добавить(ПутьФайлаМодуляТеста);
- ИзмененныеФайлы.Добавить(ПутьФайлаОписанияРасширенияТестов);
-
- Лог.Информация("Добавлен модуль тестов '%1'", ПутьФайлаМодуляТеста);
-
- Иначе
-
- // Добавление отсутствующих сценариев в тестовый модуль.
- НовыеМетоды = НовыйМетодыМодуляТестов(ПутьФайлаМодуляТеста, МетаИнформацияФайла, Методы);
- Если НовыеМетоды.Количество() = 0 Тогда
-
- Лог.Отладка(ЗаголовокЛога + ": все экспортные методы тестов уже есть в модуле '%1'", ПутьФайлаМодуляТеста);
- Возврат Ложь;
-
- КонецЕсли;
-
- ДанныеТеста = ТекстыТеста(НовыеМетоды, МетаИнформацияФайла);
- ТекстМодуля = ФайловыеОперации.ПрочитатьТекстФайла(ПутьФайлаМодуляТеста);
- ТекстМодуля = СтрЗаменить(
- ТекстМодуля,
- " Возврат ИсполняемыеСценарии;",
- СтрШаблон(
- "%1
- | Возврат ИсполняемыеСценарии;", СтрСоединить(ДанныеТеста.ИсполняемыеСценарии, Символы.ПС)));
-
- ТекстМодуля = СтрЗаменить(
- ТекстМодуля,
- "#Область Тесты
- |",
- СтрШаблон(
- "#Область Тесты
- |
- |%1
- |",
- СтрСоединить(ДанныеТеста.ТестовыеМетоды, Символы.ПС + Символы.ПС)));
-
- ФайловыеОперации.ЗаписатьТекстФайла(ПутьФайлаМодуляТеста, ТекстМодуля);
- ИзмененныеФайлы.Добавить(ПутьФайлаМодуляТеста);
- Лог.Информация("Обновлен модуль тестов '%1'", ПутьФайлаМодуляТеста);
-
- КонецЕсли;
-
- Для Каждого ИмяФайла Из ИзмененныеФайлы Цикл
- ДополнительныеПараметры.ИзмененныеКаталоги.Добавить(ИмяФайла);
- ДополнительныеПараметры.ФайлыДляПостОбработки.Добавить(ИмяФайла);
- КонецЦикла;
-
- Возврат Истина;
-
-КонецФункции
-
-Функция ШаблонОписанияТеста()
-
- Возврат
- "
- |
- | %2
- |
- | ru
- | %2
- |
- | %3
- | %4
- |";
-
-КонецФункции
-
-Функция ШаблонТестовогоМодуля()
-
- Возврат
- "/////////////////////////////////////////////////////////////////////////////////
- |// Экспортные процедуры-тесты
- |/////////////////////////////////////////////////////////////////////////////////
- |
- |#Область ТестыAPI
- |
- |// ИсполняемыеСценарии
- |// Сервисный метод для получения списка тестовых методов
- |// Параметры:
- |// ДополнительныеПараметры - Структура - Дополнительные параметры, используемые при формировании списка тестов
- |// Возвращаемое значение:
- |// Массив - Имена методов тестов
- |Функция ИсполняемыеСценарии(ДополнительныеПараметры = Неопределено) Экспорт
- |
- | ИсполняемыеСценарии = Новый Массив;
- |%1
- | Возврат ИсполняемыеСценарии;
- |
- |КонецФункции
- |
- |#КонецОбласти
- |
- |#Область Тесты
- |
- |%2
- |
- |#КонецОбласти
- |
- |/////////////////////////////////////////////////////////////////////////////////
- |// Процедуры и функции, составляющие внутреннюю реализацию модуля
- |/////////////////////////////////////////////////////////////////////////////////
- |
- |#Область СлужебныеПроцедурыИФункции
- |#КонецОбласти
- |";
-
-КонецФункции
-
-Функция ШаблонМетодаТеста()
-
- Возврат
- "// @unit-test:%1
- |Процедура %3(Фреймворк, ВыполнитьВТранзакцииСОтменой = Истина) Экспорт
- |
- |#Если Сервер Тогда
- | Если ВыполнитьВТранзакцииСОтменой Тогда
- |
- | TestsWrapper.ВыполнитьТестВТранзакции(
- | Метаданные.ОбщиеМодули.%2,
- | ""%3"",
- | Фреймворк);
- |
- | Возврат;
- |
- | КонецЕсли;
- |#КонецЕсли
- |
- | ВызватьИсключение ""Тест '%2.%3' не реализован"";
- |
- |КонецПроцедуры";
-
-КонецФункции
-
-Функция НовыйМетодыМодуляТестов(ПутьФайлаМодуляТеста, МетаИнформацияФайла, МетодыМодуляИсходников)
-
- МетодыМодуляТестов = МетодыМодуля(
- ПутьФайлаМодуляТеста,
- "^\/\/\s*?\@unit-test\:.*?\n(?:Процедура|Procedure)\s+?([а-яА-ЯёЁ0-9_\w]+?)\s*?\([^\)]*?\)\s*?(?:Экспорт|Export)");
- Если МетодыМодуляТестов.Количество() = 0 Тогда
- ВызватьИсключение СтрШаблон(ЗаголовокЛога + ": нет экспортных методов в модуле '%1'", ПутьФайлаМодуляТеста);
- КонецЕсли;
-
- НовыеМетоды = Новый Массив();
- Для каждого Метод Из МетодыМодуляИсходников Цикл
-
- ТестовыйМетод = ?(МетаИнформацияФайла.Глобальный, "Глобальный", "") + Метод;
- Если МетодыМодуляТестов.Найти(ТестовыйМетод) = Неопределено Тогда
-
- НовыеМетоды.Добавить(Метод);
-
- КонецЕсли;
-
- КонецЦикла;
-
- Возврат НовыеМетоды;
-
-КонецФункции
-
-Функция ТекстыТеста(Методы, МетаИнформацияФайла)
-
- ТекстыТеста = Новый Структура();
- ТекстыТеста.Вставить("ИсполняемыеСценарии", Новый Массив());
- ТекстыТеста.Вставить("ТестовыеМетоды", Новый Массив());
-
- Для каждого Метод Из Методы Цикл
-
- ИмяМетода = ?(МетаИнформацияФайла.Глобальный, "Глобальный", "") + Метод;
- ТекстыТеста.ИсполняемыеСценарии.Добавить(СтрШаблон(" ИсполняемыеСценарии.Добавить(""%1"");", ИмяМетода));
-
- ТекстыТеста.ТестовыеМетоды.Добавить(
- СтрШаблон(ШаблонМетодаТеста(),
- МетаИнформацияФайла.ТипМетаданных,
- МетаИнформацияФайла.ИмяТестовогоМодуля,
- ИмяМетода));
-
- КонецЦикла;
-
- Возврат ТекстыТеста;
-
-КонецФункции
diff --git a/src/СценарииОбработки/ЗапретИспользованияПерейти.os b/src/СценарииОбработки/ЗапретИспользованияПерейти.os
index a72829b..1acd170 100644
--- a/src/СценарииОбработки/ЗапретИспользованияПерейти.os
+++ b/src/СценарииОбработки/ЗапретИспользованияПерейти.os
@@ -56,7 +56,7 @@
ТекстМодуля = ФайловыеОперации.ПрочитатьТекстФайла(ПутьКФайлуМодуля);
ТекстОшибки = "";
- ШаблонПоиска = Новый РегулярноеВыражение("[\s;]+?Перейти\s+?~[a-zA-ZА-Яа-я0-9_]+");
+ ШаблонПоиска = Новый РегулярноеВыражение("[\s;]+?[^|]Перейти\s+?~[a-zA-ZА-Яа-я0-9_]+");
ШаблонПоиска.Многострочный = Истина;
ШаблонПоиска.ИгнорироватьРегистр = Истина;
@@ -65,7 +65,10 @@
Совпадения = ШаблонПоиска.НайтиСовпадения(ТекстМодуля);
Если Совпадения.Количество() Тогда
- ТекстОшибки = СтрШаблон("В файле '%1' обнаружено использование Перейти (%2)", ПутьКФайлуМодуля, Совпадения.Количество());
+ ТекстОшибки = СтрШаблон(
+ "В файле '%1' обнаружено использование Перейти (%2)",
+ ПутьКФайлуМодуля,
+ Совпадения.Количество());
Лог.Ошибка(ТекстОшибки);
ВызватьИсключение ТекстОшибки;
diff --git a/src/СценарииОбработки/ОтключениеПолнотекстовогоПоиска.os b/src/СценарииОбработки/ОтключениеПолнотекстовогоПоиска.os
index 251a4ca..98fbd86 100644
--- a/src/СценарииОбработки/ОтключениеПолнотекстовогоПоиска.os
+++ b/src/СценарииОбработки/ОтключениеПолнотекстовогоПоиска.os
@@ -30,13 +30,6 @@
НастройкиСценария = Новый Соответствие;
ПутьИРеквизиты = Новый Соответствие;
- МассивРеквизитов = Новый Массив;
- МассивРеквизитов.Добавить("Номер");
- МассивРеквизитов.Добавить("ТабличнаяЧасть1.Реквизит");
-
- ПутьИРеквизиты.Вставить("src\_example.xml", МассивРеквизитов);
- ПутьИРеквизиты.Вставить("src\_example2.xml", Новый Массив);
-
НастройкиСценария.Вставить("МетаданныеДляИсключения", ПутьИРеквизиты);
Возврат Новый Структура("ИмяСценария, Настройка", ИмяСценария(), НастройкиСценария);
@@ -67,10 +60,13 @@
Если АнализируемыйФайл.Существует() И ТипыФайлов.ЭтоФайлОписанияМетаданных(АнализируемыйФайл) Тогда
МетаданныеДляИсключения = НастройкиСценария.Получить("МетаданныеДляИсключения");
-
- ОтносительныйПуть = СтрЗаменить(АнализируемыйФайл.ПолноеИмя, ДополнительныеПараметры.КаталогРепозитория, "");
- МассивРеквизитов = МетаданныеДляИсключения.Получить(ОтносительныйПуть);
-
+ Если МетаданныеДляИсключения = Неопределено Тогда
+ МассивРеквизитов = Неопределено;
+ Иначе
+ ОтносительныйПуть = СтрЗаменить(АнализируемыйФайл.ПолноеИмя, ДополнительныеПараметры.КаталогРепозитория, "");
+ МассивРеквизитов = МетаданныеДляИсключения.Получить(ОтносительныйПуть);
+ КонецЕсли;
+
Если МассивРеквизитов = Неопределено ИЛИ ЗначениеЗаполнено(МассивРеквизитов) Тогда
//Неопределено - нет файла в исключении, массив не пустой - исключение только по реквизитам
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
diff --git a/src/СценарииОбработки/СортировкаСоставаПодсистем.os b/src/СценарииОбработки/СортировкаСоставаПодсистем.os
index 1f0055f..4a2f3d1 100644
--- a/src/СценарииОбработки/СортировкаСоставаПодсистем.os
+++ b/src/СценарииОбработки/СортировкаСоставаПодсистем.os
@@ -39,8 +39,8 @@
Если АнализируемыйФайл.Существует() Тогда
- Если ТипыФайлов.ЭтоФайлОписанияПодсистемы(АнализируемыйФайл) ИЛИ
- ТипыФайлов.ЭтоФайлОписанияПодсистемыEDT(АнализируемыйФайл) Тогда
+ Если ТипыФайлов.ЭтоФайлОписанияПодсистемы(АнализируемыйФайл)
+ ИЛИ ТипыФайлов.ЭтоФайлОписанияПодсистемыEDT(АнализируемыйФайл) Тогда
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
ЭтоЕДТ = ТипыФайлов.ЭтоФайлОписанияПодсистемыEDT(АнализируемыйФайл);
@@ -57,18 +57,14 @@
КонецЕсли;
- Возврат ЛОЖЬ;
+ Возврат Ложь;
КонецФункции // ОбработатьФайл()
Функция ОтсортироватьПодсистему(Знач ИмяФайла, ЭтоЕДТ)
СодержимоеФайла = ФайловыеОперации.ПрочитатьТекстФайла(ИмяФайла);
-
- ПоискДочерних = ?(ЭтоЕДТ, "(?:)([\w\W]+)(?:<\/content>)", "(\s+)(<[\w\W]+>)(\s+<\/Content>)");
- Регексп = Новый РегулярноеВыражение(ПоискДочерних);
- Регексп.ИгнорироватьРегистр = ИСТИНА;
- Регексп.Многострочный = ИСТИНА;
+ Регексп = РегекспСостав(ЭтоЕДТ);
ПодчиненныеМетаданные = Регексп.НайтиСовпадения(СодержимоеФайла);
Если ПодчиненныеМетаданные.Количество() = 0 Тогда
@@ -78,31 +74,33 @@
КонецЕсли;
ИсходнаяСтрока = ПодчиненныеМетаданные[0].Группы[0].Значение;
-
- //Тип.Объект или GUID
- ПоискМетаданных = ?(ЭтоЕДТ, "^\s*<[\w]+>(?:([a-zA-Z]+)\.([а-яa-zA-ZА-Я0-9_]+)|(([a-zA-z0-9\-]+)))<\/[\w]+>", "^\s+<[\w:\s=""]+>(?:([a-zA-Z0-9_]+).([а-яa-zA-ZА-Я0-9_]+)|(([a-zA-z0-9\-]+)))<\/[\w:]+>");
- РегекспМетаданные = Новый РегулярноеВыражение(ПоискМетаданных);
- РегекспМетаданные.ИгнорироватьРегистр = Истина;
- РегекспМетаданные.Многострочный = Истина;
- ОбъектыМетаданныхСтроки = РегекспМетаданные.НайтиСовпадения(ИсходнаяСтрока);
+ ОбъектыМетаданныхСтроки = РегекспМетаданные(ЭтоЕДТ).НайтиСовпадения(ИсходнаяСтрока);
- ОбъектыТипаПоПорядку = Новый СписокЗначений; // отдельный список с типами, нужен для того, чтобы сохранить порядок при обходе соответствия
+ // отдельный список с типами, нужен для того, чтобы сохранить порядок при обходе соответствия
+ ОбъектыТипаПоПорядку = Новый СписокЗначений;
ОбъектыМетаданных = Новый Соответствие;
ПоследнийТип = "";
ОбъектыТипа = Новый СписокЗначений;
Для Каждого ОбъектМетаданных Из ОбъектыМетаданныхСтроки Цикл
- Список = ОбъектыМетаданных.Получить(ОбъектМетаданных.Группы[1].Значение);
+ ТипМетаданных = ОбъектМетаданных.Группы[1].Значение;
+ СтрокаМетаданных = ОбъектМетаданных.Группы[0].Значение;
+ ИмяМетаданного = ОбъектМетаданных.Группы[2].Значение;
+ Если СтрНачинаетсяС(ИмяМетаданного, ".") Тогда
+ ИмяМетаданного = Сред(ИмяМетаданного, 2);
+ КонецЕсли;
+
+ Список = ОбъектыМетаданных.Получить(ТипМетаданных);
Если Список = Неопределено Тогда
Список = Новый СписокЗначений;
- ОбъектыМетаданных.Вставить(ОбъектМетаданных.Группы[1].Значение, Список);
- ОбъектыТипаПоПорядку.Добавить(ОбъектМетаданных.Группы[1].Значение);
- КонецЕсли;
-
+ ОбъектыМетаданных.Вставить(ТипМетаданных, Список);
+ ОбъектыТипаПоПорядку.Добавить(ТипМетаданных);
+ КонецЕсли;
+
Если Список.НайтиПоЗначению(ОбъектМетаданных.Группы[0].Значение) = Неопределено Тогда
- Список.Добавить(ОбъектМетаданных.Группы[0].Значение, ОбъектМетаданных.Группы[2].Значение);
+ Список.Добавить(ОбъектМетаданных.Группы[0].Значение, ИмяМетаданного);
КонецЕсли;
КонецЦикла;
@@ -120,7 +118,8 @@
КонецЦикла;
Если НЕ ЭтоЕДТ Тогда
- СтрокаЗамены = ПодчиненныеМетаданные[0].Группы[1].Значение + СокрЛП(СтрокаЗамены) + ПодчиненныеМетаданные[0].Группы[3].Значение;
+ СтрокаЗамены = ПодчиненныеМетаданные[0].Группы[1].Значение + СокрЛП(СтрокаЗамены)
+ + ПодчиненныеМетаданные[0].Группы[3].Значение;
КонецЕсли;
Если СтрСравнить(ИсходнаяСтрока, СтрокаЗамены) = 0 Тогда
@@ -139,4 +138,28 @@
Возврат Истина;
-КонецФункции
\ No newline at end of file
+КонецФункции
+
+Функция РегекспСостав(ЭтоЕДТ)
+
+ ПоискДочерних = ?(ЭтоЕДТ, "(?:)([\w\W]+)(?:<\/content>)", "(\s+)(<[\w\W]+>)(\s+<\/Content>)");
+ Регексп = Новый РегулярноеВыражение(ПоискДочерних);
+ Регексп.ИгнорироватьРегистр = Истина;
+ Регексп.Многострочный = Истина;
+
+ Возврат Регексп;
+
+КонецФункции
+
+Функция РегекспМетаданные(ЭтоЕДТ)
+
+ ШаблонНачало = ?(ЭтоЕДТ, "^\s*<[\w]+>", "^\s+<[\w:\s=""]+>");
+ ШаблонИмяМетаданных = "([a-zA-Z]+)((?:\.(?:[а-яa-zA-ZА-Я0-9_]+))+)";
+ ШаблонУИД = "(([a-zA-z0-9\-]+))";
+ ПоискМетаданных = СтрШаблон("%1(?:%2|%3)<\/[\w:]+>", ШаблонНачало, ШаблонУИД, ШаблонИмяМетаданных);
+ Регексп = Новый РегулярноеВыражение(ПоискМетаданных);
+ Регексп.ИгнорироватьРегистр = Истина;
+ Регексп.Многострочный = Истина;
+
+ Возврат Регексп;
+КонецФункции
diff --git a/tests/fixtures/Настройки/v8configОтключенныеСценарииПереопреденыГлобальные.json b/tests/fixtures/Настройки/v8configОтключенныеСценарииПереопреденыГлобальные.json
index dc80a2a..b53d8ad 100644
--- a/tests/fixtures/Настройки/v8configОтключенныеСценарииПереопреденыГлобальные.json
+++ b/tests/fixtures/Настройки/v8configОтключенныеСценарииПереопреденыГлобальные.json
@@ -22,15 +22,6 @@
"УдалениеЛишнихПустыхСтрок.os"
],
"НастройкиСценариев": {
- "ОтключениеПолнотекстовогоПоиска": {
- "МетаданныеДляИсключения": {
- "src\\_example.xml": [
- "Номер",
- "ТабличнаяЧасть1.Реквизит"
- ],
- "src\\_example2.xml": []
- }
- },
"РазборОтчетовОбработокРасширений": {
"ИспользоватьНастройкиПоУмолчанию": true,
"ВерсияПлатформы": ""
diff --git a/tests/fixtures/СортировкаОбъектовВПодсистемах/Интеграция.xml b/tests/fixtures/СортировкаОбъектовВПодсистемах/Интеграция.xml
index a7a0271..6129550 100644
--- a/tests/fixtures/СортировкаОбъектовВПодсистемах/Интеграция.xml
+++ b/tests/fixtures/СортировкаОбъектовВПодсистемах/Интеграция.xml
@@ -25,6 +25,7 @@
4308b2f2-9e92-486e-8c34-13c11fd5fb49
Enum.Енум7
Enum.Енум6
+ ExternalDataSource.ТекущаяСУБД.Table.ИнформацияОбОшибках
diff --git a/tests/fixtures/СортировкаОбъектовВПодсистемах/УведомленияПриИзмененииОбъектов.mdo b/tests/fixtures/СортировкаОбъектовВПодсистемах/УведомленияПриИзмененииОбъектов.mdo
index 90bd8a7..cea45be 100644
--- a/tests/fixtures/СортировкаОбъектовВПодсистемах/УведомленияПриИзмененииОбъектов.mdo
+++ b/tests/fixtures/СортировкаОбъектовВПодсистемах/УведомленияПриИзмененииОбъектов.mdo
@@ -14,5 +14,6 @@
CommonModule.УведомленияПереопределяемый
Catalog.ВидыУведомлений
CommonModule.УведомленияСерверПовтИсп
+ ExternalDataSource.ТекущаяСУБД.Table.ИнформацияОбОшибках
Subsystem.ПодсистемыБСП.Subsystem.ОбменСообщениями
diff --git a/tests/ПроверкаСценариевОбработки.os b/tests/ПроверкаСценариевОбработки.os
index f0f1047..645c2d7 100644
--- a/tests/ПроверкаСценариевОбработки.os
+++ b/tests/ПроверкаСценариевОбработки.os
@@ -3,6 +3,7 @@
#Использовать logos
#Использовать tempfiles
#Использовать fs
+#Использовать ".."
Перем юТест;
Перем Лог;
@@ -22,7 +23,6 @@
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейПроцедурОбработаетФайл");
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейПроцедурНеОбработаетНесуществующийФайл");
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейПроцедурНеОбработаетНеИсходник");
- ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийОтключенияПолнотекстовогоПоискаИмеетМетодПолученияНастроек");
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийРазбораОтчетовОбработокРасширенийИмеетМетодПолученияНастроек");
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийОтключенияПолнотекстовогоПоискаВозвращаетНастройки");
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийРазбораОтчетовОбработокРасширенийВозвращаетНастройки");
@@ -32,8 +32,6 @@
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСинхронизацияОбъектовМетаданныхВызываетИсключение");
ВсеТесты.Добавить("ТестДолжен_ПроверитьЗагрузкуСценариевПоИмени");
- ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийДобавлениеТестовВРасширениеОбрабатываетНегативныеКейсы");
- ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийДобавлениеТестовВРасширениеДобавляетИДополняетМодулиТестов");
ВсеТесты.Добавить("ТестДолжен_ПроверитьИзменениеТегаКастомизацииФормы");
Возврат ВсеТесты;
@@ -102,7 +100,7 @@
Ожидаем.Что(Результат, Истина).ЭтоИстина();
ТекстПосле = ФайловыеОперации.ПрочитатьТекстФайла(Файл.ПолноеИмя);
Ожидаем.Что(ТекстДо, Истина).Не_().Равно(ТекстПосле);
-
+ Ожидаем.Что(СтрЧислоСтрок(ТекстДо), Истина).Равно(СтрЧислоСтрок(ТекстПосле));
ИмяФайла = "СортировкаОбъектовВПодсистемах/УведомленияПриИзмененииОбъектов.mdo";
Файл = ПодготовитьИзменяемыйТестовыйФайл(ИмяФайла, "УведомленияПриИзмененииОбъектов.mdo", "Subsystems");
@@ -111,6 +109,7 @@
Ожидаем.Что(Результат, Истина).ЭтоИстина();
ТекстПосле = ФайловыеОперации.ПрочитатьТекстФайла(Файл.ПолноеИмя);
Ожидаем.Что(ТекстДо, Истина).Не_().Равно(ТекстПосле);
+ Ожидаем.Что(СтрЧислоСтрок(ТекстДо), Истина).Равно(СтрЧислоСтрок(ТекстПосле));
ИмяФайла = "СортировкаОбъектовВПодсистемах/ОбменСообщениями.mdo";
Файл = ПодготовитьИзменяемыйТестовыйФайл(ИмяФайла, "ОбменСообщениями.mdo", "Subsystems");
@@ -120,7 +119,7 @@
Ожидаем.Что(Результат, Истина).ЭтоИстина();
ТекстПосле = ФайловыеОперации.ПрочитатьТекстФайла(Файл.ПолноеИмя);
Ожидаем.Что(ТекстДо, Истина).Равно(ТекстПосле);
-
+ Ожидаем.Что(СтрЧислоСтрок(ТекстДо), Истина).Равно(СтрЧислоСтрок(ТекстПосле));
КонецПроцедуры
@@ -403,222 +402,6 @@
#КонецОбласти
-#Область ДобавлениеТестовВРасширение
-
-Процедура ТестДолжен_ПроверитьЧтоСценарийДобавлениеТестовВРасширениеОбрабатываетНегативныеКейсы() Экспорт
-
- ОбъектСценария = ПолучитьСценарий("ДобавлениеТестовВРасширение.os");
-
- // Проверка параметров сценария.
- ДополнительныеПараметры = Новый Структура("Лог, КаталогРепозитория, ТекущийКаталогИсходныхФайлов", Лог);
- ПараметрыМетода = Новый Массив();
- ПараметрыМетода.Добавить(Новый Файл(ПолучитьИмяВременногоФайла()));
- ПараметрыМетода.Добавить("");
- ПараметрыМетода.Добавить(ДополнительныеПараметры);
- Ожидаем.Что(ОбъектСценария).Метод("ОбработатьФайл", ПараметрыМетода).ВыбрасываетИсключение("не заполнен параметр 'КаталогИсходныхФайлов'");
- ПараметрыМетода[1] = ПараметрыМетода[0].Путь;
- Ожидаем.Что(ОбъектСценария).Метод("ОбработатьФайл", ПараметрыМетода).ВыбрасываетИсключение("не заполнен параметр 'ДополнительныеПараметры.КаталогРепозитория'");
- ////////////////////////////////////////////////////////////////////////////////
-
- // Проверка репозитория.
- КаталогРепозитория = МенеджерВременныхФайлов.СоздатьКаталог();
- КаталогКонфигурации = ОбъединитьПути(КаталогРепозитория, "configuration");
- КаталогИсходников = ОбъединитьПути(КаталогКонфигурации, "src");
- СоздатьКаталог(КаталогКонфигурации);
- ФС.КопироватьСодержимоеКаталога(ОбъединитьПути(КаталогТестовыхФикстур(), "cf-edt", "configuration"), КаталогКонфигурации);
- ПодходящийФайл = Новый Файл(ОбъединитьПути(КаталогИсходников, "CommonModules", "ОбщийМодульКлиентЧастичноПокрытый", "Module.bsl"));
- Ожидаем.Что(ПодходящийФайл.Существует(), СтрШаблон("Отсутствует файл-пример '%1'", ПодходящийФайл.ПолноеИмя)).ЭтоИстина();
- ДополнительныеПараметры = ПолучитьДополнительныеНастройки(КаталогРепозитория, КаталогКонфигурации);
- ////////////////////////////////////////////////////////////////////////////////
- НастройкиНеEDT = Новый Массив();
- НастройкиНеEDT.Добавить("v8configФорматКонфигуратора.json");
- НастройкиНеEDT.Добавить("v8configФорматНеправильный.json");
- НастройкиНеEDT.Добавить("v8configФорматПоУмолчанию.json");
- Для каждого НастройкаНеEDT Из НастройкиНеEDT Цикл
-
- ИспользоватьТестовуюНастройку(КаталогРепозитория, НастройкаНеEDT);
- Результат = ОбъектСценария.ОбработатьФайл(
- ПодходящийФайл,
- ДополнительныеПараметры.ТекущийКаталогИсходныхФайлов,
- ДополнительныеПараметры);
- Сообщение = СтрШаблон("Обработался файл, вопреки настройке '%1'", НастройкаНеEDT);
- Ожидаем.Что(Результат, Сообщение).ЭтоЛожь();
-
- КонецЦикла;
- ////////////////////////////////////////////////////////////////////////////////
- ИспользоватьТестовуюНастройку(КаталогРепозитория, "v8configФорматEDT.json");
- Результат = ОбъектСценария.ОбработатьФайл(
- ПодходящийФайл,
- ДополнительныеПараметры.ТекущийКаталогИсходныхФайлов,
- ДополнительныеПараметры);
- Сообщение = "Обработался файл при отсутствии тестового расширения";
- Ожидаем.Что(Результат, Сообщение).ЭтоЛожь();
- ////////////////////////////////////////////////////////////////////////////////
-
- // Проверка файла.
- КаталогТестов = ОбъединитьПути(КаталогРепозитория, "tests");
- КаталогИсходниковТестов = ОбъединитьПути(КаталогТестов, "src");
- ФС.КопироватьСодержимоеКаталога(ОбъединитьПути(КаталогТестовыхФикстур(), "cf-edt", "tests"), КаталогТестов);
- НеподходящиеФайлы = Новый Массив();
- НеподходящиеФайлы.Добавить(Новый Файл(ОбъединитьПути(КаталогИсходников, "CommonModules", "ОбщийМодульКлиентЧастичноПокрытый", "ОбщийМодульКлиентЧастичноПокрытый.mdo")));
- НеподходящиеФайлы.Добавить(Новый Файл(ОбъединитьПути(КаталогИсходниковТестов, "CommonModules", "ОМ_ОбщийМодульКлиентЧастичноПокрытый", "Module.bsl")));
- НеподходящиеФайлы.Добавить(Новый Файл(ПолучитьИмяВременногоФайла("bsl")));
- Ожидаем.Что(НеподходящиеФайлы[0].Существует(), СтрШаблон("Отсутствует файл-пример '%1'", НеподходящиеФайлы[0].ПолноеИмя)).ЭтоИстина();
- Ожидаем.Что(НеподходящиеФайлы[1].Существует(), СтрШаблон("Отсутствует файл-пример '%1'", НеподходящиеФайлы[1].ПолноеИмя)).ЭтоИстина();
- Для каждого НеподходящийФайл Из НеподходящиеФайлы Цикл
-
- Результат = ОбъектСценария.ОбработатьФайл(
- НеподходящийФайл,
- ДополнительныеПараметры.ТекущийКаталогИсходныхФайлов,
- ДополнительныеПараметры);
- Сообщение = СтрШаблон("Обработался неподходящий файл '%1'", НастройкаНеEDT);
- Ожидаем.Что(Результат, Сообщение).ЭтоЛожь();
-
- КонецЦикла;
- ////////////////////////////////////////////////////////////////////////////////
- ФайлБезЭкспортныхМетодов = Новый Файл(ОбъединитьПути(КаталогИсходников, "CommonModules", "ОбщийМодульБезЭкспортных", "Module.bsl"));
- Ожидаем.Что(ФайлБезЭкспортныхМетодов.Существует(), СтрШаблон("Отсутствует файл-пример '%1'", ФайлБезЭкспортныхМетодов.ПолноеИмя)).ЭтоИстина();
- ТекстовыйДокумент = Новый ТекстовыйДокумент();
- ТекстовыйДокумент.Записать(ФайлБезЭкспортныхМетодов.ПолноеИмя, КодировкаТекста.UTF8);
- Результат = ОбъектСценария.ОбработатьФайл(
- ФайлБезЭкспортныхМетодов,
- ДополнительныеПараметры.ТекущийКаталогИсходныхФайлов,
- ДополнительныеПараметры);
- Сообщение = СтрШаблон("Обработался модуль без экспортных методов '%1'", ФайлБезЭкспортныхМетодов.ПолноеИмя);
- Ожидаем.Что(Результат, Сообщение).ЭтоЛожь();
- ////////////////////////////////////////////////////////////////////////////////
- Ожидаем.Что(ПодходящийФайл.Существует(), СтрШаблон("Отсутствует файл-пример '%1'", ПодходящийФайл.ПолноеИмя)).ЭтоИстина();
- КаталогНеизвестногоОбъектаМетаданных = ОбъединитьПути(КаталогИсходников, "НеизвестныйТипМетаданных", "ИмяОбъекта");
- СоздатьКаталог(КаталогНеизвестногоОбъектаМетаданных);
- ПутьФайлаНеизвестногоОбъектаМетаданных = ОбъединитьПути(КаталогНеизвестногоОбъектаМетаданных, "Module.bsl");
- КопироватьФайл(ПодходящийФайл.ПолноеИмя, ПутьФайлаНеизвестногоОбъектаМетаданных);
- ФайлНеизвестногоОбъектаМетаданных = Новый Файл(ПутьФайлаНеизвестногоОбъектаМетаданных);
- Результат = ОбъектСценария.ОбработатьФайл(
- ФайлНеизвестногоОбъектаМетаданных,
- ДополнительныеПараметры.ТекущийКаталогИсходныхФайлов,
- ДополнительныеПараметры);
- Сообщение = СтрШаблон("Обработался файл неизвестного объекта метаданных '%1'", ФайлНеизвестногоОбъектаМетаданных.ПолноеИмя);
- Ожидаем.Что(Результат, Сообщение).ЭтоЛожь();
- ////////////////////////////////////////////////////////////////////////////////
- ФайлНеподходящегоТипаМетаданных = Новый Файл(ОбъединитьПути(КаталогИсходников, "CommonForms", "ОбщаяФорма1", "Module.bsl"));
- Ожидаем.Что(ФайлНеподходящегоТипаМетаданных.Существует(), СтрШаблон("Отсутствует файл-пример '%1'", ФайлНеподходящегоТипаМетаданных.ПолноеИмя)).ЭтоИстина();
- Результат = ОбъектСценария.ОбработатьФайл(
- ФайлНеподходящегоТипаМетаданных,
- ДополнительныеПараметры.ТекущийКаталогИсходныхФайлов,
- ДополнительныеПараметры);
- Сообщение = СтрШаблон("Обработался файл неподходящего объекта метаданных '%1'", ФайлНеизвестногоОбъектаМетаданных.ПолноеИмя);
- Ожидаем.Что(Результат, Сообщение).ЭтоЛожь();
- ////////////////////////////////////////////////////////////////////////////////
-
- // Контроль корректности проведенных проверок.
- Результат = ОбъектСценария.ОбработатьФайл(
- ПодходящийФайл,
- ДополнительныеПараметры.ТекущийКаталогИсходныхФайлов,
- ДополнительныеПараметры);
- Сообщение = СтрШаблон("Не обработался подходящий файл '%1'", ПодходящийФайл.ПолноеИмя);
- Ожидаем.Что(Результат, Сообщение).ЭтоИстина();
- ////////////////////////////////////////////////////////////////////////////////
-
-КонецПроцедуры
-
-Процедура ТестДолжен_ПроверитьЧтоСценарийДобавлениеТестовВРасширениеДобавляетИДополняетМодулиТестов() Экспорт
-
- // Подготовка "репозитория".
- КаталогРепозитория = МенеджерВременныхФайлов.СоздатьКаталог();
- ИспользоватьТестовуюНастройку(КаталогРепозитория, "v8configФорматEDT.json");
- ФС.КопироватьСодержимоеКаталога(ОбъединитьПути(КаталогТестовыхФикстур(), "cf-edt"), КаталогРепозитория);
- КаталогКонфигурации = ОбъединитьПути(КаталогРепозитория, "configuration");
- КаталогИсходников = ОбъединитьПути(КаталогКонфигурации, "src");
- КаталогТестов = ОбъединитьПути(КаталогРепозитория, "tests");
-
- // Прогон сценария по всем файлам исходников.
- ОбъектСценария = ПолучитьСценарий("ДобавлениеТестовВРасширение.os");
- ДополнительныеПараметры = ПолучитьДополнительныеНастройки(КаталогРепозитория, КаталогКонфигурации);
- ФайлыПроекта = НайтиФайлы(ОбъединитьПути(КаталогКонфигурации, "src"), ПолучитьМаскуВсеФайлы(), Истина);
- Для каждого ФайлПроекта Из ФайлыПроекта Цикл
-
- Если ФайлПроекта.ЭтоКаталог() Тогда
- Продолжить;
- КонецЕсли;
-
- Результат = ОбъектСценария.ОбработатьФайл(ФайлПроекта, ДополнительныеПараметры.ТекущийКаталогИсходныхФайлов, ДополнительныеПараметры);
-
- КонецЦикла;
-
- // Проверка модулей тестов.
- ФайлОписанияКонфигурацииТестов = Новый Файл(ОбъединитьПути(КаталогТестов, "src", "Configuration", "Configuration.mdo"));
- ОписаниеКонфигурацииТестов = ФайловыеОперации.ПрочитатьТекстФайла(ФайлОписанияКонфигурацииТестов.ПолноеИмя);
- КаталогОбщихМодулейТестов = ОбъединитьПути(КаталогТестов, "src", "CommonModules");
- Для каждого Кейс Из КейсыПроверкиДобавленияМодулейТестов() Цикл
-
- // Наличие модуля в исходниках.
- ФайлИсходников = Новый Файл(ОбъединитьПути(КаталогИсходников, Кейс.КаталогТипаМетаданных, Кейс.ИмяМетаданных, Кейс.ИмяМодуляМетаданных));
- Сообщение = СтрШаблон("Не найден файл исходников '%1'", ФайлИсходников.ПолноеИмя);
- Ожидаем.Что(ФайлИсходников.Существует(), Сообщение).ЭтоИстина();
-
- // Описание конфигурации.
- СтрокаПоиска = СтрШаблон("CommonModule.%1", Кейс.ИмяТестовогоМодуля);
- ЧислоВхождений = СтрЧислоВхождений(ОписаниеКонфигурацииТестов, СтрокаПоиска);
- Сообщение = СтрШаблон(
- "Неправильное количество упоминаний модуля '%1' в описании конфигурации:
- |%2",
- Кейс.ИмяТестовогоМодуля, ОписаниеКонфигурацииТестов);
- Ожидаем.Что(ЧислоВхождений, Сообщение).Равно(1);
-
- // Описание модуля тестов.
- ФайлОписанияТеста = Новый Файл(ОбъединитьПути(КаталогОбщихМодулейТестов, Кейс.ИмяТестовогоМодуля, Кейс.ИмяТестовогоМодуля + ".mdo"));
- Сообщение = СтрШаблон("Не создано описание модуля тестов '%1'", ФайлОписанияТеста.ПолноеИмя);
- Ожидаем.Что(ФайлОписанияТеста.Существует(), Сообщение).ЭтоИстина();
- ОписаниеТеста = ФайловыеОперации.ПрочитатьТекстФайла(ФайлОписанияТеста.ПолноеИмя);
- // Клиент.
- СтрокаПоиска = СтрШаблон("%1", XMLСтрока(Кейс.Клиент));
- ЧислоВхождений = СтрЧислоВхождений(ОписаниеТеста, СтрокаПоиска);
- ЧислоВхожденийПравильное = ?(Кейс.Клиент, ЧислоВхождений = 1, ЧислоВхождений <= 1);
- Сообщение = СтрШаблон(
- "Неправильное количество упоминаний контекста 'Клиент = %1' в описании модуля тестов '%2':
- |%3",
- Кейс.Клиент, ФайлОписанияТеста.ПолноеИмя, ОписаниеТеста);
- Ожидаем.Что(ЧислоВхожденийПравильное, Сообщение).ЭтоИстина();
- // Сервер.
- СтрокаПоиска = СтрШаблон("%1", XMLСтрока(Кейс.Сервер));
- ЧислоВхождений = СтрЧислоВхождений(ОписаниеТеста, СтрокаПоиска);
- ЧислоВхожденийПравильное = ?(Кейс.Сервер, ЧислоВхождений = 1, ЧислоВхождений <= 1);
- Сообщение = СтрШаблон(
- "Неправильное количество упоминаний контекста 'Сервер = %1' в описании модуля тестов '%2':
- |%3",
- Кейс.Сервер, ФайлОписанияТеста.ПолноеИмя, ОписаниеТеста);
- Ожидаем.Что(ЧислоВхожденийПравильное, Сообщение).ЭтоИстина();
-
- // Модуль тестов.
- ФайлТеста = Новый Файл(ОбъединитьПути(КаталогОбщихМодулейТестов, Кейс.ИмяТестовогоМодуля, "Module.bsl"));
- Сообщение = СтрШаблон("Не создан модуль тестов '%1'", ФайлТеста.ПолноеИмя);
- Ожидаем.Что(ФайлТеста.Существует(), Сообщение).ЭтоИстина();
- ТекстТеста = ФайловыеОперации.ПрочитатьТекстФайла(ФайлТеста.ПолноеИмя);
- // Наличие исполняемого сценария.
- ИмяМетодаМодуля = ?(Кейс.Глобальный, "Глобальный", "") + Кейс.ИмяМетодаМодуля;
- СтрокаПоиска = СтрШаблон("ИсполняемыеСценарии.Добавить(""%1"");", ИмяМетодаМодуля);
- ЧислоВхождений = СтрЧислоВхождений(ТекстТеста, СтрокаПоиска);
- Сообщение = СтрШаблон(
- "Неправильное количество упоминаний исполняемого сценария '%1' в модуле тестов '%2':
- |%3",
- ИмяМетодаМодуля, ФайлТеста.ПолноеИмя, ТекстТеста);
- Ожидаем.Что(ЧислоВхождений, Сообщение).Равно(1);
- // Наличие метода.
- СтрокаПоиска = СтрШаблон("Процедура %1(", ИмяМетодаМодуля);
- ЧислоВхождений = СтрЧислоВхождений(ТекстТеста, СтрокаПоиска);
- Сообщение = СтрШаблон(
- "Неправильное количество упоминаний метода '%1' в модуле тестов '%2':
- |%3",
- ИмяМетодаМодуля, ФайлТеста.ПолноеИмя, ТекстТеста);
- Ожидаем.Что(ЧислоВхождений, Сообщение).Равно(1);
-
- КонецЦикла;
-
-КонецПроцедуры
-
-#КонецОбласти
-
-
#Область ОтключениеРазрешенияИзменятьФорму
Процедура ТестДолжен_ПроверитьИзменениеТегаКастомизацииФормы() Экспорт
diff --git a/tests/ТестНастройкиРепозитория.os b/tests/ТестНастройкиРепозитория.os
index a294907..9c359fe 100644
--- a/tests/ТестНастройкиРепозитория.os
+++ b/tests/ТестНастройкиРепозитория.os
@@ -87,7 +87,6 @@
ОжидаемыеСценарии = Новый Массив();
ОжидаемыеСценарии.Добавить("ДобавлениеПробеловПередКлючевымиСловами.os");
- ОжидаемыеСценарии.Добавить("ДобавлениеТестовВРасширение.os");
ОжидаемыеСценарии.Добавить("ЗапретИспользованияПерейти.os");
ОжидаемыеСценарии.Добавить("ИсправлениеНеКаноническогоНаписания.os");
ОжидаемыеСценарии.Добавить("КорректировкаXMLФорм.os");
diff --git a/v8config.json b/v8config.json
index 3d79d63..db478c7 100644
--- a/v8config.json
+++ b/v8config.json
@@ -4,7 +4,6 @@
"КаталогЛокальныхСценариев": "",
"ГлобальныеСценарии": [
"ДобавлениеПробеловПередКлючевымиСловами.os",
- "ДобавлениеТестовВРасширение.os",
"ЗапретИспользованияПерейти.os",
"ИсправлениеНеКаноническогоНаписания.os",
"КорректировкаXMLФорм.os",
@@ -27,13 +26,7 @@
"ОтключенныеСценарии": [],
"НастройкиСценариев": {
"ОтключениеПолнотекстовогоПоиска": {
- "МетаданныеДляИсключения": {
- "src\\_example.xml": [
- "Номер",
- "ТабличнаяЧасть1.Реквизит"
- ],
- "src\\_example2.xml": []
- }
+ "МетаданныеДляИсключения": {}
},
"ПроверкаНецензурныхСлов": {
"ФайлСНецензурнымиСловами": "НецензурныеСлова.txt"