Hi,

tl;dr Are there any existing end-to-end testing libraries for CLI 
applications? Specifically, what I'm looking for is a library that makes it 
easy to test that "running this command should produce this output" without 
fear that a buggy application could corrupt the filesystem.

Background:

I have a few CLI applications (written in Go) that are becoming quite 
complex. I'd like to add some end-to-end and integration tests to ensure 
that I don't accidentally break existing functionality while refactoring or 
adding new features. The CLI applications can make arbitrary changes to the 
filesystem and I don't want it to be possible for a buggy application to 
leave any trace on the filesystem after the test terminates. I want 
something like:

- Easy setup of a chroot environment or Docker container or similar with my 
Go binary copied somewhere into $PATH.
- Easy way to specify what commands should be run.
- Easy way to write tests that check exit codes and ensure that the 
stdout/stderr output matches a string or regular expression.
- Automatic tidy-up of the chroot/container after the test is complete.
- Scripted in Go and integrated with Go's testing package, of course :)

I don't need controls over CPU usage or networking as my applications are 
not CPU bound and do not need network access, but I wouldn't complain if 
they existed.

A hypothetical test would look something like: 
https://play.golang.org/p/7L6PZIjvyy6.

I know about github.com/ory/dockertest which is fantastic for writing 
integration tests with third-party services but not set up for testing your 
own applications.

Do you know of any existing libraries that implement this sort of 
functionality?

Many thanks,
Tom

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/54136892-24a7-4f14-9340-60e4dd8b7287%40googlegroups.com.

Reply via email to