From 666674327f009e9b1013218fc384f193b64c6997 Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Sun, 14 Dec 2025 22:39:18 -0800 Subject: Adds unit tests --- lib/leftpadesque/debug.ts | 3 ++- lib/process/exec.ts | 4 ++-- lib/trace/metric/trace.ts | 11 +++++++++-- 3 files changed, 13 insertions(+), 5 deletions(-) (limited to 'lib') diff --git a/lib/leftpadesque/debug.ts b/lib/leftpadesque/debug.ts index 074e567..f381540 100644 --- a/lib/leftpadesque/debug.ts +++ b/lib/leftpadesque/debug.ts @@ -4,5 +4,6 @@ const _env: 'development' | 'production' = _hasEnv && (process.env.ENVIRONMENT ?? '').toLowerCase().includes('prod') ? 'production' : 'development'; export const isProd = () => _env === 'production'; -const _debug = !isProd() || (_hasEnv && ['y', 't'].some((process.env.DEBUG ?? '').toLowerCase().startsWith)); +const _debugEnv = (process.env.DEBUG ?? '').toLowerCase(); +const _debug = !isProd() || (_hasEnv && ['y', 't'].some((prefix) => _debugEnv.startsWith(prefix))); export const isDebug = () => _debug; diff --git a/lib/process/exec.ts b/lib/process/exec.ts index f8d572c..3a934b3 100644 --- a/lib/process/exec.ts +++ b/lib/process/exec.ts @@ -7,7 +7,7 @@ import { Metric, TraceUtil, } from '@emprespresso/pengueno'; -import { exec } from 'node:child_process'; +import * as child_process from 'node:child_process'; export type Command = string[] | string; export type StdStreams = { stdout: string; stderr: string }; @@ -28,7 +28,7 @@ export const getStdout = ( const env = options.clearEnv ? options.env : { ...process.env, ...options.env }; return Either.fromFailableAsync( new Promise((res, rej) => { - const proc = exec(_exec, { env }); + const proc = child_process.exec(_exec, { env }); let stdout = ''; proc.stdout?.on('data', (d: Buffer) => { const s = d.toString(); diff --git a/lib/trace/metric/trace.ts b/lib/trace/metric/trace.ts index b28d828..396bd9c 100644 --- a/lib/trace/metric/trace.ts +++ b/lib/trace/metric/trace.ts @@ -16,9 +16,16 @@ export class MetricsTrace implements ITrace { public traceScope(trace: MetricsTraceSupplier): MetricsTrace { const now = Date.now(); const metricsToTrace = (Array.isArray(trace) ? trace : [trace]).filter(isIMetric); - const initialTraces = new Map(metricsToTrace.map((metric) => [metric.name, now])); - return new MetricsTrace(this.metricConsumer, initialTraces, this.completedTraces); + // Inherit existing active traces across scopes. + const nextActiveTraces = new Map(this.activeTraces); + for (const metric of metricsToTrace) { + if (!nextActiveTraces.has(metric.name)) { + nextActiveTraces.set(metric.name, now); + } + } + + return new MetricsTrace(this.metricConsumer, nextActiveTraces, this.completedTraces); } public trace(metrics: MetricsTraceSupplier): MetricsTrace { -- cgit v1.2.3-70-g09d2