Skip to content

Исправление различных багов и проблем гитсинка #84

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 9 commits into from
Oct 10, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,8 @@

tests\.xml

exec\.log

bdd-log\.xml

*.ospx
27 changes: 25 additions & 2 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
{
"version": "0.1.0",
"version": "2.0.0",
"_runner": "terminal",
"windows": {
"command": "cmd",
"args": ["/c", "chcp 65001 >nul &"]
"args": ["/c", "chcp 65001 ;"]
},
"linux": {
"command": "sh",
Expand All @@ -11,6 +12,28 @@
"isShellCommand": true,
"showOutput": "silent",
"tasks": [
{
"taskName": "Testing project (opm test)",
"args": [
// "oscript",
// "src/opm.os",
"opm",
"test"
],
// "echoCommand": true,
// "showOutput": "always",
"suppressTaskName": true,
// "isTestCommand": false,
"problemMatcher": {
"fileLocation": "absolute",
"pattern": {
"regexp": "{Модуль\\s+(.+)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+([^{]*)",
"file": 1,
"location": 2,
"message": 3
}
}
},
{
"taskName": "Testing project",
"args": [
Expand Down
6 changes: 3 additions & 3 deletions features/ПростыеКоманды.feature
Original file line number Diff line number Diff line change
Expand Up @@ -14,24 +14,24 @@
Сценарий: Получение версии продукта
Когда Я выполняю команду "oscript" c параметрами "src/gitsync.os version"
Тогда Я сообщаю вывод команды "oscript"
И Вывод команды "oscript" содержит "2.1.1"
Тогда я вижу в консоли строку подобно "(\d+\.){2}\d+"
И Вывод команды "oscript" не содержит "GitSync v"
И Код возврата команды "oscript" равен 0

Сценарий: Получение помощи продукта
Когда Я выполняю команду "oscript" c параметрами "src/gitsync.os help"
Тогда я вижу в консоли строку подобно "GitSync\s+v(\d+\.){2}\d+"
Тогда Вывод команды "oscript" содержит
"""
GitSync v2.1.1
Возможные команды:
"""
И Код возврата команды "oscript" равен 0

Сценарий: Вызов исполняемого файла без параметров
Когда Я выполняю команду "oscript" c параметрами "src/gitsync.os"
Тогда я вижу в консоли строку подобно "GitSync\s+v(\d+\.){2}\d+"
Тогда Вывод команды "oscript" содержит
"""
GitSync v2.1.1
ОШИБКА - Некорректные аргументы командной строки
Возможные команды:
"""
Expand Down
4 changes: 2 additions & 2 deletions src/core/Классы/КомандаSync.os
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@
Парсер.ДобавитьПараметрФлаг ("-process-fatform-modules", "Переименовывать модули обычных форм в Module.bsl");
Парсер.ДобавитьПараметрФлаг ("-check-authors", "Проверка файла AUTHORS, на наличие всех авторов коммитов ");

Парсер.ДобавитьПараметрФлагКоманды("-stop-if-empty-comment", "Остановить, если Комментарий к версии пустой");
Парсер.ДобавитьПараметрФлагКоманды("-auto-set-tags", "Автоматическая установка тэгов по версия конфиграции");
Парсер.ДобавитьПараметрФлаг("-stop-if-empty-comment", "Остановить, если Комментарий к версии пустой");
Парсер.ДобавитьПараметрФлаг("-auto-set-tags", "Автоматическая установка тэгов по версия конфиграции");

КонецПроцедуры // ЗарегистрироватьКоманду

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@
Перем УдалятьВременныеФайлы;
Перем КоличествоЦикловОжиданияЛицензииПоУмолчанию;

Перем РабочийКаталогСохр;
Перем ГитРепозиторийСохр;

///////////////////////////////////////////////////////////////////////////////////////////////
// ПРОГРАММНЫЙ ИНТЕРФЕЙС

Expand Down Expand Up @@ -438,14 +441,22 @@
/////////////////////////////////////
// GIT Пересмотр

// <Описание процедуры>
//
Функция ПолучитьГитРепозиторий(Знач КаталогРабочейКопии)

ГитРепозиторий = Новый ГитРепозиторий;
ГитРепозиторий.УстановитьРабочийКаталог(КаталогРабочейКопии);
ГитРепозиторий.УстановитьНастройку("core.quotepath","false",РежимУстановкиНастроекGit.Локально);
ГитРепозиторий.УстановитьНастройку("merge.ours.driver","true",РежимУстановкиНастроекGit.Локально);
ФайлКаталога = Новый Файл(ОбъединитьПути(ТекущийКаталог(), КаталогРабочейКопии));
Если ФайлКаталога.ПолноеИмя = РабочийКаталогСохр Тогда
ГитРепозиторий = ГитРепозиторийСохр;
Иначе
ГитРепозиторий = Новый ГитРепозиторий;
ГитРепозиторий.УстановитьРабочийКаталог(КаталогРабочейКопии);
ГитРепозиторий.УстановитьНастройку("core.quotepath", "false", РежимУстановкиНастроекGit.Локально);
ГитРепозиторий.УстановитьНастройку("merge.ours.driver", "true", РежимУстановкиНастроекGit.Локально);

РабочийКаталогСохр = ФайлКаталога.ПолноеИмя;
ГитРепозиторийСохр = ГитРепозиторий;

КонецЕсли;

Возврат ГитРепозиторий;

КонецФункции // ПолучитьГитРепозиторий()
Expand Down Expand Up @@ -1311,7 +1322,13 @@
///////////////////////////////////////////////////////////////////////////////////////////////
// Вспомогательные функции

Процедура УдалитьВременныеФайлыПриНеобходимости(Знач ПутьКФайлу = "")
// Удаляет временные файлы при необходимости
// Если передана пустая строка, то удаляются все зарегистрированные временные файлы
//
// Параметры:
// ПутьКФайлу - Строка - полный путь файла или пустая строка
//
Процедура УдалитьВременныеФайлыПриНеобходимости(Знач ПутьКФайлу = "") Экспорт

Если УдалятьВременныеФайлы Тогда
Возврат;
Expand Down
97 changes: 82 additions & 15 deletions tasks/test.os
Original file line number Diff line number Diff line change
@@ -1,15 +1,82 @@
#Использовать 1testrunner

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

ПутьКТестам = ОбъединитьПути(ТекущийСценарий().Каталог, "..", "tests");
ПутьКОтчетуJUnit = ОбъединитьПути(ТекущийСценарий().Каталог, "..");

РезультатТестирования = Тестер.ТестироватьКаталог(
Новый Файл(ПутьКТестам),
Новый Файл(ПутьКОтчетуJUnit)
);

Если РезультатТестирования <> 0 Тогда
ВызватьИсключение РезультатТестирования;
КонецЕсли;
// #Использовать "../src"
#Использовать 1bdd
#Использовать 1testrunner

Функция ПрогнатьТесты()

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

ПутьКТестам = ОбъединитьПути(ТекущийСценарий().Каталог, "..", "tests");
ПутьКОтчетуJUnit = ОбъединитьПути(ТекущийСценарий().Каталог, "..");

КаталогТестов = Новый Файл(ПутьКТестам);
Если Не КаталогТестов.Существует() Тогда
Сообщить(СтрШаблон("Не найден каталог тестов %1", ПутьКТестам));
Возврат Истина;
КонецЕсли;

РезультатТестирования = Тестер.ТестироватьКаталог(
КаталогТестов,
Новый Файл(ПутьКОтчетуJUnit)
);

Успешно = РезультатТестирования = 0;

Возврат Успешно;
КонецФункции // ПрогнатьТесты()

Функция ПрогнатьФичи()

ПутьОтчетаJUnit = "./bdd-log.xml";

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

Файл_КаталогФич = Новый Файл(КаталогФич);
Если Не Файл_КаталогФич.Существует() Тогда
Сообщить(СтрШаблон("Не найден каталог фич %1", КаталогФич));
Возврат Истина;
КонецЕсли;

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

СтатусВыполнения = ИсполнительБДД.ВозможныеСтатусыВыполнения().НеВыполнялся;
Если РезультатыВыполнения.Строки.Количество() > 0 Тогда

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

КонецЕсли;

ГенераторОтчетаJUnit = Новый ГенераторОтчетаJUnit;
ГенераторОтчетаJUnit.Сформировать(РезультатыВыполнения, СтатусВыполнения, ПутьОтчетаJUnit);

Сообщить(СтрШаблон("Результат прогона фич <%1>
|", ИтоговыйРезультатВыполнения));

Возврат ИтоговыйРезультатВыполнения <> ИсполнительБДД.ВозможныеСтатусыВыполнения().Сломался;
КонецФункции // ПрогнатьФичи()

Попытка
ТестыПрошли = ПрогнатьТесты();

Исключение
ТестыПрошли = Ложь;
Сообщить(СтрШаблон("Тесты через 1testrunner выполнены неудачно
|%1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
КонецПопытки;

Попытка
ФичиПрошли = ПрогнатьФичи();
Исключение
ФичиПрошли = Ложь;
Сообщить(СтрШаблон("Тесты поведения через 1bdd выполнены неудачно
|%1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
КонецПопытки;

Если Не ТестыПрошли Или Не ФичиПрошли Тогда
ВызватьИсключение "Тестирование завершилось неудачно!";
Иначе
Сообщить(СтрШаблон("Результат прогона тестов <%1>
|", ТестыПрошли));
КонецЕсли;
10 changes: 7 additions & 3 deletions tests/git-sync-test.os
Original file line number Diff line number Diff line change
Expand Up @@ -371,6 +371,10 @@
КоличествоКоммитов = КоличествоКоммитов + 1;
КонецЦикла;
ЛогГит.Закрыть();

Распаковщик.УдалитьВременныеФайлыПриНеобходимости(ИмяФайлаЛогаГит);
Распаковщик.УдалитьВременныеФайлыПриНеобходимости(Батник.Закрыть());

Утверждения.ПроверитьРавенство(КоличествоКоммитов, 8, "Количество коммитов в git-хранилище");

КонецПроцедуры
Expand Down Expand Up @@ -475,9 +479,6 @@
ФайлЛога = ВременныеФайлы.СоздатьФайл("log");
Батник = Новый КомандныйФайл();
Батник.Создать();
Если ЭтоWindows Тогда
Батник.ДобавитьКоманду("chcp 1251 > nul");
КонецЕсли;
Батник.ДобавитьКоманду(СтрШаблон("cd %1 ""%2""",?(ЭтоWindows, "/d", ""), ЛокальныйКаталог));

ПараметрыКоманды = Новый Массив;
Expand All @@ -498,6 +499,9 @@
РезультатКлонирования = Батник.Исполнить();
// вывод всех сообщений от Git
Лог.Информация(Батник.ПолучитьВывод());

Распаковщик.УдалитьВременныеФайлыПриНеобходимости(Батник.Закрыть());

Утверждения.ПроверитьРавенство(РезультатКлонирования, 0, "git clone должен отработать успешно");

Ответ = Новый Структура;
Expand Down
4 changes: 4 additions & 0 deletions tests/test-export_with_min_max_versions.os
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,10 @@
КоличествоКоммитов = КоличествоКоммитов + 1;
КонецЦикла;
ЛогГит.Закрыть();

Распаковщик.УдалитьВременныеФайлыПриНеобходимости(ИмяФайлаЛогаГит);
Распаковщик.УдалитьВременныеФайлыПриНеобходимости(Батник.Закрыть());

Возврат КоличествоКоммитов;

КонецФункции
Expand Down