Skip to content

Conversation

@nixel2007
Copy link
Member

Выглядит вот так:
image

При желании можно обернуть на проверку версии оскрипта (метод ПолучитьСтекВызовов есть только в 1.0.21 и новее), либо явно повысить требуемую версию движка (что предпочтительнее)

@nixel2007 nixel2007 changed the title Добавлен вывод стек-трейса при исключении Fix #7. Добавлен вывод стек-трейса при исключении Dec 12, 2018
@nixel2007
Copy link
Member Author

nixel2007 commented Dec 12, 2018

@EvilBeaver тесты падают с таким вот странным эксепшеном (приходяшим из движка - точнее рефлектора)

{Модуль C:\Users\user\AppData\Local\ovm\current\lib\asserts\src\bdd-asserts.os / Ошибка в строке: 336 / [Failed] Ожидали, что Вставить ВЫБРОСИТ ИСКЛЮЧЕНИЕ СОДЕРЖАЩЕЕ ТЕКСТ <Недостаточно фактических параметров>, а был текст <{Модуль C:\Users\user\AppData\Local\ovm\current\lib\asserts\src\bdd-asserts.os / Ошибка в строке: 257 / Внешнее исключение (System.ArgumentNullException): Значение не может быть неопределенным.
Имя параметра: key}>.
Стек трейс:
  C:\Users\user\AppData\Local\ovm\current\lib\asserts\src\bdd-asserts.os / Метод ВыбрасываетИсключение / Строка 268
    C:\Users\user\AppData\Local\ovm\current\lib\asserts\tests\bdd-assertions-tests.os / Метод ТестДолжен_Проверить_ЧтоВыбрасываетсяИсключение / Строка 280
      C:\Users\user\AppData\Local\ovm\current\lib\asserts\tests\bdd-assertions-tests.os / Метод $entry / Строка 290}

@artbear
Copy link
Member

artbear commented Dec 12, 2018

При желании можно обернуть на проверку версии оскрипта (метод ПолучитьСтекВызовов есть только в 1.0.21 и новее), либо явно повысить требуемую версию движка (что предпочтительнее)

Да, лучше повысить требования к версии

@artbear
Copy link
Member

artbear commented Dec 12, 2018

А подробное представление ошибки не подойдет вместо использования стека вызовов?

Правда, здесь движковые ошибки могут прилетать.

@artbear
Copy link
Member

artbear commented Dec 12, 2018

Предлагаю код чуть-чуть упростить - вместо ручного слияния строк в конце использовать тот же массив СтекТрейс

СтекТрейс = Новый Массив;
СтекТрейс.Добавить(ТекстИсключения);
СтекТрейс.Добавить("Стек трейс:");

Для Каждого КадрСтекаВызовов Из СтекВызовов Цикл
    ...
КонецЦикла;

ВызватьИсключение СтрСоединить(СтекТрейс, Символы.ПС);

@nixel2007
Copy link
Member Author

Я думал об этом, но тогда имя переменной врет. Надо либо её переименовывать, либо оставлять как есть.

@nixel2007
Copy link
Member Author

nixel2007 commented Dec 12, 2018

Подробное представление ошибки не отдает стек трейс, емнип. Максимум дерево причин (из информации об ошибке)

@artbear
Copy link
Member

artbear commented Dec 12, 2018

Я думал об этом, но тогда имя переменной врет. Надо либо её переименовывать, либо оставлять как есть.

Переименовать легче по принципу бойскаута

@artbear
Copy link
Member

artbear commented Dec 12, 2018

Подробное представление ошибки не отдает стек трейс, емнип.

недавно добавлялся метод ПодробноеПредставление (или что-то подобное), который как раз и показывает стек-трейс движка.

мне @EvilBeaver показывал как раз для ассертов - кажется, Формат или другой метод падал, и на основании стек-трейса я смог сделать исправляющий пулл-реквест

@nixel2007
Copy link
Member Author

@EvilBeaver ты понимаешь, о чем Артур?

@artbear вроде концептуально смысл пр это не поменяет, да? Переменную поправлю только завтра уже.

@nixel2007
Copy link
Member Author

@artbear готово.

@EvilBeaver
Copy link
Member

@nixel2007 я не очень понял.. Какое-то исключение откуда-то прилетает? Надо что-то фиксить в движке?

@EvilBeaver
Copy link
Member

@artbear: недавно добавлялся метод ПодробноеПредставление (или что-то подобное), который как раз и показывает стек-трейс движка.

Нет, метод ПодробноеОписаниеОшибки / DetailedDescription() был всегда и он показывает стектрейс уровня C#, не 1С.

Поведение 1С-ного метода ПодробноеПредставлениеОшибки не менялось. Стектрейс туда не включается.

@nixel2007
Copy link
Member Author

@nixel2007 я не очень понял.. Какое-то исключение откуда-то прилетает? Надо что-то фиксить в движке?

@EvilBeaver да. попробуй запустить тестирование через 1testrunner -runall tests. словишь эксепшен как у меня. вероятнее всего в мастере/девелопе тоже вылетит, т.к. я не менял код, который падает.

@artbear
Copy link
Member

artbear commented Dec 13, 2018

Нет, метод ПодробноеОписаниеОшибки / DetailedDescription() был всегда и он показывает стектрейс уровня C#, не 1С.

Поведение 1С-ного метода ПодробноеПредставлениеОшибки не менялось. Стектрейс туда не включается.

@EvilBeaver @nixel2007 Подозреваю, что подробное представление стек-трейса полезно не только для утверждений текущего пакета, но и в других случаях, пакетах, скриптах.

Предлагаю добавить показ стек-трейса 1С в одном из методов движка.

Например, к методу ПодробноеОписаниеОшибки / DetailedDescription() в дополнение к стеку C#
или в ПодробноеПредставлениеОшибки
или еще куда-нибудь в движок.

@nixel2007 nixel2007 merged commit 65bec3b into develop Dec 13, 2018
@nixel2007 nixel2007 deleted the feature/7-stack-trace branch December 14, 2018 06:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants