Skip to content

Commit 6168379

Browse files
authored
Merge pull request #187 from khorevaa/feature/new-command-all
Обновления команды all
2 parents aacdcb4 + 540b805 commit 6168379

File tree

11 files changed

+533
-175
lines changed

11 files changed

+533
-175
lines changed

features/cmd/all.feature

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# language: ru
2+
3+
Функционал: Проверка работы команды all
4+
Как Пользователь
5+
Я хочу выполнить клонирование существующего репозитория гит
6+
Чтобы выполнять автоматическую выгрузку конфигураций из хранилища
7+
8+
Структура сценария: <Сценарий>
9+
Дано Я очищаю параметры команды "gitsync" в контексте
10+
И Я создаю новый объект ГитРепозиторий
11+
И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке
12+
13+
# Подготовка хранилища 1
14+
И Я создаю временный каталог и сохраняю его в переменной "КаталогХранилища1С_1"
15+
И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С_1"
16+
И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников_1"
17+
И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников_1"
18+
И Я создаю тестовой файл AUTHORS в каталоге из переменной "ПутьКаталогаИсходников_1"
19+
И Я записываю "0" в файл VERSION в каталоге из переменной "ПутьКаталогаИсходников_1"
20+
21+
# Подготовка хранилища 2
22+
И Я создаю временный каталог и сохраняю его в переменной "КаталогХранилища1С_2"
23+
И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С_2"
24+
И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников_2"
25+
И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников_2"
26+
И Я создаю тестовой файл AUTHORS в каталоге из переменной "ПутьКаталогаИсходников_2"
27+
И Я записываю "0" в файл VERSION в каталоге из переменной "ПутьКаталогаИсходников_2"
28+
29+
# Подготовка хранилища 2
30+
И Я создаю временный каталог и сохраняю его в переменной "КаталогХранилищаРасширения"
31+
И я скопировал каталог тестового хранилища конфигурации расширения в каталог из переменной "КаталогХранилищаРасширения"
32+
И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходниковРасширения"
33+
И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходниковРасширения"
34+
И Я создаю тестовой файл AUTHORS в каталоге из переменной "ПутьКаталогаИсходниковРасширения"
35+
И Я записываю "0" в файл VERSION в каталоге из переменной "ПутьКаталогаИсходниковРасширения"
36+
37+
И Я создаю файл настройки из файла <ПутьКФайлуШаблона> и сохраняю в переменную "FILE"
38+
39+
Допустим Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория"
40+
И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория"
41+
# И Я добавляю параметр "-v" для команды "gitsync"
42+
И Я добавляю параметр "all" для команды "gitsync"
43+
И Я добавляю параметр <ДопПараметрыЗапуска> для команды "gitsync"
44+
И Я добавляю позиционный параметр для команды "gitsync" из переменной "FILE"
45+
Когда Я выполняю команду "gitsync"
46+
Тогда Вывод команды "gitsync" содержит <Результат>
47+
И Вывод команды "gitsync" не содержит "Внешнее исключение"
48+
И Код возврата команды "gitsync" равен 0
49+
50+
Примеры:
51+
| Сценарий | ПутьКФайлуШаблона | ДопПараметрыЗапуска | Результат |
52+
# | Выполнение синхронизации по имени | tests/fixtures/default.yaml | --name ТестовыйРепозиторий | ИНФОРМАЦИЯ - Наименование: <ТестовыйРепозиторий> |
53+
# | Выполнение синхронизации с несколькими хранилищами | tests/fixtures/default.yaml | | ИНФОРМАЦИЯ - Завершено выполнение команды <all>|
54+
| Выполнение синхронизации расширениями | tests/fixtures/ext.yaml | | ИНФОРМАЦИЯ - Завершено выполнение команды <all> |
55+

features/cmd/fixtures/default.yaml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
globals:
2+
storage-user: Администратор
3+
storage-pwd: ''
4+
git-path: git
5+
v8version: 8.3
6+
domain-email: localhost
7+
lic-try-count: 5
8+
plugins:
9+
enable:
10+
- test
11+
- test2
12+
disable:
13+
- test3
14+
repositories:
15+
- name: ТестовыйРепозиторий
16+
# disable: false
17+
path: <КаталогХранилища1С_1>
18+
dir: <ПутьКаталогаИсходников_1>
19+
plugins:
20+
more:
21+
- test3
22+
plugins-config:
23+
24+
- name: ТестовыйРепозиторий2
25+
# disable: true
26+
path: <КаталогХранилища1С_2>
27+
dir: <ПутьКаталогаИсходников_2>
28+
storage-user: Администратор
29+
storage-pwd: ''
30+
git-path: git
31+
temp-dir: ""
32+
v8version: 8.3
33+
domain-email: localhost
34+
lic-try-count: 5

features/cmd/step_definitions/all.os

Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
#Использовать tempfiles
2+
#Использовать yaml
3+
4+
// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd
5+
6+
Перем БДД; //контекст фреймворка 1bdd
7+
8+
// Метод выдает список шагов, реализованных в данном файле-шагов
9+
Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт
10+
БДД = КонтекстФреймворкаBDD;
11+
12+
ВсеШаги = Новый Массив;
13+
14+
ВсеШаги.Добавить("ЯСоздаюТестовойФайлAuthorsВКаталогеИзПеременной");
15+
ВсеШаги.Добавить("ЯЗаписываюВФайлVersionВКаталогеИзПеременной");
16+
ВсеШаги.Добавить("ЯСоздаюФайлНастройкиИзФайлаИСохраняюВПеременную");
17+
ВсеШаги.Добавить("ЯДобавляюПараметр__Параметрдлятаблицы____Параметрстрока__Gitsync");
18+
19+
Возврат ВсеШаги;
20+
КонецФункции
21+
22+
// Реализация шагов
23+
24+
// Процедура выполняется перед запуском каждого сценария
25+
Процедура ПередЗапускомСценария(Знач Узел) Экспорт
26+
27+
КонецПроцедуры
28+
29+
// Процедура выполняется после завершения каждого сценария
30+
Процедура ПослеЗапускаСценария(Знач Узел) Экспорт
31+
32+
КонецПроцедуры
33+
34+
35+
36+
//Я создаю тестовой файл AUTHORS в каталоге из переменной "ПутьКаталогаИсходников_1"
37+
Процедура ЯСоздаюТестовойФайлAuthorsВКаталогеИзПеременной(Знач ИмяПеременной) Экспорт
38+
ПутьКаталогаИсходников = БДД.ПолучитьИзКонтекста(ИмяПеременной);
39+
ФайлАвторов = Новый ЗаписьТекста;
40+
ФайлАвторов.Открыть(ОбъединитьПути(ПутьКаталогаИсходников, "AUTHORS"), "utf-8");
41+
ФайлАвторов.ЗаписатьСтроку("Администратор=Администратор <admin@localhost>");
42+
ФайлАвторов.ЗаписатьСтроку("Отладка=Отладка <debug@localhost>");
43+
ФайлАвторов.Закрыть();
44+
КонецПроцедуры
45+
46+
//Я записываю "0" в файл VERSION в каталоге из переменной "ПутьКаталогаИсходников_1"
47+
Процедура ЯЗаписываюВФайлVersionВКаталогеИзПеременной(Знач НомерВерсии, Знач ИмяПеременной) Экспорт
48+
49+
ПутьКаталогаИсходников = БДД.ПолучитьИзКонтекста(ИмяПеременной);
50+
51+
ПутьКФайлуВерсий = ОбъединитьПути(ПутьКаталогаИсходников,"VERSION");
52+
Попытка
53+
Запись = Новый ЗаписьТекста(ПутьКФайлуВерсий, "utf-8");
54+
Запись.ЗаписатьСтроку("<?xml version=""1.0"" encoding=""UTF-8""?>");
55+
Запись.ЗаписатьСтроку("<VERSION>" + НомерВерсии + "</VERSION>");
56+
Запись.Закрыть();
57+
Исключение
58+
Если Запись <> Неопределено Тогда
59+
ОсвободитьОбъект(Запись);
60+
КонецЕсли;
61+
ВызватьИсключение;
62+
КонецПопытки;
63+
КонецПроцедуры
64+
65+
//Я создаю файл настройки из файла <fixtures/default.yaml> и сохраняю в переменную "FILE"
66+
Процедура ЯСоздаюФайлНастройкиИзФайлаИСохраняюВПеременную(Знач ПутьКФайлу, Знач ИмяПеременной) Экспорт
67+
68+
69+
ПутьКаталогаИсходников_1 = БДД.ПолучитьИзКонтекста("ПутьКаталогаИсходников_1");
70+
КаталогХранилища1С_1 = БДД.ПолучитьИзКонтекста("КаталогХранилища1С_1");
71+
72+
ПутьКаталогаИсходников_2 = БДД.ПолучитьИзКонтекста("ПутьКаталогаИсходников_2");
73+
КаталогХранилища1С_2 = БДД.ПолучитьИзКонтекста("КаталогХранилища1С_2");
74+
75+
ПутьКаталогаИсходниковРасширения = БДД.ПолучитьИзКонтекста("ПутьКаталогаИсходниковРасширения");
76+
КаталогХранилищаРасширения = БДД.ПолучитьИзКонтекста("КаталогХранилищаРасширения");
77+
78+
79+
ЧтениеТекста = Новый ЧтениеТекста();
80+
ЧтениеТекста.Открыть(ПутьКФайлу, КодировкаТекста.UTF8);
81+
ТекстYaml = ЧтениеТекста.Прочитать();
82+
ЧтениеТекста.Закрыть();
83+
84+
ТекстYaml = СтрЗаменить(ТекстYaml, "<ПутьКаталогаИсходников_1>", ПутьКаталогаИсходников_1);
85+
ТекстYaml = СтрЗаменить(ТекстYaml, "<КаталогХранилища1С_1>", КаталогХранилища1С_1);
86+
87+
ТекстYaml = СтрЗаменить(ТекстYaml, "<ПутьКаталогаИсходников_2>", ПутьКаталогаИсходников_2);
88+
ТекстYaml = СтрЗаменить(ТекстYaml, "<КаталогХранилища1С_2>", КаталогХранилища1С_2);
89+
90+
ТекстYaml = СтрЗаменить(ТекстYaml, "<ПутьКаталогаИсходниковРасширения>", ПутьКаталогаИсходниковРасширения);
91+
ТекстYaml = СтрЗаменить(ТекстYaml, "<КаталогХранилищаРасширения>", КаталогХранилищаРасширения);
92+
93+
ВременныйФайл = ВременныеФайлы.СоздатьФайл(".yaml");
94+
95+
ЗаписьТекста = Новый ЗаписьТекста(ВременныйФайл);
96+
ЗаписьТекста.Записать(ТекстYaml);
97+
ЗаписьТекста.Закрыть();
98+
99+
100+
ЧтениеТекста = Новый ЧтениеТекста();
101+
ЧтениеТекста.Открыть(ВременныйФайл, КодировкаТекста.UTF8);
102+
ТекстYaml = ЧтениеТекста.Прочитать();
103+
ЧтениеТекста.Закрыть();
104+
105+
ПарсерYAml = Новый ПарсерYaml();
106+
Результа = ПарсерYAml.ПрочитатьYaml(ТекстYaml);
107+
108+
ТекстJson = ОБъектВJson(Результа);
109+
110+
ВременныйФайл = ВременныеФайлы.СоздатьФайл(".json");
111+
ЗаписьТекста = Новый ЗаписьТекста(ВременныйФайл);
112+
ЗаписьТекста.Записать(ТекстJson);
113+
ЗаписьТекста.Закрыть();
114+
115+
БДД.СохранитьВКонтекст(ИмяПеременной, ВременныйФайл);
116+
117+
КонецПроцедуры
118+
119+
120+
Функция ОБъектВJson(Знач Объект, ПараметрыЗаписи = Неопределено) Экспорт
121+
122+
Если ПараметрыЗаписи = Неопределено Тогда
123+
ПараметрыЗаписи = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, " ", ,,,,,, Истина);
124+
КонецЕсли;
125+
126+
ЗаписьJSON = Новый ЗаписьJSON;
127+
ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписи);
128+
ЗаписатьJSON(ЗаписьJSON, Объект);
129+
130+
Возврат ЗаписьJSON.Закрыть();
131+
132+
КонецФункции
133+
134+
Функция ОбъектИзJson(ТекстJSON, ЧитатьВСтруктуру = Ложь, ФорматДаты = Неопределено) Экспорт
135+
136+
Если ФорматДаты = Неопределено Тогда
137+
ФорматДаты = ФорматДатыJSON.ISO;
138+
КонецЕсли;
139+
ЧтениеJSON = Новый ЧтениеJSON;
140+
ЧтениеJSON.УстановитьСтроку(ТекстJSON);
141+
142+
Объект = ПрочитатьJSON(ЧтениеJSON,
143+
НЕ ЧитатьВСтруктуру,,
144+
ФорматДаты);
145+
ЧтениеJSON.Закрыть();
146+
Возврат Объект;
147+
148+
КонецФункции

0 commit comments

Comments
 (0)