Skip to content
Merged

Sync #23

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
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Зависимости OScript
oscript_modules/

# Артефакты сборки
*.ospx

# Отчёты тестов
tests.xml
bdd-log.xml
2 changes: 1 addition & 1 deletion packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
//

Описание.Имя("v8find")
.Версия("0.3.0")
.Версия("0.3.1")
.Автор("Khorev Aleksey")
.АдресАвтора("Khorevaa@gmail.com")
.Описание("Библиотека поиска исполняемых файлов платформы 1С Предприятие")
Expand Down
26 changes: 17 additions & 9 deletions src/Классы/Платформа1С.os
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,9 @@

МассивНомеровВерсии = СтрРазделить(НомерВерсии, ".");

Если МассивНомеровВерсии.Количество() = 2 Тогда
Если МассивНомеровВерсии.Количество() = 1 Тогда
// Поиск по главной версии (например "8") — без ограничения на НомерПлатформы, вернёт старшую из всех найденных
ИначеЕсли МассивНомеровВерсии.Количество() = 2 Тогда
Отбор.Вставить("НомерПлатформы", НомерВерсии);
ИначеЕсли МассивНомеровВерсии.Количество() = 3 Тогда
Отбор.Вставить("НомерРелиза", НомерВерсии);
Expand Down Expand Up @@ -520,19 +522,25 @@

Иначе

КаталогУстановкиLinux_x86 = ОбъединитьПути("/opt", "1C", "v8.3", "i386");
КаталогУстановкиLinux_x64 = ОбъединитьПути("/opt", "1C", "v8.3", "x86_64");
КорневойКаталог = "/opt";

ДобавитьКаталоГПоиска(КаталогУстановкиLinux_x86, РазрядностьПлатформы.x86, НеопределеннаяВерсия);
ДобавитьКаталоГПоиска(КаталогУстановкиLinux_x64, РазрядностьПлатформы.x64, НеопределеннаяВерсия);

КаталогУстановкиLinux_x86 = ОбъединитьПути("/opt", "1cv8", "i386");
КаталогУстановкиLinux_x64 = ОбъединитьПути("/opt", "1cv8", "x86_64");
МассивКаталоговПлатформы = НайтиФайлы(ОбъединитьПути(КорневойКаталог, "1C"), "v8.*");
Для каждого КаталогПлатформы Из МассивКаталоговПлатформы Цикл
ДобавитьКаталоГПоиска(
ОбъединитьПути(КаталогПлатформы.ПолноеИмя, "i386"),
РазрядностьПлатформы.x86, НеопределеннаяВерсия);
ДобавитьКаталоГПоиска(
ОбъединитьПути(КаталогПлатформы.ПолноеИмя, "x86_64"),
РазрядностьПлатформы.x64, НеопределеннаяВерсия);
КонецЦикла;

КаталогУстановкиLinux_x86 = ОбъединитьПути(КорневойКаталог, "1cv8", "i386");
КаталогУстановкиLinux_x64 = ОбъединитьПути(КорневойКаталог, "1cv8", "x86_64");

ДобавитьКаталоГПоиска(КаталогУстановкиLinux_x86, РазрядностьПлатформы.x86, Неопределено);
ДобавитьКаталоГПоиска(КаталогУстановкиLinux_x64, РазрядностьПлатформы.x64, Неопределено);

КаталогВерсии_OSX = ОбъединитьПути("/opt", "1cv8");
КаталогВерсии_OSX = ОбъединитьПути(КорневойКаталог, "1cv8");
ДобавитьКаталоГПоиска(КаталогВерсии_OSX, РазрядностьПлатформы.x64, Неопределено);

КонецЕсли;
Expand Down
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
91 changes: 85 additions & 6 deletions tests/Платформа1С_test.os
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,16 @@
ИменаТестов.Добавить("ТестДолжен_ПроверитьПлатформа1С_Windows");
ИменаТестов.Добавить("ТестДолжен_ПроверитьПлатформа1С_OSX");
ИменаТестов.Добавить("ТестДолжен_ПроверитьПлатформа1С_Linux");
ИменаТестов.Добавить("ТестДолжен_НайтиВерсию_8_5_x_Windows");
ИменаТестов.Добавить("ТестДолжен_НайтиВерсию_8_5_x_OSX");
ИменаТестов.Добавить("ТестДолжен_НайтиНесколькоВерсий_Windows");

Возврат ИменаТестов;

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

Процедура ТестДолжен_ПроверитьПлатформа1С_Windows() Экспорт

Если Не ЭтоWindows Тогда
Сообщить("Тест выполняется только на windows");
юТест.ТестПройден();
Expand Down Expand Up @@ -85,7 +88,7 @@
ПутьКПредприятию_x64 = Платформа1С.ПутьКПредприятию("8.3.13", РазрядностьПлатформы.x64);
ПутьКПредприятию_x86x64 = Платформа1С.ПутьКПредприятию("8.3.13.9999", РазрядностьПлатформы.x86x64);
ПутьКПредприятию_x64x86 = Платформа1С.ПутьКПредприятию("8.3.13.9999", РазрядностьПлатформы.x64x86);

ЭталонныйПуть = ОбъединитьПути(КаталогВерсий_x86, "1cv8");
Ожидаем.Что(ПутьКПредприятию_x86, "ПутьКПредприятию_x86 исполняемый файл приложения 1С найден").Равно(ЭталонныйПуть);

Expand All @@ -100,12 +103,88 @@

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

Лог = Логирование.ПолучитьЛог("oscript.lib.v8find");
Лог.УстановитьУровень(УровниЛога.Отладка);
// Проверка поиска версии 8.5.x на Windows
Процедура ТестДолжен_НайтиВерсию_8_5_x_Windows() Экспорт

СИ = Новый СистемнаяИнформация;
ЭтоWindows = Найти(НРег(СИ.ВерсияОС), "windows") > 0;
Если Не ЭтоWindows Тогда
Сообщить("Тест выполняется только на windows");
юТест.ТестПройден();
Возврат;
КонецЕсли;

КаталогFixtures = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures");
КаталогWindows = ОбъединитьПути(КаталогFixtures, "windows");
Платформа1С = Новый Платформа1С;
Платформа1С.СброситьПоиск();
Платформа1С.ДобавитьКаталоГПоиска(КаталогWindows, РазрядностьПлатформы.x64);

ПутьКПредприятию = Платформа1С.ПутьКПредприятию("8.5.1.1302");

Ожидаем.Что(НЕ ПустаяСтрока(ПутьКПредприятию), "Версия 8.5.x должна быть найдена").ЭтоИстина();

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

// Проверка поиска версии 8.5.x на OSX/Linux
Процедура ТестДолжен_НайтиВерсию_8_5_x_OSX() Экспорт

Если ЭтоWindows Тогда
Сообщить("Тест выполняется только на unix системах");
юТест.ТестПройден();
Возврат;
КонецЕсли;

КаталогFixtures = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures");
КаталогВерсий = ОбъединитьПути(КаталогFixtures, "linux", "osx");
Платформа1С = Новый Платформа1С;
Платформа1С.СброситьПоиск();
Платформа1С.ДобавитьКаталоГПоиска(КаталогВерсий, РазрядностьПлатформы.x64);

ПутьКПредприятию = Платформа1С.ПутьКПредприятию("8.5.1.1302");
ЭталонныйПуть = ОбъединитьПути(КаталогВерсий, "8.5.1.1302", "1cv8");

Ожидаем.Что(ПутьКПредприятию, "Версия 8.5.x должна быть найдена").Равно(ЭталонныйПуть);

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

// Проверка одновременного поиска версий 8.3.24.x, 8.3.27.x и 8.5.1.x
Процедура ТестДолжен_НайтиНесколькоВерсий_Windows() Экспорт

Если Не ЭтоWindows Тогда
Сообщить("Тест выполняется только на windows");
юТест.ТестПройден();
Возврат;
КонецЕсли;

КаталогFixtures = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures");
КаталогWindows = ОбъединитьПути(КаталогFixtures, "windows");
Платформа1С = Новый Платформа1С;
Платформа1С.СброситьПоиск();
Платформа1С.ДобавитьКаталоГПоиска(КаталогWindows, РазрядностьПлатформы.x64);

ТаблицаВерсий = Платформа1С.ПолучитьТаблицуУстановленныхВерсий();
НомераВерсий = Новый Массив;
Для каждого Строка Из ТаблицаВерсий Цикл
НомераВерсий.Добавить(Строка.НомерВерсии);
КонецЦикла;

Ожидаем.Что(НомераВерсий, "8.3.24.1312 должна присутствовать в таблице версий").Содержит("8.3.24.1312");
Ожидаем.Что(НомераВерсий, "8.3.27.1590 должна присутствовать в таблице версий").Содержит("8.3.27.1590");
Ожидаем.Что(НомераВерсий, "8.5.1.1302 должна присутствовать в таблице версий").Содержит("8.5.1.1302");

ПутьКПредприятию_8_3_24 = Платформа1С.ПутьКПредприятию("8.3.24");
ПутьКПредприятию_8_3_27 = Платформа1С.ПутьКПредприятию("8.3.27");
ПутьКПредприятию_8_5_1 = Платформа1С.ПутьКПредприятию("8.5.1");
ПутьКПредприятию_8_5 = Платформа1С.ПутьКПредприятию("8.5");

Ожидаем.Что(НЕ ПустаяСтрока(ПутьКПредприятию_8_3_24), "Поиск по релизу 8.3.24 должен вернуть результат").ЭтоИстина();
Ожидаем.Что(НЕ ПустаяСтрока(ПутьКПредприятию_8_3_27), "Поиск по релизу 8.3.27 должен вернуть результат").ЭтоИстина();
Ожидаем.Что(НЕ ПустаяСтрока(ПутьКПредприятию_8_5_1), "Поиск по релизу 8.5.1 должен вернуть результат").ЭтоИстина();
Ожидаем.Что(НЕ ПустаяСтрока(ПутьКПредприятию_8_5), "Поиск по платформе 8.5 должен вернуть результат").ЭтоИстина();

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

Лог = Логирование.ПолучитьЛог("oscript.lib.v8find");
Лог.УстановитьУровень(УровниЛога.Отладка);

СИ = Новый СистемнаяИнформация;
ЭтоWindows = Найти(НРег(СИ.ВерсияОС), "windows") > 0;
Loading