diff --git a/.gitignore b/.gitignore index 1c0c4db..4eb85d0 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ exec.log gen.log tests/fixtures/test-report.xml tests/junit-log.xml +*.ospx diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 13029c8..863b48f 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -1,8 +1,9 @@ { - "version": "0.1.0", + "version": "2.0.0", + "_runner": "terminal", "windows": { "command": "cmd", - "args": ["/c", "chcp 65001 >nul &"] + "args": ["/c", "chcp 65001 ;"] }, "linux": { "command": "sh", @@ -229,8 +230,6 @@ { "taskName": "Opm: package build", "args": [ - "chcp 65001 >nul", - "&&", "opm", "build", "${workspaceRoot}" diff --git a/appveyor-runtests.cmd b/appveyor-runtests.cmd index f35a763..9160205 100644 --- a/appveyor-runtests.cmd +++ b/appveyor-runtests.cmd @@ -1,20 +1,35 @@ +@echo on @chcp 65001 -"%ProgramFiles(x86)%\OneScript\bin\oscript.exe" -encoding=utf-8 c:\projects\1testrunner\testrunner.os -runall tests xddReportPath tests +set OSCRIPT=%ProgramFiles(x86)%\OneScript -@if %ERRORLEVEL%==2 GOTO good_exit -@if %ERRORLEVEL%==0 GOTO good_exit +dir .\tests\ -exit /B 1 +@echo . +@echo ======================= ======================= ======================= ======================= +@echo . +@echo . + +call 1testrunner -runall tests xddReportPath tests + +set TESTLEVEL=%ERRORLEVEL% -:good_exit +@echo . +@echo ======================= ======================= ======================= ======================= +@echo . +@echo . -"%ProgramFiles(x86)%\OneScript\bin\oscript.exe" -encoding=utf-8 src\bdd.os features/core -junit-out tests/bdd-log.xml +oscript -encoding=utf-8 src\bdd.os features -junit-out tests/bdd-log.xml @if %ERRORLEVEL%==2 GOTO good_exit_bdd @if %ERRORLEVEL%==0 GOTO good_exit_bdd +dir .\tests\ + exit /B 1 :good_exit_bdd -exit /B 0 \ No newline at end of file + +dir .\tests\ + +exit /B %TESTLEVEL% diff --git a/appveyor.yml b/appveyor.yml index d23252b..d70c97b 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,29 +1,67 @@ version: 1.2.{build} pull_requests: do_not_increment_build_number: true +max_jobs: 1 init: - ps: Set-WinSystemLocale ru-RU + +# appveyor DownloadFile http://oscript.io/downloads/latest/exe -FileName ./oscriptlatest.exe +# dir /w +# oscriptlatest.exe /VERYSILENT /DIR=".\engine\" +# SET PATH=%CD%\engine\bin;%PATH% +# oscript + install: - cmd: >- + @echo on + git submodule update --init --recursive - curl -o %temp%\oscript-setup.exe http://oscript.io/downloads/night-build/exe + set + + curl -o %temp%\oscript-setup.exe http://oscript.io/downloads/latest/exe %temp%\oscript-setup.exe /silent /log="%temp%\oscript-setup.log" /saveinf="%temp%\oscript-setup-settings.txt" - dir "%ProgramFiles(x86)%\OneScript\bin" - dir "%ProgramFiles(x86)%\OneScript\lib" + set OSCRIPT=%ProgramFiles(x86)%\OneScript + + dir "%OSCRIPT%\bin" + dir "%OSCRIPT%\lib" + + rem SET PATH=%CD%\engine\bin;%PATH% + + SET PATH=%OSCRIPT%\bin;%PATH% - "%ProgramFiles(x86)%\OneScript\bin\oscript.exe" -version + where oscript - git clone -q --branch=master https://github.com/artbear/1testrunner.git c:\projects\1testrunner + oscript -version - git clone -q --branch=master https://github.com/artbear/1commands.git "%ProgramFiles(x86)%\OneScript\lib\1commands" + chcp 65001 + + opm install opm + + opm list + + opm install 1testrunner + + opm install 1commands + + opm install 1bdd + + opm list + + dir "%OSCRIPT%\bin" + dir "%OSCRIPT%\lib" # to disable automatic builds build: off test_script: -- cmd: appveyor-runtests.cmd +- cmd: >- + + appveyor-runtests.cmd + + pushd %APPVEYOR_BUILD_FOLDER% + after_test: - ps: # upload results to AppVeyor - ps: Write-Host "Загружаю результаты тестов на CI" diff --git "a/features/core/step_definitions/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\320\270.os" "b/features/core/step_definitions/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\320\270.os" index 4b71381..cf11335 100644 --- "a/features/core/step_definitions/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\320\270.os" +++ "b/features/core/step_definitions/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\223\320\265\320\275\320\265\321\200\320\260\321\206\320\270\320\270.os" @@ -1,7 +1,5 @@ #Использовать logos -#Использовать "../../.." - Перем Лог; Перем БДД; @@ -159,44 +157,18 @@ КонецПроцедуры Функция ВыполнитьПроцесс(Знач СтрокаВыполнения, ТекстВывода, Знач КодировкаПотока = Неопределено) - Перем ПаузаОжиданияЧтенияБуфера; - - ПаузаОжиданияЧтенияБуфера = 10; - МаксСчетчикЦикла = 100000; - + Лог.Отладка("СтрокаКоманды "+СтрокаВыполнения); + + Команда = Новый Команда; + Команда.УстановитьСтрокуЗапуска(СтрокаВыполнения); Если КодировкаПотока = Неопределено Тогда КодировкаПотока = КодировкаТекста.UTF8; КонецЕсли; - Лог.Отладка("СтрокаКоманды "+СтрокаВыполнения); - Процесс = СоздатьПроцесс(СтрокаВыполнения, ТекущийКаталог(), Истина,Истина, КодировкаПотока); - Процесс.Запустить(); - - ТекстВывода = ""; - Счетчик = 0; - - Пока Не Процесс.Завершен Цикл - Текст = Процесс.ПотокВывода.Прочитать(); - Лог.Отладка("Цикл ПотокаВывода "+Текст); - Если Текст = Неопределено ИЛИ ПустаяСтрока(Текст) Тогда - Прервать; - КонецЕсли; - ТекстВывода = ТекстВывода + Текст; - - Счетчик = Счетчик + 1; - Если Счетчик > МаксСчетчикЦикла Тогда - Прервать; - КонецЕсли; - - sleep(ПаузаОжиданияЧтенияБуфера); - КонецЦикла; - - Процесс.ОжидатьЗавершения(); - - Текст = Процесс.ПотокВывода.Прочитать(); - ТекстВывода = ТекстВывода + Текст; + Команда.УстановитьКодировкуВывода(КодировкаПотока); + КодВозврата = Команда.Исполнить(); + ТекстВывода = Команда.ПолучитьВывод(); Лог.Отладка(ТекстВывода); - - Возврат Процесс.КодВозврата; + Возврат КодВозврата; КонецФункции //я подставил файл шагов с уже реализованными шагами для фичи "ПередачаПараметров"() diff --git "a/features/core/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\244\320\270\321\207.feature" "b/features/core/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\244\320\270\321\207.feature" index 6ca8be0..bd0cf7a 100644 --- "a/features/core/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\244\320\270\321\207.feature" +++ "b/features/core/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\244\320\270\321\207.feature" @@ -82,9 +82,5 @@ выполняется несуществующий шаг Не реализован """ - И в лог-файле запуска продукта есть строка - """ - 1 Сценарий ( 0 Пройден, 1 Не реализован, 0 Сломался, 0 Не выполнялся ) - 1 Шаг ( 0 Пройден, 1 Не реализован, 0 Сломался, 0 Не выполнялся ) - - """ + И в лог-файле запуска продукта есть строка "1 Сценарий ( 0 Пройден, 1 Не реализован, 0 Сломался, 0 Не выполнялся )" + И в лог-файле запуска продукта есть строка "1 Шаг ( 0 Пройден, 1 Не реализован, 0 Сломался, 0 Не выполнялся )" diff --git "a/features/lib/step_definitions/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\260\320\275\320\264.os" "b/features/lib/step_definitions/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\260\320\275\320\264.os" index d8157ec..d49018f 100644 --- "a/features/lib/step_definitions/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\260\320\275\320\264.os" +++ "b/features/lib/step_definitions/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\260\320\275\320\264.os" @@ -2,6 +2,7 @@ #Использовать 1commands Перем БДД; //контекст фреймворка 1bdd +Перем Лог; // Метод выдает список шагов, реализованных в данном файле-шагов Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт @@ -19,6 +20,12 @@ ВсеШаги.Добавить("ЯСообщаюВыводКоманды"); ВсеШаги.Добавить("ЯДобавляюПараметрДляКоманды"); ВсеШаги.Добавить("ВыводКомандыНеСодержит"); + ВсеШаги.Добавить("ЯПоказываюВыводКоманды"); + ВсеШаги.Добавить("ЯВижуВКонсолиВывод"); + ВсеШаги.Добавить("ЯНеВижуВКонсолиВывод"); + ВсеШаги.Добавить("ЯВижуВКонсолиСтрокуПодобно"); + ВсеШаги.Добавить("ЯНеВижуВКонсолиСтрокуПодобно"); + ВсеШаги.Добавить("КодВозвратаРавен"); Возврат ВсеШаги; КонецФункции @@ -37,20 +44,28 @@ //Я очищаю параметры команды "git" в контексте Процедура ЯОчищаюПараметрыКомандыВКонтексте(Знач ИмяКоманды) Экспорт - Команда = ПолучитьКомандуИзКонтекста(ИмяКоманды); - Команда.УстановитьПараметры(""); + Лог.Отладка("ЯОчищаюПараметрыКомандыВКонтексте Создаю команду ИмяКоманды %1", ИмяКоманды); + + КлючКонтекста = КлючКоманды(ИмяКоманды); + Команда = Новый Команда; + Команда.ПоказыватьВыводНемедленно(Истина); + Лог.Отладка("Устанавливаю признак немедленного показа вывода"); + + Команда.УстановитьКоманду(ИмяКоманды); + БДД.СохранитьВКонтекст(КлючКонтекста, Команда); + БДД.СохранитьВКонтекст(КлючПоследнейКоманды(), Команда); КонецПроцедуры //я включаю отладку лога с именем "bdd" Процедура ЯВключаюОтладкуЛогаСИменем(Знач ИмяЛога) Экспорт - Лог = Логирование.ПолучитьЛог(ИмяЛога); - Лог.УстановитьУровень(УровниЛога.Отладка); + НужныйЛог = Логирование.ПолучитьЛог(ИмяЛога); + НужныйЛог.УстановитьУровень(УровниЛога.Отладка); КонецПроцедуры //я выключаю отладку лога с именем "bdd" Процедура ЯВыключаюОтладкуЛогаСИменем(Знач ИмяЛога) Экспорт - Лог = Логирование.ПолучитьЛог(ИмяЛога); - Лог.УстановитьУровень(УровниЛога.Информация); + НужныйЛог = Логирование.ПолучитьЛог(ИмяЛога); + НужныйЛог.УстановитьУровень(УровниЛога.Информация); КонецПроцедуры //Я выполняю команду "git" @@ -68,6 +83,8 @@ ПараметрыКоманды = ЗаменитьШаблоныВПараметрахКоманды(ПараметрыКоманды); Команда.УстановитьПараметры(ПараметрыКоманды); + Лог.Отладка("Выполняю команду <%1> с параметрами <%2>", ИмяКоманды, ПараметрыКоманды); + Команда.Исполнить(); КонецПроцедуры @@ -80,19 +97,17 @@ КонецПроцедуры //Вывод команды "git" содержит "[--version]" -Процедура ВыводКомандыСодержит(Знач ИмяКоманды, Знач ОжидаемыйВыводКоманды) Экспорт +Процедура ВыводКомандыСодержит(Знач ИмяКоманды, Знач ОжидаемыйВыводКомандыИлиТаблицаЗначений) Экспорт Команда = БДД.ПолучитьИзКонтекста(КлючКоманды(ИмяКоманды)); - ВыводКоманды = Команда.ПолучитьВывод(); - Ожидаем.Что(ВыводКоманды).Содержит(ОжидаемыйВыводКоманды); + ПроверитьВыводКомандыНаВхождение(Команда, ОжидаемыйВыводКомандыИлиТаблицаЗначений); КонецПроцедуры //Вывод команды "oscript" не содержит "КаталогПроекта" -Процедура ВыводКомандыНеСодержит(Знач ИмяКоманды, Знач ОжидаемыйВыводКоманды) Экспорт +Процедура ВыводКомандыНеСодержит(Знач ИмяКоманды, Знач ОжидаемыйВыводКомандыИлиТаблицаЗначений) Экспорт Команда = БДД.ПолучитьИзКонтекста(КлючКоманды(ИмяКоманды)); - ВыводКоманды = Команда.ПолучитьВывод(); - Ожидаем.Что(ВыводКоманды).Не_().Содержит(ОжидаемыйВыводКоманды); + ПроверитьВыводКомандыНаОтсутствие(Команда, ОжидаемыйВыводКомандыИлиТаблицаЗначений); КонецПроцедуры //Код возврата команды "git" равен 1 @@ -111,29 +126,145 @@ Сообщить(ВыводКоманды); КонецПроцедуры +//я вижу в консоли вывод "лог команды" +Процедура ЯВижуВКонсолиВывод(Знач ОжидаемыйВыводКомандыИлиТаблицаЗначений) Экспорт + Команда = БДД.ПолучитьИзКонтекста(КлючПоследнейКоманды()); + + ПроверитьВыводКомандыНаВхождение(Команда, ОжидаемыйВыводКомандыИлиТаблицаЗначений); +КонецПроцедуры + +//я не вижу в консоли вывод "Несуществующий вывод команды" +Процедура ЯНеВижуВКонсолиВывод(Знач ОжидаемыйВыводКомандыИлиТаблицаЗначений) Экспорт + Команда = БДД.ПолучитьИзКонтекста(КлючПоследнейКоманды()); + + ПроверитьВыводКомандыНаОтсутствие(Команда, ОжидаемыйВыводКомандыИлиТаблицаЗначений); +КонецПроцедуры + +//я вижу в консоли строку подобно "(\d+\.){3}\d+" +Процедура ЯВижуВКонсолиСтрокуПодобно(Знач ШаблонРегулярки) Экспорт + Команда = БДД.ПолучитьИзКонтекста(КлючПоследнейКоманды()); + + ВыводКоманды = Команда.ПолучитьВывод(); + + РегулярноеВыражение = Новый РегулярноеВыражение(ШаблонРегулярки); + Сообщение = СтрШаблон("Ожидали, что найдем совпадение по регулярному выражению %1, а это не так.", ШаблонРегулярки); + Ожидаем.Что(РегулярноеВыражение.Совпадает(ВыводКоманды), Сообщение).ЭтоИстина(); +КонецПроцедуры + +//я не вижу в консоли строку подобно "(\d+\.){5}" +Процедура ЯНеВижуВКонсолиСтрокуПодобно(Знач ШаблонРегулярки) Экспорт + Команда = БДД.ПолучитьИзКонтекста(КлючПоследнейКоманды()); + + ВыводКоманды = Команда.ПолучитьВывод(); + + РегулярноеВыражение = Новый РегулярноеВыражение(ШаблонРегулярки); + Сообщение = СтрШаблон("Ожидали, что не найдем совпадение по регулярному выражению %1, а оно найдено.", ШаблонРегулярки); + Ожидаем.Что(РегулярноеВыражение.Совпадает(ВыводКоманды), Сообщение).ЭтоЛожь(); +КонецПроцедуры + +//Я показываю вывод команды +Процедура ЯПоказываюВыводКоманды() Экспорт + Команда = БДД.ПолучитьИзКонтекста(КлючПоследнейКоманды()); + + ВыводКоманды = Команда.ПолучитьВывод(); + Сообщить(ВыводКоманды); +КонецПроцедуры + +//Код возврата равен 0 +Процедура КодВозвратаРавен(Знач ОжидаемыйКодВозврата) Экспорт + Команда = БДД.ПолучитьИзКонтекста(КлючПоследнейКоманды()); + + Ожидаем.Что(Команда.ПолучитьКодВозврата(), "Код возврата").Равно(ОжидаемыйКодВозврата); +КонецПроцедуры // { Служебные функции Функция ПолучитьКомандуИзКонтекста(Знач ИмяКоманды) - КлючКонтекста = КлючКоманды(ИмяКоманды); + Лог.Отладка("ПолучитьКомандуИзКонтекста Имя команды %1", ИмяКоманды); + Лог.Отладка("ПолучитьКомандуИзКонтекста КлючКонтекста %1", КлючКонтекста); + Команда = БДД.ПолучитьИзКонтекста(КлючКонтекста); Если Не ЗначениеЗаполнено(Команда) Тогда - Команда = Новый Команда; - Команда.УстановитьКоманду(ИмяКоманды); - БДД.СохранитьВКонтекст(КлючКонтекста, Команда); + ЯОчищаюПараметрыКомандыВКонтексте(ИмяКоманды); + Команда = БДД.ПолучитьИзКонтекста(КлючКонтекста); КонецЕсли; Возврат Команда; КонецФункции +Процедура ПроверитьВыводКомандыНаВхождение(Знач Команда, Знач ОжидаемыйВыводКомандыИлиТаблицаЗначений) + ВыводКоманды = Команда.ПолучитьВывод(); + + ТипПараметра = ТипЗнч(ОжидаемыйВыводКомандыИлиТаблицаЗначений); + Если ТипПараметра = Тип("Строка") Тогда + Ожидаем.Что(ВыводКоманды).Содержит(ОжидаемыйВыводКомандыИлиТаблицаЗначений); + + ИначеЕсли ТипПараметра = Тип("ТаблицаЗначений") Тогда + ПроверитьСтрокуНаВхождениеПодстрокИзТаблицы(ВыводКоманды, ОжидаемыйВыводКомандыИлиТаблицаЗначений); + КонецЕсли; +КонецПроцедуры + +Процедура ПроверитьВыводКомандыНаОтсутствие(Знач Команда, Знач ОжидаемыйВыводКомандыИлиТаблицаЗначений) + ВыводКоманды = Команда.ПолучитьВывод(); + + ТипПараметра = ТипЗнч(ОжидаемыйВыводКомандыИлиТаблицаЗначений); + Если ТипПараметра = Тип("Строка") Тогда + Ожидаем.Что(ВыводКоманды).Не_().Содержит(ОжидаемыйВыводКомандыИлиТаблицаЗначений); + + ИначеЕсли ТипПараметра = Тип("ТаблицаЗначений") Тогда + ПроверитьСтрокуНаОтсутствиеПодстрокИзТаблицы(ВыводКоманды, ОжидаемыйВыводКомандыИлиТаблицаЗначений); + КонецЕсли; +КонецПроцедуры + +// TODO перенести в библиотеку asserts +Процедура ПроверитьСтрокуНаВхождениеПодстрокИзТаблицы(Знач СтрокаГдеИщем, Знач ТаблицаИскомыхПодстрок) + СтрокаРасхождений = ""; + Для каждого ЧтоИщем Из ТаблицаИскомыхПодстрок Цикл + СтрокаЧтоИщем = ЧтоИщем[0]; + Если Найти(СтрокаГдеИщем, СтрокаЧтоИщем) = 0 Тогда + СтрокаРасхождений = СтрШаблон("%1%3 Не найдена подстрока <%2>", СтрокаРасхождений, СтрокаЧтоИщем, + Символы.ПС); + КонецЕсли; + КонецЦикла; + Если Не ПустаяСтрока(СтрокаРасхождений) Тогда + СтрокаРасхождений = СтрШаблон("Не нашли одну из подстрок таблицы:%3%2%3 в строке:%3%1 ", + СтрокаГдеИщем, СтрокаРасхождений, Символы.ПС); + Ожидаем.Что(Истина, СтрокаРасхождений).ЭтоЛожь(); + КонецЕсли; +КонецПроцедуры + +// TODO перенести в библиотеку asserts +Процедура ПроверитьСтрокуНаОтсутствиеПодстрокИзТаблицы(Знач СтрокаГдеИщем, Знач ТаблицаИскомыхПодстрок) + СтрокаРасхождений = ""; + Для каждого ЧтоИщем Из ТаблицаИскомыхПодстрок Цикл + СтрокаЧтоИщем = ЧтоИщем[0]; + Если Найти(СтрокаГдеИщем, СтрокаЧтоИщем) <> 0 Тогда + СтрокаРасхождений = СтрШаблон("%1%3 Найдена подстрока <%2>", СтрокаРасхождений, СтрокаЧтоИщем, + Символы.ПС); + КонецЕсли; + КонецЦикла; + Если Не ПустаяСтрока(СтрокаРасхождений) Тогда + СтрокаРасхождений = + СтрШаблон("Ожидали, что не найдем одну из подстрок таблицы, но одна из них найдена:%3%2%3 Строка, где искали:%3%1", + СтрокаГдеИщем, СтрокаРасхождений, Символы.ПС); + Ожидаем.Что(Истина, СтрокаРасхождений).ЭтоЛожь(); + КонецЕсли; +КонецПроцедуры + Функция КлючКоманды(Знач ИмяКоманды) Возврат "Команда-" + ИмяКоманды; КонецФункции +Функция КлючПоследнейКоманды() + Возврат "ПоследняяКоманда"; +КонецФункции + Функция ЗаменитьШаблоныВПараметрахКоманды(Знач ПараметрыКоманды) Рез = СтрЗаменить(ПараметрыКоманды, "<КаталогПроекта>", БДД.КаталогПроверяемогоПроекта()); Рез = СтрЗаменить(Рез, "<РабочийКаталог>", БДД.ПолучитьИзКонтекста("РабочийКаталог")); Возврат Рез; КонецФункции //} + +Лог = Логирование.ПолучитьЛог("bdd"); diff --git "a/features/lib/step_definitions/\320\244\320\260\320\271\320\273\320\276\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270.os" "b/features/lib/step_definitions/\320\244\320\260\320\271\320\273\320\276\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270.os" index 594a787..eee4098 100644 --- "a/features/lib/step_definitions/\320\244\320\260\320\271\320\273\320\276\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270.os" +++ "b/features/lib/step_definitions/\320\244\320\260\320\271\320\273\320\276\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270.os" @@ -1,285 +1,291 @@ -// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd -#Использовать asserts -#Использовать fs - -Перем БДД; //контекст фреймворка 1bdd - -// Метод выдает список шагов, реализованных в данном файле-шагов -Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт - БДД = КонтекстФреймворкаBDD; - - ВсеШаги = Новый Массив; - - ВсеШаги.Добавить("ЯСоздаюВременныйКаталогИСохраняюЕгоВКонтекст"); - ВсеШаги.Добавить("ЯУстанавливаюВременныйКаталогКакРабочийКаталог"); - ВсеШаги.Добавить("ЯСоздаюКаталогВРабочемКаталоге"); - ВсеШаги.Добавить("ЯСоздаюКаталогВПодкаталогеРабочегоКаталога"); - ВсеШаги.Добавить("ВРабочемКаталогеСуществуетКаталог"); - ВсеШаги.Добавить("ВПодкаталогеРабочегоКаталогаСуществуетКаталог"); - ВсеШаги.Добавить("ЯСоздаюФайлВРабочемКаталоге"); - ВсеШаги.Добавить("ЯСоздаюФайлВПодкаталогеРабочегоКаталога"); - ВсеШаги.Добавить("ВРабочемКаталогеСуществуетФайл"); - ВсеШаги.Добавить("ВПодкаталогеРабочегоКаталогаСуществуетФайл"); - ВсеШаги.Добавить("ЯКопируюФайлИзКаталогаПроектаВРабочийКаталог"); - ВсеШаги.Добавить("ЯКопируюФайлИзКаталогаПроектаВПодкаталогРабочегоКаталога"); - ВсеШаги.Добавить("ЯКопируюКаталогИзКаталогаПроектаВРабочийКаталог"); - ВсеШаги.Добавить("ЯКопируюКаталогИзКаталогаПроектаВПодкаталогРабочегоКаталога"); - ВсеШаги.Добавить("ЯУстановилРабочийКаталогКакТекущийКаталог"); - ВсеШаги.Добавить("ЯУстановилПодкаталогРабочегоКаталогаКакТекущийКаталог"); - ВсеШаги.Добавить("КаталогСуществует"); - ВсеШаги.Добавить("КаталогНеСуществует"); - ВсеШаги.Добавить("ФайлСуществует"); - ВсеШаги.Добавить("ФайлНеСуществует"); - ВсеШаги.Добавить("ЯВосстановилПредыдущийКаталог"); - ВсеШаги.Добавить("ЯСохраняюКаталогПроектаВКонтекст"); - ВсеШаги.Добавить("ЯПоказываюКаталогПроекта"); - ВсеШаги.Добавить("ЯПоказываюРабочийКаталог"); - ВсеШаги.Добавить("ФайлВРабочемКаталогеСодержит"); - ВсеШаги.Добавить("ФайлВРабочемКаталогеНеСодержит"); - ВсеШаги.Добавить("ФайлСодержит"); - ВсеШаги.Добавить("ФайлНеСодержит"); - - Возврат ВсеШаги; -КонецФункции - -// Реализация шагов - -// Процедура выполняется перед запуском каждого сценария -Процедура ПередЗапускомСценария(Знач Узел) Экспорт - -КонецПроцедуры - -// Процедура выполняется после завершения каждого сценария -Процедура ПослеЗапускаСценария(Знач Узел) Экспорт - -КонецПроцедуры - -//Я создаю временный каталог и сохраняю его в контекст -Процедура ЯСоздаюВременныйКаталогИСохраняюЕгоВКонтекст() Экспорт - ВременныйКаталог = ВременныеФайлы.СоздатьКаталог(); - БДД.СохранитьВКонтекст("ВременныйКаталог", ВременныйКаталог); -КонецПроцедуры - -//Я устанавливаю временный каталог как рабочий каталог -Процедура ЯУстанавливаюВременныйКаталогКакРабочийКаталог() Экспорт - БДД.СохранитьВКонтекст("РабочийКаталог", БДД.ПолучитьИзКонтекста("ВременныйКаталог")); -КонецПроцедуры - -//Я создаю каталог "folder0" в рабочем каталоге -Процедура ЯСоздаюКаталогВРабочемКаталоге(Знач ПутьНовогоКаталога) Экспорт - НовыйПуть = ОбъединитьПути(РабочийКаталог(), ПутьНовогоКаталога); - СоздатьКаталог(НовыйПуть); -КонецПроцедуры - -//Я создаю каталог "folder02" в подкаталоге "folder0" рабочего каталога -Процедура ЯСоздаюКаталогВПодкаталогеРабочегоКаталога(Знач ПутьНовогоКаталога, Знач ПутьКаталога) Экспорт - НовыйПуть = ОбъединитьПути(РабочийКаталог(), ПутьКаталога, ПутьНовогоКаталога); - СоздатьКаталог(НовыйПуть); -КонецПроцедуры - -//Я создаю файл "file0.txt" в рабочем каталоге -Процедура ЯСоздаюФайлВРабочемКаталоге(Знач ПутьФайла) Экспорт - НовыйПуть = ОбъединитьПути(РабочийКаталог(), ПутьФайла); - СоздатьФайлПример(НовыйПуть); -КонецПроцедуры - -//Я создаю файл "file02" в подкаталоге "folder0" рабочего каталога -Процедура ЯСоздаюФайлВПодкаталогеРабочегоКаталога(Знач ПутьФайла, Знач ПутьКаталога) Экспорт - НовыйПуть = ОбъединитьПути(РабочийКаталог(), ПутьКаталога, ПутьФайла); - СоздатьФайлПример(НовыйПуть); -КонецПроцедуры - -//Я копирую файл "fixture.epf" из каталога "tests" проекта в рабочий каталог -Процедура ЯКопируюФайлИзКаталогаПроектаВРабочийКаталог(Знач ПутьФайла, Знач ПодКаталогПроекта) Экспорт - ПолныйПутьФайла = ОбъединитьПути(БДД.КаталогПроверяемогоПроекта(), ПодКаталогПроекта, ПутьФайла); - Файл = Новый Файл(ПолныйПутьФайла); - КопироватьФайл(ПолныйПутьФайла, ОбъединитьПути(РабочийКаталог(), Файл.Имя)); -КонецПроцедуры - -//Я копирую файл "fixture.epf" из каталога "tests" проекта в подкаталог "folder0" рабочего каталога -Процедура ЯКопируюФайлИзКаталогаПроектаВПодкаталогРабочегоКаталога(Знач ПутьФайла, Знач ПодКаталогПроекта, Знач ПутьПодКаталога) Экспорт - ПолныйПутьФайла = ОбъединитьПути(БДД.КаталогПроверяемогоПроекта(), ПодКаталогПроекта, ПутьФайла); - Файл = Новый Файл(ПолныйПутьФайла); - КопироватьФайл(ПолныйПутьФайла, ОбъединитьПути(РабочийКаталог(), ПутьПодКаталога, Файл.Имя)); -КонецПроцедуры - -//Я копирую каталог "fixtures" из каталога "tests" проекта в рабочий каталог -Процедура ЯКопируюКаталогИзКаталогаПроектаВРабочийКаталог(Знач ПутьНовогоКаталога, Знач ПодКаталогПроекта) Экспорт - ПолныйПутьКаталога = ОбъединитьПути(БДД.КаталогПроверяемогоПроекта(), ПодКаталогПроекта, ПутьНовогоКаталога); - ОбъектКаталога = Новый Файл(ПолныйПутьКаталога); - // КопироватьФайл(ПолныйПутьФайла, ОбъединитьПути(РабочийКаталог(), ПутьПодКаталога, Файл.Имя)); - ПутьНовогоКаталога = ОбъединитьПути(РабочийКаталог(), ОбъектКаталога.Имя); - ФС.ОбеспечитьКаталог(ПутьНовогоКаталога); - ФС.КопироватьСодержимоеКаталога(ПолныйПутьКаталога, ПутьНовогоКаталога); -КонецПроцедуры - -//Я копирую каталог "fixtures" из каталога "tests" проекта в подкаталог "folder0" рабочего каталога -Процедура ЯКопируюКаталогИзКаталогаПроектаВПодкаталогРабочегоКаталога(Знач ПутьНовогоКаталога, Знач ПодКаталогПроекта, Знач ПутьПодКаталога) Экспорт - ПолныйПутьКаталога = ОбъединитьПути(БДД.КаталогПроверяемогоПроекта(), ПодКаталогПроекта, ПутьНовогоКаталога); - ОбъектКаталога = Новый Файл(ПолныйПутьКаталога); - - ПутьНовогоКаталога = ОбъединитьПути(РабочийКаталог(), ПутьПодКаталога, ОбъектКаталога.Имя); - ФС.ОбеспечитьКаталог(ПутьНовогоКаталога); - ФС.КопироватьСодержимоеКаталога(ПолныйПутьКаталога, ПутьНовогоКаталога); -КонецПроцедуры - -//В рабочем каталоге существует каталог "folder0" -Процедура ВРабочемКаталогеСуществуетКаталог(Знач ПутьКаталога) Экспорт - ОбъектКаталога = Новый Файл(ОбъединитьПути(РабочийКаталог(), ПутьКаталога)); - Ожидаем.Что(ОбъектКаталога.Существует(), СтрШаблон("Ожидаем, что каталог <%1> существует, а его нет!", ОбъектКаталога.ПолноеИмя)).ЭтоИстина(); -КонецПроцедуры - -//В подкаталоге "folder0" рабочего каталога существует каталог "folder02" -Процедура ВПодкаталогеРабочегоКаталогаСуществуетКаталог(Знач ПутьПодКаталога, Знач ПутьПроверяемогоКаталога) Экспорт - ОбъектКаталога = Новый Файл(ОбъединитьПути(РабочийКаталог(), ПутьПодКаталога, ПутьПроверяемогоКаталога)); - Ожидаем.Что(ОбъектКаталога.Существует(), СтрШаблон("Ожидаем, что каталог <%1> существует, а его нет!", ОбъектКаталога.ПолноеИмя)).ЭтоИстина(); -КонецПроцедуры - -//В рабочем каталоге существует файл "file0.txt" -Процедура ВРабочемКаталогеСуществуетФайл(Знач ПутьФайла) Экспорт - ОбъектФайл = Новый Файл(ОбъединитьПути(РабочийКаталог(), ПутьФайла)); - Ожидаем.Что(ОбъектФайл.Существует(), СтрШаблон("Ожидаем, что файл <%1> существует, а его нет!", ОбъектФайл.ПолноеИмя)).ЭтоИстина(); -КонецПроцедуры - -//В подкаталоге "folder0" рабочего каталога существует файл "file02" -Процедура ВПодкаталогеРабочегоКаталогаСуществуетФайл(Знач ПутьПодКаталога, Знач ПутьФайла) Экспорт - ОбъектФайл = Новый Файл(ОбъединитьПути(РабочийКаталог(), ПутьПодКаталога, ПутьФайла)); - Ожидаем.Что(ОбъектФайл.Существует(), СтрШаблон("Ожидаем, что файл <%1> существует, а его нет!", ОбъектФайл.ПолноеИмя)).ЭтоИстина(); -КонецПроцедуры - -//Каталог "folder0/folder01" существует -Процедура КаталогСуществует(Знач ПутьКаталога) Экспорт - ОбъектКаталога = Новый Файл(ОбъединитьПути(ТекущийКаталог(), ПутьКаталога)); - Ожидаем.Что(ОбъектКаталога.Существует(), СтрШаблон("Ожидаем, что каталог <%1> существует, а его нет!", ОбъектКаталога.ПолноеИмя)).ЭтоИстина(); -КонецПроцедуры - -//Каталог "folder0/folder01" не существует -Процедура КаталогНеСуществует(Знач ПутьКаталога) Экспорт - ОбъектКаталога = Новый Файл(ОбъединитьПути(ТекущийКаталог(), ПутьКаталога)); - Ожидаем.Что(ОбъектКаталога.Существует(), СтрШаблон("Ожидаем, что каталог <%1> нет, а он существует!", ОбъектКаталога.ПолноеИмя)).ЭтоЛожь(); -КонецПроцедуры - -//Файл "folder0/file01.txt" существует -Процедура ФайлСуществует(Знач ПутьФайла) Экспорт - ОбъектФайл = Новый Файл(ОбъединитьПути(ТекущийКаталог(), ПутьФайла)); - Ожидаем.Что(ОбъектФайл.Существует(), СтрШаблон("Ожидаем, что файл <%1> существует, а его нет!", ОбъектФайл.ПолноеИмя)).ЭтоИстина(); -КонецПроцедуры - -//Файл "folder0/file01.txt" не существует -Процедура ФайлНеСуществует(Знач ПутьФайла) Экспорт - ОбъектФайл = Новый Файл(ОбъединитьПути(ТекущийКаталог(), ПутьФайла)); - Ожидаем.Что(ОбъектФайл.Существует(), СтрШаблон("Ожидаем, что файла <%1> нет, а он существует!", ОбъектФайл.ПолноеИмя)).ЭтоЛожь(); -КонецПроцедуры - -//Я установил рабочий каталог как текущий каталог -Процедура ЯУстановилРабочийКаталогКакТекущийКаталог() Экспорт - СтекТекущихКаталогов = ПолучитьСтекТекущихКаталогов(); - СтекТекущихКаталогов.Вставить(0, ТекущийКаталог()); - - УстановитьТекущийКаталог(РабочийКаталог()); -КонецПроцедуры - -//Я установил подкаталог "folder0" рабочего каталога как текущий каталог -Процедура ЯУстановилПодкаталогРабочегоКаталогаКакТекущийКаталог(Знач ПутьКаталога) Экспорт - ПолныйПутьКаталога = ОбъединитьПути(РабочийКаталог(), ПутьКаталога); - - СтекТекущихКаталогов = ПолучитьСтекТекущихКаталогов(); - СтекТекущихКаталогов.Вставить(0, ТекущийКаталог()); - - УстановитьТекущийКаталог(ПолныйПутьКаталога); -КонецПроцедуры - -//Я восстановил предыдущий каталог -Процедура ЯВосстановилПредыдущийКаталог() Экспорт - СтекТекущихКаталогов = ПолучитьСтекТекущихКаталогов(); - Если Не ЗначениеЗаполнено(СтекТекущихКаталогов) Тогда - ВызватьИсключение "Невозможно восстановить каталог, т.к. стек текущих каталогов пуст"; - КонецЕсли; - - УстановитьТекущийКаталог(СтекТекущихКаталогов[0]); - СтекТекущихКаталогов.Удалить(0); -КонецПроцедуры - -//Я сохраняю каталог проекта в контекст -Процедура ЯСохраняюКаталогПроектаВКонтекст() Экспорт - КаталогТекущегоПроекта = БДД.КаталогПроверяемогоПроекта(); - БДД.СохранитьВКонтекст("КаталогПроекта", КаталогТекущегоПроекта); -КонецПроцедуры - -//Я показываю каталог проекта -Процедура ЯПоказываюКаталогПроекта() Экспорт - Сообщить(БДД.ПолучитьИзКонтекста("КаталогПроекта")); -КонецПроцедуры - -//Я показываю рабочий каталог -Процедура ЯПоказываюРабочийКаталог() Экспорт - Сообщить(РабочийКаталог()); -КонецПроцедуры - -//Файл "folder0/file01.txt" в рабочем каталоге содержит "Текст файла" -Процедура ФайлВРабочемКаталогеСодержит(Знач ПутьФайла, Знач ЧтоИщем) Экспорт - Файл = Новый Файл(ОбъединитьПути(РабочийКаталог(), ПутьФайла)); - ПроверитьСодержимоеФайла(Файл, ЧтоИщем); -КонецПроцедуры - -//Файл "folder0/file01.txt" в рабочем каталоге не содержит "Не существующий текст" -Процедура ФайлВРабочемКаталогеНеСодержит(Знач ПутьФайла, Знач ЧтоИщем) Экспорт - Файл = Новый Файл(ОбъединитьПути(РабочийКаталог(), ПутьФайла)); - ПроверитьОтсутствиеВФайле(Файл, ЧтоИщем); -КонецПроцедуры - -//Файл "folder0/file01.txt" содержит "Текст файла" -Процедура ФайлСодержит(Знач ПутьФайла, Знач ЧтоИщем) Экспорт - Файл = Новый Файл(ОбъединитьПути(ТекущийКаталог(), ПутьФайла)); - ПроверитьСодержимоеФайла(Файл, ЧтоИщем); -КонецПроцедуры - -//Файл "folder0/file01.txt" не содержит "Не существующий текст" -Процедура ФайлНеСодержит(Знач ПутьФайла, Знач ЧтоИщем) Экспорт - Файл = Новый Файл(ОбъединитьПути(ТекущийКаталог(), ПутьФайла)); - ПроверитьОтсутствиеВФайле(Файл, ЧтоИщем); -КонецПроцедуры - - -//{ Служебные методы -Функция РабочийКаталог() - Возврат БДД.ПолучитьИзКонтекста("РабочийКаталог"); -КонецФункции - -Функция ПолучитьСтекТекущихКаталогов() - СтекТекущихКаталогов = БДД.ПолучитьИзКонтекста("СтекТекущихКаталогов"); - Если СтекТекущихКаталогов = Неопределено Тогда - СтекТекущихКаталогов = Новый Массив; - БДД.СохранитьВКонтекст("СтекТекущихКаталогов", СтекТекущихКаталогов); - КонецЕсли; - Возврат СтекТекущихКаталогов; -КонецФункции // Получить() - -Процедура СоздатьФайлПример(Знач ПутьФайла) Экспорт - ЗаписьТекста = Новый ЗаписьТекста(ПутьФайла); - ЗаписьТекста.Записать("Текст файла"); - ЗаписьТекста.Закрыть(); -КонецПроцедуры - -Функция ПрочитатьТекстФайла(Знач Файл, Кодировка = "UTF-8") - ЧтениеТекста = Новый ЧтениеТекста; - ЧтениеТекста.Открыть(Файл.ПолноеИмя, Кодировка); - - Строка = ЧтениеТекста.Прочитать(); - ЧтениеТекста.Закрыть(); - Возврат Строка; -КонецФункции // ПрочитатьТекстФайла() - -Процедура ПроверитьСодержимоеФайла(Знач Файл, Знач ЧтоИщем) - ТекстФайла = ПрочитатьТекстФайла(Файл); - ОписаниеОшибки = СтрШаблон("Ожидали, что файл <%1> содержит `<%2>`, а это не так!", Файл.ПолноеИмя, ЧтоИщем); - Ожидаем.Что(ТекстФайла, ОписаниеОшибки).Содержит(ЧтоИщем); -КонецПроцедуры - -Процедура ПроверитьОтсутствиеВФайле(Знач Файл, Знач ЧтоИщем) - ТекстФайла = ПрочитатьТекстФайла(Файл); - ОписаниеОшибки = СтрШаблон("Ожидали, что файл <%1> не содержит `<%2>`, а это не так!", Файл.ПолноеИмя, ЧтоИщем); - Ожидаем.Что(ТекстФайла, ОписаниеОшибки).Не_().Содержит(ЧтоИщем); -КонецПроцедуры - -//} +// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd +#Использовать asserts +#Использовать fs + +Перем БДД; //контекст фреймворка 1bdd + +// Метод выдает список шагов, реализованных в данном файле-шагов +Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт + БДД = КонтекстФреймворкаBDD; + + ВсеШаги = Новый Массив; + + ВсеШаги.Добавить("ЯСоздаюВременныйКаталогИСохраняюЕгоВКонтекст"); + ВсеШаги.Добавить("ЯУстанавливаюВременныйКаталогКакРабочийКаталог"); + ВсеШаги.Добавить("ЯСоздаюКаталогВРабочемКаталоге"); + ВсеШаги.Добавить("ЯСоздаюКаталогВПодкаталогеРабочегоКаталога"); + ВсеШаги.Добавить("ВРабочемКаталогеСуществуетКаталог"); + ВсеШаги.Добавить("ВПодкаталогеРабочегоКаталогаСуществуетКаталог"); + ВсеШаги.Добавить("ЯСоздаюФайлВРабочемКаталоге"); + ВсеШаги.Добавить("ЯСоздаюФайлВПодкаталогеРабочегоКаталога"); + ВсеШаги.Добавить("ВРабочемКаталогеСуществуетФайл"); + ВсеШаги.Добавить("ВПодкаталогеРабочегоКаталогаСуществуетФайл"); + ВсеШаги.Добавить("ЯКопируюФайлИзКаталогаПроектаВРабочийКаталог"); + ВсеШаги.Добавить("ЯКопируюФайлИзКаталогаПроектаВПодкаталогРабочегоКаталога"); + ВсеШаги.Добавить("ЯКопируюКаталогИзКаталогаПроектаВРабочийКаталог"); + ВсеШаги.Добавить("ЯКопируюКаталогИзКаталогаПроектаВПодкаталогРабочегоКаталога"); + ВсеШаги.Добавить("ЯУстановилРабочийКаталогКакТекущийКаталог"); + ВсеШаги.Добавить("ЯУстановилПодкаталогРабочегоКаталогаКакТекущийКаталог"); + ВсеШаги.Добавить("КаталогСуществует"); + ВсеШаги.Добавить("КаталогНеСуществует"); + ВсеШаги.Добавить("ФайлСуществует"); + ВсеШаги.Добавить("ФайлНеСуществует"); + ВсеШаги.Добавить("ЯВосстановилПредыдущийКаталог"); + ВсеШаги.Добавить("ЯСохраняюКаталогПроектаВКонтекст"); + ВсеШаги.Добавить("ЯПоказываюКаталогПроекта"); + ВсеШаги.Добавить("ЯПоказываюРабочийКаталог"); + ВсеШаги.Добавить("ЯПоказываюТекущийКаталог"); + ВсеШаги.Добавить("ФайлВРабочемКаталогеСодержит"); + ВсеШаги.Добавить("ФайлВРабочемКаталогеНеСодержит"); + ВсеШаги.Добавить("ФайлСодержит"); + ВсеШаги.Добавить("ФайлНеСодержит"); + + Возврат ВсеШаги; +КонецФункции + +// Реализация шагов + +// Процедура выполняется перед запуском каждого сценария +Процедура ПередЗапускомСценария(Знач Узел) Экспорт + +КонецПроцедуры + +// Процедура выполняется после завершения каждого сценария +Процедура ПослеЗапускаСценария(Знач Узел) Экспорт + +КонецПроцедуры + +//Я создаю временный каталог и сохраняю его в контекст +Процедура ЯСоздаюВременныйКаталогИСохраняюЕгоВКонтекст() Экспорт + ВременныйКаталог = ВременныеФайлы.СоздатьКаталог(); + БДД.СохранитьВКонтекст("ВременныйКаталог", ВременныйКаталог); +КонецПроцедуры + +//Я устанавливаю временный каталог как рабочий каталог +Процедура ЯУстанавливаюВременныйКаталогКакРабочийКаталог() Экспорт + БДД.СохранитьВКонтекст("РабочийКаталог", БДД.ПолучитьИзКонтекста("ВременныйКаталог")); +КонецПроцедуры + +//Я создаю каталог "folder0" в рабочем каталоге +Процедура ЯСоздаюКаталогВРабочемКаталоге(Знач ПутьНовогоКаталога) Экспорт + НовыйПуть = ОбъединитьПути(РабочийКаталог(), ПутьНовогоКаталога); + СоздатьКаталог(НовыйПуть); +КонецПроцедуры + +//Я создаю каталог "folder02" в подкаталоге "folder0" рабочего каталога +Процедура ЯСоздаюКаталогВПодкаталогеРабочегоКаталога(Знач ПутьНовогоКаталога, Знач ПутьКаталога) Экспорт + НовыйПуть = ОбъединитьПути(РабочийКаталог(), ПутьКаталога, ПутьНовогоКаталога); + СоздатьКаталог(НовыйПуть); +КонецПроцедуры + +//Я создаю файл "file0.txt" в рабочем каталоге +Процедура ЯСоздаюФайлВРабочемКаталоге(Знач ПутьФайла) Экспорт + НовыйПуть = ОбъединитьПути(РабочийКаталог(), ПутьФайла); + СоздатьФайлПример(НовыйПуть); +КонецПроцедуры + +//Я создаю файл "file02" в подкаталоге "folder0" рабочего каталога +Процедура ЯСоздаюФайлВПодкаталогеРабочегоКаталога(Знач ПутьФайла, Знач ПутьКаталога) Экспорт + НовыйПуть = ОбъединитьПути(РабочийКаталог(), ПутьКаталога, ПутьФайла); + СоздатьФайлПример(НовыйПуть); +КонецПроцедуры + +//Я копирую файл "fixture.epf" из каталога "tests" проекта в рабочий каталог +Процедура ЯКопируюФайлИзКаталогаПроектаВРабочийКаталог(Знач ПутьФайла, Знач ПодКаталогПроекта) Экспорт + ПолныйПутьФайла = ОбъединитьПути(БДД.КаталогПроверяемогоПроекта(), ПодКаталогПроекта, ПутьФайла); + Файл = Новый Файл(ПолныйПутьФайла); + КопироватьФайл(ПолныйПутьФайла, ОбъединитьПути(РабочийКаталог(), Файл.Имя)); +КонецПроцедуры + +//Я копирую файл "fixture.epf" из каталога "tests" проекта в подкаталог "folder0" рабочего каталога +Процедура ЯКопируюФайлИзКаталогаПроектаВПодкаталогРабочегоКаталога(Знач ПутьФайла, Знач ПодКаталогПроекта, Знач ПутьПодКаталога) Экспорт + ПолныйПутьФайла = ОбъединитьПути(БДД.КаталогПроверяемогоПроекта(), ПодКаталогПроекта, ПутьФайла); + Файл = Новый Файл(ПолныйПутьФайла); + КопироватьФайл(ПолныйПутьФайла, ОбъединитьПути(РабочийКаталог(), ПутьПодКаталога, Файл.Имя)); +КонецПроцедуры + +//Я копирую каталог "fixtures" из каталога "tests" проекта в рабочий каталог +Процедура ЯКопируюКаталогИзКаталогаПроектаВРабочийКаталог(Знач ПутьНовогоКаталога, Знач ПодКаталогПроекта) Экспорт + ПолныйПутьКаталога = ОбъединитьПути(БДД.КаталогПроверяемогоПроекта(), ПодКаталогПроекта, ПутьНовогоКаталога); + ОбъектКаталога = Новый Файл(ПолныйПутьКаталога); + // КопироватьФайл(ПолныйПутьФайла, ОбъединитьПути(РабочийКаталог(), ПутьПодКаталога, Файл.Имя)); + ПутьНовогоКаталога = ОбъединитьПути(РабочийКаталог(), ОбъектКаталога.Имя); + ФС.ОбеспечитьКаталог(ПутьНовогоКаталога); + ФС.КопироватьСодержимоеКаталога(ПолныйПутьКаталога, ПутьНовогоКаталога); +КонецПроцедуры + +//Я копирую каталог "fixtures" из каталога "tests" проекта в подкаталог "folder0" рабочего каталога +Процедура ЯКопируюКаталогИзКаталогаПроектаВПодкаталогРабочегоКаталога(Знач ПутьНовогоКаталога, Знач ПодКаталогПроекта, Знач ПутьПодКаталога) Экспорт + ПолныйПутьКаталога = ОбъединитьПути(БДД.КаталогПроверяемогоПроекта(), ПодКаталогПроекта, ПутьНовогоКаталога); + ОбъектКаталога = Новый Файл(ПолныйПутьКаталога); + + ПутьНовогоКаталога = ОбъединитьПути(РабочийКаталог(), ПутьПодКаталога, ОбъектКаталога.Имя); + ФС.ОбеспечитьКаталог(ПутьНовогоКаталога); + ФС.КопироватьСодержимоеКаталога(ПолныйПутьКаталога, ПутьНовогоКаталога); +КонецПроцедуры + +//В рабочем каталоге существует каталог "folder0" +Процедура ВРабочемКаталогеСуществуетКаталог(Знач ПутьКаталога) Экспорт + ОбъектКаталога = Новый Файл(ОбъединитьПути(РабочийКаталог(), ПутьКаталога)); + Ожидаем.Что(ОбъектКаталога.Существует(), СтрШаблон("Ожидаем, что каталог <%1> существует, а его нет!", ОбъектКаталога.ПолноеИмя)).ЭтоИстина(); +КонецПроцедуры + +//В подкаталоге "folder0" рабочего каталога существует каталог "folder02" +Процедура ВПодкаталогеРабочегоКаталогаСуществуетКаталог(Знач ПутьПодКаталога, Знач ПутьПроверяемогоКаталога) Экспорт + ОбъектКаталога = Новый Файл(ОбъединитьПути(РабочийКаталог(), ПутьПодКаталога, ПутьПроверяемогоКаталога)); + Ожидаем.Что(ОбъектКаталога.Существует(), СтрШаблон("Ожидаем, что каталог <%1> существует, а его нет!", ОбъектКаталога.ПолноеИмя)).ЭтоИстина(); +КонецПроцедуры + +//В рабочем каталоге существует файл "file0.txt" +Процедура ВРабочемКаталогеСуществуетФайл(Знач ПутьФайла) Экспорт + ОбъектФайл = Новый Файл(ОбъединитьПути(РабочийКаталог(), ПутьФайла)); + Ожидаем.Что(ОбъектФайл.Существует(), СтрШаблон("Ожидаем, что файл <%1> существует, а его нет!", ОбъектФайл.ПолноеИмя)).ЭтоИстина(); +КонецПроцедуры + +//В подкаталоге "folder0" рабочего каталога существует файл "file02" +Процедура ВПодкаталогеРабочегоКаталогаСуществуетФайл(Знач ПутьПодКаталога, Знач ПутьФайла) Экспорт + ОбъектФайл = Новый Файл(ОбъединитьПути(РабочийКаталог(), ПутьПодКаталога, ПутьФайла)); + Ожидаем.Что(ОбъектФайл.Существует(), СтрШаблон("Ожидаем, что файл <%1> существует, а его нет!", ОбъектФайл.ПолноеИмя)).ЭтоИстина(); +КонецПроцедуры + +//Каталог "folder0/folder01" существует +Процедура КаталогСуществует(Знач ПутьКаталога) Экспорт + ОбъектКаталога = Новый Файл(ОбъединитьПути(ТекущийКаталог(), ПутьКаталога)); + Ожидаем.Что(ОбъектКаталога.Существует(), СтрШаблон("Ожидаем, что каталог <%1> существует, а его нет!", ОбъектКаталога.ПолноеИмя)).ЭтоИстина(); +КонецПроцедуры + +//Каталог "folder0/folder01" не существует +Процедура КаталогНеСуществует(Знач ПутьКаталога) Экспорт + ОбъектКаталога = Новый Файл(ОбъединитьПути(ТекущийКаталог(), ПутьКаталога)); + Ожидаем.Что(ОбъектКаталога.Существует(), СтрШаблон("Ожидаем, что каталог <%1> нет, а он существует!", ОбъектКаталога.ПолноеИмя)).ЭтоЛожь(); +КонецПроцедуры + +//Файл "folder0/file01.txt" существует +Процедура ФайлСуществует(Знач ПутьФайла) Экспорт + ОбъектФайл = Новый Файл(ОбъединитьПути(ТекущийКаталог(), ПутьФайла)); + Ожидаем.Что(ОбъектФайл.Существует(), СтрШаблон("Ожидаем, что файл <%1> существует, а его нет!", ОбъектФайл.ПолноеИмя)).ЭтоИстина(); +КонецПроцедуры + +//Файл "folder0/file01.txt" не существует +Процедура ФайлНеСуществует(Знач ПутьФайла) Экспорт + ОбъектФайл = Новый Файл(ОбъединитьПути(ТекущийКаталог(), ПутьФайла)); + Ожидаем.Что(ОбъектФайл.Существует(), СтрШаблон("Ожидаем, что файла <%1> нет, а он существует!", ОбъектФайл.ПолноеИмя)).ЭтоЛожь(); +КонецПроцедуры + +//Я установил рабочий каталог как текущий каталог +Процедура ЯУстановилРабочийКаталогКакТекущийКаталог() Экспорт + СтекТекущихКаталогов = ПолучитьСтекТекущихКаталогов(); + СтекТекущихКаталогов.Вставить(0, ТекущийКаталог()); + + УстановитьТекущийКаталог(РабочийКаталог()); +КонецПроцедуры + +//Я установил подкаталог "folder0" рабочего каталога как текущий каталог +Процедура ЯУстановилПодкаталогРабочегоКаталогаКакТекущийКаталог(Знач ПутьКаталога) Экспорт + ПолныйПутьКаталога = ОбъединитьПути(РабочийКаталог(), ПутьКаталога); + + СтекТекущихКаталогов = ПолучитьСтекТекущихКаталогов(); + СтекТекущихКаталогов.Вставить(0, ТекущийКаталог()); + + УстановитьТекущийКаталог(ПолныйПутьКаталога); +КонецПроцедуры + +//Я восстановил предыдущий каталог +Процедура ЯВосстановилПредыдущийКаталог() Экспорт + СтекТекущихКаталогов = ПолучитьСтекТекущихКаталогов(); + Если Не ЗначениеЗаполнено(СтекТекущихКаталогов) Тогда + ВызватьИсключение "Невозможно восстановить каталог, т.к. стек текущих каталогов пуст"; + КонецЕсли; + + УстановитьТекущийКаталог(СтекТекущихКаталогов[0]); + СтекТекущихКаталогов.Удалить(0); +КонецПроцедуры + +//Я сохраняю каталог проекта в контекст +Процедура ЯСохраняюКаталогПроектаВКонтекст() Экспорт + КаталогТекущегоПроекта = БДД.КаталогПроверяемогоПроекта(); + БДД.СохранитьВКонтекст("КаталогПроекта", КаталогТекущегоПроекта); +КонецПроцедуры + +//Я показываю каталог проекта +Процедура ЯПоказываюКаталогПроекта() Экспорт + Сообщить(БДД.ПолучитьИзКонтекста("КаталогПроекта")); +КонецПроцедуры + +//Я показываю рабочий каталог +Процедура ЯПоказываюРабочийКаталог() Экспорт + Сообщить(РабочийКаталог()); +КонецПроцедуры + +//Я показываю текущий каталог +Процедура ЯПоказываюТекущийКаталог() Экспорт + Сообщить(ТекущийКаталог()); +КонецПроцедуры + +//Файл "folder0/file01.txt" в рабочем каталоге содержит "Текст файла" +Процедура ФайлВРабочемКаталогеСодержит(Знач ПутьФайла, Знач ЧтоИщем) Экспорт + Файл = Новый Файл(ОбъединитьПути(РабочийКаталог(), ПутьФайла)); + ПроверитьСодержимоеФайла(Файл, ЧтоИщем); +КонецПроцедуры + +//Файл "folder0/file01.txt" в рабочем каталоге не содержит "Не существующий текст" +Процедура ФайлВРабочемКаталогеНеСодержит(Знач ПутьФайла, Знач ЧтоИщем) Экспорт + Файл = Новый Файл(ОбъединитьПути(РабочийКаталог(), ПутьФайла)); + ПроверитьОтсутствиеВФайле(Файл, ЧтоИщем); +КонецПроцедуры + +//Файл "folder0/file01.txt" содержит "Текст файла" +Процедура ФайлСодержит(Знач ПутьФайла, Знач ЧтоИщем) Экспорт + Файл = Новый Файл(ОбъединитьПути(ТекущийКаталог(), ПутьФайла)); + ПроверитьСодержимоеФайла(Файл, ЧтоИщем); +КонецПроцедуры + +//Файл "folder0/file01.txt" не содержит "Не существующий текст" +Процедура ФайлНеСодержит(Знач ПутьФайла, Знач ЧтоИщем) Экспорт + Файл = Новый Файл(ОбъединитьПути(ТекущийКаталог(), ПутьФайла)); + ПроверитьОтсутствиеВФайле(Файл, ЧтоИщем); +КонецПроцедуры + + +//{ Служебные методы +Функция РабочийКаталог() + Возврат БДД.ПолучитьИзКонтекста("РабочийКаталог"); +КонецФункции + +Функция ПолучитьСтекТекущихКаталогов() + СтекТекущихКаталогов = БДД.ПолучитьИзКонтекста("СтекТекущихКаталогов"); + Если СтекТекущихКаталогов = Неопределено Тогда + СтекТекущихКаталогов = Новый Массив; + БДД.СохранитьВКонтекст("СтекТекущихКаталогов", СтекТекущихКаталогов); + КонецЕсли; + Возврат СтекТекущихКаталогов; +КонецФункции // Получить() + +Процедура СоздатьФайлПример(Знач ПутьФайла) Экспорт + ЗаписьТекста = Новый ЗаписьТекста(ПутьФайла); + ЗаписьТекста.Записать("Текст файла"); + ЗаписьТекста.Закрыть(); +КонецПроцедуры + +Функция ПрочитатьТекстФайла(Знач Файл, Кодировка = "UTF-8") + ЧтениеТекста = Новый ЧтениеТекста; + ЧтениеТекста.Открыть(Файл.ПолноеИмя, Кодировка); + + Строка = ЧтениеТекста.Прочитать(); + ЧтениеТекста.Закрыть(); + Возврат Строка; +КонецФункции // ПрочитатьТекстФайла() + +Процедура ПроверитьСодержимоеФайла(Знач Файл, Знач ЧтоИщем) + ТекстФайла = ПрочитатьТекстФайла(Файл); + ОписаниеОшибки = СтрШаблон("Ожидали, что файл <%1> содержит `<%2>`, а это не так!", Файл.ПолноеИмя, ЧтоИщем); + Ожидаем.Что(ТекстФайла, ОписаниеОшибки).Содержит(ЧтоИщем); +КонецПроцедуры + +Процедура ПроверитьОтсутствиеВФайле(Знач Файл, Знач ЧтоИщем) + ТекстФайла = ПрочитатьТекстФайла(Файл); + ОписаниеОшибки = СтрШаблон("Ожидали, что файл <%1> не содержит `<%2>`, а это не так!", Файл.ПолноеИмя, ЧтоИщем); + Ожидаем.Что(ТекстФайла, ОписаниеОшибки).Не_().Содержит(ЧтоИщем); +КонецПроцедуры + +//} diff --git "a/features/lib/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\260\320\275\320\264.feature" "b/features/lib/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\260\320\275\320\264.feature" index 631d470..b1448cf 100644 --- "a/features/lib/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\260\320\275\320\264.feature" +++ "b/features/lib/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\260\320\275\320\264.feature" @@ -5,8 +5,10 @@ Я хочу иметь возможность выполнять команды Чтобы я мог проще автоматизировать больше действий на OneScript -Контекст: Очищаю параметры команды +# Очищаю параметры команд +Контекст: Допустим Я очищаю параметры команды "git" в контексте + И Я очищаю параметры команды "oscript" в контексте И я включаю отладку лога с именем "git" И я выключаю отладку лога с именем "git" @@ -24,12 +26,51 @@ Сценарий: Выполнение команды с параметрами, добавляемыми раздельно Когда Я добавляю параметр "--version" для команды "git" И Я выполняю команду "git" - Тогда Я сообщаю вывод команды "git" - И Вывод команды "git" содержит "version" + Тогда Вывод команды "git" содержит "version" И Код возврата команды "git" равен 0 Сценарий: Выполнение команды с параметрами-шаблонами Когда Я выполняю команду "oscript" c параметрами "<КаталогПроекта>" - Тогда Я сообщаю вывод команды "oscript" - И Код возврата команды "oscript" равен 2 + Тогда Код возврата команды "oscript" равен 2 И Вывод команды "oscript" не содержит "КаталогПроекта" + +Сценарий: Получение вывода последней команды + Когда Я выполняю команду "oscript" + Тогда Я показываю вывод команды + Тогда я вижу в консоли вывод + """ + Usage: + + I. Script execution: oscript.exe [script arguments..] + + II. Special mode: oscript.exe [script arguments..] + Mode can be one of these: + """ + И я не вижу в консоли вывод "Несуществующий вывод команды" + +Сценарий: Проверка вывода последней команды с помощью таблицы подстрок + Когда Я выполняю команду "oscript" + И я вижу в консоли вывод + | Usage | + | Special mode: oscript.exe | + И я не вижу в консоли вывод + | Несуществующая строка | + | Несуществующая строка | + +Сценарий: Проверка вывода команды с помощью таблицы подстрок + Когда Я выполняю команду "oscript" + И Вывод команды "oscript" содержит + | Usage | + | Special mode: oscript.exe | + И Вывод команды "oscript" не содержит + | Несуществующая строка | + | Несуществующая строка | + +Сценарий: Проверка вывода регулярными выражениями + Когда Я выполняю команду "oscript" c параметрами "-version" + Тогда я вижу в консоли строку подобно "(\d+\.){3}\d+" + И я не вижу в консоли строку подобно "(\d+\.){5}" + +Сценарий: Получение кода возврата последней команды + Когда Я выполняю команду "oscript" + Тогда Код возврата равен 0 diff --git "a/features/lib/\320\244\320\260\320\271\320\273\320\276\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270.feature" "b/features/lib/\320\244\320\260\320\271\320\273\320\276\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270.feature" index 499bc20..3383b0b 100644 --- "a/features/lib/\320\244\320\260\320\271\320\273\320\276\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270.feature" +++ "b/features/lib/\320\244\320\260\320\271\320\273\320\276\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270.feature" @@ -5,13 +5,16 @@ Я хочу иметь возможность выполнять различные файловые операции в тексте фич Чтобы я мог проще протестировать и автоматизировать больше действий на OneScript -Контекст: Инициализация рабочего каталога и создание каталогов +Контекст: +# Инициализация рабочего каталога и создание каталогов Допустим Я создаю временный каталог и сохраняю его в контекст И Я устанавливаю временный каталог как рабочий каталог И Я создаю каталог "folder0/folder01" в рабочем каталоге И Я создаю каталог "folder011" в подкаталоге "folder0/folder01" рабочего каталога + Допустим Я создаю файл "folder0/file01.txt" в рабочем каталоге + Сценарий: Создание каталогов Тогда В рабочем каталоге существует каталог "folder0/folder01" И В подкаталоге "folder0/folder01" рабочего каталога существует каталог "folder011" @@ -39,6 +42,7 @@ Сценарий: Управление стеком текущих каталогов Когда Я создаю файл "folder0/file01.txt" в рабочем каталоге И Я установил рабочий каталог как текущий каталог + И Я показываю текущий каталог И Я установил подкаталог "folder0" рабочего каталога как текущий каталог Тогда Каталог "folder01" существует @@ -54,8 +58,8 @@ Тогда Я показываю каталог проекта И Я показываю рабочий каталог -Контекст: - Допустим Я создаю файл "folder0/file01.txt" в рабочем каталоге +# Контекст: +# Допустим Я создаю файл "folder0/file01.txt" в рабочем каталоге Сценарий: Анализ текста файлов в рабочем каталоге Тогда Файл "folder0/file01.txt" в рабочем каталоге содержит "Текст файла" diff --git a/lib.config b/lib.config index dba343d..34158ca 100644 --- a/lib.config +++ b/lib.config @@ -4,4 +4,5 @@ + \ No newline at end of file diff --git a/packagedef b/packagedef index 850bc59..6fd92ae 100644 --- a/packagedef +++ b/packagedef @@ -1,12 +1,16 @@ - +ПутьКСценариюПараметров = ОбъединитьПути(ТекущийСценарий().Каталог, "src", "Модули", "Константы_1bdd.os"); +Константы_1bdd = ЗагрузитьСценарий(ПутьКСценариюПараметров); + Описание.Имя("1bdd") - .Версия("1.3") - .ЗависитОт("logos") - .ЗависитОт("cmdline") - .ЗависитОт("tempfiles") - .ЗависитОт("asserts") - .ЗависитОт("1commands") - .ЗависитОт("fs") + .Версия(Константы_1bdd.ВерсияПродукта) + .ВерсияСреды("1.0.16") + .ЗависитОт("logos", "0.5") + .ЗависитОт("cmdline", "0.4.1") + .ЗависитОт("tempfiles", "0.2.1") + .ЗависитОт("asserts", "0.3.1") + .ЗависитОт("1commands", "1.1.1") + .ЗависитОт("fs", "0.3") + .ЗависитОт("strings", "0.4.1") .ВключитьФайл("src") .ВключитьФайл("tests") .ВключитьФайл("features") diff --git a/src/bdd-exec.os b/src/bdd-exec.os index d30acc2..f58f674 100644 --- a/src/bdd-exec.os +++ b/src/bdd-exec.os @@ -15,8 +15,6 @@ #Использовать asserts #Использовать strings -// #Использовать ".." - Перем Лог; Перем ЧитательГеркин; @@ -38,6 +36,7 @@ Перем КешИсполнителейШагов; Перем ПервичныйТекущийКаталог; +Перем СохраненныйТекущийКаталог; //////////////////////////////////////////////////////////////////// //{ Программный интерфейс @@ -113,7 +112,9 @@ // Функция ВыполнитьФичу(Знач ПарамФайлФичи, Знач ФайлБиблиотек = Неопределено, Знач ИскатьВПодкаталогах = Истина, Знач ПарамИспользоватьБыстрыйОстановНаОшибке = Ложь, Знач ПарамИмяЭлементаСценария = "") Экспорт - + + СохранитьТекущийКаталог(); + ФайлФичи = ПарамФайлФичи; ИспользоватьБыстрыйОстановНаОшибке = ПарамИспользоватьБыстрыйОстановНаОшибке; ИмяЭлементаСценария = ПарамИмяЭлементаСценария; @@ -314,6 +315,8 @@ РезультатыВыполнения = ВыполнитьДеревоФич(РезультатыРазбора, НовыйНаборБиблиотечныхШагов, ОписаниеИсполнителяШагов); + ВосстановитьТекущийКаталог(); + Возврат РезультатыВыполнения; КонецФункции @@ -893,6 +896,16 @@ Возврат Рез; КонецФункции // СтатусыВыполнения() +Процедура СохранитьТекущийКаталог() + Лог.Отладка("Сохранил текущий каталог %1", СохраненныйТекущийКаталог); + СохраненныйТекущийКаталог = ТекущийКаталог(); +КонецПроцедуры + +Процедура ВосстановитьТекущийКаталог() + Лог.Отладка("Восстановил текущий каталог %1", СохраненныйТекущийКаталог); + УстановитьТекущийКаталог(СохраненныйТекущийКаталог); +КонецПроцедуры + Функция Инициализация() Лог = Логирование.ПолучитьЛог(ИмяЛога()); Лог.УстановитьРаскладку(ЭтотОбъект); diff --git a/src/bdd-generate.os b/src/bdd-generate.os index c18edab..d30f014 100644 --- a/src/bdd-generate.os +++ b/src/bdd-generate.os @@ -152,6 +152,7 @@ Если Не ЭтоПервичнаяГенерация Тогда ЗаписатьМетодыВФайл(ТаблицаМодуляШагов, НаборМетодовМодуляШагов, Буфер); + Буфер.Добавить(""); КонецЕсли; Для каждого ОписаниеИсполнителяШагов Из НаборШаговФичи Цикл diff --git a/src/bdd.os b/src/bdd.os index 490cf50..722ca56 100644 --- a/src/bdd.os +++ b/src/bdd.os @@ -16,17 +16,15 @@ Перем Лог; Перем УдалятьВременныеФайлы; -Перем СохраненныйТекущийКаталог; Функция Версия() - Возврат "1.3"; + Возврат Константы_1bdd.ВерсияПродукта; КонецФункции // Версия() //{ Точка входа в приложение Процедура ОсновнаяРабота() Лог = Логирование.ПолучитьЛог("bdd"); УдалятьВременныеФайлы = Истина; - СохранитьТекущийКаталог(); Сообщить(СтрШаблон("BDD for OneScript ver.%1", Версия())); @@ -193,7 +191,6 @@ Знач ИмяЭлементаСценария, Знач ПутьОтчетаJUnit) Лог.Отладка("ПутьФичи %1", ПутьФичи); - ТекущийКаталогСохр = ТекущийКаталог(); ПутьИсполнителя = ОбъединитьПути(ТекущийСценарий().Каталог, "bdd-exec.os"); Лог.Отладка("Создаю исполнителя. Путь %1", ПутьИсполнителя); @@ -212,8 +209,6 @@ РезультатыВыполнения = ИсполнительБДД.ВыполнитьФичу(ФайлФичи, ФайлБиблиотек, ИскатьВПодкаталогах, ИспользоватьБыстрыйОстановНаОшибке, ИмяЭлементаСценария); - УстановитьТекущийКаталог(ТекущийКаталогСохр); - Если РезультатыВыполнения.Строки.Количество() > 0 Тогда СтатусВыполнения = ИсполнительБДД.ПолучитьИтоговыйСтатусВыполнения(РезультатыВыполнения); @@ -317,17 +312,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_1bdd.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_1bdd.os" new file mode 100644 index 0000000..cafa4a4 --- /dev/null +++ "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_1bdd.os" @@ -0,0 +1,5 @@ +Перем ВерсияПродукта Экспорт; + +/////////////////////////////////////////////////////////////// + +ВерсияПродукта = "1.4";