Skip to content

Commit af5a77d

Browse files
committed
Merge branch 'release/1.0.0'
2 parents 1070e26 + 2477ce2 commit af5a77d

File tree

6 files changed

+274
-18
lines changed

6 files changed

+274
-18
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
tests.xml
2+
*.ospx

Jenkinsfile

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
2+
pipeline {
3+
agent none
4+
options {
5+
buildDiscarder(logRotator(numToKeepStr: '7'))
6+
skipDefaultCheckout()
7+
}
8+
9+
stages {
10+
stage('Тестирование кода пакета WIN') {
11+
12+
agent { label 'windows' }
13+
14+
steps {
15+
checkout scm
16+
17+
script {
18+
if( fileExists ('tasks/test.os') ){
19+
bat 'chcp 65001 > nul && oscript tasks/test.os'
20+
if( fileExists ('tests.xml') ){
21+
junit 'tests.xml'
22+
}
23+
if( fileExists ('bdd-log.xml') ){
24+
junit 'bdd-log.xml'
25+
}
26+
}
27+
else
28+
echo 'no testing task'
29+
}
30+
31+
}
32+
33+
}
34+
35+
stage('Тестирование кода пакета LINUX') {
36+
37+
agent { label 'master' }
38+
39+
steps {
40+
echo 'under development'
41+
}
42+
43+
}
44+
45+
stage('Сборка пакета') {
46+
47+
agent { label 'windows' }
48+
49+
steps {
50+
checkout scm
51+
52+
bat 'erase /Q *.ospx'
53+
bat 'chcp 65001 > nul && call opm build .'
54+
55+
stash includes: '*.ospx', name: 'package'
56+
archiveArtifacts '*.ospx'
57+
}
58+
59+
}
60+
61+
stage('Публикация в хабе') {
62+
when {
63+
branch 'master'
64+
}
65+
agent { label 'master' }
66+
steps {
67+
sh 'rm -f *.ospx'
68+
unstash 'package'
69+
70+
sh '''
71+
artifact=`ls -1 *.ospx`
72+
basename=`echo $artifact | sed -r 's/(.+)-.*(.ospx)/\\1/'`
73+
cp $artifact $basename.ospx
74+
sudo rsync -rv *.ospx /var/www/hub.oscript.io/download/$basename/
75+
'''.stripIndent()
76+
}
77+
}
78+
79+
stage('Публикация в нестабильном хабе') {
80+
when {
81+
branch 'develop'
82+
}
83+
agent { label 'master' }
84+
steps {
85+
sh 'rm -f *.ospx'
86+
unstash 'package'
87+
88+
sh '''
89+
artifact=`ls -1 *.ospx`
90+
basename=`echo $artifact | sed -r 's/(.+)-.*(.ospx)/\\1/'`
91+
cp $artifact $basename.ospx
92+
sudo rsync -rv *.ospx /var/www/hub.oscript.io/dev-channel/$basename/
93+
'''.stripIndent()
94+
}
95+
}
96+
}
97+
}

packagedef

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
Описание.Имя("json")
3-
.Версия("0.2.1")
3+
.Версия("1.0.0")
44
.ВключитьФайл("src")
55
.ВключитьФайл("tests")
66
.ВключитьФайл("lib.config")

src/json.os

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -344,22 +344,40 @@
344344
СхемаПодстановок,
345345
(АвтоматическиПриводитьКСтруктуре = Истина));
346346

347+
ЗначениеБезКомментариев = ВырезатьКомментарии( Значение );
348+
347349
// Стартовые значения.
348-
Индекс = 1; Длина = СтрДлина(Значение);
350+
Индекс = 1; Длина = СтрДлина(ЗначениеБезКомментариев);
349351

350352
// Форматирование (первый шаг парсера).
351353
Если Стандарт Тогда СимволыФорматирования = " " + Символы.ВК + Символы.ПС + Символы.Таб;
352-
jsonПрочитатьПропуститьФорматирование(Значение, Стандарт, Индекс, Длина, СимволыФорматирования);
354+
jsonПрочитатьПропуститьФорматирование(ЗначениеБезКомментариев, Стандарт, Индекс, Длина, СимволыФорматирования);
353355
КонецЕсли;
354356
Если (Индекс > Длина) Тогда
355357
ВызватьИсключение ИсключениеПустойПакетДанных();
356358
КонецЕсли;
357359

358360
// Парсер.
359-
Возврат jsonПрочитать(Значение, Стандарт, Альтернативный, ПредставленияСсылок, Индекс, Длина, ВспомогательныеДанные, СимволыФорматирования, Истина);
361+
Возврат jsonПрочитать(ЗначениеБезКомментариев, Стандарт, Альтернативный, ПредставленияСсылок, Индекс, Длина, ВспомогательныеДанные, СимволыФорматирования, Истина);
360362

361363
КонецФункции // jsonПрочитатьИнициализация()
362364

365+
// Удаляет все комментарии // и блоки /* */
366+
Функция ВырезатьКомментарии( Знач пТекст )
367+
368+
регулярноеВыражение = Новый РегулярноеВыражение( "(@(?:""[^""]*"")+|""(?:[^""\n\\]+|\\.)*""|'(?:[^'\n\\]+|\\.)*')|//.*|/\*(?s:.*?)\*/" );
369+
370+
ЗначениеБезКомментариев = регулярноеВыражение.Заменить(пТекст, "$1" );
371+
372+
// После удаления комментария могли остаться пустые строки
373+
Пока СтрНайти( ЗначениеБезКомментариев, Символы.LF + Символы.LF ) > 0 Цикл
374+
ЗначениеБезКомментариев = СтрЗаменить( ЗначениеБезКомментариев, Символы.LF + Символы.LF, Символы.LF )
375+
КонецЦикла;
376+
377+
Возврат ЗначениеБезКомментариев;
378+
379+
КонецФункции
380+
363381
Функция jsonПрочитать(Значение, Стандарт, Альтернативный, ПредставленияСсылок, Индекс, Длина, ВспомогательныеДанные, СимволыФорматирования, ПервыйУровень)
364382

365383
Символ = Сред(Значение, Индекс, 1);

tasks/test.os

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
#Использовать ".."
2+
#Использовать 1bdd
3+
#Использовать 1testrunner
4+
5+
Функция ПрогнатьТесты()
6+
7+
Тестер = Новый Тестер;
8+
9+
ПутьКТестам = ОбъединитьПути(ТекущийСценарий().Каталог, "..", "tests");
10+
ПутьКОтчетуJUnit = ОбъединитьПути(ТекущийСценарий().Каталог, "..");
11+
12+
КаталогТестов = Новый Файл(ПутьКТестам);
13+
Если Не КаталогТестов.Существует() Тогда
14+
Сообщить(СтрШаблон("Не найден каталог тестов %1", ПутьКТестам));
15+
Возврат Истина;
16+
КонецЕсли;
17+
18+
РезультатТестирования = Тестер.ТестироватьКаталог(
19+
КаталогТестов,
20+
Новый Файл(ПутьКОтчетуJUnit)
21+
);
22+
23+
Успешно = РезультатТестирования = 0;
24+
25+
Возврат Успешно;
26+
КонецФункции // ПрогнатьТесты()
27+
28+
Функция ПрогнатьФичи()
29+
30+
ПутьОтчетаJUnit = "./bdd-log.xml";
31+
32+
КаталогФич = ОбъединитьПути(".", "features");
33+
34+
Файл_КаталогФич = Новый Файл(КаталогФич);
35+
Если Не Файл_КаталогФич.Существует() Тогда
36+
Сообщить(СтрШаблон("Не найден каталог фич %1", КаталогФич));
37+
Возврат Истина;
38+
КонецЕсли;
39+
40+
ИсполнительБДД = Новый ИсполнительБДД;
41+
РезультатыВыполнения = ИсполнительБДД.ВыполнитьФичу(Файл_КаталогФич, Файл_КаталогФич);
42+
ИтоговыйРезультатВыполнения = ИсполнительБДД.ПолучитьИтоговыйСтатусВыполнения(РезультатыВыполнения);
43+
44+
СтатусВыполнения = ИсполнительБДД.ВозможныеСтатусыВыполнения().НеВыполнялся;
45+
Если РезультатыВыполнения.Строки.Количество() > 0 Тогда
46+
47+
СтатусВыполнения = ИсполнительБДД.ПолучитьИтоговыйСтатусВыполнения(РезультатыВыполнения);
48+
49+
КонецЕсли;
50+
51+
ГенераторОтчетаJUnit = Новый ГенераторОтчетаJUnit;
52+
ГенераторОтчетаJUnit.Сформировать(РезультатыВыполнения, СтатусВыполнения, ПутьОтчетаJUnit);
53+
54+
Сообщить(СтрШаблон("Результат прогона фич <%1>
55+
|", ИтоговыйРезультатВыполнения));
56+
57+
Возврат ИтоговыйРезультатВыполнения <> ИсполнительБДД.ВозможныеСтатусыВыполнения().Сломался;
58+
КонецФункции // ПрогнатьФичи()
59+
60+
Попытка
61+
ТестыПрошли = ПрогнатьТесты();
62+
63+
Исключение
64+
ТестыПрошли = Ложь;
65+
Сообщить(СтрШаблон("Тесты через 1testrunner выполнены неудачно
66+
|%1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
67+
КонецПопытки;
68+
69+
Попытка
70+
ФичиПрошли = ПрогнатьФичи();
71+
Исключение
72+
ФичиПрошли = Ложь;
73+
Сообщить(СтрШаблон("Тесты поведения через 1bdd выполнены неудачно
74+
|%1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
75+
КонецПопытки;
76+
77+
Если Не ТестыПрошли Или Не ФичиПрошли Тогда
78+
ВызватьИсключение "Тестирование завершилось неудачно!";
79+
Иначе
80+
Сообщить(СтрШаблон("Результат прогона тестов <%1>
81+
|", ТестыПрошли));
82+
КонецЕсли;

0 commit comments

Comments
 (0)