Skip to content

Commit c04da98

Browse files
authored
Merge pull request #34 from oscript-library/develop
Sync
2 parents 99db9c3 + 535335a commit c04da98

File tree

8 files changed

+141
-60
lines changed

8 files changed

+141
-60
lines changed

.github/workflows/qa.yml

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ name: Контроль качества
77
on: [push, pull_request]
88
jobs:
99
build:
10-
if: github.repository == 'khorevaa/configor'
10+
if: github.repository == 'oscript-library/configor'
1111
runs-on: ${{ matrix.os }}
1212
strategy:
1313
fail-fast: false
1414
matrix:
1515
os: [ubuntu-latest]
16-
oscript_version: ['1.8.3', 'stable']
16+
oscript_version: ['1.8.3']
1717

1818
steps:
1919
# Загрузка проекта
@@ -54,25 +54,28 @@ jobs:
5454
id: extract_version
5555

5656
- name: Установка Sonar-scanner
57-
uses: warchant/setup-sonar-scanner@v1
57+
uses: warchant/setup-sonar-scanner@v3
5858

5959
# Анализ проекта в SonarQube (ветка)
6060
- name: Анализ в SonarQube (branch)
6161
if: github.event_name == 'push'
62+
env:
63+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
64+
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
6265
run: sonar-scanner
63-
-Dsonar.login=${{ secrets.SONARQUBE_TOKEN }}
64-
-Dsonar.host.url=${{ secrets.SONARQUBE_HOST }}
66+
-Dsonar.host.url=https://sonar.openbsl.ru
6567
-Dsonar.branch.name=${{ steps.extract_branch.outputs.branch }}
6668
-Dsonar.projectVersion=${{ steps.extract_version.outputs.version }}
6769

6870
# Анализ проекта в SonarQube (PR)
6971
# https://docs.sonarqube.org/latest/analysis/pull-request/
7072
- name: Анализ в SonarQube (pull-request)
7173
if: github.event_name == 'pull_request'
74+
env:
75+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
76+
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
7277
run: sonar-scanner
73-
-Dsonar.login=${{ secrets.SONARQUBE_TOKEN }}
74-
-Dsonar.host.url=${{ secrets.SONARQUBE_HOST }}
75-
-Dsonar.branch.name=${{ steps.extract_branch.outputs.branch }}
78+
-Dsonar.host.url=https://sonar.openbsl.ru
7679
-Dsonar.pullrequest.key=${{ github.event.pull_request.number }}
7780
-Dsonar.pullrequest.branch=${{ github.event.pull_request.head.ref }}
7881
-Dsonar.pullrequest.base=${{ github.event.pull_request.base.ref }}

.github/workflows/release.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ name: Подготовка релиза и публикация в хабе
66
# Только события создания и изменения релиза
77
on:
88
release:
9-
types: [published, edited]
9+
types: [published]
1010

1111
jobs:
1212
build:
@@ -54,6 +54,6 @@ jobs:
5454

5555
- name: Публикация в hub.oscript.io
5656
shell: bash
57-
run: opm push -f ./${{ matrix.package_mask }} --token ${{ env.TOKEN }} -c stable
57+
run: opm push -f ./${{ matrix.package_mask }} --token ${{ env.PUSH_TOKEN }} -c stable
5858
env:
59-
TOKEN: ${{ secrets.ACCESS_TOKEN }}
59+
PUSH_TOKEN: ${{ secrets.PUSH_TOKEN }}

packagedef

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
//
55

66
Описание.Имя("configor")
7-
.Версия("0.8.0")
7+
.Версия("0.8.2")
88
.Автор("Khorev Aleksey")
99
.АдресАвтора("Khorevaa@gmail.com")
1010
.Описание("Библиотека для работы с конфигурационными файлами в формате json, yaml")
@@ -20,6 +20,9 @@
2020
.ЗависитОт("notify", "0.2.0")
2121
.ЗависитОт("tempfiles")
2222
.ЗависитОт("reflector", "0.3.1")
23+
.РазработкаЗависитОт("coverage", "0.6.1")
24+
.РазработкаЗависитОт("1testrunner", "1.8.0")
25+
.РазработкаЗависитОт("1bdd", "1.14.0")
2326
.ОпределяетКласс("МенеджерПараметров", "src/Классы/МенеджерПараметров.os")
2427
.ОпределяетКласс("КонструкторПараметров", "src/Классы/КонструкторПараметров.os")
2528
;

src/Классы/internal/Классы/ПровайдерПараметровENV.os

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -50,27 +50,39 @@
5050
Лог.Отладка("Выполняю чтение параметров переменных среды для префикса <%1>", Префикс);
5151

5252
ПеременныеСреды = ПеременныеСреды();
53-
54-
Если ПустаяСтрока(Префикс) Тогда
55-
Возврат ПеременныеСреды;
56-
КонецЕсли;
57-
5853
ПрочитанныеПараметры = Новый Соответствие;
5954

6055
Для каждого ПеременнаяСреды Из ПеременныеСреды Цикл
6156

62-
Если СтрНачинаетсяС(ПеременнаяСреды.Ключ, Префикс) Тогда
57+
ПрочитанныеПараметры.Вставить(
58+
СтрЗаменить(СтрЗаменить(ПеременнаяСреды.Ключ, "_", "."), "..", "_"),
59+
ПеременнаяСреды.Значение
60+
);
6361

64-
ПрочитанныеПараметры.Вставить(
65-
Прав(ПеременнаяСреды.Ключ, СтрДлина(ПеременнаяСреды.Ключ) - СтрДлина(Префикс)),
66-
ПеременнаяСреды.Значение
67-
);
62+
КонецЦикла;
6863

69-
КонецЕсли;
64+
Результат = Новый Соответствие;
7065

71-
КонецЦикла;
66+
Если ПустаяСтрока(Префикс) Тогда
67+
Результат = ПрочитанныеПараметры;
68+
Иначе
69+
70+
Для каждого ПеременнаяСреды Из ПрочитанныеПараметры Цикл
71+
72+
Если СтрНачинаетсяС(ПеременнаяСреды.Ключ, Префикс) Тогда
73+
Сообщить(Прав(ПеременнаяСреды.Ключ, СтрДлина(ПеременнаяСреды.Ключ) - СтрДлина(Префикс)));
74+
Результат.Вставить(
75+
Прав(ПеременнаяСреды.Ключ, СтрДлина(ПеременнаяСреды.Ключ) - СтрДлина(Префикс)),
76+
ПеременнаяСреды.Значение
77+
);
78+
79+
КонецЕсли;
80+
81+
КонецЦикла;
82+
83+
КонецЕсли;
7284

73-
Возврат ПрочитанныеПараметры;
85+
Возврат Результат;
7486

7587
КонецФункции
7688

src/Классы/internal/Классы/ФайловыйПровайдерПараметров.os

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,9 +202,9 @@
202202

203203
Иначе
204204

205-
ФункцияОбработки = Новый ОписаниеОповещения("ОбработчикВыполненияЧтениеФайловогоПровайдера", ЭтотОбъект);
206205
КоллекцияФайловПараметров.ДляКаждого(
207-
"КаталогПоиска -> ВыполнитьЧтениеФайловогоПровайдера(КаталогПоиска.ИмяФайла());"
206+
"КаталогПоиска -> ВыполнитьЧтениеФайловогоПровайдера(КаталогПоиска.ИмяФайла());",
207+
ЭтотОбъект
208208
);
209209

210210
КонецЕсли;

tasks/coverage.os

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,31 @@
22
#Использовать 1commands
33
#Использовать fs
44

5+
СистемнаяИнформация = Новый СистемнаяИнформация;
6+
ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0;
7+
58
ФС.ОбеспечитьПустойКаталог("coverage");
69
ПутьКСтат = "coverage/stat.json";
710

811
Команда = Новый Команда;
912
Команда.УстановитьКоманду("oscript");
10-
Команда.ДобавитьПараметр("-encoding=utf-8");
11-
Команда.ДобавитьПараметр(СтрШаблон("-codestat=%1", ПутьКСтат));
13+
Если НЕ ЭтоWindows Тогда
14+
Команда.ДобавитьПараметр("-encoding=utf-8");
15+
КонецЕсли;
16+
Команда.ДобавитьПараметр(СтрШаблон("-codestat=%1", ПутьКСтат));
1217
Команда.ДобавитьПараметр("tasks/test.os");
1318
Команда.ПоказыватьВыводНемедленно(Истина);
1419

1520
КодВозврата = Команда.Исполнить();
1621

17-
Файл_Стат = Новый Файл(ПутьКСтат);
18-
19-
ИмяПакета = "configor";
20-
2122
ПроцессорГенерации = Новый ГенераторОтчетаПокрытия();
2223

2324
ПроцессорГенерации.ОтносительныеПути()
24-
.ФайлСтатистики(Файл_Стат.ПолноеИмя)
25-
.GenericCoverage()
26-
.Cobertura()
27-
.Clover(ИмяПакета)
28-
.Сформировать();
29-
30-
ЗавершитьРаботу(КодВозврата);
25+
.РабочийКаталог("coverage")
26+
.КаталогИсходников(ТекущийКаталог())
27+
.ИмяФайлаСтатистики()
28+
.GenericCoverage()
29+
.Cobertura()
30+
.Сформировать();
31+
32+
ЗавершитьРаботу(КодВозврата);

tests/МенеджерЧтенияпараметров_test.os

Lines changed: 76 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,9 @@
44
#Использовать tempfiles
55
#Использовать json
66

7-
Перем юТест;
87
Перем Лог;
98

10-
Функция ПолучитьСписокТестов(Знач Тестирование) Экспорт
11-
12-
юТест = Тестирование;
13-
14-
ИменаТестов = Новый Массив;
15-
16-
ИменаТестов.Добавить("ТестДолжен_ПроверитьПолучениеПараметровИзИндекса");
17-
ИменаТестов.Добавить("ТестДолжен_ПроверитьВыгрузкуПараметровВКласс");
18-
ИменаТестов.Добавить("ТестДолжен_ПроверитьПоискИЧтениеФайлаПараметров");
19-
20-
Возврат ИменаТестов;
21-
22-
КонецФункции
23-
9+
&Тест
2410
Процедура ТестДолжен_ПроверитьПолучениеПараметровИзИндекса() Экспорт
2511

2612
ТестовыеСлучаи = Новый Массив;
@@ -68,6 +54,7 @@
6854

6955
КонецПроцедуры
7056

57+
&Тест
7158
Процедура ТестДолжен_ПроверитьВыгрузкуПараметровВКласс() Экспорт
7259

7360
МенеджерПараметров = Новый МенеджерПараметров();
@@ -106,6 +93,7 @@
10693

10794
КонецПроцедуры
10895

96+
&Тест
10997
Процедура ТестДолжен_ПроверитьПоискИЧтениеФайлаПараметров() Экспорт
11098

11199
МенеджерПараметров = Новый МенеджерПараметров();
@@ -148,6 +136,79 @@
148136

149137
КонецПроцедуры
150138

139+
&Тест
140+
Процедура ТестДолжен_ПроверитьПоискИЧтениеНесколькихФайловПараметров() Экспорт
141+
142+
ПарсерJSON = Новый ПарсерJSON;
143+
144+
МенеджерПараметров = Новый МенеджерПараметров();
145+
146+
ВременныйКаталог = ВременныеФайлы.СоздатьКаталог();
147+
148+
СтруктураПараметров = Новый Структура("version, ПараметрСтрока, ПараметрЧисло, ПараметрМассив, ПараметрСтруктура, ПараметрСоответствие",
149+
"1.0",
150+
"ПростоСтрока",
151+
10,
152+
ПолучитьНовыйМассив("Элемент1, Элемент2"),
153+
Новый Структура("Строка, Число, Массив, Структура, Соответствие",
154+
"ПростоСтрока",
155+
10,
156+
ПолучитьНовыйМассив("Элемент1, Элемент2"),
157+
Новый Структура("Строка, Строка2", "ЗначениеСтруктуры", "ЗначениеСтруктуры2"),
158+
ПолучитьСоответствие("КлючВнутри1, КлючВнутри2", "Значение1, Значение2")
159+
),
160+
ПолучитьСоответствие("Ключ1, Ключ2", "Значение1, Значение2")
161+
);
162+
163+
ТекстФайлаПроверки = ПарсерJSON.ЗаписатьJSON(СтруктураПараметров);
164+
165+
ТестовыйФайл = ПодготовитьТестовыйФайл(ТекстФайлаПроверки);
166+
167+
ТестовоеИмя = "config";
168+
ТестовоеРасширение = ".json";
169+
170+
КопироватьФайл(ТестовыйФайл, ОбъединитьПути(ВременныйКаталог, ТестовоеИмя + ТестовоеРасширение));
171+
172+
МенеджерПараметров.АвтоНастройка(ТестовоеИмя);
173+
174+
СтруктураПараметров = Новый Структура("version, ПараметрСтрока, ПараметрЧисло, ПараметрМассив, ПараметрСтруктура, ПараметрСоответствие",
175+
"1.0",
176+
"ПростоСтрока",
177+
10,
178+
ПолучитьНовыйМассив("Элемент3"),
179+
Новый Структура("Строка, Число, Массив, Структура, Соответствие",
180+
"ПростоСтрока",
181+
10,
182+
ПолучитьНовыйМассив("Элемент3"),
183+
Новый Структура("Строка, Строка2", "ЗначениеСтруктуры", "ЗначениеСтруктуры2"),
184+
ПолучитьСоответствие("КлючВнутри1, КлючВнутри2", "Значение1, Значение2")
185+
),
186+
ПолучитьСоответствие("Ключ1, Ключ2", "Значение1, Значение2")
187+
);
188+
189+
ТекстФайлаПроверки = ПарсерJSON.ЗаписатьJSON(СтруктураПараметров);
190+
191+
ТестовыйФайл = ПодготовитьТестовыйФайл(ТекстФайлаПроверки);
192+
193+
ТестовоеИмя = "config2";
194+
ТестовоеРасширение = ".json";
195+
196+
КопироватьФайл(ТестовыйФайл, ОбъединитьПути(ВременныйКаталог, ТестовоеИмя + ТестовоеРасширение));
197+
198+
МенеджерПараметров.АвтоНастройка(ТестовоеИмя);
199+
200+
НастройкаПоискаФайла = МенеджерПараметров.НастройкаПоискаФайла();
201+
НастройкаПоискаФайла.ДобавитьКаталогПоиска(ВременныйКаталог);
202+
МенеджерПараметров.Прочитать();
203+
204+
Утверждения.ПроверитьРавенство(СтруктураПараметров.ПараметрМассив[0], МенеджерПараметров.Параметр("ПараметрМассив.0"), "Результат должен совпадать с ожиданиями.");
205+
Утверждения.ПроверитьРавенство(СтруктураПараметров.ПараметрСтруктура.Массив[0], МенеджерПараметров.Параметр("ПараметрСтруктура.Массив.0"), "Результат должен совпадать с ожиданиями.");
206+
Утверждения.ПроверитьРавенство(СтруктураПараметров.ПараметрСтруктура.Соответствие["КлючВнутри1"], МенеджерПараметров.Параметр("ПараметрСтруктура.Соответствие.КлючВнутри1"), "Результат должен совпадать с ожиданиями.");
207+
208+
ВременныеФайлы.Удалить();
209+
210+
КонецПроцедуры
211+
151212
Функция ПолучитьНовыйМассив(ЗначенияМассив)
152213

153214
Массив = Новый Массив();

tests/ПровайдерПараметровENV.os

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
// Дано
88

9-
УстановитьПеременнуюСреды("TestConfigorEnv", "ТестЗначение", РасположениеПеременнойСреды.Процесс);
9+
УстановитьПеременнуюСреды("Test__Configor_Env", "ТестЗначение", РасположениеПеременнойСреды.Процесс);
1010

1111
// Когда
1212

@@ -18,7 +18,7 @@
1818

1919
// Тогда
2020

21-
Ожидаем.Что(МенеджерПараметров.Параметр("TestConfigorEnv")).Равно("ТестЗначение");
21+
Ожидаем.Что(МенеджерПараметров.Параметр("Test_Configor.Env")).Равно("ТестЗначение");
2222

2323
КонецПроцедуры
2424

@@ -27,18 +27,18 @@
2727

2828
// Дано
2929

30-
УстановитьПеременнуюСреды("Test_ConfigorEnv", "ТестЗначение", РасположениеПеременнойСреды.Процесс);
30+
УстановитьПеременнуюСреды("Test_Configor__Env", "ТестЗначение", РасположениеПеременнойСреды.Процесс);
3131

3232
// Когда
3333

3434
МенеджерПараметров = Новый МенеджерПараметров();
3535

36-
МенеджерПараметров.ДобавитьПровайдерПараметров(Новый ПровайдерПараметровENV("Test_"));
36+
МенеджерПараметров.ДобавитьПровайдерПараметров(Новый ПровайдерПараметровENV("Test."));
3737

3838
МенеджерПараметров.Прочитать();
3939

4040
// Тогда
4141

42-
Ожидаем.Что(МенеджерПараметров.Параметр("ConfigorEnv")).Равно("ТестЗначение");
42+
Ожидаем.Что(МенеджерПараметров.Параметр("Configor_Env")).Равно("ТестЗначение");
4343

4444
КонецПроцедуры

0 commit comments

Comments
 (0)