mirror of
https://github.com/bia-technologies/yaxunit.git
synced 2025-01-05 12:50:36 +02:00
Merge pull request #141 from bia-technologies/feature/pause
Реализация кроссплатформеной паузы
This commit is contained in:
commit
f4f5f7a5fc
@ -26,6 +26,7 @@
|
||||
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикЗагрузитьПараметры");
|
||||
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикАнализПараметровЗапуска");
|
||||
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикЗагрузитьТесты");
|
||||
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикПодключитьКомпоненты");
|
||||
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикВыполнитьТестирование");
|
||||
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикСохранитьОтчет");
|
||||
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикСохранитьКодВозврата");
|
||||
@ -158,6 +159,13 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОбработчикПодключитьКомпоненты(Результат, ДополнительныеПараметры) Экспорт
|
||||
|
||||
ЮТКомпонентыКлиент.ТихаяУстановкаКомпонент();
|
||||
ВызватьСледующийОбработчик(ДополнительныеПараметры);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
Процедура ВызватьСледующийОбработчик(ПараметрыИсполнения, Результат = Неопределено)
|
||||
|
104
exts/yaxunit/src/CommonModules/ЮТКомпоненты/Module.bsl
Normal file
104
exts/yaxunit/src/CommonModules/ЮТКомпоненты/Module.bsl
Normal file
@ -0,0 +1,104 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// Copyright 2021-2023 BIA-Technologies Limited Liability Company
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
// Возвращает внешнюю компоненту, реализующую паузу
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ВнешнийОбъект
|
||||
Функция Пауза() Экспорт
|
||||
|
||||
Возврат СоздатьКомпоненту(ОписаниеКомпонентыПауза());
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
// Создает внешнюю компоненту по описанию
|
||||
//
|
||||
// Параметры:
|
||||
// ОписаниеКомпоненты - см. ОписаниеКомпоненты
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ВнешнийОбъект
|
||||
Функция СоздатьКомпоненту(ОписаниеКомпоненты) Экспорт
|
||||
|
||||
Если ПодключитьКомпоненту(ОписаниеКомпоненты.ИмяМакета, ОписаниеКомпоненты.ИмяКомпоненты, Истина) Тогда
|
||||
Возврат Новый (ОписаниеКомпоненты.ИмяКласса);
|
||||
Иначе
|
||||
ВызватьИсключение "Не удалось подключить внешнюю компоненту " + ОписаниеКомпоненты.ИмяКласса;
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Подключает внещнюю компоненту из макета
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяМакета - Строка - Имя макета, в котором хранится компонента
|
||||
// ИмяКомпоненты - Строка - Имя компоненты
|
||||
// Кэшировать - Булево - Кэшировать создание компоненты
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Успешность подключения
|
||||
Функция ПодключитьКомпоненту(ИмяМакета, ИмяКомпоненты, Кэшировать) Экспорт
|
||||
|
||||
Если Кэшировать Тогда
|
||||
Возврат ЮТПовторногоИспользования.ПодключитьКомпоненту(ИмяМакета, ИмяКомпоненты);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ПодключитьВнешнююКомпоненту(ИмяМакета, ИмяКомпоненты, ТипВнешнейКомпоненты.Native);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Описание компоненты реализующей паузу.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// см. ОписаниеКомпоненты
|
||||
Функция ОписаниеКомпонентыПауза() Экспорт
|
||||
|
||||
Возврат ОписаниеКомпоненты("ОбщийМакет.ЮТYaxUnitAddIn", "YaxUnitAddin", "Sleep");
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Описание внешней компоненты.
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяМакета - Строка - Имя макета, в котором хранится компонента
|
||||
// ИмяКомпоненты - Строка -Имя компоненты
|
||||
// ИмяКласса - Строка - Имя класса, по которому создается компонента
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ФиксированнаяСтруктура - Описание компоненты:
|
||||
// * ИмяМакета - Строка - Имя макета, в котором хранится компонента
|
||||
// * ИмяКомпоненты - Строка -Имя компоненты
|
||||
// * ИмяКласса - Строка - Имя класса
|
||||
Функция ОписаниеКомпоненты(ИмяМакета, ИмяКомпоненты, ИмяКласса) Экспорт
|
||||
|
||||
Описание = Новый Структура;
|
||||
Описание.Вставить("ИмяМакета", ИмяМакета);
|
||||
Описание.Вставить("ИмяКомпоненты", ИмяКомпоненты);
|
||||
Описание.Вставить("ИмяКласса", СтрШаблон("AddIn.%1.%2", ИмяКомпоненты, ИмяКласса));
|
||||
|
||||
Возврат Новый ФиксированнаяСтруктура(Описание);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
11
exts/yaxunit/src/CommonModules/ЮТКомпоненты/ЮТКомпоненты.mdo
Normal file
11
exts/yaxunit/src/CommonModules/ЮТКомпоненты/ЮТКомпоненты.mdo
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="76e16534-934b-43af-9f91-4a2849ed5f35">
|
||||
<name>ЮТКомпоненты</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Компоненты</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -0,0 +1,108 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// Copyright 2021-2023 BIA-Technologies Limited Liability Company
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
Функция ФайлКомпоненты(Знач ИмяМакета, Знач ОперационнаяСистема, Знач Архитектура) Экспорт
|
||||
|
||||
Данные = ЮТОбщийВызовСервера.Макет(ИмяМакета);
|
||||
ЧтениеАрхива = Новый ЧтениеZipФайла();
|
||||
ЧтениеАрхива.Открыть(Данные.ОткрытьПотокДляЧтения());
|
||||
|
||||
ИмяФайлаКомпоненты = ИмяФайлаКомпоненты(ЧтениеАрхива, ОперационнаяСистема, Архитектура);
|
||||
|
||||
Если ИмяФайлаКомпоненты = Неопределено Тогда
|
||||
ВызватьИсключение "Компонента не поддерживает клиентское окружение";
|
||||
КонецЕсли;
|
||||
|
||||
Данные = ДвоичныеДанныеЭлемента(ЧтениеАрхива, ИмяФайлаКомпоненты);
|
||||
|
||||
Возврат Новый ФиксированнаяСтруктура("ИмяФайла, Данные", ИмяФайлаКомпоненты, Данные);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Функция ИмяФайлаКомпоненты(ЧтениеАрхива, ОперационнаяСистема, Архитектура)
|
||||
|
||||
Данные = ДвоичныеДанныеЭлемента(ЧтениеАрхива, "MANIFEST.XML");
|
||||
|
||||
Если Данные = Неопределено Тогда
|
||||
ВызватьИсключение "Архив компоненты не содержит манифеста";
|
||||
КонецЕсли;
|
||||
|
||||
ЧтениеXML = Новый ЧтениеXML();
|
||||
ЧтениеXML.ОткрытьПоток(Данные.ОткрытьПотокДляЧтения());
|
||||
|
||||
ИмяФайлаКомпоненты = Неопределено;
|
||||
|
||||
Пока ЧтениеXML.Прочитать() Цикл
|
||||
|
||||
Если ЭтоПодходящийУзел(ЧтениеXML, ОперационнаяСистема, Архитектура) Тогда
|
||||
ИмяФайлаКомпоненты = ЧтениеXML.ЗначениеАтрибута("path");
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ЧтениеXML.Закрыть();
|
||||
|
||||
Возврат ИмяФайлаКомпоненты;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоПодходящийУзел(ЧтениеXML, ОперационнаяСистема, Архитектура)
|
||||
|
||||
Если ЧтениеXML.ТипУзла <> ТипУзлаXML.НачалоЭлемента ИЛИ СтрСравнить(ЧтениеXML.Имя, "component") <> 0 Тогда
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
ОперационнаяСистемаУзла = ЧтениеXML.ЗначениеАтрибута("os");
|
||||
АрхитектураУзла = ЧтениеXML.ЗначениеАтрибута("arch");
|
||||
|
||||
Возврат ОперационнаяСистема = ОперационнаяСистемаУзла И Архитектура = АрхитектураУзла;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДвоичныеДанныеЭлемента(ЧтениеАрхива, ИмяФайла)
|
||||
|
||||
ЭлементФайла = Неопределено;
|
||||
|
||||
Для Каждого Элемент Из ЧтениеАрхива.Элементы Цикл
|
||||
Если СтрСравнить(Элемент.ПолноеИмя, ИмяФайла) = 0 Тогда
|
||||
ЭлементФайла = Элемент;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Если ЭлементФайла = Неопределено Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
ИмяВременногоФайла = ПолучитьИмяВременногоФайла();
|
||||
ЧтениеАрхива.Извлечь(ЭлементФайла, ИмяВременногоФайла, РежимВосстановленияПутейФайловZIP.НеВосстанавливать);
|
||||
|
||||
Данные = Новый ДвоичныеДанные(ЮТФайлы.ОбъединитьПути(ИмяВременногоФайла, ИмяФайла));
|
||||
УдалитьФайлы(ИмяВременногоФайла);
|
||||
|
||||
Возврат Данные;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="20617de9-dab7-4587-a43a-4330e51bbc64">
|
||||
<name>ЮТКомпонентыВызовСервера</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Компоненты вызов сервера</value>
|
||||
</synonym>
|
||||
<server>true</server>
|
||||
<serverCall>true</serverCall>
|
||||
</mdclass:CommonModule>
|
113
exts/yaxunit/src/CommonModules/ЮТКомпонентыКлиент/Module.bsl
Normal file
113
exts/yaxunit/src/CommonModules/ЮТКомпонентыКлиент/Module.bsl
Normal file
@ -0,0 +1,113 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// Copyright 2021-2023 BIA-Technologies Limited Liability Company
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
Функция ТихаяУстановкаКомпонент() Экспорт
|
||||
|
||||
Успешно = Истина;
|
||||
#Если Клиент И НЕ ВебКлиент Тогда
|
||||
|
||||
Компоненты = ЮТОбщий.ЗначениеВМассиве(ЮТКомпоненты.ОписаниеКомпонентыПауза());
|
||||
|
||||
Для Каждого Компонента Из Компоненты Цикл
|
||||
ТихаяУстановкаВнешнейКомпоненты(Компонента.ИмяМакета);
|
||||
КонецЦикла;
|
||||
#КонецЕсли
|
||||
|
||||
Возврат Успешно;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Процедура ТихаяУстановкаВнешнейКомпоненты(ИмяМакета)
|
||||
|
||||
Информация = Новый СистемнаяИнформация();
|
||||
ОперационнаяСистема = Неопределено;
|
||||
Архитектура = Неопределено;
|
||||
|
||||
Linux = "Linux";
|
||||
Windows = "Windows";
|
||||
MacOS = "MacOS";
|
||||
x86 = "i386";
|
||||
x64 = "x86_64";
|
||||
|
||||
ТипКлиентскойПлатформы = Информация.ТипПлатформы;
|
||||
|
||||
Если ТипКлиентскойПлатформы = ТипПлатформы.Linux_x86 Тогда
|
||||
ОперационнаяСистема = Linux;
|
||||
Архитектура = x86;
|
||||
ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.Linux_x86_64 Тогда
|
||||
ОперационнаяСистема = Linux;
|
||||
Архитектура = x64;
|
||||
ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.Windows_x86 Тогда
|
||||
ОперационнаяСистема = Windows;
|
||||
Архитектура = x86;
|
||||
ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.Windows_x86_64 Тогда
|
||||
ОперационнаяСистема = Windows;
|
||||
Архитектура = x64;
|
||||
ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.MacOS_x86 Тогда
|
||||
ОперационнаяСистема = MacOS;
|
||||
Архитектура = x86;
|
||||
ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.MacOS_x86_64 Тогда
|
||||
ОперационнаяСистема = MacOS;
|
||||
Архитектура = x64;
|
||||
Иначе
|
||||
ВызватьИсключение "Неподдерживаемый тип платформы";
|
||||
КонецЕсли;
|
||||
|
||||
ДанныеФайла = ЮТКомпонентыВызовСервера.ФайлКомпоненты(ИмяМакета, ОперационнаяСистема, Архитектура);
|
||||
|
||||
Путь = РабочийКаталогДанныхПользователя();
|
||||
КорневойКаталог = ЮТФайлы.ОбъединитьПути(Путь, "..", "..", "..");
|
||||
|
||||
КаталогКомпонент = ЮТФайлы.ОбъединитьПути(КорневойКаталог, "ExtCompT");
|
||||
ФайлРеестра = ЮТФайлы.ОбъединитьПути(КаталогКомпонент, "registry.xml");
|
||||
ФайлКомпоненты = ЮТФайлы.ОбъединитьПути(КаталогКомпонент, ДанныеФайла.ИмяФайла);
|
||||
|
||||
ДанныеФайла.Данные.Записать(ФайлКомпоненты);
|
||||
ЗаписатьВРеестр(ФайлРеестра, ДанныеФайла.ИмяФайла);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ЗаписатьВРеестр(ФайлРеестра, ИмяФайла)
|
||||
|
||||
Данные = Новый ДвоичныеДанные(ФайлРеестра);
|
||||
Текст = ПолучитьСтрокуИзДвоичныхДанных(Данные);
|
||||
|
||||
Если СтрНайти(Текст, "<component") = 0 Тогда // Файл пустой
|
||||
Текст = СтрШаблон("<?xml version=""1.0"" encoding=""UTF-8""?>
|
||||
|<registry xmlns=""http://v8.1c.ru/8.2/addin/registry"">
|
||||
| <component path=""%1"" type=""native""/>
|
||||
|</registry>", ИмяФайла);
|
||||
ИначеЕсли СтрНайти(Текст, СтрШаблон("path=""%1""", ИмяФайла)) <> 0 Тогда // Компонента уже зарегистрированна
|
||||
Возврат;
|
||||
Иначе // Добавляем компоненту
|
||||
Запись = СтрШаблон(" <component path=""%1"" type=""native""/>", ИмяФайла);
|
||||
Текст = СтрЗаменить(Текст, "</registry>", Запись + Символы.ПС + "</registry>");
|
||||
КонецЕсли;
|
||||
|
||||
Данные = ПолучитьДвоичныеДанныеИзСтроки(Текст, КодировкаТекста.UTF8, Истина);
|
||||
Данные.Записать(ФайлРеестра);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="fde2e089-b73c-4596-b283-959c570ff45d">
|
||||
<name>ЮТКомпонентыКлиент</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Компоненты клиент</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -841,6 +841,16 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Преостанавливает поток выполнения на указанное количество секунд
|
||||
//
|
||||
// Параметры:
|
||||
// Время - Число - Продолжительность паузы в секундах, возможно указывать дробное значение
|
||||
Процедура Пауза(Время) Экспорт
|
||||
|
||||
ЮТКомпоненты.Пауза().Sleep(Цел(1000 * Время));
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
@ -46,4 +46,33 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Макет(ИмяМакета) Экспорт
|
||||
|
||||
ЧастиИмени = СтрРазделить(ИмяМакета, ".");
|
||||
|
||||
Если ЧастиИмени.Количество() < 2 Тогда
|
||||
ВызватьИсключение СтрШаблон("Некорректно имя макет, если вы хотите получить данные общего макета необходимо указать `ОбщийМакет.%1`",
|
||||
ИмяМакета);
|
||||
КонецЕсли;
|
||||
|
||||
ИндексОбласти = 0;
|
||||
Если СтрСравнить(ЧастиИмени[0], "ОбщийМакет") = 0 Тогда
|
||||
Макет = ПолучитьОбщийМакет(ЧастиИмени[1]);
|
||||
ИндексОбласти = 2;
|
||||
ИначеЕсли ЧастиИмени.Количество() >= 3 Тогда
|
||||
Менеджер = Менеджер(СтрШаблон("%1.%2", ЧастиИмени[0], ЧастиИмени[1]));
|
||||
Макет = Менеджер.ПолучитьМакет(ЧастиИмени[2]);
|
||||
ИндексОбласти = 3;
|
||||
Иначе
|
||||
ВызватьИсключение СтрШаблон("Некорректное имя макета `%1`", ИмяМакета);
|
||||
КонецЕсли;
|
||||
|
||||
Если ЧастиИмени.Количество() > ИндексОбласти Тогда
|
||||
Макет = Макет.ПолучитьОбласть(ЧастиИмени[ИндексОбласти]);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Макет;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -42,4 +42,10 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПодключитьКомпоненту(ИмяМакета, ИмяКомпоненты) Экспорт
|
||||
|
||||
Возврат ЮТКомпоненты.ПодключитьКомпоненту(ИмяМакета, ИмяКомпоненты, Ложь);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -77,26 +77,28 @@
|
||||
// Параметры:
|
||||
// Путь1 - Строка - базовый путь к каталогу
|
||||
// Путь2 - Строка - относительный путь к вложенному элементу
|
||||
// Путь3 - Строка - относительный путь к вложенному элементу
|
||||
// Путь4 - Строка - относительный путь к вложенному элементу
|
||||
// Путь5 - Строка - относительный путь к вложенному элементу
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Объединенный путь
|
||||
Функция ОбъединитьПути(Путь1, Путь2) Экспорт
|
||||
Функция ОбъединитьПути(Путь1, Путь2, Путь3 = Неопределено, Путь4 = Неопределено, Путь5 = Неопределено) Экспорт
|
||||
|
||||
Результат = Неопределено;
|
||||
Разделитель = ПолучитьРазделительПути();
|
||||
|
||||
Если ЗначениеЗаполнено(Путь1) И ЗначениеЗаполнено(Путь2) Тогда
|
||||
Разделитель = ПолучитьРазделительПути();
|
||||
|
||||
Если НЕ СтрЗаканчиваетсяНа(Путь1, Разделитель) И НЕ СтрНачинаетсяС(Разделитель, Путь2) Тогда
|
||||
Результат = СтрШаблон("%1%2%3", Путь1, Разделитель, Путь2);
|
||||
Иначе
|
||||
Результат = Путь1 + Путь2;
|
||||
КонецЕсли;
|
||||
|
||||
ИначеЕсли ЗначениеЗаполнено(Путь1) Тогда
|
||||
Результат = Путь1;
|
||||
Иначе
|
||||
Результат = Путь2;
|
||||
Результат = ДополнитьПуть(Путь1, Путь2, Разделитель);
|
||||
|
||||
Если Путь3 <> Неопределено Тогда
|
||||
Результат = ДополнитьПуть(Результат, Путь3, Разделитель);
|
||||
КонецЕсли;
|
||||
|
||||
Если Путь4 <> Неопределено Тогда
|
||||
Результат = ДополнитьПуть(Результат, Путь4, Разделитель);
|
||||
КонецЕсли;
|
||||
|
||||
Если Путь5 <> Неопределено Тогда
|
||||
Результат = ДополнитьПуть(Результат, Путь5, Разделитель);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
@ -174,4 +176,26 @@
|
||||
КонецПроцедуры
|
||||
#КонецЕсли
|
||||
|
||||
Функция ДополнитьПуть(Путь1, Путь2, Разделитель)
|
||||
|
||||
Результат = Неопределено;
|
||||
|
||||
Если ЗначениеЗаполнено(Путь1) И ЗначениеЗаполнено(Путь2) Тогда
|
||||
|
||||
Если НЕ СтрЗаканчиваетсяНа(Путь1, Разделитель) И НЕ СтрНачинаетсяС(Разделитель, Путь2) Тогда
|
||||
Результат = СтрШаблон("%1%2%3", Путь1, Разделитель, Путь2);
|
||||
Иначе
|
||||
Результат = Путь1 + Путь2;
|
||||
КонецЕсли;
|
||||
|
||||
ИначеЕсли ЗначениеЗаполнено(Путь1) Тогда
|
||||
Результат = Путь1;
|
||||
Иначе
|
||||
Результат = Путь2;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
BIN
exts/yaxunit/src/CommonTemplates/ЮТYaxUnitAddIn/Template.addin
Normal file
BIN
exts/yaxunit/src/CommonTemplates/ЮТYaxUnitAddIn/Template.addin
Normal file
Binary file not shown.
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonTemplate xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="28fa5c27-1be9-4b6d-b814-c72dd59f398c">
|
||||
<name>ЮТYaxUnitAddIn</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>ЮТYax unit add in</value>
|
||||
</synonym>
|
||||
<templateType>AddIn</templateType>
|
||||
</mdclass:CommonTemplate>
|
@ -43,6 +43,7 @@
|
||||
<commonTemplates>CommonTemplate.ЮТ_СловарьПодражателя_Люди_МужскиеИмена_ru</commonTemplates>
|
||||
<commonTemplates>CommonTemplate.ЮТ_СловарьПодражателя_Люди_МужскиеОтчества_ru</commonTemplates>
|
||||
<commonTemplates>CommonTemplate.ЮТ_СловарьПодражателя_Люди_МужскиеФамилии_ru</commonTemplates>
|
||||
<commonTemplates>CommonTemplate.ЮТYaxUnitAddIn</commonTemplates>
|
||||
<commonTemplates>CommonTemplate.ЮТОписаниеМетаданных</commonTemplates>
|
||||
<commonModules>CommonModule.Мокито</commonModules>
|
||||
<commonModules>CommonModule.МокитоОбучение</commonModules>
|
||||
@ -55,6 +56,9 @@
|
||||
<commonModules>CommonModule.ЮТИсполнительКлиент</commonModules>
|
||||
<commonModules>CommonModule.ЮТИсполнительКлиентСервер</commonModules>
|
||||
<commonModules>CommonModule.ЮТИсполнительСервер</commonModules>
|
||||
<commonModules>CommonModule.ЮТКомпоненты</commonModules>
|
||||
<commonModules>CommonModule.ЮТКомпонентыВызовСервера</commonModules>
|
||||
<commonModules>CommonModule.ЮТКомпонентыКлиент</commonModules>
|
||||
<commonModules>CommonModule.ЮТКонструкторВариантов</commonModules>
|
||||
<commonModules>CommonModule.ЮТКонструкторТестовыхДанныхСлужебный</commonModules>
|
||||
<commonModules>CommonModule.ЮТКонтекст</commonModules>
|
||||
|
@ -25,10 +25,24 @@
|
||||
.ДобавитьТест("ОбъединитьВСтруктуру")
|
||||
.ДобавитьТест("СформироватьСтрокуСимволов")
|
||||
.ДобавитьТест("ДанныеСовпадают")
|
||||
.ДобавитьТест("Пауза")
|
||||
;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Пауза() Экспорт
|
||||
|
||||
Начало = ТекущаяУниверсальнаяДатаВМиллисекундах();
|
||||
ЮТОбщий.Пауза(1);
|
||||
ЮТОбщий.Пауза(1);
|
||||
ЮТОбщий.Пауза(1);
|
||||
Дельта = ТекущаяУниверсальнаяДатаВМиллисекундах() - Начало;
|
||||
|
||||
ЮТест.ОжидаетЧто(Дельта)
|
||||
.МеждуИсключаяГраницы(3010, 3050);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ДобавитьСтроку() Экспорт
|
||||
|
||||
Варианты = ЮТест.Варианты("Исходная, Дополнение, Разделитель, Результат")
|
||||
|
@ -93,7 +93,7 @@
|
||||
|
||||
Наборы = ЮТЧитатель.ЗагрузитьТесты(ПараметрыЗапуска);
|
||||
ЮТест.ОжидаетЧто(Наборы, "Прочитанные наборы расширения tests")
|
||||
.ИмеетДлину(21);
|
||||
.ИмеетДлину(22);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -158,4 +158,4 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
#КонецОбласти
|
||||
|
Loading…
Reference in New Issue
Block a user