summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorElizabeth Hunt <me@liz.coffee>2025-12-14 22:39:18 -0800
committerElizabeth Hunt <me@liz.coffee>2025-12-14 22:39:18 -0800
commit666674327f009e9b1013218fc384f193b64c6997 (patch)
treeacebae7b425b469584eb0a5bec396899c2739501 /lib
parent594ce452693a71b501d3aff3f35ef3732c06c341 (diff)
downloadpengueno-666674327f009e9b1013218fc384f193b64c6997.tar.gz
pengueno-666674327f009e9b1013218fc384f193b64c6997.zip
Adds unit tests
Diffstat (limited to 'lib')
-rw-r--r--lib/leftpadesque/debug.ts3
-rw-r--r--lib/process/exec.ts4
-rw-r--r--lib/trace/metric/trace.ts11
3 files changed, 13 insertions, 5 deletions
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<Error, StdStreams>(
new Promise<StdStreams>((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<MetricsTraceSupplier> {
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 {