npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@aoberoi/capture-console

v1.1.0

Published

A testing helper that captures stdout and stderr

Downloads

50

Readme

Capture Console

Build Status

This is a utility, mostly used for testing, to capture string data written to both the stdout and stderr streams in Node.js applications.

NOTE: This project is forked from Randy Carver's capture-stdout. Many thanks to him and the others who helped that make that project exist. I forked it because I had more specialized needs, but might one day want to merge the fork back in.

Installation

npm install @aoberoi/capture-console

Usage

const { CaptureConsole } = require('@aoberoi/capture-console');

// Consider testing this function...
function withMinOfFive(x) {
  if (x < 5) {
    console.warn('rounding up to 5');
    return 5;
  } else {
    console.log('already more than 5');
    return x;
  }
}

// Let's pretend the logging behavior is very meaningful, and you want to verify it
it('should log when the value is already greater than 5', function() {
  // Start capturing
  const captureConsole = new CaptureConsole();
  captureConsole.startCapture();

  // invoke the function
  const result = withMinOfFive(10);

  // Stop capturing and read the output
  captureStdout.stopCapture();
  const output = captureStdout.getCapturedText();

  assert.equal(result, 10);

  // Verify that there's exactly one log line
  assert.equal(output.length, 1);
});

// `console.warn()` writes to stderr, but you can use the same methods to find that output as well
it('should warn when the value is less than 5', function() {
  // Start capturing
  const captureConsole = new CaptureConsole();
  captureConsole.startCapture();

  // invoke the function
  const result = withMinOfFive(3);

  // Stop capturing and read the output
  captureStdout.stopCapture();
  const output = captureStdout.getCapturedText();

  assert.equal(result, 5);

  // Verify that there's exactly one log line
  assert.equal(output.length, 1);
});

Methods

startCapture()

Starts capturing the writes to process.stdout and process.stderr.

stopCapture()

Stops capturing the writes to process.stdout and process.stderr.

clearCaptureText()

Clears all of the captured text.

getCapturedText() → {Array} of String

Returns all of the captured text.

Changes since Capture Stdout

  • In addition to capturing stdout, also captures stderr
  • Exports a namespace instead of a value (better interop with ESM imports)
  • Made the README more generic
  • Stated support back to currently active LTS (v6)
  • Removes pino from tests