diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..977ccda --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +# Зависимости OScript +oscript_modules/ + +# Артефакты сборки +*.ospx + +# Отчёты тестов +tests.xml +bdd-log.xml diff --git a/packagedef b/packagedef index d52ba3f..98dfd94 100644 --- a/packagedef +++ b/packagedef @@ -4,7 +4,7 @@ // Описание.Имя("v8find") - .Версия("0.3.0") + .Версия("0.3.1") .Автор("Khorev Aleksey") .АдресАвтора("Khorevaa@gmail.com") .Описание("Библиотека поиска исполняемых файлов платформы 1С Предприятие") diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\273\320\260\321\202\321\204\320\276\321\200\320\274\320\2601\320\241.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\273\320\260\321\202\321\204\320\276\321\200\320\274\320\2601\320\241.os" index e0ee602..f935f12 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\273\320\260\321\202\321\204\320\276\321\200\320\274\320\2601\320\241.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\273\320\260\321\202\321\204\320\276\321\200\320\274\320\2601\320\241.os" @@ -245,7 +245,9 @@ МассивНомеровВерсии = СтрРазделить(НомерВерсии, "."); - Если МассивНомеровВерсии.Количество() = 2 Тогда + Если МассивНомеровВерсии.Количество() = 1 Тогда + // Поиск по главной версии (например "8") — без ограничения на НомерПлатформы, вернёт старшую из всех найденных + ИначеЕсли МассивНомеровВерсии.Количество() = 2 Тогда Отбор.Вставить("НомерПлатформы", НомерВерсии); ИначеЕсли МассивНомеровВерсии.Количество() = 3 Тогда Отбор.Вставить("НомерРелиза", НомерВерсии); @@ -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, Неопределено); КонецЕсли; diff --git a/tests/fixtures/linux/8.3.24.1312/x86_64/1cv8 b/tests/fixtures/linux/8.3.24.1312/x86_64/1cv8 new file mode 100644 index 0000000..e69de29 diff --git a/tests/fixtures/linux/8.3.24.1312/x86_64/1cv8c b/tests/fixtures/linux/8.3.24.1312/x86_64/1cv8c new file mode 100644 index 0000000..e69de29 diff --git a/tests/fixtures/linux/8.3.24.1312/x86_64/rac b/tests/fixtures/linux/8.3.24.1312/x86_64/rac new file mode 100644 index 0000000..e69de29 diff --git a/tests/fixtures/linux/8.3.27.1590/x86_64/1cv8 b/tests/fixtures/linux/8.3.27.1590/x86_64/1cv8 new file mode 100644 index 0000000..e69de29 diff --git a/tests/fixtures/linux/8.3.27.1590/x86_64/1cv8c b/tests/fixtures/linux/8.3.27.1590/x86_64/1cv8c new file mode 100644 index 0000000..e69de29 diff --git a/tests/fixtures/linux/8.3.27.1590/x86_64/rac b/tests/fixtures/linux/8.3.27.1590/x86_64/rac new file mode 100644 index 0000000..e69de29 diff --git a/tests/fixtures/linux/osx/8.5.1.1302/1cv8 b/tests/fixtures/linux/osx/8.5.1.1302/1cv8 new file mode 100644 index 0000000..e69de29 diff --git a/tests/fixtures/linux/osx/8.5.1.1302/1cv8c b/tests/fixtures/linux/osx/8.5.1.1302/1cv8c new file mode 100644 index 0000000..e69de29 diff --git a/tests/fixtures/linux/osx/8.5.1.1302/rac b/tests/fixtures/linux/osx/8.5.1.1302/rac new file mode 100644 index 0000000..e69de29 diff --git a/tests/fixtures/windows/8.3.24.1312/bin/1cv8.exe b/tests/fixtures/windows/8.3.24.1312/bin/1cv8.exe new file mode 100644 index 0000000..e69de29 diff --git a/tests/fixtures/windows/8.3.24.1312/bin/1cv8c.exe b/tests/fixtures/windows/8.3.24.1312/bin/1cv8c.exe new file mode 100644 index 0000000..e69de29 diff --git a/tests/fixtures/windows/8.3.24.1312/bin/rac.exe b/tests/fixtures/windows/8.3.24.1312/bin/rac.exe new file mode 100644 index 0000000..e69de29 diff --git a/tests/fixtures/windows/8.3.27.1590/bin/1cv8.exe b/tests/fixtures/windows/8.3.27.1590/bin/1cv8.exe new file mode 100644 index 0000000..e69de29 diff --git a/tests/fixtures/windows/8.3.27.1590/bin/1cv8c.exe b/tests/fixtures/windows/8.3.27.1590/bin/1cv8c.exe new file mode 100644 index 0000000..e69de29 diff --git a/tests/fixtures/windows/8.3.27.1590/bin/rac.exe b/tests/fixtures/windows/8.3.27.1590/bin/rac.exe new file mode 100644 index 0000000..e69de29 diff --git a/tests/fixtures/windows/8.5.1.1302/bin/1cv8.exe b/tests/fixtures/windows/8.5.1.1302/bin/1cv8.exe new file mode 100644 index 0000000..e69de29 diff --git a/tests/fixtures/windows/8.5.1.1302/bin/1cv8c.exe b/tests/fixtures/windows/8.5.1.1302/bin/1cv8c.exe new file mode 100644 index 0000000..e69de29 diff --git a/tests/fixtures/windows/8.5.1.1302/bin/rac.exe b/tests/fixtures/windows/8.5.1.1302/bin/rac.exe new file mode 100644 index 0000000..e69de29 diff --git "a/tests/\320\237\320\273\320\260\321\202\321\204\320\276\321\200\320\274\320\2601\320\241_test.os" "b/tests/\320\237\320\273\320\260\321\202\321\204\320\276\321\200\320\274\320\2601\320\241_test.os" index 825eae4..65bb5b3 100755 --- "a/tests/\320\237\320\273\320\260\321\202\321\204\320\276\321\200\320\274\320\2601\320\241_test.os" +++ "b/tests/\320\237\320\273\320\260\321\202\321\204\320\276\321\200\320\274\320\2601\320\241_test.os" @@ -13,13 +13,16 @@ ИменаТестов.Добавить("ТестДолжен_ПроверитьПлатформа1С_Windows"); ИменаТестов.Добавить("ТестДолжен_ПроверитьПлатформа1С_OSX"); ИменаТестов.Добавить("ТестДолжен_ПроверитьПлатформа1С_Linux"); + ИменаТестов.Добавить("ТестДолжен_НайтиВерсию_8_5_x_Windows"); + ИменаТестов.Добавить("ТестДолжен_НайтиВерсию_8_5_x_OSX"); + ИменаТестов.Добавить("ТестДолжен_НайтиНесколькоВерсий_Windows"); Возврат ИменаТестов; КонецФункции Процедура ТестДолжен_ПроверитьПлатформа1С_Windows() Экспорт - + Если Не ЭтоWindows Тогда Сообщить("Тест выполняется только на windows"); юТест.ТестПройден(); @@ -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С найден").Равно(ЭталонныйПуть); @@ -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;