Skip to content

Commit 47056e6

Browse files
committed
Добавил проверку тестов для ручной проверки и проверки на CI
1 parent e5f604e commit 47056e6

File tree

2 files changed

+184
-11
lines changed

2 files changed

+184
-11
lines changed

Jenkinsfile

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

tasks/test.os

Lines changed: 78 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,86 @@
1+
#Использовать ".."
2+
#Использовать 1bdd
13
#Использовать 1testrunner
24

3-
Процедура ПровестиТестирование()
5+
Функция ПрогнатьТесты()
46

57
Тестер = Новый Тестер;
68

7-
КаталогПроекта = ОбъединитьПути(ТекущийСценарий().Каталог, "..");
8-
КаталогРезультатовТестов = Новый Файл(ОбъединитьПути(КаталогПроекта,"test-reports"));
9-
Если Не КаталогРезультатовТестов.Существует() Тогда
10-
СоздатьКаталог(КаталогРезультатовТестов.ПолноеИмя);
11-
КонецЕслИ;
12-
ФайлРезультатовТестовПакета = Новый Файл(КаталогРезультатовТестов.ПолноеИмя);
13-
КаталогТестов = Новый Файл(ОбъединитьПути(КаталогПроекта, "tests"));
9+
ПутьКТестам = ОбъединитьПути(ТекущийСценарий().Каталог, "..", "tests");
10+
11+
ФайлПутьКТестам = Новый Файл(ПутьКТестам);
12+
Если Не ФайлПутьКТестам.Существует() Тогда
13+
Сообщить("Не найден каталог тестов " + ПутьКТестам);
14+
Возврат Ложь;
15+
КонецЕсли;
16+
17+
ПутьКОтчетуJUnit = ОбъединитьПути(ТекущийСценарий().Каталог, "..");
18+
19+
РезультатТестирования = Тестер.ТестироватьКаталог(
20+
Новый Файл(ПутьКТестам),
21+
Новый Файл(ПутьКОтчетуJUnit)
22+
);
23+
24+
Успешно = РезультатТестирования = 0;
25+
26+
Возврат Успешно;
27+
КонецФункции // ПрогнатьТесты()
28+
29+
Функция ПрогнатьФичи()
30+
31+
ПутьОтчетаJUnit = "./bdd-log.xml";
32+
33+
КаталогФич = ОбъединитьПути(".", "features");
34+
35+
ИсполнительБДД = Новый ИсполнительБДД;
36+
37+
Файл_КаталогФич = Новый Файл(КаталогФич);
38+
Если Не Файл_КаталогФич.Существует() Тогда
39+
Сообщить("Не найден каталог фич " + КаталогФич);
40+
Возврат Истина;
41+
КонецЕсли;
42+
43+
РезультатыВыполнения = ИсполнительБДД.ВыполнитьФичу(Файл_КаталогФич, Файл_КаталогФич);
44+
ИтоговыйРезультатВыполнения = ИсполнительБДД.ПолучитьИтоговыйСтатусВыполнения(РезультатыВыполнения);
45+
46+
СтатусВыполнения = ИсполнительБДД.ВозможныеСтатусыВыполнения().НеВыполнялся;
47+
Если РезультатыВыполнения.Строки.Количество() > 0 Тогда
48+
49+
СтатусВыполнения = ИсполнительБДД.ПолучитьИтоговыйСтатусВыполнения(РезультатыВыполнения);
50+
51+
КонецЕсли;
52+
53+
ГенераторОтчетаJUnit = Новый ГенераторОтчетаJUnit;
54+
ГенераторОтчетаJUnit.Сформировать(РезультатыВыполнения, СтатусВыполнения, ПутьОтчетаJUnit);
55+
56+
Сообщить(СтрШаблон("Результат прогона фич <%1>
57+
|", ИтоговыйРезультатВыполнения));
58+
59+
Возврат ИтоговыйРезультатВыполнения <> ИсполнительБДД.ВозможныеСтатусыВыполнения().Сломался;
60+
КонецФункции // ПрогнатьФичи()
61+
62+
Попытка
63+
ТестыПрошли = ПрогнатьТесты();
1464

15-
РезультатТестирования = Тестер.ТестироватьКаталог(КаталогТестов, ФайлРезультатовТестовПакета);
65+
Исключение
66+
ТестыПрошли = Ложь;
67+
Сообщить(СтрШаблон("Тесты через 1testrunner выполнены неудачно
68+
|%1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
69+
КонецПопытки;
1670

17-
КонецПроцедуры
71+
ФичиПрошли = Истина;
72+
// Попытка
73+
// ФичиПрошли = ПрогнатьФичи();
74+
// Исключение
75+
// ФичиПрошли = Ложь;
76+
// Сообщить(СтрШаблон("Тесты поведения через 1bdd выполнены неудачно
77+
// |%1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
78+
// КонецПопытки;
1879

19-
ПровестиТестирование();
80+
Если Не ТестыПрошли Или Не ФичиПрошли Тогда
81+
Сообщить("Тестирование завершилось неудачно!");
82+
ЗавершитьРаботу(1);
83+
Иначе
84+
Сообщить(СтрШаблон("Результат прогона тестов <%1>
85+
|", ТестыПрошли));
86+
КонецЕсли;

0 commit comments

Comments
 (0)