ava: журналы, созданные вне тестов, не отображаются в консоли.

Моя проблема

Регистрация ava (t.log) работает только внутри теста, но не во время функций настройки (before, beforeEach) или демонтажа (after*).

Это означает, что значимые данные установки/разборки, которые очень полезны для отладки и воспроизведения, теряются. Это происходит как для успешных, так и для неудачных тестов, с флагом --verbose и без него.

Код

import test from 'ava';

test.before(t => {
    // This runs before all tests
    t.log('before - 1');
});

test.before(t => {
    // This runs after the above, but before tests
    t.log('before - 2');
});

test.after('cleanup', t => {
    // This runs after all tests
    t.log('after');
});

test.after.always('guaranteed cleanup', t => {
    // This will always run, regardless of earlier failures
    t.log('after always');
});

test.beforeEach(t => {
    // This runs before each test
    t.log('beforeEach');
});

test.afterEach(t => {
    // This runs after each test
    t.log('afterEach');
});

test.afterEach.always(t => {
    // This runs after each test and other test hooks, even if they failed
    t.log('afterEachAlways');
});

test(t => {
    t.log('A test');
    t.pass();
});


test(t => {
    t.log('A test');
    t.fail();
});

Выход

$ ava run.js --verbose

  ✔ [anonymous]
    ℹ A test
  ✖ [anonymous] Test failed via `t.fail()`
    ℹ A test

  1 test failed [00:22:08]

  [anonymous]
    ℹ A test

  /Users/adam/Personal/tmp/ava-bug-log-in-before-each/run.js:46

   45:     t.log('A test');
   46:     t.fail();
   47: });

  Test failed via `t.fail()`

Обратите внимание, что отображаются только распечатки теста (A test). Все остальные журналы теряются.

Мой вопрос

Как я могу просмотреть журналы этапов установки и демонтажа набора тестов?


ava
person Adam Matan    schedule 24.09.2017    source источник
comment
Обратите внимание, что если вы выведете прямо в console.log, строки будут распечатаны. Это ava logger ведет себя странно.   -  person Assaf Lavie    schedule 25.09.2017
comment
@AssafLavie Верно, но использование console.log нарушает наши рекомендации по коду (eslint с стилем airbnb), и я бы предпочел избегайте игнорирования инструкций этой строки для линтера, так как они делают код менее чистым. Надеюсь найти простой обходной путь с t.log.   -  person Adam Matan    schedule 25.09.2017
comment
четко. только что отметил. во всяком случае, это похоже на недостаток Авы. Либо он не использует тот же контекст выполнения, когда вы вызываете t.log (вы можете проверить это, кстати), либо накопление журнала (есть некоторый внутренний массив, который он использует для нажатия строк) сбрасывается при запуске теста... Я бы открыл ошибка.   -  person Assaf Lavie    schedule 25.09.2017
comment
@AssafLavie Уже сделал (см. первый ответ одного из сопровождающих stackoverflow.com/a/46400358/51197)   -  person Adam Matan    schedule 25.09.2017


Ответы (1)


Не могли бы вы открыть тему для этого? https://github.com/avajs/ava/issues

Я согласен, что это должно работать.

person Mark Wubben    schedule 25.09.2017