Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

git.lenzplace.org/lenzj/testcli

Package Overview
Dependencies
Alerts
File Explorer
Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

git.lenzplace.org/lenzj/testcli

  • v1.0.0
  • Go
  • Socket score

Version published
Created
Source

testcli

Package testcli is a golang helper utility for testing command line applications (CLI) using the standard go testing framework.

Tests are created by populating a T structure and then passing it to the Run function. The T structure must contain at a minimum the command to be executed. The remaining items within the T structure are optional and have reasonable defaults in typical use cases.

For example within a "foo_test.go" file:

func TestFooVersion(t *testing.T) {
    clt := testcli.T{
        Cmd: exec.Cmd{
            Path: "./foo",
            Args: []string{"foo", "-v"},
        },
        TStdout: `^foo 1.7.2\n$`,
    }
    testcli.Run(t, clt)
}

func TestFooBadOption(t *testing.T) {
    clt := testcli.T{
        Cmd: exec.Cmd{
            Path: "./foo",
            Args: []string{"foo", "-z"},
        },
        TStderr: `(?m)^flag provided but not defined: -z$.*$`,
        TExit:   2,
    }
    testcli.Run(t, clt)
}

A full example demonstrating additional ways to use testcli is contained within the "cmd" folder of this package.

Functions

func Run(t *testing.T, clt T)
    Run executes a single command line test.

Types

type FT struct {
        Path     string // Path to file
        TContent string // Regex to check against file contents
}
    FT defines a file path and regex to check against the file contents.

type T struct {
        Cmd     exec.Cmd // The command line details to execute
        TStdout string   // Regex to check against stdout
        TStderr string   // Regex to check against stderr
        TFiles  []FT     // An optional array of output files to check
        TExit   int      // The expected exit code
}
    T defines an individual command line test case.

Running the full package tests

$ cd cmd
$ make check

Contributing

If you have a bugfix, update, issue or feature enhancement the best way to reach me is by following the instructions in the link below. Thank you!

https://blog.lenzplace.org/contact

Versioning

I follow the SemVer strategy for versioning. The latest version is listed in the releases section.

License

This project is licensed under a BSD two clause license - see the LICENSE file for details.

FAQs

Package last updated on 19 Dec 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc