File: main_test.go

package info (click to toggle)
nebula 1.6.1%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,376 kB
  • sloc: makefile: 149; sh: 100; python: 16
file content (82 lines) | stat: -rw-r--r-- 1,723 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package main

import (
	"bytes"
	"errors"
	"io"
	"os"
	"testing"

	"github.com/stretchr/testify/assert"
)

//TODO: all flag parsing continueOnError will print to stderr on its own currently

func Test_help(t *testing.T) {
	expected := "Usage of " + os.Args[0] + " <global flags> <mode>:\n" +
		"  Global flags:\n" +
		"    -version: Prints the version\n" +
		"    -h, -help: Prints this help message\n\n" +
		"  Modes:\n" +
		"    " + caSummary() + "\n" +
		"    " + keygenSummary() + "\n" +
		"    " + signSummary() + "\n" +
		"    " + printSummary() + "\n" +
		"    " + verifySummary() + "\n"

	ob := &bytes.Buffer{}

	// No error test
	help("", ob)
	assert.Equal(
		t,
		expected,
		ob.String(),
	)

	// Error test
	ob.Reset()
	help("test error", ob)
	assert.Equal(
		t,
		"Error: test error\n\n"+expected,
		ob.String(),
	)
}

func Test_handleError(t *testing.T) {
	ob := &bytes.Buffer{}

	// normal error
	handleError("", errors.New("test error"), ob)
	assert.Equal(t, "Error: test error\n", ob.String())

	// unknown mode help error
	ob.Reset()
	handleError("", newHelpErrorf("test %s", "error"), ob)
	assert.Equal(t, "Error: test error\n", ob.String())

	// test all modes with help error
	modes := map[string]func(io.Writer){"ca": caHelp, "print": printHelp, "sign": signHelp, "verify": verifyHelp}
	eb := &bytes.Buffer{}
	for mode, fn := range modes {
		ob.Reset()
		eb.Reset()
		fn(eb)

		handleError(mode, newHelpErrorf("test %s", "error"), ob)
		assert.Equal(t, "Error: test error\n"+eb.String(), ob.String())
	}

}

func assertHelpError(t *testing.T, err error, msg string) {
	switch err.(type) {
	case *helpError:
		// good
	default:
		t.Fatal("err was not a helpError")
	}

	assert.EqualError(t, err, msg)
}