From 70af4f06a29a544dbc391d8a33a7aba13214220f Mon Sep 17 00:00:00 2001 From: Dmitry Ivanov Date: Fri, 9 Jan 2026 21:27:40 +0300 Subject: [PATCH 1/7] =?UTF-8?q?feat:=20=D0=9F=D0=BE=D0=B4=D0=B4=D0=B5?= =?UTF-8?q?=D1=80=D0=B6=D0=BA=D0=B0=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=B1=D0=B8=D0=B1=D0=BB=D0=B8=D0=BE=D1=82=D0=B5?= =?UTF-8?q?=D0=BA=20=D0=B8=D0=B7=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3?= =?UTF-8?q?=D1=83=D1=80=D0=B0=D1=86=D0=B8=D0=BE=D0=BD=D0=BD=D1=8B=D1=85=20?= =?UTF-8?q?=D1=84=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2=20=D0=B8=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D1=8B=D1=85=20=D0=BE=D0=BA?= =?UTF-8?q?=D1=80=D1=83=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=20=D1=81=D1=82=D0=B0=D1=80=D1=82=D0=B5=20=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/qa.yml | 2 +- .github/workflows/test.yml | 9 +- packagedef | 3 +- ...21\200\320\262\320\270\321\201\320\260.os" | 3 +- ...21\201\321\202\320\270\321\202\321\214.os" | 15 +-- .../HttpBin.os" | 90 +++++++++++++- ...20\273\320\265\321\200\320\276\320\262.os" | 2 +- ...265\321\202\321\200\320\276\320\262CFG.os" | 117 ++++++++++++++++++ tests/HttpBin_API_test.os | 24 ++-- tests/oscript.cfg | 1 + 10 files changed, 234 insertions(+), 32 deletions(-) rename "src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\277\321\203\321\201\320\272\320\260\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\270\321\201\320\260.os" => "src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\277\321\203\321\201\320\272\320\260\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\270\321\201\320\260.os" (97%) create mode 100644 "src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262CFG.os" create mode 100644 tests/oscript.cfg diff --git a/.github/workflows/qa.yml b/.github/workflows/qa.yml index 769564f..999035c 100644 --- a/.github/workflows/qa.yml +++ b/.github/workflows/qa.yml @@ -10,6 +10,6 @@ jobs: uses: autumn-library/workflows/.github/workflows/sonar.yml@main with: github_repository: stivo182/oscript-httpbin - oscript_version: dev + oscript_version: stable secrets: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a085e8e..bca0c9c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,7 +10,12 @@ jobs: strategy: fail-fast: false matrix: - oscript_version: ['stable', 'dev'] + oscript_version: ['default', 'lts'] + test_engine: '1testrunner' + include: + - oscript_version: ['stable', 'dev'] + test_engine: 'oneunit' uses: autumn-library/workflows/.github/workflows/test.yml@main with: - oscript_version: ${{ matrix.oscript_version }} \ No newline at end of file + oscript_version: ${{ matrix.oscript_version }} + test_engine: ${{ matrix.test_engine }} \ No newline at end of file diff --git a/packagedef b/packagedef index d1f3f56..2a781ca 100644 --- a/packagedef +++ b/packagedef @@ -13,12 +13,13 @@ .ВключитьФайл("LICENSE") .ЗависитОт("autumn", "4.3.11") .ЗависитОт("autumn-cli", "1.2.0") - .ЗависитОт("winow", "0.11.0") + .ЗависитОт("winow", "0.11.2") .ЗависитОт("compressor", "1.0.2") .ЗависитОт("1connector", "2.3.3") .ЗависитОт("packageinfo", "1.1.1") .ЗависитОт("fs", "1.2.0") .ЗависитОт("logos", "1.7.1") + .ЗависитОт("configor", "0.11.0") .РазработкаЗависитОт("1testrunner") .РазработкаЗависитОт("asserts") .РазработкаЗависитОт("coverage") diff --git "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\277\321\203\321\201\320\272\320\260\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\270\321\201\320\260.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\277\321\203\321\201\320\272\320\260\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\270\321\201\320\260.os" similarity index 97% rename from "src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\277\321\203\321\201\320\272\320\260\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\270\321\201\320\260.os" rename to "src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\277\321\203\321\201\320\272\320\260\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\270\321\201\320\260.os" index 7732c4c..4b4d9b7 100644 --- "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\277\321\203\321\201\320\272\320\260\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\270\321\201\320\260.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\277\321\203\321\201\320\272\320\260\321\202\320\265\320\273\321\214\320\241\320\265\321\200\320\262\320\270\321\201\320\260.os" @@ -1,4 +1,3 @@ - #Использовать winow Перем _Хост; // Строка @@ -36,7 +35,7 @@ _НастройкиВебСервера.ИмяХоста = _Хост; _НастройкиВебСервера.Порт = _Порт; - Если ПолучитьПеременнуюСреды("HTTPBIN_IS_TEST_MODE") = "true" Тогда + Если ПолучитьПеременнуюСреды("HTTPBIN_TESTING_MODE") = "true" Тогда _НастройкиВебСервера.ЗадержкаПередЧтениемСокета = 400; КонецЕсли; diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214.os" index 613ed0e..87968c9 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214.os" @@ -18,21 +18,22 @@ &ПоУмолчанию(3333) Перем _Порт; // Число +&Опция( + Имя = "routes-handlers", + Описание = "Путь к файлу или каталогу кастомных контроллеров" +) +&ТМассивСтрок +Перем _КастомныеКонтроллеры; // BSLLS:UnusedLocalVariable-off + &Опция( Имя = "parent-pid", Описание = "PID родительского процесса" ) &ТЧисло &ПоУмолчанию(0) +&СкрытьВСправке Перем _ИдентификаторРодительскогоПроцесса; // Число -&Опция( - Имя = "routes-handlers", - Описание = "Путь к файлу или каталогу кастомных контроллеров" -) -&ТМассивСтрок -Перем _КастомныеКонтроллеры; // BSLLS:UnusedLocalVariable-off - #КонецОбласти #Область ОписаниеПеременных diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/HttpBin.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/HttpBin.os" index 48f1f72..0a2914e 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/HttpBin.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/HttpBin.os" @@ -4,6 +4,8 @@ #Использовать 1connector #Использовать fs #Использовать logos +#Использовать configor +#Использовать "../../internal" Перем _ТаймаутЗапуска; // Число - Таймаут запуска сервиса в секундах Перем _ТаймаутПроверки; // Число - Таймаут HTTP-проверки доступности в секундах @@ -275,7 +277,7 @@ _Лог.Отладка("Запуск процесса: %1", СтрокаКоманды); - _Процесс = СоздатьПроцесс(СтрокаКоманды, РабочийКаталог, , , , ПеременныеСреды()); + _Процесс = СоздатьПроцесс(СтрокаКоманды, РабочийКаталог, , , , ПолучитьПараметрыСредыПроцесса()); _Процесс.Запустить(); Если Синхронно Тогда @@ -393,4 +395,90 @@ КонецФункции +Функция ПолучитьПараметрыСредыПроцесса() + + ПеременныеСреды = ПеременныеСреды(); + СтартовыйКаталог = СтартовыйСценарий().Каталог; + ПутьККонфигурации = ОбъединитьПути(СтартовыйКаталог, "oscript.cfg"); + + Если Не ФС.ФайлСуществует(ПутьККонфигурации) Тогда + Возврат ПеременныеСреды; + КонецЕсли; + + Конфигурация = КонфигурацияОСкрпитВСоответствие(ПеременныеСреды["OSCRIPT_CONFIG"]); + Если ЗначениеЗаполнено(Конфигурация["lib.system"]) Тогда + Возврат ПеременныеСреды; + КонецЕсли; + + МенеджерПараметров = Новый МенеджерПараметров(); + МенеджерПараметров.УстановитьФайлПараметров(ПутьККонфигурации); + МенеджерПараметров.ДобавитьПровайдерПараметров(Новый ПровайдерПараметровCFG()); + МенеджерПараметров.Прочитать(); + + УстановитьКаталогВКонфигурацию(Конфигурация, "lib.system", МенеджерПараметров.Параметр("lib.system")); + УстановитьКаталогВКонфигурацию(Конфигурация, "lib.additional", МенеджерПараметров.Параметр("lib.additional")); + + ПеременныеСреды["OSCRIPT_CONFIG"] = КонфигурацияОСкрпитВСтроку(Конфигурация); + + Возврат ПеременныеСреды; + +КонецФункции + +Функция КонфигурацияОСкрпитВСоответствие(Параметры) + + Результат = Новый Соответствие(); + + Если Не ЗначениеЗаполнено(Параметры) Тогда + Возврат Результат; + КонецЕсли; + + КлючиИЗначения = СтрРазделить(Параметры, ";"); + + Для Каждого КлючИЗначение Из КлючиИЗначения Цикл + Части = СтрРазделить(КлючИЗначение, "="); + Если Части.Количество() = 2 Тогда + Результат.Вставить(СокрЛП(Части[0]), СокрЛП(Части[1])); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +Функция КонфигурацияОСкрпитВСтроку(Параметры) + + Результат = Новый Массив(); + + Для Каждого КлючИЗначение Из Параметры Цикл + Если ЗначениеЗаполнено(КлючИЗначение.Значение) Тогда + Результат.Добавить(СтрШаблон("%1=%2", НРег(КлючИЗначение.Ключ), КлючИЗначение.Значение)); + КонецЕсли; + КонецЦикла; + + Возврат СтрСоединить(Результат, ";"); + +КонецФункции + +Процедура УстановитьКаталогВКонфигурацию(Конфигурация, Ключ, Знач Каталог) + + Если Не ЗначениеЗаполнено(Каталог) Тогда + Возврат; + КонецЕсли; + + ПозицияТочкиЗапятой = СтрНайти(Каталог, ";"); + Если ПозицияТочкиЗапятой > 0 Тогда + Каталог = Сред(Каталог, 1, ПозицияТочкиЗапятой - 1); + КонецЕсли; + + СтартовыйКаталог = СтартовыйСценарий().Каталог; + НормализованныйПуть = ФС.НормализоватьПуть(ОбъединитьПути(СтартовыйКаталог, Каталог)); + + Если ФС.КаталогСуществует(НормализованныйПуть) Тогда + Каталог = НормализованныйПуть; + КонецЕсли; + + Конфигурация[Ключ] = Каталог; + +КонецПроцедуры + #КонецОбласти \ No newline at end of file diff --git "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\260\321\202\320\265\320\273\321\214\320\232\320\260\321\201\321\202\320\276\320\274\320\275\321\213\321\205\320\232\320\276\320\275\321\202\321\200\320\276\320\273\320\273\320\265\321\200\320\276\320\262.os" "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\260\321\202\320\265\320\273\321\214\320\232\320\260\321\201\321\202\320\276\320\274\320\275\321\213\321\205\320\232\320\276\320\275\321\202\321\200\320\276\320\273\320\273\320\265\321\200\320\276\320\262.os" index dc9807b..bed6e1e 100644 --- "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\260\321\202\320\265\320\273\321\214\320\232\320\260\321\201\321\202\320\276\320\274\320\275\321\213\321\205\320\232\320\276\320\275\321\202\321\200\320\276\320\273\320\273\320\265\321\200\320\276\320\262.os" +++ "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\260\321\202\320\265\320\273\321\214\320\232\320\260\321\201\321\202\320\276\320\274\320\275\321\213\321\205\320\232\320\276\320\275\321\202\321\200\320\276\320\273\320\273\320\265\321\200\320\276\320\262.os" @@ -51,7 +51,7 @@ Процедура ПодключитьИзКаталога(Каталог) - Файлы = НайтиФайлы(Каталог, "*.os"); + Файлы = НайтиФайлы(Каталог, "*.os", Истина); Для Каждого Файл Из Файлы Цикл Подключить(Файл.ПолноеИмя); diff --git "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262CFG.os" "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262CFG.os" new file mode 100644 index 0000000..0703d81 --- /dev/null +++ "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262CFG.os" @@ -0,0 +1,117 @@ +#Использовать logos + +Перем _Лог; + +#Область ПрограммныйИнтерфейс + +// Возвращает приоритет провайдера +// +// Возвращаемое значение: +// Число - текущий приоритет провайдера +// +Функция Приоритет() Экспорт + Возврат 1; +КонецФункции + +// Возвращает идентификатор провайдера +// +// Возвращаемое значение: +// Строка - текущий идентификатор провайдера +// +Функция Идентификатор() Экспорт + Возврат "cfg"; +КонецФункции + +// Возвращает тип провайдера +// +// Возвращаемое значение: +// Строка - текущий тип провайдера +// +Функция ТипПровайдера() Экспорт + Возврат "file"; +КонецФункции + +// Возвращает расширения файлов по умолчанию +// +// Возвращаемое значение: +// Строка - расширения файлов по умолчанию +// +Функция РасширенияФайлов() Экспорт + Возврат "cfg"; +КонецФункции + +// Выполняет чтение параметров для провайдера +// +// Параметры: +// НастройкиПровайдера - Структура - структура настроек провайдера +// +// Возвращаемое значение: +// Соответствие - результат чтения провайдера +// +Функция ПрочитатьПараметры(НастройкиПровайдера) Экспорт + + ПрочитанныеПараметры = Новый Соответствие; + + ФайлПараметров = Новый Файл(НастройкиПровайдера.ФайлПараметров); + + Если Не ФайлПараметров.Существует() Тогда + _Лог.Отладка("Не найден файл параметров <%1>", ФайлПараметров.ПолноеИмя); + Возврат ПрочитанныеПараметры; + КонецЕсли; + + _Лог.Отладка("Выполняю чтение файла параметров <%1>", ФайлПараметров.ПолноеИмя); + ПрочитанныеПараметры = Прочитать(ФайлПараметров.ПолноеИмя); + + Возврат ПрочитанныеПараметры; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура ПриСозданииОбъекта() + _Лог = Логирование.ПолучитьЛог("oscript.lib.httpbin.configor.cfg"); +КонецПроцедуры + +// Выполнить чтение настроек из файла +// +// Параметры: +// ПутьКФайлу - Cтрока - путь к файлу настроек +// Возвращаемое значение: +// Соответствие - итоговые параметры +// +Функция Прочитать(Знач ПутьКФайлу) + + НастройкиИзФайла = Новый Соответствие; + + ТД = Новый ТекстовыйДокумент(); + ТД.Прочитать(ПутьКФайлу); + + Для Сч = 1 По ТД.КоличествоСтрок() Цикл + + СтрокаНастроек = ТД.ПолучитьСтроку(Сч); + + Если ПустаяСтрока(СтрокаНастроек) или Лев(СтрокаНастроек, 1) = "#" Тогда + Продолжить; + КонецЕсли; + + Поз = СтрНайти(СтрокаНастроек, "="); + Если Поз = 0 Тогда + Продолжить; + КонецЕсли; + + Ключ = СокрЛП(Лев(СтрокаНастроек, Поз - 1)); + Значение = СокрЛП(Сред(СтрокаНастроек, Поз + 1)); + + НастройкиИзФайла.Вставить(Ключ, Значение); + + КонецЦикла; + + _Лог.Отладка("Прочитан файл настроек %1", ПутьКФайлу); + + Возврат НастройкиИзФайла; + +КонецФункции // Прочитать + +#КонецОбласти \ No newline at end of file diff --git a/tests/HttpBin_API_test.os b/tests/HttpBin_API_test.os index 052cfdf..39f0356 100644 --- a/tests/HttpBin_API_test.os +++ b/tests/HttpBin_API_test.os @@ -7,7 +7,6 @@ #Использовать "../src/core" Перем HttpBin; // HttpBin -Перем СервисЗапущен; &ТестовыйНабор(Характер = "Одиночка") Процедура ПриСозданииОбъекта() @@ -16,15 +15,13 @@ &ПередВсеми Процедура ПередЗапускомТестов() Экспорт - - СервисЗапущен = Ложь; - - УстановитьПеременнуюСреды("HTTPBIN_IS_TEST_MODE", "true"); - - HttpBin = Новый HttpBin(); - HttpBin.Запустить(); - - СервисЗапущен = Истина; + + Если HttpBin = Неопределено Или Не HttpBin.Активен() Тогда + УстановитьПеременнуюСреды("HTTPBIN_TESTING_MODE", "true"); + + HttpBin = Новый HttpBin(); + HttpBin.Запустить(); + КонецЕсли; КонецПроцедуры @@ -33,13 +30,6 @@ HttpBin.Остановить(); КонецПроцедуры -&ПередКаждым -Процедура ПередЗапускомТеста() Экспорт - Если Не СервисЗапущен Тогда - ВызватьИсключение "Сервис не запущен"; - КонецЕсли; -КонецПроцедуры - &Тест Процедура Должен_ПроверитьТочкуМаршрута_Html() Экспорт diff --git a/tests/oscript.cfg b/tests/oscript.cfg new file mode 100644 index 0000000..2303418 --- /dev/null +++ b/tests/oscript.cfg @@ -0,0 +1 @@ +lib.system=../oscript_modules \ No newline at end of file From 8d22afadf3784eb91cb02a81832a08b365148585 Mon Sep 17 00:00:00 2001 From: Dmitry Ivanov Date: Fri, 9 Jan 2026 21:30:10 +0300 Subject: [PATCH 2/7] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=B2=D0=BE=D1=80=D0=BA=D1=84=D0=BB=D0=BE=D1=83?= =?UTF-8?q?=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index bca0c9c..d11d95b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,7 +11,7 @@ jobs: fail-fast: false matrix: oscript_version: ['default', 'lts'] - test_engine: '1testrunner' + test_engine: ['1testrunner'] include: - oscript_version: ['stable', 'dev'] test_engine: 'oneunit' From 07ac22df5ef5a1c561ac6bb5a1ebf5eace6c0495 Mon Sep 17 00:00:00 2001 From: Dmitry Ivanov Date: Fri, 9 Jan 2026 21:36:49 +0300 Subject: [PATCH 3/7] =?UTF-8?q?=D0=9F=D0=BE=D0=BD=D0=B5=D0=B6=D0=B5=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D1=8F=20configor,=20?= =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20=D0=B2?= =?UTF-8?q?=D0=BE=D1=80=D0=BA=D1=84=D0=BB=D0=BE=D1=83=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/test.yml | 4 +++- packagedef | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d11d95b..065190d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,7 +13,9 @@ jobs: oscript_version: ['default', 'lts'] test_engine: ['1testrunner'] include: - - oscript_version: ['stable', 'dev'] + - oscript_version: 'stable' + test_engine: 'oneunit' + - oscript_version: 'dev' test_engine: 'oneunit' uses: autumn-library/workflows/.github/workflows/test.yml@main with: diff --git a/packagedef b/packagedef index 2a781ca..6c113cf 100644 --- a/packagedef +++ b/packagedef @@ -19,7 +19,7 @@ .ЗависитОт("packageinfo", "1.1.1") .ЗависитОт("fs", "1.2.0") .ЗависитОт("logos", "1.7.1") - .ЗависитОт("configor", "0.11.0") + .ЗависитОт("configor", "0.10.0") .РазработкаЗависитОт("1testrunner") .РазработкаЗависитОт("asserts") .РазработкаЗависитОт("coverage") From 625d7364ca2a4c83117ab2f881945827fcd399c4 Mon Sep 17 00:00:00 2001 From: Dmitry Ivanov Date: Fri, 9 Jan 2026 21:44:12 +0300 Subject: [PATCH 4/7] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D0=B7=D0=B0=D0=BC=D0=B5=D1=87=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BA=D1=80=D0=BE=D0=BB=D0=B8=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HttpBin.os" | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/HttpBin.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/HttpBin.os" index 0a2914e..54ce454 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/HttpBin.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/HttpBin.os" @@ -435,9 +435,11 @@ КлючиИЗначения = СтрРазделить(Параметры, ";"); Для Каждого КлючИЗначение Из КлючиИЗначения Цикл - Части = СтрРазделить(КлючИЗначение, "="); - Если Части.Количество() = 2 Тогда - Результат.Вставить(СокрЛП(Части[0]), СокрЛП(Части[1])); + ПозицияРавенства = СтрНайти(КлючИЗначение, "="); + Если ПозицияРавенства > 0 Тогда + ЛеваяЧасть = Сред(КлючИЗначение, 1, ПозицияРавенства - 1); + ПраваяЧасть = Сред(КлючИЗначение, ПозицияРавенства + 1); + Результат.Вставить(СокрЛП(ЛеваяЧасть), ПраваяЧасть); КонецЕсли; КонецЦикла; From 4b708ffcaaf32b6343359c9d8ddb07458e74266c Mon Sep 17 00:00:00 2001 From: Dmitry Ivanov Date: Fri, 9 Jan 2026 22:50:43 +0300 Subject: [PATCH 5/7] =?UTF-8?q?=D0=9D=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=D0=B0=20htt?= =?UTF-8?q?pbin=20=D0=B2=20=D1=82=D0=B5=D1=81=D1=82=D0=B0=D1=85=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=B4=201testrunner?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/HttpBin_API_test.os | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/HttpBin_API_test.os b/tests/HttpBin_API_test.os index 39f0356..9cb0ca9 100644 --- a/tests/HttpBin_API_test.os +++ b/tests/HttpBin_API_test.os @@ -16,10 +16,11 @@ &ПередВсеми Процедура ПередЗапускомТестов() Экспорт - Если HttpBin = Неопределено Или Не HttpBin.Активен() Тогда + Если HttpBin = Неопределено Тогда УстановитьПеременнуюСреды("HTTPBIN_TESTING_MODE", "true"); HttpBin = Новый HttpBin(); + HttpBin.УстановитьТаймаутЗапуска(10); HttpBin.Запустить(); КонецЕсли; @@ -28,6 +29,7 @@ &ПослеВсех Процедура ПослеЗапускаТестов() Экспорт HttpBin.Остановить(); + HttpBin = Неопределено; КонецПроцедуры &Тест From 77531095a90e402d6311f8373776eb78fba3027d Mon Sep 17 00:00:00 2001 From: Dmitry Ivanov Date: Fri, 9 Jan 2026 23:00:02 +0300 Subject: [PATCH 6/7] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=B4=D0=BB=D1=8F=201testrunner?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/HttpBin_API_test.os | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/HttpBin_API_test.os b/tests/HttpBin_API_test.os index 9cb0ca9..c51be8f 100644 --- a/tests/HttpBin_API_test.os +++ b/tests/HttpBin_API_test.os @@ -28,8 +28,10 @@ &ПослеВсех Процедура ПослеЗапускаТестов() Экспорт - HttpBin.Остановить(); - HttpBin = Неопределено; + Если Не HttpBin = Неопределено Тогда + HttpBin.Остановить(); + HttpBin = Неопределено; + КонецЕсли; КонецПроцедуры &Тест From 7b199db9051289154da5d4b5af020bcf8d9a24d8 Mon Sep 17 00:00:00 2001 From: Dmitry Ivanov Date: Fri, 9 Jan 2026 23:08:02 +0300 Subject: [PATCH 7/7] =?UTF-8?q?=D0=A3=D0=B2=D0=B5=D0=BB=D0=B8=D1=87=D0=B5?= =?UTF-8?q?=D0=BD=20=D1=82=D0=B0=D0=B9=D0=BC=D0=B0=D1=83=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/HttpBin_test.os | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/tests/HttpBin_test.os b/tests/HttpBin_test.os index c2b49f3..cdca9b1 100644 --- a/tests/HttpBin_test.os +++ b/tests/HttpBin_test.os @@ -25,6 +25,7 @@ Если Не _HttpBin = Неопределено Тогда _HttpBin.Остановить(); + _HttpBin = Неопределено; КонецЕсли; КонецПроцедуры @@ -33,7 +34,7 @@ Процедура ТестДолжен_ЗапуститьСервисСинхронноИОстановить() Экспорт // Действие - _HttpBin = Новый HttpBin().Запустить(); + _HttpBin = HttpBin().Запустить(); // Проверка Ожидаем.Что(_HttpBin.Отвечает(), "Должен быть запущен").ЭтоИстина(); @@ -44,7 +45,7 @@ Процедура ТестДолжен_ЗапуститьСервисАсинхронноИОстановить() Экспорт // Подготовка - _HttpBin = Новый HttpBin(); + _HttpBin = HttpBin(); ВремяНачалаЗапуска = ТекущаяУниверсальнаяДатаВМиллисекундах(); _HttpBin.Запустить(); @@ -67,7 +68,7 @@ Процедура ТестДолжен_ЗапуститьСервисСКастомнымКонтроллеромИзФайла() Экспорт // Подготовка - _HttpBin = Новый HttpBin() + _HttpBin = HttpBin() .УстановитьРасположениеКонтроллеров("./tests/fixtures/КастомныеКонтроллеры/КастомныйКонтроллер.os") .Запустить(); @@ -83,7 +84,7 @@ Процедура ТестДолжен_ЗапуститьСервисСКастомнымКонтроллеромИзКаталога() Экспорт // Подготовка - _HttpBin = Новый HttpBin() + _HttpBin = HttpBin() .УстановитьРасположениеКонтроллеров("./tests/fixtures/КастомныеКонтроллеры") .Запустить(); @@ -101,7 +102,7 @@ // Подготовка УстановитьТекущийКаталог("tests"); - _HttpBin = Новый HttpBin() + _HttpBin = HttpBin() .УстановитьРасположениеКонтроллеров("./fixtures/КастомныеКонтроллеры") .Запустить(); @@ -120,7 +121,7 @@ УстановитьТекущийКаталог("tests"); // Действие - _HttpBin = Новый HttpBin().Запустить(); + _HttpBin = HttpBin().Запустить(); // Проверка Ожидаем.Что(_HttpBin.Отвечает(), "Должен быть запущен").ЭтоИстина(); @@ -129,4 +130,8 @@ Функция ВыполнитьЗапрос(АдресРесурса) Возврат КоннекторHTTP.Get(_HttpBin.URL(АдресРесурса), , Новый Структура("Таймаут", 3)); +КонецФункции + +Функция HttpBin() + Возврат Новый HttpBin().УстановитьТаймаутЗапуска(10); КонецФункции \ No newline at end of file