1
0
mirror of https://github.com/bia-technologies/precommit4onec.git synced 2026-04-28 20:15:33 +02:00
Files
precommit4onec/features/step_definitions/precommitonec_feature.os
T
Dmitriy Medvedev 73dbc0a02e #ONECICD-174
https://github.com/bia-technologies/precommit4onec/issues/1

Поправил ошибку при коммите когда прекоммит подключался до инициализации репо первым коммитом.
2019-07-02 20:13:17 +03:00

169 lines
11 KiB
Plaintext

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