Skip to content

Commit

Permalink
Добавлено сканирование всех известных типов на предмет регистрации в …
Browse files Browse the repository at this point in the history
…ОСени в конструкторе поделки, все прочие способы регистрации желудей объявлены устаревшими
  • Loading branch information
sfaqer committed Oct 20, 2023
1 parent a718f95 commit 1bec11e
Show file tree
Hide file tree
Showing 57 changed files with 684 additions and 741 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/perfomance.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
fail-fast: false
matrix:
os: ['ubuntu-latest']
oscript_version: ['1.8.3', 'stable']
oscript_version: ['1.8.5', 'stable', 'dev']

steps:
# Загрузка проекта
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/testing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
strategy:
fail-fast: false
matrix:
oscript_version: ['1.8.3', 'stable', 'dev']
oscript_version: ['1.8.5', 'stable', 'dev']
uses: autumn-library/workflows/.github/workflows/test.yml@main
with:
oscript_version: ${{ matrix.oscript_version }}
4 changes: 2 additions & 2 deletions packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@


Описание.Имя("autumn")
.Версия("3.3.0")
.Версия("4.0.0")
.Автор("Nikita Fedkin")
.АдресАвтора("[email protected]")
.Описание("Dependency injection framework для OneScript")
.ВерсияСреды("1.8.3")
.ВерсияСреды("1.8.5")
.ВключитьФайл("src")
.ВключитьФайл("tests")
.ВключитьФайл("LICENSE.md")
Expand Down
6 changes: 3 additions & 3 deletions src/internal/Классы/ФабрикаЖелудей.os
Original file line number Diff line number Diff line change
Expand Up @@ -567,17 +567,17 @@
ИначеЕсли ОпределениеЖелудя.Верховный() И НЕ СохраненноеОпределениеЖелудя.Верховный() Тогда
// no-op: Допустимая ситуация переопределения.
// todo: Логирование
ОпределенияЖелудейПоИмени.Вставить(ОпределениеЖелудя.Имя(), ОпределениеЖелудя);
ИначеЕсли НЕ ОпределениеЖелудя.Верховный() И СохраненноеОпределениеЖелудя.Верховный() Тогда
// no-op: Допустимая ситуация непереопределения.
// todo: Логирование
Возврат;
Иначе
ВызватьИсключение "Определение желудя с именем """ + ОпределениеЖелудя.Имя() + """ уже существует";
КонецЕсли;
Иначе
ОпределенияЖелудейПоИмени.Вставить(ОпределениеЖелудя.Имя(), ОпределениеЖелудя);
КонецЕсли;

ОпределенияЖелудейПоИмени.Вставить(ОпределениеЖелудя.Имя(), ОпределениеЖелудя);

Прозвища = ОпределениеЖелудя.Прозвища();
Для Каждого Прозвище Из Прозвища Цикл

Expand Down
252 changes: 135 additions & 117 deletions src/Классы/Поделка.os

Large diffs are not rendered by default.

5 changes: 0 additions & 5 deletions src/Модули/Осень.os
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,11 @@
// ИмяТипаЗаготовки - Строка - Имя типа для заготовки.
//
Процедура ДобавитьЗаготовкуДляАвтоИнициализации(ИмяТипаЗаготовки) Экспорт
Если Заготовки.Найти(ИмяТипаЗаготовки) <> Неопределено Тогда
Возврат;
КонецЕсли;
Заготовки.Добавить(ИмяТипаЗаготовки);
КонецПроцедуры

// Служебный.
//
Процедура ОчиститьЗаготовкиДляАвтоИнициализации() Экспорт
Заготовки.Очистить();
КонецПроцедуры

#КонецОбласти
Expand Down
20 changes: 20 additions & 0 deletions tasks/test.os
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#Использовать 1testrunner
#Использовать fs
#Использовать 1commands

Функция ПрогнатьТесты()

Expand All @@ -16,9 +17,28 @@
Новый Файл(ПутьКОтчетуJUnit)
);

ИзолированныеТесты = НайтиФайлы(ОбъединитьПути("tests", "ИзолированныеТесты"), "*.os");

Для Каждого Тест Из ИзолированныеТесты Цикл

Команда = Новый Команда;

Команда.ПоказыватьВыводНемедленно(Истина);

Команда.УстановитьКоманду("oscript");
Команда.ДобавитьПараметр(ОбъединитьПути("tasks", "testIsolated.os"));
Команда.ДобавитьПараметр(Тест.ПолноеИмя);

КодВозврата = Команда.Исполнить();

РезультатТестирования = Макс(РезультатТестирования, КодВозврата);

КонецЦикла;

Успешно = РезультатТестирования = 0;

Возврат Успешно;

КонецФункции // ПрогнатьТесты()

// основной код
Expand Down
13 changes: 13 additions & 0 deletions tasks/testIsolated.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#Использовать 1testrunner

Тестер = Новый Тестер;
Тестер.УстановитьФорматЛогФайла(Тестер.ФорматыЛогФайла().GenericExec);

ПутьКОтчетуJUnit = "out";

РезультатТестирования = Тестер.ТестироватьФайл(
Новый Файл(АргументыКоманднойСтроки[0]),
Новый Файл(ПутьКОтчетуJUnit)
);

ЗавершитьРаботу(РезультатТестирования);
43 changes: 7 additions & 36 deletions tests/ВнешнееПриложение.os
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
#Использовать ".."
#Использовать asserts
#Использовать "."
#Использовать "./ТестКлассы"
#Использовать "./Заготовки"
#Использовать "./ОшибочныеКлассы"

Процедура ПослеЗапускаТеста() Экспорт
Осень.ОчиститьЗаготовкиДляАвтоИнициализации();
Expand All @@ -13,17 +12,14 @@

// Дано
Поделка = Новый Поделка;
Поделка.ДобавитьДуб(Тип("ГлавныйДуб"));

// Когда
Поделка
.ДобавитьРогатку(Тип("РогаткаМеняющаяМассив"))
.ЗапуститьПриложение();
Поделка.ЗапуститьПриложение();

// Тогда
Массив = Поделка.НайтиЖелудь("Массив");
Ожидаем.Что(Массив).ИмеетДлину(2);
Ожидаем.Что(Массив).ИмеетДлину(5);

КонецПроцедуры

&Тест
Expand Down Expand Up @@ -55,7 +51,7 @@
Заготовки = Осень.ПолучитьЗаготовкиДляАвтоИнициализации();

// Тогда
Ожидаем.Что(Заготовки, "Заготовки задублированы").ИмеетДлину(1);
Ожидаем.Что(Заготовки, "Заготовки задублированы").ИмеетДлину(0); // Не используется

КонецПроцедуры

Expand All @@ -66,9 +62,7 @@
Поделка = Новый Поделка;

// Когда
Поделка
.ДобавитьЗаготовку(Тип("ТестовыйИнициализатор"))
.ЗапуститьПриложение();
Поделка.ЗапуститьПриложение();

// Тогда
Желудь = Поделка.НайтиЖелудь("ЖелудьНижнегоУровня");
Expand All @@ -83,42 +77,19 @@
Поделка = Новый Поделка;

// Когда
Поделка
.ДобавитьЗаготовку(Тип("ЗаготовкаСДеталькой"))
.ЗапуститьПриложение();
Поделка.ЗапуститьПриложение();

// Тогда
Желудь = Поделка.НайтиЖелудь("ЗаготовкаСДеталькой");
Ожидаем.Что(Желудь.ПростаяНастройка()).Равно("Значение простой настройки");

КонецПроцедуры

&Тест
Процедура ВЗаготовкуНельзяПрилепитьПластилин() Экспорт

// Дано
Поделка = Новый Поделка;

// Когда-Тогда
ПараметрыМетода = Новый Массив();
ПараметрыМетода.Добавить(Тип("ЗаготовкаСПластилином"));
Ожидаем
.Что(Поделка)
.Метод("ДобавитьЗаготовку", ПараметрыМетода)
.ВыбрасываетИсключение("К желудю времени инициализации ЗаготовкаСПластилином можно прилеплять только детальки.");

КонецПроцедуры

&Тест
Процедура ВсеРогаткиЗапускаютсяКорректно() Экспорт

// Дано
Поделка = Новый Поделка;
Поделка
.ДобавитьДуб(Тип("ГлавныйДуб"))
.ДобавитьРогатку(Тип("ДолгаяРогатка"))
.ДобавитьРогатку(Тип("РогаткаМеняющаяМассив"))
.ДобавитьРогатку(Тип("ПадающаяРогатка"));

// Когда
Поделка.ЗапуститьПриложение();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#Использовать asserts
#Использовать "../../src"
#Использовать "../ОшибочныеКлассы/ЗаготовкаСПластилином"

&Тест
Процедура ВЗаготовкуНельзяПрилепитьПластилин() Экспорт

БылаОшибка = Ложь;

Попытка
Поделка = Новый Поделка();
Исключение
БылаОшибка = Истина;
Ожидаем.Что(ИнформацияОбОшибке().Описание)
.Содержит("К желудю времени инициализации ЗаготовкаСПластилином можно прилеплять только детальки");
КонецПопытки;

Ожидаем.Что(БылаОшибка).ЭтоИстина();

КонецПроцедуры
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#Использовать asserts
#Использовать "../../src"
#Использовать "../ОшибочныеКлассы/ДваЖелудяСОднимИменем"

&Тест
Процедура ДваЖелудяСОднимИменемКонфликтуют() Экспорт

БылаОшибка = Ложь;

Попытка
Поделка = Новый Поделка();
Исключение
БылаОшибка = Истина;
Ожидаем.Что(ИнформацияОбОшибке().Описание)
.Содержит("Определение желудя с именем ""ТестовыйЖелудь"" уже существует");
КонецПопытки;

Ожидаем.Что(БылаОшибка).ЭтоИстина();

КонецПроцедуры
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#Использовать asserts
#Использовать "../../src"
#Использовать "../ОшибочныеКлассы/ДваВерховныхЖелудя"

&Тест
Процедура ДвухВерховныхЖелудейБытьНеМожет() Экспорт

БылаОшибка = Ложь;

Попытка
Поделка = Новый Поделка();
Исключение
БылаОшибка = Истина;
Ожидаем.Что(ИнформацияОбОшибке().Описание)
.Содержит("Определение верховного желудя с именем ""ТестовыйЖелудь"" уже существует");
КонецПопытки;

Ожидаем.Что(БылаОшибка).ЭтоИстина();

КонецПроцедуры
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#Использовать asserts
#Использовать "../../src"
#Использовать "../ТестКлассы"
#Использовать "../ОшибочныеКлассы/ПадающаяРогатка"

&Тест
Процедура ПадениеРогаткиДолжноБытьЗалоггировано() Экспорт

// Дано
МокАппендера = Новый МокАппендера();
Лог = Логирование.ПолучитьЛог("oscript.lib.autumn.ЗапускательПриложения");
Лог.ДобавитьСпособВывода(МокАппендера, УровниЛога.Ошибка);

Поделка = Новый Поделка;

// Когда
Поделка.ЗапуститьПриложение();
Сообщения = МокАппендера.Сообщения;

// Тогда
Ожидаем.Что(Сообщения.Количество(), "Количество сообщений").Равно(1);
Ожидаем.Что(Сообщения[0], "Сообщение об ошибке").Содержит("ОШИБКА - Ошибка запуска рогатки ПадающаяРогатка");

КонецПроцедуры
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#Использовать asserts
#Использовать "../../src"
#Использовать "../ОшибочныеКлассы/АннотацияСПовторяемымиПараметрами"

&Тест
Процедура ПовторениеНеповторяемыхПараметровКидаетИсключение() Экспорт

БылаОшибка = Ложь;

Попытка
Поделка = Новый Поделка();
Исключение
БылаОшибка = Истина;
Ожидаем.Что(ИнформацияОбОшибке().Описание).Содержит("но параметр не помечен аннотацией ""Повторяемый""");
КонецПопытки;

Ожидаем.Что(БылаОшибка).ЭтоИстина();

КонецПроцедуры
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#Использовать asserts
#Использовать "../../src"
#Использовать "../ОшибочныеКлассы/ЖелудьСНекорректнымХарактером"

&Тест
Процедура ПроверкаНекорректногоХарактера() Экспорт

БылаОшибка = Ложь;

Попытка
Поделка = Новый Поделка();
Исключение
БылаОшибка = Истина;
Ожидаем.Что(ИнформацияОбОшибке().Описание).Содержит("Неизвестный характер желудя");
КонецПопытки;

Ожидаем.Что(БылаОшибка).ЭтоИстина();

КонецПроцедуры
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
&Желудь
&Прозвище("Мелкий")
Процедура ПриСозданииОбъекта()

КонецПроцедуры
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
&Желудь("ТестовыйЖелудь")
&Верховный
Процедура ПриСозданииОбъекта()

КонецПроцедуры
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
&Желудь("ТестовыйЖелудь")
&Верховный
Процедура ПриСозданииОбъекта()

&Желудь("ТестовыйЖелудь")
&Верховный
Процедура ПриСозданииОбъекта()

КонецПроцедуры
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
&Желудь("ТестовыйЖелудь")
&Прозвище("Кругляш")
&Прозвище("Мелкий")
Процедура ПриСозданииОбъекта()

КонецПроцедуры
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
&Желудь("ТестовыйЖелудь")
Процедура ПриСозданииОбъекта()

КонецПроцедуры
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Процедура ПриИнициализацииПоделки(Поделка) Экспорт

КонецПроцедуры

&Заготовка
Процедура ПриСозданииОбъекта(&Пластилин ЖелудьНижнегоУровня)
Процедура ПриИнициализацииПоделки(Поделка) Экспорт

КонецПроцедуры

&Заготовка
Процедура ПриСозданииОбъекта(&Пластилин ЖелудьНижнегоУровня)
КонецПроцедуры
Loading

0 comments on commit 1bec11e

Please sign in to comment.