diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..98058a0 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,39 @@ +* text=auto +*.htm text eol=crlf +*.html text eol=crlf +renames.txt text eol=crlf + +*.bsl text eol=crlf +*.os text eol=crlf + +*.xml text eol=crlf +*.feature text +*.md text +*.json text + +*.bat text eol=crlf +*.cmd text eol=crlf +*.ps1 text eol=crlf + +*.sh text eol=lf +*.groovy text eol=lf +Form.bin binary +*.bin binary + +*.png binary +*.ico binary +*.jpg binary +*.jpeg binary + +# Archives +*.7z binary +*.gz binary +*.tar binary +*.tgz binary +*.zip binary + +*.cf binary +*.cfe binary +*.epf binary +*.erf binary +ParentConfigurations.bin binary diff --git a/build.cmd b/build.cmd new file mode 100644 index 0000000..31bb310 --- /dev/null +++ b/build.cmd @@ -0,0 +1,11 @@ +@chcp 65001 + +call vrunner init-dev %* + +@call vrunner restore --db-user ""%* + +@rem собрать внешние обработчики и отчеты в каталоге .tempdb +call vrunner compileepf src/ПарсерВстроенногоЯзыка .tempdb/ПарсерВстроенногоЯзыка.epf %* +call vrunner compileepf console/src/Консоль .tempdb/Консоль.epf %* +call vrunner compileepf tests/async .tempdb/tests/async.epf %* + diff --git "a/console/src/\320\232\320\276\320\275\321\201\320\276\320\273\321\214.xml" "b/console/src/\320\232\320\276\320\275\321\201\320\276\320\273\321\214.xml" index f773484..4d91d12 100644 --- "a/console/src/\320\232\320\276\320\275\321\201\320\276\320\273\321\214.xml" +++ "b/console/src/\320\232\320\276\320\275\321\201\320\276\320\273\321\214.xml" @@ -1,5 +1,5 @@  - + diff --git "a/console/src/\320\232\320\276\320\275\321\201\320\276\320\273\321\214/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/console/src/\320\232\320\276\320\275\321\201\320\276\320\273\321\214/Forms/\320\244\320\276\321\200\320\274\320\260.xml" index 031adb2..3ae877d 100644 --- "a/console/src/\320\232\320\276\320\275\321\201\320\276\320\273\321\214/Forms/\320\244\320\276\321\200\320\274\320\260.xml" +++ "b/console/src/\320\232\320\276\320\275\321\201\320\276\320\273\321\214/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -1,5 +1,5 @@  - +
Форма diff --git "a/console/src/\320\232\320\276\320\275\321\201\320\276\320\273\321\214/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/console/src/\320\232\320\276\320\275\321\201\320\276\320\273\321\214/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" index ee97ebc..b6644ae 100644 --- "a/console/src/\320\232\320\276\320\275\321\201\320\276\320\273\321\214/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" +++ "b/console/src/\320\232\320\276\320\275\321\201\320\276\320\273\321\214/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -1,5 +1,5 @@  - + <v8:item> <v8:lang>en</v8:lang> @@ -33,6 +33,7 @@ <v8:content>Группа0</v8:content> </v8:item> </ToolTip> + <Behavior>Usual</Behavior> <Representation>None</Representation> <ShowTitle>false</ShowTitle> <ExtendedTooltip name="Группа0РасширеннаяПодсказка" id="31"/> @@ -180,6 +181,7 @@ <v8:content>Группа1</v8:content> </v8:item> </ToolTip> + <Behavior>Usual</Behavior> <Representation>None</Representation> <ShowTitle>false</ShowTitle> <ExtendedTooltip name="Группа1РасширеннаяПодсказка" id="13"/> @@ -208,6 +210,7 @@ </v8:item> </ToolTip> <Group>Horizontal</Group> + <Behavior>Usual</Behavior> <Representation>None</Representation> <ShowTitle>false</ShowTitle> <ExtendedTooltip name="Группа2РасширеннаяПодсказка" id="18"/> @@ -233,6 +236,7 @@ <v8:content>Страницы1</v8:content> </v8:item> </ToolTip> + <PagesRepresentation>TabsOnTop</PagesRepresentation> <ExtendedTooltip name="Страницы1РасширеннаяПодсказка" id="75"/> <ChildItems> <Page name="СтраницаИсходник" id="76"> @@ -437,6 +441,7 @@ <v8:content>Страницы2</v8:content> </v8:item> </ToolTip> + <PagesRepresentation>TabsOnTop</PagesRepresentation> <ExtendedTooltip name="Страницы2РасширеннаяПодсказка" id="107"/> <ChildItems> <Page name="СтраницаРезультатТекст" id="78"> @@ -860,6 +865,7 @@ <v8:content>Группа поиска</v8:content> </v8:item> </ToolTip> + <Behavior>Usual</Behavior> <Representation>None</Representation> <ShowTitle>false</ShowTitle> <ExtendedTooltip name="ГруппаПоискаРасширеннаяПодсказка" id="168"/> diff --git "a/console/src/\320\232\320\276\320\275\321\201\320\276\320\273\321\214/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/console/src/\320\232\320\276\320\275\321\201\320\276\320\273\321\214/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 8d2e8bd..a8f27c2 100644 --- "a/console/src/\320\232\320\276\320\275\321\201\320\276\320\273\321\214/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/console/src/\320\232\320\276\320\275\321\201\320\276\320\273\321\214/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -204,9 +204,12 @@ ПутьКФайлуПарсера = ФайлОбработки.Путь + "ПарсерВстроенногоЯзыка.epf"; Парсер = ВнешниеОбработки.Создать(ПутьКФайлуПарсера, Ложь); - ПутьКФайлуГлобальногоОкружения = ФайлОбработки.Путь + "ГлобальноеОкружение.epf"; - ГлобальноеОкружение = ВнешниеОбработки.Создать(ПутьКФайлуГлобальногоОкружения, Ложь); - + ГлобальноеОкружение = Неопределено; + Если СоздаватьГлобальноеОкружение тогда + ПутьКФайлуГлобальногоОкружения = ФайлОбработки.Путь + "ГлобальноеОкружение.epf"; + ГлобальноеОкружение = ВнешниеОбработки.Создать(ПутьКФайлуГлобальногоОкружения, Ложь); + КонецЕсли; + НовыйХэшПарсера = SHA1(Новый ДвоичныеДанные(ПутьКФайлуПарсера)); Если НовыйХэшПарсера <> ЭтотОбъект.ХэшПарсера Тогда ЭтотОбъект.ХэшИсходника = ""; diff --git a/data/start.dt b/data/start.dt new file mode 100644 index 0000000..017a25c Binary files /dev/null and b/data/start.dt differ diff --git a/designer.cmd b/designer.cmd new file mode 100644 index 0000000..7fd1016 --- /dev/null +++ b/designer.cmd @@ -0,0 +1,2 @@ +@chcp 65001 +call vrunner designer --no-wait %* \ No newline at end of file diff --git a/env.json b/env.json new file mode 100644 index 0000000..f6c4581 --- /dev/null +++ b/env.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://raw.githubusercontent.com/vanessa-opensource/vanessa-runner/develop/vanessa-runner-schema.json", + "default": { + "--ibconnection": "/F./.tempdb/ib", + "--db-user": "Administrator", + "--db-pwd": "", + "--root": ".", + "--workspace": ".", + "--v8version": "8.3.22", + "--ordinaryapp": "-1", + "dtpath": "./data/start.dt" + }, + + "xunit": { + "--xddConfig": "./tools/vanessaTddConf.json", + "testsPath": "$addRoot/tests/", + "--reportsxunit": "ГенераторОтчетаJUnitXML{.tempdb/out/smoke/junit/junit.xml};ГенераторОтчетаAllureXMLВерсия2{.tempdb/out/smoke/allure/allure.xml}", + "--xddExitCodePath": "./.tempdb/xddExitCodePath.txt" + } + +} \ No newline at end of file diff --git "a/src/\320\237\320\260\321\200\321\201\320\265\321\200\320\222\321\201\321\202\321\200\320\276\320\265\320\275\320\275\320\276\320\263\320\276\320\257\320\267\321\213\320\272\320\260.xml" "b/src/\320\237\320\260\321\200\321\201\320\265\321\200\320\222\321\201\321\202\321\200\320\276\320\265\320\275\320\275\320\276\320\263\320\276\320\257\320\267\321\213\320\272\320\260.xml" index 9079ec3..a368bce 100644 --- "a/src/\320\237\320\260\321\200\321\201\320\265\321\200\320\222\321\201\321\202\321\200\320\276\320\265\320\275\320\275\320\276\320\263\320\276\320\257\320\267\321\213\320\272\320\260.xml" +++ "b/src/\320\237\320\260\321\200\321\201\320\265\321\200\320\222\321\201\321\202\321\200\320\276\320\265\320\275\320\275\320\276\320\263\320\276\320\257\320\267\321\213\320\272\320\260.xml" @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.7"> +<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.15"> <ExternalDataProcessor uuid="3e4a8821-bf38-4afb-84a3-f23a4a6df22a"> <InternalInfo> <xr:ContainedObject> diff --git "a/src/\320\237\320\260\321\200\321\201\320\265\321\200\320\222\321\201\321\202\321\200\320\276\320\265\320\275\320\275\320\276\320\263\320\276\320\257\320\267\321\213\320\272\320\260/Ext/ObjectModule.bsl" "b/src/\320\237\320\260\321\200\321\201\320\265\321\200\320\222\321\201\321\202\321\200\320\276\320\265\320\275\320\275\320\276\320\263\320\276\320\257\320\267\321\213\320\272\320\260/Ext/ObjectModule.bsl" index 4172d16..4795e83 100644 --- "a/src/\320\237\320\260\321\200\321\201\320\265\321\200\320\222\321\201\321\202\321\200\320\276\320\265\320\275\320\275\320\276\320\263\320\276\320\257\320\267\321\213\320\272\320\260/Ext/ObjectModule.bsl" +++ "b/src/\320\237\320\260\321\200\321\201\320\265\321\200\320\222\321\201\321\202\321\200\320\276\320\265\320\275\320\275\320\276\320\263\320\276\320\257\320\267\321\213\320\272\320\260/Ext/ObjectModule.bsl" @@ -80,6 +80,9 @@ Перем Парсер_ДанныеПредыдущегоТокена; // один из ТаблицаТокенов Перем Парсер_Узлы; // структура как соответствие[строка] (таблица значений) +Перем Состояние_РазрешеноАсинх; // Если истина то возможно чтение Асинх, если ложь, то Асмнх будет переменной +Перем Состояние_РазрешеноЖдать; // Если истина то Ждать ключевое слово, если ложь, то переменная +Перем ЭтоАсинхроннныйМетод; // Признак асинхронного метода #КонецОбласти // СостояниеПарсера #Область СостояниеПосетителя @@ -443,6 +446,7 @@ Поля.Добавить("Аннотации"); // массив (ОбъявлениеАннотации) Поля.Добавить("Параметры"); // массив (ОбъявлениеПараметра) Поля.Добавить("Экспорт"); // булево + Поля.Добавить("Асинх"); // булево Поля.Добавить("Начало"); // один из ТаблицаТокенов Поля.Добавить("Конец"); // один из ТаблицаТокенов @@ -460,6 +464,7 @@ Поля.Добавить("Аннотации"); // массив (ОбъявлениеАннотации) Поля.Добавить("Параметры"); // массив (ОбъявлениеПараметра) Поля.Добавить("Экспорт"); // булево + Поля.Добавить("Асинх"); // булево Поля.Добавить("Начало"); // один из ТаблицаТокенов Поля.Добавить("Конец"); // один из ТаблицаТокенов @@ -886,6 +891,16 @@ Поля.Добавить("ОбработчикСобытия"); // структура (ВыражениеИдентификатор) Поля.Добавить("Начало"); // один из ТаблицаТокенов Поля.Добавить("Конец"); // один из ТаблицаТокенов + + + Парсер_Узлы.Вставить("ОператорВызоваОбещания", Новый ТаблицаЗначений); + // Хранит вызов процедуры или функции как процедуры. + Поля = Парсер_Узлы.ОператорВызоваОбещания.Колонки; + Поля.Добавить("Тип"); // строка (один из Типы) + Поля.Добавить("Обещание"); // вызываемая процедура. + Поля.Добавить("Начало"); // один из ТаблицаТокенов + Поля.Добавить("Конец"); // один из ТаблицаТокенов + КонецПроцедуры @@ -1105,8 +1120,9 @@ |И.And, Или.Or, Не.Not, ДобавитьОбработчик.AddHandler, УдалитьОбработчик.RemoveHandler, |Попытка.Try, Исключение.Except, ВызватьИсключение.Raise, КонецПопытки.EndTry, |Новый.New, Выполнить.Execute, Экспорт.Export, Перейти.Goto, - |Истина.True, Ложь.False, Неопределено.Undefined, Null" - ); + |Истина.True, Ложь.False, Неопределено.Undefined, Null, + |Асинх, Ждать" + ); КонецФункции // КлючевыеСлова() Функция Токены(КлючевыеСлова = Неопределено) Экспорт @@ -1171,7 +1187,8 @@ |ИнструкцияПрепроцессораУдаление, ИнструкцияПрепроцессораКонецУдаления, |ИнструкцияПрепроцессораИспользовать, |ВыражениеПрепроцессораБинарное, ВыражениеПрепроцессораНе, - |ВыражениеПрепроцессораСимвол, ВыражениеПрепроцессораСкобочное" + |ВыражениеПрепроцессораСимвол, ВыражениеПрепроцессораСкобочное, + |ОператорВызоваОбещания" ); КонецФункции // Типы() @@ -1290,6 +1307,8 @@ Парсер_Значение = Ложь; ИначеЕсли Парсер_Токен = Токены.Null Тогда Парсер_Значение = Null; + ИначеЕсли Парсер_Токен = Токены.Ждать и не Состояние_РазрешеноЖдать Тогда + Парсер_Токен = Токены.Идентификатор; КонецЕсли; Иначе Парсер_Токен = Токены.Идентификатор; @@ -1448,7 +1467,7 @@ КонецЦикла; Парсер_Символ = Сред(Парсер_Исходник, Парсер_ТекущаяПозиция, 1); Парсер_Литерал = Сред(Парсер_Исходник, Начало, Парсер_ТекущаяПозиция - Начало); - + Состояние_РазрешеноАсинх = Истина; Если Директивы.Свойство(Парсер_Литерал) Тогда Парсер_Токен = Токены.Директива; ИначеЕсли Аннотации.Свойство(Парсер_Литерал) Тогда @@ -1456,6 +1475,7 @@ Иначе Ошибка(3, Парсер_Литерал, Ложь); Парсер_Токен = Токены.Директива; + Состояние_РазрешеноАсинх = Ложь; КонецЕсли; ИначеЕсли ПредыдущийСимвол = "#" Тогда @@ -1692,7 +1712,10 @@ Функция Разобрать(Исходник, ВнешнееОкружение = Неопределено) Экспорт Перем Объявления, Переменные, ОбъявлениеАвтоПеременной, ЭлементОкружения, Операторы, Модуль, ТочкиВызова, ИндексТокена, ПоследнийТокен; - + + Состояние_РазрешеноАсинх = Ложь; + Состояние_РазрешеноЖдать = Ложь; + Парсер_Исходник = Исходник; Парсер_ТекущаяПозиция = 0; Парсер_НомерТекущейСтроки = 1; @@ -1921,6 +1944,8 @@ Операнд.Начало = Парсер_ДанныеТекущегоТокена; Операнд.Конец = Парсер_ДанныеТекущегоТокена; СледующийТокен(); + ИначеЕсли Парсер_Токен = Токены.Ждать Тогда + Операнд = РазобратьОператорЖдать(); ИначеЕсли Парсер_Токен = Токены.Идентификатор Тогда Операнд = РазобратьВыражениеИдентификатор(); ИначеЕсли Парсер_Токен = Токены.ЛеваяКруглаяСкобка Тогда @@ -2039,7 +2064,7 @@ Возврат Узел; КонецФункции // РазобратьВыражениеНовый() -Функция РазобратьВыражениеИдентификатор(Знач НоваяПеременнаяРазрешена = Ложь, НоваяПеременная = Неопределено, ЭтоВызов = Неопределено) +Функция РазобратьВыражениеИдентификатор(Знач НоваяПеременнаяРазрешена = Ложь, НоваяПеременная = Неопределено, ЭтоВызов = Неопределено, ЭтоЖдать = Ложь) Перем Имя, ЭлементОкружения, Хвост, Аргументы, НачалоАвтоПеременной, ТочкиВызова, Начало; Начало = Парсер_ДанныеТекущегоТокена; Имя = Парсер_Литерал; @@ -2088,7 +2113,7 @@ ЭлементОкружения.Объявление.Имя = Имя; ЭлементОкружения.Объявление.Начало = НачалоАвтоПеременной; ЭлементОкружения.Объявление.Конец = НачалоАвтоПеременной;; - НоваяПеременная = ЭлементОкружения; + НоваяПеременная = ЭлементОкружения; Иначе ЭлементОкружения = Парсер_Узлы.ЭлементОкружения.Добавить(); ЭлементОкружения.Тип = Типы.ЭлементОкружения; @@ -2231,7 +2256,8 @@ Функция РазобратьОбъявленияМодуля(Переменные) Перем Объявления, ОбъявлениеДирективы; - Объявления = Новый Массив; + Объявления = Новый Массив; + ЭтоАсинхроннныйМетод = Ложь; Пока Истина Цикл Парсер_СписокДиректив = Новый Массив; Парсер_СписокАннотаций = Новый Массив; @@ -2261,14 +2287,18 @@ ОбъявлениеАннотации.Начало = НачалоАннотации; ОбъявлениеАннотации.Конец = Парсер_ДанныеТекущегоТокена; Парсер_СписокАннотаций.Добавить(ОбъявлениеАннотации); + СледующийТокен(); + ИначеЕсли Парсер_Токен = Токены.Асинх Тогда + ЭтоАсинхроннныйМетод = Истина; СледующийТокен(); + Прервать; Иначе Прервать; КонецЕсли; КонецЦикла; Если Парсер_Токен = Токены.Перем И Парсер_ПеременныеРазрешены Тогда Объявления.Добавить(РазобратьОбъявлениеСпискаПеременныхМодуля(Переменные)); - ИначеЕсли Парсер_Токен = Токены.Функция Тогда + ИначеЕсли Парсер_Токен = Токены.Функция Тогда Парсер_ЭтоФункция = Истина; Объявления.Добавить(РазобратьОбъявлениеМетода()); Парсер_ЭтоФункция = Ложь; @@ -2417,6 +2447,10 @@ Перем Сигнатура, ЭлементОкружения, Имя, Переменные, Параметры, ЕстьЭкспорт, Операторы, Объявления, ОбъявлениеАвтоПеременной, Начало; Начало = Парсер_ДанныеТекущегоТокена; ЕстьЭкспорт = Ложь; + Если ЭтоАсинхроннныйМетод тогда + Состояние_РазрешеноЖдать = Истина; + КонецЕсли; + СледующийТокен(); Ожидать(Токены.Идентификатор); Имя = Парсер_Литерал; @@ -2435,6 +2469,7 @@ Сигнатура.Аннотации = Парсер_СписокАннотаций; Сигнатура.Параметры = Параметры; Сигнатура.Экспорт = ЕстьЭкспорт; + Сигнатура.Асинх = ЭтоАсинхроннныйМетод; Сигнатура.Начало = Начало; Сигнатура.Конец = Парсер_ДанныеПредыдущегоТокена; Иначе @@ -2445,6 +2480,7 @@ Сигнатура.Аннотации = Парсер_СписокАннотаций; Сигнатура.Параметры = Параметры; Сигнатура.Экспорт = ЕстьЭкспорт; + Сигнатура.Асинх = ЭтоАсинхроннныйМетод; Сигнатура.Начало = Начало; Сигнатура.Конец = Парсер_ДанныеПредыдущегоТокена; КонецЕсли; @@ -2475,6 +2511,7 @@ Иначе Ожидать(Токены.КонецПроцедуры); КонецЕсли; + Состояние_РазрешеноЖдать = Ложь; Для Каждого ОбъявлениеАвтоПеременной Из Парсер_Окружение.АвтоПеременные Цикл Переменные.Добавить(ОбъявлениеАвтоПеременной); КонецЦикла; @@ -2635,6 +2672,18 @@ Возврат Оператор; КонецФункции // РазобратьОператор() +Функция РазобратьОператорЖдать() + Начало = Парсер_ДанныеТекущегоТокена; + СледующийТокен(); + Обещание = РазобратьВыражениеИдентификатор(); + Оператор = Парсер_Узлы.ОператорВызоваОбещания.Добавить(); + Оператор.Тип = Типы.ОператорВызоваОбещания; + Оператор.Обещание = Обещание; + Оператор.Начало = Начало; + Оператор.Конец = Парсер_ДанныеПредыдущегоТокена; + Возврат Оператор; +КонецФункции // РазобратьОператорВызватьИсключение() + Функция РазобратьОператорВызватьИсключение() Перем Выражение, Начало; Начало = Парсер_ДанныеТекущегоТокена; diff --git a/test.cmd b/test.cmd new file mode 100644 index 0000000..688f476 --- /dev/null +++ b/test.cmd @@ -0,0 +1,3 @@ +@chcp 65001 + +call vrunner xunit .tempdb/tests/async.epf %* diff --git a/tests/async.xml b/tests/async.xml new file mode 100644 index 0000000..ac22fa9 --- /dev/null +++ b/tests/async.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.15"> + <ExternalDataProcessor uuid="4f345841-116c-4a89-8141-7734ca31264a"> + <InternalInfo> + <xr:ContainedObject> + <xr:ClassId>c3831ec8-d8d5-4f93-8a22-f9bfae07327f</xr:ClassId> + <xr:ObjectId>be609b87-1378-44c3-851c-02afb3116ab4</xr:ObjectId> + </xr:ContainedObject> + <xr:GeneratedType name="ExternalDataProcessorObject.ВнешняяОбработка1" category="Object"> + <xr:TypeId>b9e81a18-e66e-439f-b47c-c44b4e235b8a</xr:TypeId> + <xr:ValueId>ae000df2-8503-4507-aa6d-b9cf4f688710</xr:ValueId> + </xr:GeneratedType> + </InternalInfo> + <Properties> + <Name>ВнешняяОбработка1</Name> + <Synonym/> + <Comment/> + <DefaultForm/> + <AuxiliaryForm/> + </Properties> + <ChildObjects/> + </ExternalDataProcessor> +</MetaDataObject> \ No newline at end of file diff --git a/tests/async/Ext/ObjectModule.bsl b/tests/async/Ext/ObjectModule.bsl new file mode 100644 index 0000000..db73c8d --- /dev/null +++ b/tests/async/Ext/ObjectModule.bsl @@ -0,0 +1,90 @@ +Перем КонтекстЯдра; +Перем Утверждения; +перем Ожидаем; +//{ основная процедура для юнит-тестирования xUnitFor1C +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); +КонецПроцедуры + +Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт + КонтекстЯдра = КонтекстЯдраПараметр; + НаборТестов.Добавить("ТестДолжен_РазобратьКодСАсинх"); + НаборТестов.Добавить("ТестДолжен_РазобратьКодСИдентификаторомЖдать"); + НаборТестов.Добавить("ТестДолжен_РазобратьКодПроцедуры"); + +КонецПроцедуры + +//} + +//{ Блок юнит-тестов + + +Функция ВернутьОбработку(Имя) + + Файл = новый Файл(ЭтотОбъект.ИспользуемоеИмяФайла); + ИмяОбработки = файл.Путь+"..\"+Имя+?(СтрЗаканчиваетсяНа(Имя,".epf"),"",".epf"); + УбраннаяЗащита = новый ОписаниеЗащитыОтОпасныхДействий; + УбраннаяЗащита.ПредупреждатьОбОпасныхДействиях = Ложь; + Возврат ВнешниеОбработки.Создать(ИмяОбработки,Истина,УбраннаяЗащита); + + +КонецФункции + +Процедура ПередЗапускомТеста() Экспорт +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт +КонецПроцедуры + + +процедура ТестДолжен_РазобратьКодСАсинх() экспорт + + Парсер = ВернутьОбработку("ПарсерВстроенногоЯзыка"); + + ТекстМодуля = "&НаКлиенте + |   Асинх Процедура НашаПроцедура() + |   х = Ждать ЧтоТоЖдем; + |   КонецПроцедуры"; + + Модуль = Парсер.Разобрать(ТекстМодуля, Неопределено); + + Ожидаем.Что(Модуль.Объявления[0].Сигнатура.Асинх,"Корректно прочли определение").ЭтоИстина(); + Ожидаем.Что(Модуль.Объявления[0].Операторы[0].ПравыйОперанд.Тип,"Прочли обещание").Равно("ОператорВызоваОбещания"); + +КонецПроцедуры + + +процедура ТестДолжен_РазобратьКодСИдентификаторомЖдать() экспорт + + Парсер = ВернутьОбработку("ПарсерВстроенногоЯзыка"); + + ТекстМодуля = "Процедура НашаПроцедура() + |   Ждать = 1; + |   КонецПроцедуры"; + + Модуль = Парсер.Разобрать(ТекстМодуля, Неопределено); + + Ожидаем.Что(Модуль.Объявления[0].Операторы[0].ЛевыйОперанд.Голова.Имя,"Корректно прочли Ждать как идентификатор").Равно("Ждать"); + +КонецПроцедуры + + +процедура ТестДолжен_РазобратьКодПроцедуры() экспорт + + Парсер = ВернутьОбработку("ПарсерВстроенногоЯзыка"); + + ТекстМодуля = "&НаКлиенте + |Асинх Процедура Демо_НайтиФайлыАсинх() + | ПутьКПапкеСФайлами = ""C:\Program Files\1cv8\conf""; + | Обещание = НайтиФайлыАсинх(ПутьКПапкеСФайлами, ""*.*"", Ложь); + | Результат = Ждать Обещание; + |КонецПроцедуры"; + + Модуль = Парсер.Разобрать(ТекстМодуля, Неопределено); + + Ожидаем.Что(Модуль.Объявления[0].Операторы[2].ПравыйОперанд.Тип,"Разобрали код корректно").Равно("ОператорВызоваОбещания"); + +КонецПроцедуры + diff --git a/tools/README.md b/tools/README.md new file mode 100644 index 0000000..5832d1a --- /dev/null +++ b/tools/README.md @@ -0,0 +1,3 @@ +### Каталог tools + +Предназначен для хранения любых сторонних утилит, необходимых для настройки проекта или для дополнительно установки diff --git a/tools/vanessaTddConf.json b/tools/vanessaTddConf.json new file mode 100644 index 0000000..1260094 --- /dev/null +++ b/tools/vanessaTddConf.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://raw.githubusercontent.com/vanessa-opensource/vanessa-runner/develop/xunit-schema.json", + "ДелатьЛогВыполненияСценариевВТекстовыйФайл": true, + "ИмяФайлаЛогВыполненияСценариев": "$workspaceRoot/.tempdb/log-xunit.txt", + "Отладка": true, + "ДобавлятьИмяПользователяВПредставлениеТеста": true + +} \ No newline at end of file