diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a8aec03 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +oscript_modules/ diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..99911d8 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,258 @@ +{ + "version": "0.1.0", + "windows": { + "command": "cmd", + "args": ["/c", "chcp 65001 >nul ; "] + }, + "linux": { + "command": "sh", + "args": ["-c"] + }, + "isShellCommand": true, + "showOutput": "silent", + //"_runner": "terminal", + "tasks": [ + { + "taskName": "Testing project", + "args": [ + "1testrunner", + "-runall", + "${workspaceRoot}/tests" + ], + "echoCommand": true, + "showOutput": "always", + "suppressTaskName": true, + // "isBuildCommand": false, + "isTestCommand": false, + "problemMatcher": { + "fileLocation": "absolute", + "pattern": { + "regexp": "{Модуль\\s+(.+)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+([^{]*)", + "file": 1, + "location": 2, + "message": 3 + } + } + }, + { + "taskName": "Testing current test-file", + "args": [ + "1testrunner", + "-run", + "${file}" + ], + "echoCommand": true, + "showOutput": "always", + "suppressTaskName": true, + "isBuildCommand": false, + "isTestCommand": true, + "problemMatcher": { + "fileLocation": "absolute", + "pattern": { + "regexp": "{Модуль\\s+(.+)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+([^{]*)", + "file": 1, + "location": 2, + "message": 3 + } + } + }, + { + "taskName": "Opm: package build", + "args": [ + "opm", + "build", + "${workspaceRoot}" + ], + "echoCommand": true, + "showOutput": "always", + "suppressTaskName": true, + "isBuildCommand": false + }, + { + "taskName": "Exec all features", + "args": [ + "1bdd", + "${workspaceRoot}/features", + "-out", + "${workspaceRoot}/exec.log" + ], + "echoCommand": true, + "showOutput": "always", + "suppressTaskName": true, + "isBuildCommand": true, + "isTestCommand": false, + "problemMatcher": { + "fileLocation": "absolute", + "pattern": { + "regexp": "{Модуль\\s+(.+)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+([^{]*)", + "file": 1, + "location": 2, + "message": 3 + } + } + }, + { + "taskName": "Exec feature", + "args": [ + "1bdd", + "${file}", + "-fail-fast", + "-out", + "${workspaceRoot}/exec.log" + ], + "echoCommand": true, + "showOutput": "always", + "suppressTaskName": true, + "isBuildCommand": false, + "isTestCommand": true, + "problemMatcher": { + "fileLocation": "absolute", + "pattern": [ + { + "regexp": "{Модуль\\s+(.+)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+([^{]*)", + "file": 1, + "location": 2, + "message": 3 + } + ] + } + }, + { + "taskName": "Exec feature for current step def", + "args": [ + "1bdd", + "${fileDirname}/../${fileBasenameNoExtension}.feature", + "-fail-fast", + "-out", + "${workspaceRoot}/exec.log" + ], + "echoCommand": true, + "showOutput": "always", + "suppressTaskName": true, + "isBuildCommand": false, + "isTestCommand": true, + "problemMatcher": { + "fileLocation": "absolute", + "pattern": [ + { + "regexp": "{Модуль\\s+(.+)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+([^{]*)", + "file": 1, + "location": 2, + "message": 3 + } + ] + } + }, + { + "taskName": "Exec feature + debug", + "args": [ + "1bdd", + "${file}", + "-fail-fast", + "-verbose", + "on", + "-out", + "${workspaceRoot}/exec.log" + ], + "echoCommand": true, + "showOutput": "always", + "suppressTaskName": true, + // "isBuildCommand": false, + "isTestCommand": false, + "problemMatcher": { + "fileLocation": "absolute", + "pattern": { + "regexp": "{Модуль\\s+(.+)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+([^{]*)", + "file": 1, + "location": 2, + "message": 3 + } + } + }, + { + "taskName": "Generate feature steps", + "args": [ + "1bdd", + "gen", + "${file}", + "-out", + "${workspaceRoot}/exec.log" + ], + "echoCommand": true, + "showOutput": "always", + "suppressTaskName": true, + "isBuildCommand": false, + "isTestCommand": false, + "problemMatcher": { + "fileLocation": "absolute", + "pattern": { + "regexp": "{Модуль\\s+(.+)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+([^{]*)", + "file": 1, + "location": 2, + "message": 3 + } + } + }, + { + "taskName": "OneScript: compile", + "args": [ + "oscript", + "-encoding=utf-8", + "-compile", + "${file}" + ], + "echoCommand": true, + "showOutput": "always", + "suppressTaskName": true, + "isBuildCommand": false + }, + { + "taskName": "OneScript: check", + "args": [ + "oscript", + "-encoding=utf-8", + "-check", + "${file}" + ], + "echoCommand": true, + "showOutput": "always", + "suppressTaskName": true, + "isBuildCommand": false + }, + { + "taskName": "OneScript: make", + "args": [ + "oscript", + "-encoding=utf-8", + "-make", + "${file}", + "${fileBasename}.exe" + ], + "echoCommand": true, + "showOutput": "always", + "suppressTaskName": true, + "isBuildCommand": false + }, + { + "taskName": "OneScript: run", + "args": [ + "oscript", + "-encoding=utf-8", + "${file}" + ], + "echoCommand": true, + "showOutput": "always", + "suppressTaskName": true, + "isBuildCommand": true, + "problemMatcher": { + "fileLocation": "absolute", + "pattern": { + "regexp": "^{Модуль\\s+(.*)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+(.*)}$", + "file": 1, + "location": 2, + "message": 3 + } + } + } + ] +} \ No newline at end of file diff --git a/src/opm.os b/src/opm.os index 4aa10a9..78fb0cd 100644 --- a/src/opm.os +++ b/src/opm.os @@ -32,7 +32,7 @@ ОбработкаКоманд.ВыполнитьКоманду(ПараметрыКоманды); Исключение Лог.Отладка(ОписаниеОшибки()); - Сообщить(КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); + Лог.Информация(КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); ЗавершитьРаботу(1); КонецПопытки; @@ -54,7 +54,7 @@ ///////////////////////////////////////////////////////////////////////// // Точка входа -Лог = Логирование.ПолучитьЛог("oscript.app.opm"); +Лог = Логирование.ПолучитьЛог(Константы.ИмяЛога); НастройкиПриложения.УстановитьФайлНастроек(ОбъединитьПути(СтартовыйСценарий().Каталог, "opm.cfg")); ВыполнитьКоманду(АргументыКоманднойСтроки); \ No newline at end of file diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\224\320\270\321\201\320\277\320\265\321\202\321\207\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\224\320\270\321\201\320\277\320\265\321\202\321\207\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" index 54470c1..05edf9e 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\224\320\270\321\201\320\277\320\265\321\202\321\207\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\224\320\270\321\201\320\277\320\265\321\202\321\207\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" @@ -338,6 +338,6 @@ ///////////////////////////////////////////////////////////////////// -Лог = Логирование.ПолучитьЛог("oscript.app.opm"); +Лог = Логирование.ПолучитьЛог(Константы.ИмяЛога); СистемнаяИнформация = Новый СистемнаяИнформация; ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\321\215\321\210\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\275\321\213\321\205\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\321\215\321\210\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\275\321\213\321\205\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" index f892e5c..0f4978f 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\321\215\321\210\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\275\321\213\321\205\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\321\215\321\210\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\275\321\213\321\205\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" @@ -23,6 +23,7 @@ // @deprecated УстановленнаяВерсия = 0; КонецЕсли; + Лог.Отладка("ПакетУстановлен: Перед вызовом СравнитьВерсии(ЭтаВерсия = <%1>, БольшеЧемВерсия = <%2>)", УстановленнаяВерсия, ОписаниеЗависимости.МинимальнаяВерсия); УстановленаКорректнаяВерсия = ОписаниеЗависимости.МинимальнаяВерсия = Неопределено ИЛИ РаботаСВерсиями.СравнитьВерсии(УстановленнаяВерсия, ОписаниеЗависимости.МинимальнаяВерсия) = 1; diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\261\320\276\321\200\321\211\320\270\320\272\320\237\320\260\320\272\320\265\321\202\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\261\320\276\321\200\321\211\320\270\320\272\320\237\320\260\320\272\320\265\321\202\320\260.os" index 7ad3821..5534ac5 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\261\320\276\321\200\321\211\320\270\320\272\320\237\320\260\320\272\320\265\321\202\320\260.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\261\320\276\321\200\321\211\320\270\320\272\320\237\320\260\320\272\320\265\321\202\320\260.os" @@ -5,8 +5,10 @@ // ///////////////////////////////////////////////////////////////////////// +#Использовать logos #Использовать tempfiles +Перем Лог; Перем РабочийКаталог; Перем ВремКаталогСборки; @@ -28,13 +30,13 @@ ВыходнойКаталог = ФайлВыхКаталога.ПолноеИмя; КонецЕсли; - Сообщить("Начинаю сборку в каталоге " + РабочийКаталог); + Лог.Информация("Начинаю сборку в каталоге " + РабочийКаталог); УстановитьТекущийКаталог(РабочийКаталог); УточнитьФайлМанифеста(ФайлМанифеста); Манифест = ПрочитатьМанифест(ФайлМанифеста); СобратьПакетВКаталогеСборки(Манифест, ВыходнойКаталог); УстановитьТекущийКаталог(ТекущийРабКаталог); - Сообщить("Сборка пакета завершена"); + Лог.Информация("Сборка пакета завершена"); Исключение УстановитьТекущийКаталог(ТекущийРабКаталог); @@ -53,13 +55,13 @@ ФайлОбъект = Новый Файл(Константы.ИмяФайлаСпецификацииПакета); Если ФайлОбъект.Существует() и ФайлОбъект.ЭтоФайл() Тогда - Сообщить("Найден файл манифеста"); + Лог.Информация("Найден файл манифеста"); ФайлМанифеста = ФайлОбъект.ПолноеИмя; Иначе ВызватьИсключение "Не определен манифест пакета"; КонецЕсли; Иначе - Сообщить("Использую файл манифеста " + ФайлМанифеста); + Лог.Информация("Использую файл манифеста " + ФайлМанифеста); КонецЕсли; КонецПроцедуры @@ -67,10 +69,10 @@ Функция ПрочитатьМанифест(Знач ФайлМанифеста) ОписаниеПакета = Новый ОписаниеПакета(); - Сообщить("Загружаю описание пакета..."); + Лог.Информация("Загружаю описание пакета..."); ВнешнийКонтекст = Новый Структура("Описание", ОписаниеПакета); Манифест = ЗагрузитьСценарий(ФайлМанифеста, ВнешнийКонтекст); - Сообщить("Описание пакета прочитано"); + Лог.Информация("Описание пакета прочитано"); Возврат ОписаниеПакета; @@ -105,7 +107,7 @@ Запись.Закрыть(); Архив.Добавить(ПутьМанифеста); - Сообщить("Записаны метаданные пакета"); + Лог.Информация("Записаны метаданные пакета"); КонецПроцедуры @@ -116,7 +118,7 @@ Возврат; КонецЕсли; - Сообщить("Формирую определения модулей пакета (lib.config)"); + Лог.Информация("Формирую определения модулей пакета (lib.config)"); ПутьКонфигурацииПакета = ОбъединитьПути(ВремКаталогСборки, "lib.config"); Запись = Новый ЗаписьXML; @@ -134,7 +136,7 @@ ФайлМодуля = Новый Файл(ОписаниеМодуля.Файл); Если Не ФайлМодуля.Существует() Тогда - Сообщить("ПРЕДУПРЕЖДЕНИЕ: Файл модуля " + ОписаниеМодуля.Файл + " не обнаружен."); + Лог.Предупреждение("Файл модуля " + ОписаниеМодуля.Файл + " не обнаружен."); КонецЕсли; Запись.ЗаписатьАтрибут("name", ОписаниеМодуля.Идентификатор); @@ -147,7 +149,7 @@ Запись.Закрыть(); Архив.Добавить(ПутьКонфигурацииПакета); - Сообщить("Записаны определения модулей пакета"); + Лог.Информация("Записаны определения модулей пакета"); КонецПроцедуры @@ -155,7 +157,7 @@ ВключаемыеФайлы = Манифест.ВключаемыеФайлы(); Если ВключаемыеФайлы.Количество() = 0 Тогда - Сообщить("Не определены включаемые файлы"); + Лог.Информация("Не определены включаемые файлы"); Возврат; КонецЕсли; @@ -165,7 +167,7 @@ ДобавитьОписаниеБиблиотеки(АрхивЦелевойСистемы, Манифест); Для Каждого ВключаемыйФайл Из ВключаемыеФайлы Цикл - Сообщить("Добавляем файл: " + ВключаемыйФайл); + Лог.Информация("Добавляем файл: " + ВключаемыйФайл); ПолныйПуть = Новый Файл(ВключаемыйФайл).ПолноеИмя; АрхивЦелевойСистемы.Добавить(ПолныйПуть, РежимСохраненияПутейZIP.СохранятьОтносительныеПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно); КонецЦикла; @@ -190,7 +192,7 @@ ИмяПакета = ВыходнойКаталог.Имя; Если Не ВыходнойКаталог.Существует() Тогда - Сообщить("Создаю каталог " + ИмяПакета); + Лог.Информация("Создаю каталог " + ИмяПакета); СоздатьКаталог(ВыходнойКаталог.ПолноеИмя); Иначе Содержимое = НайтиФайлы(ВыходнойКаталог.ПолноеИмя, ПолучитьМаскуВсеФайлы()); @@ -206,18 +208,18 @@ ЗаписатьЗаготовкуСкриптаУстановки(ВыходнойКаталог.ПолноеИмя); ЗаписатьЗаготовкуМанифестаБиблиотеки(ВыходнойКаталог.ПолноеИмя, ИмяПакета); - Сообщить("Готово"); + Лог.Информация("Готово"); КонецПроцедуры Процедура СоздатьПодкаталог(Знач База, Знач Имя) - Сообщить("Создаю каталог " + Имя); + Лог.Информация("Создаю каталог " + Имя); СоздатьКаталог(ОбъединитьПути(База, Имя)); КонецПроцедуры Процедура ЗаписатьЗаготовкуСкриптаУстановки(Знач Каталог) - Сообщить("Создаю заготовку скрипта установки/удаления"); + Лог.Информация("Создаю заготовку скрипта установки/удаления"); ИмяФайла = ОбъединитьПути(Каталог, Константы.ИмяФайлаСкриптаУстановки); ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла); @@ -263,7 +265,7 @@ Процедура ЗаписатьЗаготовкуМанифестаБиблиотеки(Знач Каталог, Знач ИмяПакета) - Сообщить("Создаю заготовку описания пакета"); + Лог.Информация("Создаю заготовку описания пакета"); ЗаписьТекста = Новый ЗаписьТекста(ОбъединитьПути(Каталог, Константы.ИмяФайлаСпецификацииПакета)); @@ -292,3 +294,5 @@ ЗаписьТекста.Закрыть(); КонецПроцедуры + +Лог = Логирование.ПолучитьЛог(Константы.ИмяЛога); diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" index 5f92a4e..420ff97 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" @@ -74,6 +74,7 @@ ТребуемаяВерсияСреды = Свойства.ВерсияСреды; СистемнаяИнформация = Новый СистемнаяИнформация; ВерсияСреды = СистемнаяИнформация.Версия; + Лог.Отладка("ПроверитьВерсиюСреды: Перед вызовом СравнитьВерсии(ЭтаВерсия = <%1>, БольшеЧемВерсия = <%2>)", ТребуемаяВерсияСреды, ВерсияСреды); Если РаботаСВерсиями.СравнитьВерсии(ТребуемаяВерсияСреды, ВерсияСреды) > 0 Тогда ТекстСообщения = СтрШаблон( "Ошибка установки пакета <%1>: Обнаружена устаревшая версия движка OneScript. @@ -319,6 +320,7 @@ Если СтандартнаяОбработка Тогда Лог.Отладка("Устанавливаю файлы пакета из архива"); + УдалитьУстаревшиеФайлы(ПутьУстановки); ЧтениеСодержимого.ИзвлечьВсе(ПутьУстановки.ПолноеИмя); ВызватьСобытиеПриУстановке(ОбъектСкрипта, ПутьУстановки.ПолноеИмя, СтандартнаяОбработка); @@ -326,6 +328,7 @@ КонецЕсли; Иначе Лог.Отладка("Устанавливаю файлы пакета из архива"); + УдалитьУстаревшиеФайлы(ПутьУстановки); ЧтениеСодержимого.ИзвлечьВсе(ПутьУстановки.ПолноеИмя); КонецЕсли; Исключение @@ -337,6 +340,18 @@ КонецПроцедуры +Процедура УдалитьУстаревшиеФайлы(Знач ПутьУстановки) + УдалитьФайлыВКаталоге(ПутьУстановки.ПолноеИмя, "*.os", Истина); + УдалитьФайлыВКаталоге(ПутьУстановки.ПолноеИмя, "*.dll", Истина); +КонецПроцедуры + +Процедура УдалитьФайлыВКаталоге(Знач ПутьКаталога, Знач МаскаФайлов, Знач ИскатьВПодкаталогах = Истина) + ФайлыДляУдаления = НайтиФайлы(ПутьКаталога, МаскаФайлов, ИскатьВПодкаталогах); + Для Каждого Файл из ФайлыДляУдаления Цикл + УдалитьФайлы(Файл.ПолноеИмя); + КонецЦикла; +КонецПроцедуры + Процедура ВызватьСобытиеПередУстановкой(Знач ОбъектСкрипта, Знач АрхивПакета, Знач Каталог, СтандартнаяОбработка) Лог.Отладка("Вызываю событие ПередУстановкой"); ОбъектСкрипта.ПередУстановкой(АрхивПакета, Каталог, СтандартнаяОбработка); @@ -395,9 +410,9 @@ ФайлЗапуска.ЗаписатьСтроку("#!/bin/bash"); СтрокаЗапуска = "oscript"; Если ЭтоWindows Тогда - СтрокаЗапуска = СтрокаЗапуска + " -encoding=utf-8 "; + СтрокаЗапуска = СтрокаЗапуска + " -encoding=utf-8"; КонецЕсли; - СтрокаЗапуска = СтрокаЗапуска + """" + ПутьФайлаПриложения + """ ""$@"""; + СтрокаЗапуска = СтрокаЗапуска + " """ + ПутьФайлаПриложения + """ ""$@"""; ФайлЗапуска.ЗаписатьСтроку(СтрокаЗапуска); ФайлЗапуска.Закрыть(); diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213.os" index e2937f9..6eebc1f 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213.os" @@ -6,6 +6,7 @@ Перем СерверУдаленногоХранилища Экспорт; Перем ПутьВХранилище Экспорт; Перем ЛокальныйКаталогУстановкиПакетов Экспорт; +Перем ИмяЛога Экспорт; Перем ВерсияПродукта Экспорт; /////////////////////////////////////////////////////////////// @@ -17,4 +18,5 @@ СерверУдаленногоХранилища = "http://hub.oscript.io"; ПутьВХранилище = "/download/"; ЛокальныйКаталогУстановкиПакетов = "oscript_modules"; -ВерсияПродукта = "0.9.1"; +ИмяЛога = "oscript.app.opm"; +ВерсияПродукта = "0.9.3"; diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\222\320\265\321\200\321\201\320\270\321\217\320\274\320\270.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\222\320\265\321\200\321\201\320\270\321\217\320\274\320\270.os" index 094a096..e7f36f9 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\222\320\265\321\200\321\201\320\270\321\217\320\274\320\270.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\222\320\265\321\200\321\201\320\270\321\217\320\274\320\270.os" @@ -4,6 +4,10 @@ // ////////////////////////////////////////////////////////////////// +#Использовать logos + +Перем Лог; + Функция СоздатьВерсию() Экспорт Возврат Новый Структура("СтаршийНомер,МладшийНомер,Релиз,Ревизия"); @@ -56,7 +60,21 @@ // Возвращает 1, если ЭтаВерсия > БольшеЧемВерсия, -1 если ЭтаВерсия < БольшеЧемВерсия и 0, если они равны // Функция СравнитьВерсии(Знач ЭтаВерсия, Знач БольшеЧемВерсия) Экспорт - + Лог.Отладка(СтрШаблон("Вызываю СравнитьВерсии(ЭтаВерсия = <%1>, БольшеЧемВерсия = <%2>)", ЭтаВерсия, БольшеЧемВерсия)); + + Если ЭтаВерсия = 0 Тогда + ЭтаВерсия = "0"; + КонецЕсли; + Если БольшеЧемВерсия = 0 Тогда + БольшеЧемВерсия = "0"; + КонецЕсли; + Если ТипЗнч(ЭтаВерсия) <> Тип("Строка") и ТипЗнч(ЭтаВерсия) <> ТипЗнч(СоздатьВерсию()) Тогда + ВызватьИсключение "СравнитьВерсии: Передали неверный параметр <ЭтаВерсия>"; + КонецЕсли; + Если ТипЗнч(БольшеЧемВерсия) <> Тип("Строка") и ТипЗнч(БольшеЧемВерсия) <> ТипЗнч(СоздатьВерсию()) Тогда + ВызватьИсключение "СравнитьВерсии: Передали неверный параметр <БольшеЧемВерсия>"; + КонецЕсли; + Если ТипЗнч(ЭтаВерсия) = Тип("Строка") Тогда ЭтаВерсия = РазобратьВерсиюНаКомпоненты(ЭтаВерсия); КонецЕсли; @@ -140,4 +158,6 @@ Возврат Пакет; -КонецФункции \ No newline at end of file +КонецФункции + +Лог = Логирование.ПолучитьЛог(Константы.ИмяЛога); diff --git a/tests/build-install-test.os b/tests/build-install-test.os index 63d6be4..a21cde6 100644 --- a/tests/build-install-test.os +++ b/tests/build-install-test.os @@ -1,8 +1,12 @@ #Использовать asserts +#Использовать fs +#Использовать tempfiles #Использовать "../src" + Перем юТест; +Перем мВременныеФайлы; Функция ПолучитьСписокТестов(Знач Тестирование) Экспорт @@ -11,13 +15,18 @@ ИменаТестов = Новый Массив; ИменаТестов.Добавить("ТестДолжен_ПроверитьЧтоПакетСобранКорректно"); + ИменаТестов.Добавить("ТестДолжен_ОчиститьКаталогОтСтарыхСкриптовПриОбновленииПакета"); Возврат ИменаТестов; КонецФункции Процедура ПослеЗапускаТеста() Экспорт - юТест.УдалитьВременныеФайлы(); + мВременныеФайлы.Удалить(); + ПутьККаталогу = ОбъединитьПути(ТекущийКаталог(), "oscript_modules", "test"); + Если ФС.КаталогСуществует(ПутьККаталогу) Тогда + УдалитьФайлы(ПутьККаталогу); + КонецЕсли; КонецПроцедуры Процедура ТестДолжен_ПроверитьЧтоПакетСобранКорректно() Экспорт @@ -26,7 +35,7 @@ КаталогСборки = юТест.ИмяВременногоФайла(); СоздатьКаталог(КаталогСборки); - Сборщик.СобратьПакет(ОбъединитьПути(ТекущийСценарий().Каталог, "testpackage"), Неопределено, КаталогСборки); + Сборщик.СобратьПакет(ОбъединитьПути(ТекущийСценарий().Каталог, "testpackage", "testpackage-0.3.1"), Неопределено, КаталогСборки); ФайлПакета = Новый Файл(ОбъединитьПути(КаталогСборки, "test-0.3.1.ospx")); @@ -51,6 +60,57 @@ ФайлИсходника = Новый Файл(ОбъединитьПути(КаталогПроверки, "folder/src.os")); Утверждения.ПроверитьИстину(ФайлИсходника.Существует(), "Существует файл в подкаталоге"); - Сообщить(ФайлИсходника.ПолноеИмя); +КонецПроцедуры + +Процедура ТестДолжен_ОчиститьКаталогОтСтарыхСкриптовПриОбновленииПакета() Экспорт + + + //устанавливаем новую версию пакета в которой есть test-new.os + // + //ожидаем что в каталоге пакета есть только test-new.os + + //подготовка двух версий пакета + + Сборщик = Новый СборщикПакета; + КаталогСборкиПервойВерсии = мВременныеФайлы.СоздатьКаталог(); + + Сборщик.СобратьПакет( + ОбъединитьПути(ТекущийСценарий().Каталог, "testpackage", "testpackage-0.3.1"), + Неопределено, КаталогСборкиПервойВерсии); + + ФайлПакетаВерсии1 = Новый Файл(ОбъединитьПути(КаталогСборкиПервойВерсии, "test-0.3.1.ospx")); + + КаталогСборкиВторойВерсии = мВременныеФайлы.СоздатьКаталог(); + + Сборщик.СобратьПакет( + ОбъединитьПути(ТекущийСценарий().Каталог, "testpackage", "testpackage-0.3.2"), + Неопределено, КаталогСборкиВторойВерсии); + + ФайлПакетаВерсии2 = Новый Файл(ОбъединитьПути(КаталогСборкиВторойВерсии, "test-0.3.2.ospx")); + + Установщик = Новый УстановкаПакета; + Установщик.УстановитьРежимУстановкиПакетов(РежимУстановкиПакетов.Локально); + + Установщик.УстановитьПакетИзАрхива(ФайлПакетаВерсии1.ПолноеИмя); + + ПутьКФайлуOsТестовогоПакета = ОбъединитьПути( + Константы.ЛокальныйКаталогУстановкиПакетов, "test","folder","src.os"); + ФайлOsИзСтарогоПакета = Новый Файл(ПутьКФайлуOsТестовогоПакета); + + ПутьКФайлуDllТестовогоПакета = ОбъединитьПути( + Константы.ЛокальныйКаталогУстановкиПакетов, "test","folder","src.dll"); + ФайлDllИзСтарогоПакета = Новый Файл(ПутьКФайлуDllТестовогоПакета); + + Ожидаем.Что(ФайлOsИзСтарогоПакета.Существует(), "Файл src.os должен существовать").ЭтоИстина(); + Ожидаем.Что(ФайлDllИзСтарогоПакета.Существует(), "Файл src.dll должен существовать").ЭтоИстина(); + + Установщик.УстановитьПакетИзАрхива(ФайлПакетаВерсии2.ПолноеИмя); + + Ожидаем.Что(ФайлOsИзСтарогоПакета.Существует(), "Файл src.os не должен существовать, потому что мы установили новую версию").ЭтоЛожь(); + Ожидаем.Что(ФайлDllИзСтарогоПакета.Существует(), "Файл src.dll не должен существовать, потому что мы установили новую версию").ЭтоЛожь(); + + КонецПроцедуры + +мВременныеФайлы = Новый МенеджерВременныхФайлов; diff --git a/tests/testpackage/folder/src.os b/tests/testpackage/folder/src.os deleted file mode 100644 index 511c8cd..0000000 --- a/tests/testpackage/folder/src.os +++ /dev/null @@ -1 +0,0 @@ -// заглушка \ No newline at end of file diff --git a/tests/testpackage/testpackage-0.3.1/folder/src.dll b/tests/testpackage/testpackage-0.3.1/folder/src.dll new file mode 100644 index 0000000..2a0c0fb --- /dev/null +++ b/tests/testpackage/testpackage-0.3.1/folder/src.dll @@ -0,0 +1 @@ +// заглушка diff --git a/tests/testpackage/testpackage-0.3.1/folder/src.os b/tests/testpackage/testpackage-0.3.1/folder/src.os new file mode 100644 index 0000000..2a0c0fb --- /dev/null +++ b/tests/testpackage/testpackage-0.3.1/folder/src.os @@ -0,0 +1 @@ +// заглушка diff --git a/tests/testpackage/packagedef b/tests/testpackage/testpackage-0.3.1/packagedef similarity index 61% rename from tests/testpackage/packagedef rename to tests/testpackage/testpackage-0.3.1/packagedef index 9ca09ec..5ecb489 100644 --- a/tests/testpackage/packagedef +++ b/tests/testpackage/testpackage-0.3.1/packagedef @@ -1,4 +1,4 @@  Описание.Имя("test") .Версия("0.3.1") - .ВключитьФайл("folder"); \ No newline at end of file + .ВключитьФайл("folder"); diff --git a/tests/testpackage/testpackage-0.3.2/folder/src-new.dll b/tests/testpackage/testpackage-0.3.2/folder/src-new.dll new file mode 100644 index 0000000..2a0c0fb --- /dev/null +++ b/tests/testpackage/testpackage-0.3.2/folder/src-new.dll @@ -0,0 +1 @@ +// заглушка diff --git a/tests/testpackage/testpackage-0.3.2/folder/src-new.os b/tests/testpackage/testpackage-0.3.2/folder/src-new.os new file mode 100644 index 0000000..2a0c0fb --- /dev/null +++ b/tests/testpackage/testpackage-0.3.2/folder/src-new.os @@ -0,0 +1 @@ +// заглушка diff --git a/tests/testpackage/testpackage-0.3.2/packagedef b/tests/testpackage/testpackage-0.3.2/packagedef new file mode 100644 index 0000000..0513c69 --- /dev/null +++ b/tests/testpackage/testpackage-0.3.2/packagedef @@ -0,0 +1,4 @@ + +Описание.Имя("test") + .Версия("0.3.2") + .ВключитьФайл("folder");