Skip to content

Commit 7b22158

Browse files
committed
Merge branch 'develop' into feature/fix-temp-files
# Conflicts: # src/cmd/Классы/КомандаAll.os # src/core/Классы/internal/Классы/РепозиторийСинхронизации.os # src/core/Классы/ПакетнаяСинхронизация.os
2 parents 0865713 + c722e21 commit 7b22158

16 files changed

+504
-72
lines changed

config-example.yaml

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

features/sync.batch.feature

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
# language: ru
2+
3+
Функционал: Пакетная синхронизация хранилищ конфигурации 1С и гит
4+
Как Пользователь
5+
Я хочу выполнять автоматическую синхронизацию конфигурации из хранилища
6+
Чтобы автоматизировать свою работы с хранилищем с git
7+
8+
Контекст: Тестовый контекст синхронизации
9+
Когда Я создаю новый объект ГитРепозиторий
10+
И Я создаю новый объект ПакетнаяСинхронизация
11+
# Подготовка хранилища 1
12+
И Я создаю временный каталог и сохраняю его в переменной "КаталогХранилища1С_1"
13+
И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С_1"
14+
И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников_1"
15+
И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников_1"
16+
И Я создаю тестовой файл AUTHORS в каталоге из переменной "ПутьКаталогаИсходников_1"
17+
И Я записываю "0" в файл VERSION в каталоге из переменной "ПутьКаталогаИсходников_1"
18+
19+
# Подготовка хранилища 2
20+
И Я создаю временный каталог и сохраняю его в переменной "КаталогХранилища1С_2"
21+
И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С_2"
22+
И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников_2"
23+
И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников_2"
24+
И Я создаю тестовой файл AUTHORS в каталоге из переменной "ПутьКаталогаИсходников_2"
25+
И Я записываю "0" в файл VERSION в каталоге из переменной "ПутьКаталогаИсходников_2"
26+
27+
И Я создаю временный каталог и сохраняю его в переменной "КаталогПроекта"
28+
И Я добавляю файл "example.yaml" в каталог проекта с содержанием
29+
"""
30+
globals:
31+
storage-user: Администратор
32+
storage-pwd: ''
33+
git-path: git
34+
temp-dir: ""
35+
v8version: 8.3
36+
domain-email: localhost
37+
lic-try-count: 5
38+
plugins:
39+
enable:
40+
- test
41+
- test2
42+
disable:
43+
- test3
44+
plugins-config:
45+
git-url: git-url
46+
push: true
47+
pull: true
48+
repositories:
49+
- name: <ТестовыйРепозиторий>
50+
# disable: false
51+
path: <КаталогХранилища1С_1>
52+
dir: <ПутьКаталогаИсходников_1>
53+
plugins:
54+
more:
55+
- test3
56+
plugins-config:
57+
git-url: git-url
58+
push: true
59+
pull: true
60+
- name: <ТестовыйРепозиторий2>
61+
# disable: true
62+
path: <КаталогХранилища1С_2>
63+
dir: <ПутьКаталогаИсходников_2>
64+
storage-user: Администратор
65+
storage-pwd: ''
66+
git-path: git
67+
temp-dir: ""
68+
v8version: 8.3
69+
domain-email: localhost
70+
lic-try-count: 5
71+
72+
"""
73+
74+
И Я заменяю "<КаталогХранилища1С_1>" значением из переменной "КаталогХранилища1С_1" в файле "example.yaml"
75+
И Я заменяю "<ПутьКаталогаИсходников_1>" значением из переменной "ПутьКаталогаИсходников_1" в файле "example.yaml"
76+
И Я заменяю "<КаталогХранилища1С_2>" значением из переменной "КаталогХранилища1С_2" в файле "example.yaml"
77+
И Я заменяю "<ПутьКаталогаИсходников_2>" значением из переменной "ПутьКаталогаИсходников_2" в файле "example.yaml"
78+
И Я устанавливаю файл настройки "example.yaml" в ПакетнаяСинхронизация
79+
# И Я включаю отладку лога с именем "oscript.lib.gitsync.batch"
80+
# И Я включаю отладку лога с именем "oscript.lib.configor"
81+
# И Я включаю отладку лога с именем "oscript.lib.configor.yaml"
82+
# И Я включаю отладку лога с именем "oscript.lib.configor.constructor"
83+
84+
Сценарий: Простая синхронизация хранилища с git-репозиторием
85+
Допустим Я устанавливаю авторизацию "Администратор" с паролем "" в ПакетнаяСинхронизация
86+
И Я устанавливаю версию платформы "8.3" в ПакетнаяСинхронизация
87+
Когда Я выполняю выполняют пакетную синхронизацию
88+
Тогда Вывод лога содержит "Завершена синхронизации с git"
89+
90+
# Сценарий: Cинхронизация хранилища с git-репозиторием c плагинами
91+
# Допустим Я устанавливаю авторизацию в хранилище пользователя "Администратор" с паролем ""
92+
# И Я устанавливаю версию платформы "8.3"
93+
# И Я создаю временный каталог и сохраняю его в переменной "КаталогПлагинов"
94+
# И Я создаю новый УправлениеПлагинами
95+
# И Я собираю тестовый плагин и сохраняю в контекст "ПутьКФайлуПлагина"
96+
# И Я устанавливаю файл плагина из переменной "ПутьКФайлуПлагина"
97+
# И Я загружаю плагины из каталога в переменной "КаталогПлагинов"
98+
# И Я подключаю плагины в МенеджерСинхронизации
99+
# Когда Я выполняю выполняют синхронизацию
100+
# Тогда Вывод лога содержит "Завершена синхронизации с git"
101+
# И Вывод лога содержит "Вызвано событие <ПриАктивизации> для плагина <test_plugin>"
102+

0 commit comments

Comments
 (0)