// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd #Использовать gitrunner #Использовать tempfiles #Использовать asserts Перем БДД; Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт БДД = КонтекстФреймворкаBDD; ВсеШаги = Новый Массив; ВсеШаги.Добавить("ЯСоздаюВременныйКаталогИЗапоминаюЕгоКак"); ВсеШаги.Добавить("ЯСоздаюНовыйРепозиторийВКаталогеИЗапоминаюЕгоКак"); ВсеШаги.Добавить("ЯПереключаюсьВоВременныйКаталог"); ВсеШаги.Добавить("ВКаталогеРепозиторияЕстьФайл"); ВсеШаги.Добавить("ЯКопируюФайлВКаталогРепозитория"); ВсеШаги.Добавить("ЯФиксируюИзмененияВРепозиторииСКомментарием"); Возврат ВсеШаги; КонецФункции // я создаю временный каталог и запоминаю его как "Алиас" Процедура ЯСоздаюВременныйКаталогИЗапоминаюЕгоКак(Алиас) Экспорт НовыйВременныйКаталог = ВременныеФайлы.СоздатьКаталог(); СоздатьКаталог(НовыйВременныйКаталог); БДД.СохранитьВКонтекст(Алиас, НовыйВременныйКаталог); КонецПроцедуры // я переключаюсь во временный каталог "АлиасКаталога" Процедура ЯПереключаюсьВоВременныйКаталог(АлиасКаталога)Экспорт КаталогСкрипта = БДД.ПолучитьИзКонтекста("КаталогПроекта"); Если НЕ ЗначениеЗаполнено(КаталогСкрипта) Тогда БДД.СохранитьВКонтекст("КаталогПроекта", ТекущийКаталог()); КонецЕсли; КаталогРепозиториев = БДД.ПолучитьИзКонтекста(АлиасКаталога); УстановитьТекущийКаталог(КаталогРепозиториев); КонецПроцедуры // я создаю новый репозиторий "ИмяРепозитория" в каталоге "АлиасКаталога" и запоминаю его как "Алиас" Процедура ЯСоздаюНовыйРепозиторийВКаталогеИЗапоминаюЕгоКак(ИмяРепозитория, АлиасКаталога, Алиас) Экспорт КаталогРепозиториев = БДД.ПолучитьИзКонтекста(АлиасКаталога); КаталогРепозитория = ОбъединитьПути(КаталогРепозиториев, ИмяРепозитория); СоздатьКаталог(КаталогРепозитория); РепозиторийGit = Новый ГитРепозиторий(); РепозиторийGit.УстановитьРабочийКаталог(КаталогРепозитория); РепозиторийGit.Инициализировать(); ТекстовыйДокумент = Новый ТекстовыйДокумент; ТекстовыйДокумент.УстановитьТекст("# Репозиторий " + Алиас); ИмяФайлаreadme = ОбъединитьПути(КаталогРепозитория, "readme.md"); ТекстовыйДокумент.Записать(ИмяФайлаreadme); РепозиторийGit.ДобавитьФайлВИндекс(ИмяФайлаreadme); РепозиторийGit.Закоммитить("init", ИСТИНА); БДД.СохранитьВКонтекст(Алиас, КаталогРепозитория); КонецПроцедуры // В каталоге "ИмяКаталога" репозитория "ИмяРепозитория" есть файл "ИмяФайла" Процедура ВКаталогеРепозиторияЕстьФайл(ИмяКаталога, ИмяРепозитория, ИмяФайла)Экспорт КаталогРепозитория = БДД.ПолучитьИзКонтекста(ИмяРепозитория); ПолноеИмяФайла = ОбъединитьПути(КаталогРепозитория, ИмяКаталога, ИмяФайла); Файл = Новый Файл(ПолноеИмяФайла); Ожидаем.Что(Файл.Существует(), Истина).ЭтоИстина(); КонецПроцедуры // Я копирую файл "ИмяФайла" в каталог репозитория "АлиасРепозитория" Процедура ЯКопируюФайлВКаталогРепозитория(ИмяФайла, АлиасРепозитория) Экспорт КаталогРепозитория = БДД.ПолучитьИзКонтекста(АлиасРепозитория); КаталогСкрипта = БДД.ПолучитьИзКонтекста("КаталогПроекта"); ПутьКФайлу = ОбъединитьПути(КаталогСкрипта, ИмяФайла); Файл = Новый Файл(ПутьКФайлу); КопироватьФайл(ПутьКФайлу, ОбъединитьПути(КаталогРепозитория, Файл.Имя)); КонецПроцедуры // я фиксирую изменения в репозитории "Репозиторий1" с комментарием "demo коммит" Процедура ЯФиксируюИзмененияВРепозиторииСКомментарием(ИмяРепозитория, ТекстКомментария) Экспорт КаталогРепозитория = БДД.ПолучитьИзКонтекста(ИмяРепозитория); РепозиторийGit = Новый ГитРепозиторий(); РепозиторийGit.УстановитьРабочийКаталог(КаталогРепозитория); ПараметрыКоманды = Новый Массив; ПараметрыКоманды.Добавить("add --all"); РепозиторийGit.ВыполнитьКоманду(ПараметрыКоманды); РепозиторийGit.Закоммитить(ТекстКомментария, ИСТИНА); КонецПроцедуры