Skip to content

Commit

Permalink
Merge branch 'release/0.8.2'
Browse files Browse the repository at this point in the history
  • Loading branch information
artbear committed Apr 5, 2017
2 parents 10e4412 + a239d56 commit f336817
Show file tree
Hide file tree
Showing 7 changed files with 192 additions and 10 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,7 @@ build/
*.log
*.ospx
oscript_modules/

coverage/stat\.json

bdd-exec\.xml
69 changes: 62 additions & 7 deletions Jenkinsfile
Original file line number Diff line number Diff line change
@@ -1,11 +1,21 @@
#!groovy

// ВНИМАНИЕ:
// Jenkins и его ноды нужно запускать с кодировкой UTF-8
// строка конфигурации для запуска Jenkins
// <arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -Dmail.smtp.starttls.enable=true -Dfile.encoding=UTF-8 -jar "%BASE%\jenkins.war" --httpPort=8080 --webroot="%BASE%\war" </arguments>
//
// строка для запуска нод
// @"C:\Program Files (x86)\Jenkins\jre\bin\java.exe" -Dfile.encoding=UTF-8 -jar slave.jar -jnlpUrl http://localhost:8080/computer/slave/slave-agent.jnlp -secret XXX
// подставляйте свой путь к java, порту Jenkins и секретному ключу
//
// Если запускать Jenkins не в режиме UTF-8, тогда нужно поменять метод cmd в конце кода, применив комментарий к методу

// node("artbear") {
node("qanode") {

stage('Получение исходных кодов') {


//git url: 'https://github.com/silverbulleters/vanessa-agiler.git'

checkout scm
if (env.DISPLAY) {
println env.DISPLAY;
Expand All @@ -14,11 +24,51 @@ node("qanode") {
}
env.RUNNER_ENV="production";

if (isUnix()) {sh 'git config --system core.longpaths true'} else {bat "git config --system core.longpaths true"}
cmd('git config --global core.longpaths true')

cmd('git submodule update --init')

echo "Текущий каталог"
echo pwd()

if (isUnix()) {sh 'git submodule update --init'} else {bat "git submodule update --init"}
echo "Проверка выполнения oscript -version - находится ли он в PATH?"
timestamps {
cmd("where oscript")
cmd("oscript -version")
}

echo "Проверка выполнения v8unpack -version - находится ли он в PATH?"
timestamps {
cmd("where v8unpack")
cmd("v8unpack -version")
}
}

stage('BDD тестирование'){

echo "exec bdd features"

command = """opm run coverage"""

def errors = []
try{
cmd(command)
} catch (e) {
errors << "BDD status : ${e}"
}

if (errors.size() > 0) {
currentBuild.result = 'UNSTABLE'
for (int i = 0; i < errors.size(); i++) {
echo errors[i]
}
}

step([$class: 'ArtifactArchiver', artifacts: '**/bdd-exec.xml', fingerprint: true])

step([$class: 'JUnitResultArchiver', testResults: '**/bdd-exec.xml'])
}

stage('Контроль технического долга'){

if (env.QASONAR) {
Expand All @@ -29,9 +79,9 @@ node("qanode") {
sonarcommand = sonarcommand + " -Dsonar.host.url=http://sonar.silverbulleters.org -Dsonar.login=${env.SonarOAuth}"
}

// Get version
// Get version - в модуле 'src/Модули/ПараметрыСистемы.os' должна быть строка формата Версия = "0.8.1";
def configurationText = readFile encoding: 'UTF-8', file: 'src/Модули/ПараметрыСистемы.os'
def configurationVersion = (configurationText =~ /Версия = \"(.*)\"/)[0][1]
def configurationVersion = (configurationText =~ /Версия\s*=\s*\"([^"]*)\"/)[0][1]
sonarcommand = sonarcommand + " -Dsonar.projectVersion=${configurationVersion}"

def makeAnalyzis = true
Expand Down Expand Up @@ -73,3 +123,8 @@ node("qanode") {
}

}

def cmd(command) {
// при запуске Jenkins не в режиме UTF-8 нужно написать chcp 1251 вместо chcp 65001
if (isUnix()) { sh "${command}" } else { bat "chcp 65001\n${command}"}
}
2 changes: 2 additions & 0 deletions sonar-project.properties
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,5 @@ sonar.sources=./src,./tools,./epf,./features

# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8

sonar.coverageReportPaths=coverage/genericCoverage.xml
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,7 @@
СообщениеОшибки = СтрШаблон("Ожидали, что файл настроек %1 существует, а его нет.");
Ожидаем.Что(ФайлНастроек.Существует(), СообщениеОшибки).ЭтоИстина();

ЧтениеТекста = Новый ЧтениеТекста(ФайлНастроек.ПолноеИмя);
ЧтениеТекста = Новый ЧтениеТекста(ФайлНастроек.ПолноеИмя, КодировкаТекста.UTF8);

СтрокаJSON = ЧтениеТекста.Прочитать();
ЧтениеТекста.Закрыть();
Expand Down Expand Up @@ -326,4 +326,4 @@

Функция Заменить_workspaceRoot_на_РабочийКаталогПроекта(Знач ИсходнаяСтрока, Знач РабочийКаталогПроекта)
Возврат СтрЗаменить(ИсходнаяСтрока, "$workspaceRoot", РабочийКаталогПроекта);
КонецФункции // Получить()
КонецФункции // Получить()
2 changes: 1 addition & 1 deletion src/Модули/ПараметрыСистемы.os
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
//
Функция ВерсияПродукта() Экспорт

Версия = "0.8.1";
Версия = "0.8.2";// присвоение "Версия = " важно для проверки Сонара
Возврат Версия;

КонецФункции // ВерсияПродукта()
Expand Down
84 changes: 84 additions & 0 deletions tasks/coverage.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
#Использовать 1commands
#Использовать asserts
#Использовать fs
#Использовать json

Перем СохраненныйТекущийКаталог;

Процедура СохранитьТекущийКаталог()
// Лог.Отладка("Сохранил текущий каталог %1", СохраненныйТекущийКаталог);
СохраненныйТекущийКаталог = ТекущийКаталог();
КонецПроцедуры

Процедура ВосстановитьТекущийКаталог()
// Лог.Отладка("Восстановил текущий каталог %1", СохраненныйТекущийКаталог);
УстановитьТекущийКаталог(СохраненныйТекущийКаталог);
КонецПроцедуры

ФС.ОбеспечитьПустойКаталог("coverage");
ПутьКСтат = "coverage/stat.json";

СохранитьТекущийКаталог();

Команда = Новый Команда;
Команда.УстановитьКоманду("oscript");
Команда.ПоказыватьВыводНемедленно(Истина);
Команда.ДобавитьПараметр("-encoding=utf-8");
Команда.ДобавитьПараметр(СтрШаблон("-codestat=%1", ПутьКСтат));
Команда.ДобавитьПараметр("tasks/test.os");

КодВозврата = Команда.Исполнить();
Сообщить(Команда.ПолучитьВывод());
// Ожидаем.Что(КодВозврата).Равно(0);

ВосстановитьТекущийКаталог();

Файл_Стат = Новый Файл(ПутьКСтат);
Ожидаем.Что(Файл_Стат.Существует(), СтрШаблон("Файл <%1> с результатами покрытия не существует!", Файл_Стат.ПолноеИмя)).ЭтоИстина();

ЧтениеТекста = Новый ЧтениеТекста(ПутьКСтат, КодировкаТекста.UTF8);

СтрокаJSON = ЧтениеТекста.Прочитать();
ЧтениеТекста.Закрыть();

Парсер = Новый ПарсерJSON();
ДанныеПокрытия = Парсер.ПрочитатьJSON(СтрокаJSON);

ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл("coverage/genericCoverage.xml");
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьXML.ЗаписатьНачалоЭлемента("coverage");
ЗаписьXML.ЗаписатьАтрибут("version", "1");

Для Каждого Файл Из ДанныеПокрытия Цикл

ДанныеФайла = Файл.Значение;

ЗаписьXML.ЗаписатьНачалоЭлемента("file");
ЗаписьXML.ЗаписатьАтрибут("path", ДанныеФайла.Получить("#path"));

Для Каждого КлючИЗначение Из ДанныеФайла Цикл

Если КлючИЗначение.Ключ = "#path" Тогда
Продолжить;
КонецЕсли;

ДанныеПроцедуры = КлючИЗначение.Значение;
Для Каждого ДанныеСтроки Из ДанныеПроцедуры Цикл

ЗаписьXML.ЗаписатьНачалоЭлемента("lineToCover");

ЗаписьXML.ЗаписатьАтрибут("lineNumber", ДанныеСтроки.Ключ);
Покрыто = Число(ДанныеСтроки.Значение.Получить("count")) > 0;
ЗаписьXML.ЗаписатьАтрибут("covered", Формат(Покрыто, "БИ=true; БЛ=false"));

ЗаписьXML.ЗаписатьКонецЭлемента(); // lineToCover
КонецЦикла
КонецЦикла;

ЗаписьXML.ЗаписатьКонецЭлемента(); // file

КонецЦикла;

ЗаписьXML.ЗаписатьКонецЭлемента(); // coverage
ЗаписьXML.Закрыть();
37 changes: 37 additions & 0 deletions tasks/test.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#Использовать 1bdd

Перем СохраненныйТекущийКаталог;

Процедура СохранитьТекущийКаталог()
// Лог.Отладка("Сохранил текущий каталог %1", СохраненныйТекущийКаталог);
СохраненныйТекущийКаталог = ТекущийКаталог();
КонецПроцедуры

Процедура ВосстановитьТекущийКаталог()
// Лог.Отладка("Восстановил текущий каталог %1", СохраненныйТекущийКаталог);
УстановитьТекущийКаталог(СохраненныйТекущийКаталог);
КонецПроцедуры

КаталогФич = ОбъединитьПути(".", "features");
ПутьОтчетаJUnit = ОбъединитьПути(".", "bdd-exec.xml");

Файл_КаталогФич = Новый Файл(КаталогФич);

СохранитьТекущийКаталог();

ИсполнительБДД = Новый ИсполнительБДД;
РезультатВыполнения = ИсполнительБДД.ВыполнитьФичу(Файл_КаталогФич, Файл_КаталогФич);
ИтоговыйСтатусВыполнения = ИсполнительБДД.ПолучитьИтоговыйСтатусВыполнения(РезультатВыполнения);

Сообщить(ИтоговыйСтатусВыполнения);

ВосстановитьТекущийКаталог();

// Если Не ПустаяСтрока(ПутьОтчетаJUnit) Тогда
ГенераторОтчетаJUnit = Новый ГенераторОтчетаJUnit;
ГенераторОтчетаJUnit.Сформировать(РезультатВыполнения, ИтоговыйСтатусВыполнения, ПутьОтчетаJUnit);
// КонецЕсли;

Если ИтоговыйСтатусВыполнения = ИсполнительБДД.ВозможныеСтатусыВыполнения().Сломался Тогда
ВызватьИсключение 1;
КонецЕсли;

0 comments on commit f336817

Please sign in to comment.