Skip to content

Commit 09507f3

Browse files
committed
Тесты на команды all
1 parent 01a5635 commit 09507f3

File tree

4 files changed

+260
-0
lines changed

4 files changed

+260
-0
lines changed

features/cmd/all.feature

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
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+
И Я создаю файл настройки из файла <ПутьКФайлуШаблона> и сохраняю в переменную "FILE"
30+
31+
Допустим Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория"
32+
И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория"
33+
# И Я добавляю параметр "-v" для команды "gitsync"
34+
И Я добавляю параметр "all" для команды "gitsync"
35+
И Я добавляю параметр <ДопПараметрыЗапуска> для команды "gitsync"
36+
И Я добавляю позиционный параметр для команды "gitsync" из переменной "FILE"
37+
Когда Я выполняю команду "gitsync"
38+
Тогда Вывод команды "gitsync" содержит <Результат>
39+
И Вывод команды "gitsync" не содержит "Внешнее исключение"
40+
И Код возврата команды "gitsync" равен 0
41+
42+
Примеры:
43+
| Сценарий | ПутьКФайлуШаблона | ДопПараметрыЗапуска | Результат |
44+
| Выполнение синхронизации по имени | tests/fixtures/default.yaml | --name ТестовыйРепозиторий | ИНФОРМАЦИЯ - Наименование: <ТестовыйРепозиторий> |
45+
| Выполнение синхронизации с несколькими хранилищами | tests/fixtures/default.yaml | | ИНФОРМАЦИЯ - Завершено выполнение команды <all>|
46+
| Выполнение синхронизации расширениями | tests/fixtures/ext.yaml | | ИНФОРМАЦИЯ - Завершено выполнение команды <all> |
47+

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: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
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+
//Я добавляю параметр <--name ТестовыйРепозиторий>" для команды "gitsync"
66+
Процедура ЯДобавляюПараметр__Параметрдлятаблицы____Параметрстрока__Gitsync(Знач Парам1, Знач ПарамСтрока2) Экспорт
67+
ВызватьИсключение Новый ИнформацияОбОшибке("Шаг <ЯДобавляюПараметр__Параметрдлятаблицы____Параметрстрока__Gitsync> не реализован", "Не реализовано.");
68+
КонецПроцедуры
69+
70+
//Я создаю файл настройки из файла <fixtures/default.yaml> и сохраняю в переменную "FILE"
71+
Процедура ЯСоздаюФайлНастройкиИзФайлаИСохраняюВПеременную(Знач ПутьКФайлу, Знач ИмяПеременной) Экспорт
72+
73+
74+
ПутьКаталогаИсходников_1 = БДД.ПолучитьИзКонтекста("ПутьКаталогаИсходников_1");
75+
КаталогХранилища1С_1 = БДД.ПолучитьИзКонтекста("КаталогХранилища1С_1");
76+
77+
ПутьКаталогаИсходников_2 = БДД.ПолучитьИзКонтекста("ПутьКаталогаИсходников_2");
78+
КаталогХранилища1С_2 = БДД.ПолучитьИзКонтекста("КаталогХранилища1С_2");
79+
80+
ЧтениеТекста = Новый ЧтениеТекста();
81+
ЧтениеТекста.Открыть(ПутьКФайлу, КодировкаТекста.UTF8);
82+
ТекстYaml = ЧтениеТекста.Прочитать();
83+
ЧтениеТекста.Закрыть();
84+
85+
ТекстYaml = СтрЗаменить(ТекстYaml, "<ПутьКаталогаИсходников_1>", ПутьКаталогаИсходников_1);
86+
ТекстYaml = СтрЗаменить(ТекстYaml, "<КаталогХранилища1С_1>", КаталогХранилища1С_1);
87+
88+
ТекстYaml = СтрЗаменить(ТекстYaml, "<ПутьКаталогаИсходников_2>", ПутьКаталогаИсходников_2);
89+
ТекстYaml = СтрЗаменить(ТекстYaml, "<КаталогХранилища1С_2>", КаталогХранилища1С_2);
90+
91+
ВременныйФайл = ВременныеФайлы.СоздатьФайл(".yaml");
92+
93+
ЗаписьТекста = Новый ЗаписьТекста(ВременныйФайл);
94+
ЗаписьТекста.Записать(ТекстYaml);
95+
ЗаписьТекста.Закрыть();
96+
97+
98+
ЧтениеТекста = Новый ЧтениеТекста();
99+
ЧтениеТекста.Открыть(ВременныйФайл, КодировкаТекста.UTF8);
100+
ТекстYaml = ЧтениеТекста.Прочитать();
101+
ЧтениеТекста.Закрыть();
102+
103+
ПарсерYAml = Новый ПарсерYaml();
104+
Результа = ПарсерYAml.ПрочитатьYaml(ТекстYaml);
105+
106+
ТекстJson = ОБъектВJson(Результа);
107+
108+
ВременныйФайл = ВременныеФайлы.СоздатьФайл(".json");
109+
ЗаписьТекста = Новый ЗаписьТекста(ВременныйФайл);
110+
ЗаписьТекста.Записать(ТекстJson);
111+
ЗаписьТекста.Закрыть();
112+
113+
БДД.СохранитьВКонтекст(ИмяПеременной, ВременныйФайл);
114+
115+
КонецПроцедуры
116+
117+
118+
Функция ОБъектВJson(Знач Объект, ПараметрыЗаписи = Неопределено) Экспорт
119+
120+
Если ПараметрыЗаписи = Неопределено Тогда
121+
ПараметрыЗаписи = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, " ", ,,,,,, Истина);
122+
КонецЕсли;
123+
124+
ЗаписьJSON = Новый ЗаписьJSON;
125+
ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписи);
126+
ЗаписатьJSON(ЗаписьJSON, Объект);
127+
128+
Возврат ЗаписьJSON.Закрыть();
129+
130+
КонецФункции
131+
132+
Функция ОбъектИзJson(ТекстJSON, ЧитатьВСтруктуру = Ложь, ФорматДаты = Неопределено) Экспорт
133+
134+
Если ФорматДаты = Неопределено Тогда
135+
ФорматДаты = ФорматДатыJSON.ISO;
136+
КонецЕсли;
137+
ЧтениеJSON = Новый ЧтениеJSON;
138+
ЧтениеJSON.УстановитьСтроку(ТекстJSON);
139+
140+
Объект = ПрочитатьJSON(ЧтениеJSON,
141+
НЕ ЧитатьВСтруктуру,,
142+
ФорматДаты);
143+
ЧтениеJSON.Закрыть();
144+
Возврат Объект;
145+
146+
КонецФункции

tests/fixtures/ext.yaml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
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+
23+
- name: ТестовыйРепозиторий2
24+
# disable: true
25+
path: <КаталогХранилища1С_2>
26+
dir: <ПутьКаталогаИсходников_2>
27+
storage-user: Администратор
28+
storage-pwd: ''
29+
git-path: git
30+
temp-dir: ""
31+
v8version: 8.3
32+
domain-email: localhost
33+
lic-try-count: 5

0 commit comments

Comments
 (0)