main_test.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package main
  2. import (
  3. "bytes"
  4. "errors"
  5. "github.com/stretchr/testify/assert"
  6. "io"
  7. "os"
  8. "testing"
  9. )
  10. //TODO: all flag parsing continueOnError will print to stderr on its own currently
  11. func Test_help(t *testing.T) {
  12. expected := "Usage of " + os.Args[0] + " <global flags> <mode>:\n" +
  13. " Global flags:\n" +
  14. " -version: Prints the version\n" +
  15. " -h, -help: Prints this help message\n\n" +
  16. " Modes:\n" +
  17. " " + caSummary() + "\n" +
  18. " " + keygenSummary() + "\n" +
  19. " " + signSummary() + "\n" +
  20. " " + printSummary() + "\n" +
  21. " " + verifySummary() + "\n"
  22. ob := &bytes.Buffer{}
  23. // No error test
  24. help("", ob)
  25. assert.Equal(
  26. t,
  27. expected,
  28. ob.String(),
  29. )
  30. // Error test
  31. ob.Reset()
  32. help("test error", ob)
  33. assert.Equal(
  34. t,
  35. "Error: test error\n\n"+expected,
  36. ob.String(),
  37. )
  38. }
  39. func Test_handleError(t *testing.T) {
  40. ob := &bytes.Buffer{}
  41. // normal error
  42. handleError("", errors.New("test error"), ob)
  43. assert.Equal(t, "Error: test error\n", ob.String())
  44. // unknown mode help error
  45. ob.Reset()
  46. handleError("", newHelpErrorf("test %s", "error"), ob)
  47. assert.Equal(t, "Error: test error\n", ob.String())
  48. // test all modes with help error
  49. modes := map[string]func(io.Writer){"ca": caHelp, "print": printHelp, "sign": signHelp, "verify": verifyHelp}
  50. eb := &bytes.Buffer{}
  51. for mode, fn := range modes {
  52. ob.Reset()
  53. eb.Reset()
  54. fn(eb)
  55. handleError(mode, newHelpErrorf("test %s", "error"), ob)
  56. assert.Equal(t, "Error: test error\n"+eb.String(), ob.String())
  57. }
  58. }
  59. func assertHelpError(t *testing.T, err error, msg string) {
  60. switch err.(type) {
  61. case *helpError:
  62. // good
  63. default:
  64. t.Fatal("err was not a helpError")
  65. }
  66. assert.EqualError(t, err, msg)
  67. }