package internal

import (
	"github.com/urfave/cli/v2"
)

// Testing functions that call os.Exit
// https://stackoverflow.com/questions/26225513/how-to-test-os-exit-scenarios-in-go
// https://talks.golang.org/2014/testing.slide#23

var testapp = &cli.App{
	Name:  "abra",
	Usage: `The Co-op Cloud command-line utility belt 🎩🐇`,
}

// not testing output as that changes. just if it exits with code 1
// does not work because of some weird errors on cli's part. Its a hard lib to test effectively.
// func TestShowSubcommandHelpAndError(t *testing.T) {
// 	if os.Getenv("HelpAndError") == "1" {
// 		ShowSubcommandHelpAndError(cli.NewContext(testapp, nil, nil), errors.New("Test error"))
// 		return
// 	}
// 	cmd := exec.Command(os.Args[0], "-test.run=TestShowSubcommandHelpAndError")
// 	cmd.Env = append(os.Environ(), "HelpAndError=1")
// 	var out bytes.Buffer
// 	cmd.Stderr = &out
// 	err := cmd.Run()
// 	println(out.String())
// 	if !strings.Contains(out.String(), "Test error") {

// 		t.Fatalf("expected command to show the error causing the exit, did not get correct stdout output")
// 	}

// 	if e, ok := err.(*exec.ExitError); ok && !e.Success() {
// 		return
// 	}
// 	t.Fatalf("process ran with err %v, want exit status 1", err)
// }