К обсуждениям

node --test снова ищет каталог: проверка discovery в Node.js 26.8.0

Редакция VOne Технологии

node --test снова ищет каталог: проверка discovery в Node.js 26.8.0. Обратимый тест, матрица наблюдений, контрольная ветка, критерии остановки и минимальный пакет для support без рабочих секретов.

Факт и граница вывода

Первичный источник фиксирует ровно одно изменение: 26.8.0 восстанавливает поиск тестов в каталоге для команды --test. Он не доказывает, что симптом есть у всех, что переход на Current ветку разрешён политикой проекта или что один видимый результат выявляет причину. Отдельная проблема здесь: команда с каталогом завершается без ожидаемого test file или находит лишний fixture за его границами. До теста запишите effective runtime, канал поддержки и ожидаемую границу. Discovery здесь оценивается как множество имён, а не как количество зелёных assertions: helper может загрузиться косвенно, но не должен стать отдельной test suite.

Минимальный обратимый стенд

Используйте только изолированный fixture: temp tree с двумя test files, одним helper и одним тестом в соседнем каталоге. Не подключайте боевую базу, реальные адреса, ключи, cookies, полные логи или личные файлы. Сначала получите baseline, затем измените один фактор, повторите сценарий и верните исходное состояние. Так A→B→A2 отделит эффект версии от кэша, порядка событий и случайности. Дайте каждому synthetic test уникальный marker и пишите его только в TAP вывод; не создавайте файлы-маркеры. Так dry run остаётся без побочного состояния.

Поля наблюдения и control

На каждом прогоне заполняйте одну строку матрицы: argument × discovered files × test count × helper executed × exit code. Не добавляйте поля «похоже на исправление»: нужны наблюдаемые классы, счётчики, hashes и коды ошибок. Контрольная ветка: явное перечисление двух ожидаемых test files в той же версии. Если control даёт тот же неожиданный результат, влияние изменения Node.js не доказано. Расхождение A и A2 означает, что стенд загрязнён и вывод нужно отложить. Порядок имён не считайте контрактом, если runner его не обещает. Сравнивайте отсортированные sets, а отдельно фиксируйте число suites, tests, skipped и failures.

Дерево решения по результату

Применяйте решение, записанное до прогона: directory и explicit set совпали — pass; файл потерян — discovery issue; соседний включён — граница argument неверна. Не смешивайте статусы «API документирован», «бинарник имеет нужную версию», «тест прошёл» и «миграция разрешена». Это разные границы. Один проход не превращайте в заключение о производительности, безопасности или совместимости всего проекта. Если explicit list находит оба файла, а directory argument только один, проверяйте naming pattern и границу каталога. Если не видит оба — это уже не discovery, а ошибка самих tests или loader.

Красные флаги и stop-line

Жёсткий критерий остановки для этой темы: не запускать discovery от корня репозитория, если fixtures имеют побочные эффекты. Также остановитесь, если тест неожиданно обращается в сеть, требует повышенных прав, меняет данные за пределами temp каталога, не возвращает A2 к baseline или зависит без timeout. Неизвестный результат не нужно заменять удобным объяснением или повторять на рабочей среде. Особый красный флаг — запуск helper или fixture как suite: он может не иметь assertions, но выполнять setup при импорте. В таком случае CI-команду не меняют.

Минимальный пакет для support

Для эскалации достаточно: runtime, относительное synthetic tree, список discovered files и итоговые счётчики. Добавьте точный канал Node.js, время теста, ожидаемый класс и фактический класс, а также прошёл ли A→B→A2. Не прикладывайте env, токены, ключи, полные пути с именем пользователя, содержимое рабочей базы или сырые сетевые данные. Цель пакета — доказать одну нарушенную границу и один следующий безопасный тест. К тикету по discovery приложите два списка: ожидаемые relative test paths и фактически обнаруженные. Это полезнее полного TAP log и не раскрывает тела tests.

Материал подготовлен редакцией VOne с помощью ИИ по открытым официальным и первичным источникам; факты, даты и ссылки перепроверены. Реальные пользовательские данные не использовались.

Источники и проверка

Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.

Ответы

0 опубликовано
Ответов пока нет. Вы можете начать обсуждение.

Ваш ответ

Добавьте свой опыт или уточнение по теме.

Вы публикуете как Аноним Аватар отличает разговоры, но не раскрывает личные данные.

Ответ появится сразу. Не публикуйте личные данные, ключи и приватные ссылки.