Skip to content

Commit 6b2fb17

Browse files
committed
Полность реализованы все шаги фичи для gitsync init для #112
Реализовано как правильное поведение, так и неправильное
1 parent dcc7846 commit 6b2fb17

File tree

2 files changed

+113
-24
lines changed

2 files changed

+113
-24
lines changed

features/gitsync-init.feature

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,27 @@
66
Чтобы выполнять автоматическую выгрузку конфигураций из хранилища
77

88
Контекст: Тестовый каталог
9-
Когда я подготовил тестовый каталог
9+
Когда очищаю параметры гитсинк в контексте
10+
И я подготовил тестовый каталог
1011
И я установил тестовый каталог как текущий
1112
И я подключил каталог тестового хранилища конфигурации
1213

1314
Сценарий: Инициализация каталога исходников в пустом каталоге внутри git-репозитория
1415
Допустим я создал каталог git-репозитория "git-repo"
1516
И установил каталог "git-repo" как текущий
1617
И я создал каталог исходников
17-
# Допустим каталог исходников существует
18-
# И каталог исходников находится в иерархии git-репозитария
19-
# И каталог исходников пустой
2018
Когда я передаю путь тестового каталога хранилища конфигурации для запуска gitsync
2119
И я передаю путь каталога исходников для запуска gitsync
2220
И я выполняю команду gitsync "init"
2321
Тогда в каталоге исходников создается файл "AUTHORS"
2422
И в каталоге исходников создается файл "VERSION"
2523
И в каталоге исходников не создается файл ".git"
2624

27-
#Сценарий: Инициализация каталога исходников, не находящегося внутри git-репозитория
28-
# Допустим каталог исходников не находится в иерархии git-репозитория
29-
# Когда я передаю путь тестового каталога хранилища конфигурации для запуска gitsync
30-
# И я передаю имя каталога исходников для запуска gitsync
31-
# И я выполняю команду gitsync "init"
32-
# Тогда мне выдаётся ошибка "Каталог %1 не принадлежит git-репозиторию", где %1 это имя каталога исходников
33-
# И работа команды прекращается.
25+
Сценарий: Инициализация каталога исходников, не находящегося внутри git-репозитория
26+
Допустим я создал каталог исходников
27+
Когда я передаю путь тестового каталога хранилища конфигурации для запуска gitsync
28+
И я передаю путь каталога исходников для запуска gitsync
29+
И я выполняю команду gitsync "init"
30+
Тогда в каталоге исходников создается файл "AUTHORS"
31+
И в каталоге исходников создается файл "VERSION"
32+
И в каталоге исходников создается файл ".git"

features/step_definitions/gitsync-init.os

Lines changed: 103 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
ВсеШаги = Новый Массив;
1414

15+
ВсеШаги.Добавить("ОчищаюПараметрыГитсинкВКонтексте");
1516
ВсеШаги.Добавить("ЯПодготовилТестовыйКаталог");
1617
ВсеШаги.Добавить("ЯУстановилТестовыйКаталогКакТекущий");
1718
ВсеШаги.Добавить("ЯПодключилКаталогТестовогоХранилищаКонфигурации");
@@ -27,22 +28,26 @@
2728
Возврат ВсеШаги;
2829
КонецФункции
2930

31+
3032
// Реализация шагов
3133

3234
// Процедура выполняется перед запуском каждого сценария
3335
Процедура ПередЗапускомСценария(Знач Узел) Экспорт
34-
3536
КонецПроцедуры
3637

3738
// Процедура выполняется после завершения каждого сценария
3839
Процедура ПослеЗапускаСценария(Знач Узел) Экспорт
39-
4040
КонецПроцедуры
4141

4242
Функция ИмяЛога() Экспорт
4343
Возврат "bdd.gitsync.feature";
4444
КонецФункции
4545

46+
//очищаю параметры гитсинк в контексте
47+
Процедура ОчищаюПараметрыГитсинкВКонтексте() Экспорт
48+
БДД.СохранитьВКонтекст("ПараметрыГитсинк", "");
49+
КонецПроцедуры
50+
4651
//я подготовил тестовый каталог
4752
Процедура ЯПодготовилТестовыйКаталог() Экспорт
4853
ВременныйКаталог = Новый Файл(ВременныеФайлы.СоздатьКаталог());
@@ -60,13 +65,15 @@
6065

6166
//я подключил каталог тестового хранилища конфигурации
6267
Процедура ЯПодключилКаталогТестовогоХранилищаКонфигурации() Экспорт
63-
БДД.СохранитьВКонтекст("ПутьКФайлуХранилища1С", ПутьКВременномуФайлуХранилища1С());
68+
БДД.СохранитьВКонтекст("ПутьКФайлуХранилища1С", Новый Файл(ПутьКВременномуФайлуХранилища1С()));
6469
КонецПроцедуры
6570

6671
//я создал каталог git-репозитория "git-repo"
6772
Процедура ЯСоздалКаталогGit_Репозитория(Знач ПутьГитРепозитория) Экспорт
6873
ПутьГитРепозитория = ОбъединитьПути(ТекущийКаталог(), ПутьГитРепозитория);
6974
Лог.Отладка(СтрШаблон("ПутьГитРепозитория <%1>", ПутьГитРепозитория));
75+
СоздатьКаталог(ПутьГитРепозитория);
76+
7077
КодВозврата = ИнициализироватьТестовоеХранилищеГит(ПутьГитРепозитория);
7178
Ожидаем.Что(КодВозврата, "неверно выполнена команда git init").Равно(0);
7279
КонецПроцедуры
@@ -78,32 +85,107 @@
7885

7986
//я создал каталог исходников
8087
Процедура ЯСоздалКаталогИсходников() Экспорт
81-
ВызватьИсключение Новый ИнформацияОбОшибке("Шаг <ЯСоздалКаталогИсходников> не реализован", "Не реализовано.");
88+
ПутьКаталогаИсходников = ОбъединитьПути(ТекущийКаталог(), "src");
89+
СоздатьКаталог(ПутьКаталогаИсходников);
90+
БДД.СохранитьВКонтекст("ПутьКаталогаИсходников", Новый Файл(ПутьКаталогаИсходников));
8291
КонецПроцедуры
8392

8493
//я передаю путь тестового каталога хранилища конфигурации для запуска gitsync
8594
Процедура ЯПередаюПутьТестовогоКаталогаХранилищаКонфигурацииДляЗапускаGitsync() Экспорт
86-
ВызватьИсключение Новый ИнформацияОбОшибке("Шаг <ЯПередаюПутьТестовогоКаталогаХранилищаКонфигурацииДляЗапускаGitsync> не реализован", "Не реализовано.");
95+
ДобавитьПараметрыГитсинк(БДД.ПолучитьИзКонтекста("ПутьКФайлуХранилища1С").ПолноеИмя);
8796
КонецПроцедуры
8897

8998
//я передаю путь каталога исходников для запуска gitsync
9099
Процедура ЯПередаюПутьКаталогаИсходниковДляЗапускаGitsync() Экспорт
91-
ВызватьИсключение Новый ИнформацияОбОшибке("Шаг <ЯПередаюПутьКаталогаИсходниковДляЗапускаGitsync> не реализован", "Не реализовано.");
100+
ДобавитьПараметрыГитсинк(КаталогИсходниковИзКонтекстаБДД());
92101
КонецПроцедуры
93102

94103
//я выполняю команду gitsync "init"
95-
Процедура ЯВыполняюКомандуGitsync(Знач ПарамСтрока1) Экспорт
96-
ВызватьИсключение Новый ИнформацияОбОшибке("Шаг <ЯВыполняюКомандуGitsync> не реализован", "Не реализовано.");
104+
Процедура ЯВыполняюКомандуGitsync(Знач Команда) Экспорт
105+
ПутьГитсинк = ОбъединитьПути(КаталогГитсинк(), "src", "gitsync.os");
106+
107+
ОжидаемыйКодВозврата = 0;
108+
109+
СтрокаКоманды = СтрШаблон("oscript.exe %1 %2 %3 %4", "-encoding=utf-8", ПутьГитсинк, Команда, БДД.ПолучитьИзКонтекста("ПараметрыГитсинк"));
110+
111+
ТекстФайла = "";
112+
КодВозврата = ВыполнитьПроцесс(СтрокаКоманды, ТекстФайла);
113+
114+
БДД.СохранитьВКонтекст("ТекстЛогФайлаГитсинк", ТекстФайла);
115+
116+
Если КодВозврата <> ОжидаемыйКодВозврата Тогда
117+
ВывестиТекст(ТекстФайла);
118+
Ожидаем.Что(КодВозврата, "Код возврата в ЯВыполняюКомандуGitsync").Равно(ОжидаемыйКодВозврата);
119+
КонецЕсли;
97120
КонецПроцедуры
98121

99122
//в каталоге исходников создается файл "AUTHORS"
100-
Процедура ВКаталогеИсходниковСоздаетсяФайл(Знач ПарамСтрока1) Экспорт
101-
ВызватьИсключение Новый ИнформацияОбОшибке("Шаг <ВКаталогеИсходниковСоздаетсяФайл> не реализован", "Не реализовано.");
123+
Процедура ВКаталогеИсходниковСоздаетсяФайл(Знач ПутьФайла) Экспорт
124+
ИскомыйФайл = Новый Файл(ОбъединитьПути(КаталогИсходниковИзКонтекстаБДД(), ПутьФайла));
125+
Ожидаем.Что(ИскомыйФайл.Существует(), "Файл должен был существовать").ЭтоИстина();
102126
КонецПроцедуры
103127

104128
//в каталоге исходников не создается файл ".git"
105-
Процедура ВКаталогеИсходниковНеСоздаетсяФайл(Знач ПарамСтрока1) Экспорт
106-
ВызватьИсключение Новый ИнформацияОбОшибке("Шаг <ВКаталогеИсходниковНеСоздаетсяФайл> не реализован", "Не реализовано.");
129+
Процедура ВКаталогеИсходниковНеСоздаетсяФайл(Знач ПутьФайла) Экспорт
130+
ИскомыйФайл = Новый Файл(ОбъединитьПути(КаталогИсходниковИзКонтекстаБДД(), ПутьФайла));
131+
Ожидаем.Что(ИскомыйФайл.Существует(), "Файл не должен был существовать").ЭтоЛожь();
132+
КонецПроцедуры
133+
134+
Функция ВыполнитьПроцесс(Знач СтрокаВыполнения, ТекстВывода, Знач КодировкаПотока = Неопределено)
135+
Перем ПаузаОжиданияЧтенияБуфера;
136+
137+
ПаузаОжиданияЧтенияБуфера = 10;
138+
МаксСчетчикЦикла = 100000;
139+
140+
Если КодировкаПотока = Неопределено Тогда
141+
КодировкаПотока = КодировкаТекста.UTF8;
142+
КонецЕсли;
143+
Лог.Отладка("СтрокаКоманды "+СтрокаВыполнения);
144+
Процесс = СоздатьПроцесс(СтрокаВыполнения, ТекущийКаталог(), Истина,Истина, КодировкаПотока);
145+
Процесс.Запустить();
146+
147+
ТекстВывода = "";
148+
Счетчик = 0;
149+
150+
Пока Не Процесс.Завершен Цикл
151+
Текст = Процесс.ПотокВывода.Прочитать();
152+
Лог.Отладка("Цикл ПотокаВывода "+Текст);
153+
Если Текст = Неопределено ИЛИ ПустаяСтрока(Текст) Тогда
154+
Прервать;
155+
КонецЕсли;
156+
ТекстВывода = ТекстВывода + Текст;
157+
158+
Счетчик = Счетчик + 1;
159+
Если Счетчик > МаксСчетчикЦикла Тогда
160+
Прервать;
161+
КонецЕсли;
162+
163+
sleep(ПаузаОжиданияЧтенияБуфера);
164+
КонецЦикла;
165+
166+
Процесс.ОжидатьЗавершения();
167+
168+
Текст = Процесс.ПотокВывода.Прочитать();
169+
ТекстВывода = ТекстВывода + Текст;
170+
Лог.Отладка(ТекстВывода);
171+
172+
Возврат Процесс.КодВозврата;
173+
КонецФункции
174+
175+
Процедура ВывестиТекст(Знач Строка)
176+
177+
Лог.Информация("");
178+
Лог.Информация(" ---------------- ---------------- ---------------- ");
179+
Лог.Информация( Строка );
180+
Лог.Информация(" ---------------- ---------------- ---------------- ");
181+
Лог.Информация("");
182+
183+
КонецПроцедуры
184+
185+
Процедура ДобавитьПараметрыГитсинк(Знач НовыйПараметр) Экспорт
186+
ПараметрыГитсинк = БДД.ПолучитьИзКонтекста("ПараметрыГитсинк");
187+
ПараметрыГитсинк = СтрШаблон("%1 %2", ПараметрыГитсинк, НовыйПараметр);
188+
БДД.СохранитьВКонтекст("ПараметрыГитсинк", ПараметрыГитсинк);
107189
КонецПроцедуры
108190

109191
Функция ИнициализироватьТестовоеХранилищеГит(Знач КаталогРепозитория, Знач КакЧистое = Ложь)
@@ -115,14 +197,22 @@
115197

116198
КонецФункции
117199

200+
Функция КаталогИсходниковИзКонтекстаБДД()
201+
Возврат БДД.ПолучитьИзКонтекста("ПутьКаталогаИсходников").ПолноеИмя;
202+
КонецФункции // КаталогИсходниковИзКонтекстаБДД()
203+
118204
Функция ПутьКВременномуФайлуХранилища1С()
119205

120206
Возврат ОбъединитьПути(КаталогFixtures(), "ТестовыйФайлХранилища1С.1CD");
121207

122208
КонецФункции
123209

124210
Функция КаталогFixtures()
125-
Возврат ОбъединитьПути(ОбъединитьПути(ТекущийСценарий().Каталог, "..", "..", "tests"), "fixtures");
211+
Возврат ОбъединитьПути(КаталогГитсинк(), "tests", "fixtures");
212+
КонецФункции
213+
214+
Функция КаталогГитсинк()
215+
Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "..", "..");
126216
КонецФункции
127217

128218
Лог = Логирование.ПолучитьЛог(ИмяЛога());

0 commit comments

Comments
 (0)