UNPKG

@tapjs/node-serialize

Version:

Stream TAP test data as a serialized node:test stream

59 lines 2.31 kB
"use strict"; // Serialize the root TAP object, and output a node:test style // serialized message stream. Object.defineProperty(exports, "__esModule", { value: true }); exports.serialize = void 0; const error_serdes_1 = require("@tapjs/error-serdes"); const core_1 = require("@tapjs/core"); const node_util_1 = require("node:util"); const comment_js_1 = require("./comment.js"); const on_add_js_1 = require("./on-add.js"); const print_messages_js_1 = require("./print-messages.js"); const stdio_js_1 = require("./stdio.js"); const test_map_js_1 = require("./test-map.js"); if (!core_1.proc) { throw new Error('Cannot serialize TAP stream, no process object'); } const { stdout } = core_1.proc; const serialize = (tap) => { if (tap.registered) { throw new Error('Cannot serialize TAP stream, already registered'); } tap.register?.(); tap.options.passes = true; const subsMap = new test_map_js_1.TestMap(); const diagsMap = new test_map_js_1.TestMap([[tap, []]]); const stream = new error_serdes_1.TestStreamSerialize(); // just for inspecting in dev. /* c8 ignore start */ if (process.env.TAP_SERIALIZE_DEBUG === '1') { stream.pipe(new error_serdes_1.TestStreamDeserialize()).on('data', c => stdout.write((0, node_util_1.inspect)(JSON.parse(JSON.stringify(c)), { colors: true, depth: Infinity, }) + '\n')); } else { /* c8 ignore stop */ stream.pipe(stdout); } const comment = (0, comment_js_1.commentMethod)(stream, diagsMap); // unpossible, we already checked on module load /* c8 ignore start */ if (!core_1.proc) { throw new Error('Cannot serialize TAP stream, no process object'); } /* c8 ignore stop */ if (process.env.TAP_SERIALIZE_DEBUG !== '1') { (0, stdio_js_1.serializeStdio)(stream, core_1.proc, 'stderr'); (0, stdio_js_1.serializeStdio)(stream, core_1.proc, 'stdout'); } const onAdd = (0, on_add_js_1.onAddFn)(comment, diagsMap, subsMap); const printMessages = (0, print_messages_js_1.printMessagesFn)(tap, stream, subsMap, diagsMap); onAdd(tap); tap.on('complete', () => { printMessages(tap); stream.end(); }); }; exports.serialize = serialize; //# sourceMappingURL=serialize.js.map