...

Source file src/github.com/cybertec-postgresql/pgwatch/v3/internal/cmdopts/cmdoptions_test.go

Documentation: github.com/cybertec-postgresql/pgwatch/v3/internal/cmdopts

     1  package cmdopts
     2  
     3  import (
     4  	"os"
     5  	"testing"
     6  
     7  	"github.com/cybertec-postgresql/pgwatch/v3/internal/log"
     8  	flags "github.com/jessevdk/go-flags"
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  // NewCmdOptions returns a new instance of CmdOptions with default values
    13  func NewCmdOptions(args ...string) *Options {
    14  	cmdOpts := new(Options)
    15  	_, _ = flags.NewParser(cmdOpts, flags.PrintErrors).ParseArgs(args)
    16  	return cmdOpts
    17  }
    18  
    19  func TestParseFail(t *testing.T) {
    20  	tests := [][]string{
    21  		{0: "go-test", "--unknown-option"},
    22  		{0: "go-test", "-c", "client01", "-f", "foo"},
    23  	}
    24  	for _, d := range tests {
    25  		os.Args = d
    26  		_, err := New(nil)
    27  		assert.Error(t, err)
    28  	}
    29  }
    30  
    31  func TestParseSuccess(t *testing.T) {
    32  	tests := [][]string{
    33  		{0: "go-test", "--help"},
    34  	}
    35  	for _, d := range tests {
    36  		os.Args = d
    37  		c, err := New(nil)
    38  		assert.True(t, c.Help)
    39  		assert.Error(t, err)
    40  	}
    41  }
    42  
    43  func TestLogLevel(t *testing.T) {
    44  	c := &Options{Logging: log.CmdOpts{LogLevel: "debug"}}
    45  	assert.True(t, c.Verbose())
    46  	c = &Options{Logging: log.CmdOpts{LogLevel: "info"}}
    47  	assert.False(t, c.Verbose())
    48  }
    49  
    50  func TestNewCmdOptions(t *testing.T) {
    51  	c := NewCmdOptions("-c", "config_unit_test", "--password=somestrong")
    52  	assert.NotNil(t, c)
    53  }
    54  
    55  func TestConfig(t *testing.T) {
    56  	os.Args = []string{0: "config_test", "--sources=sample.config.yaml"}
    57  	_, err := New(nil)
    58  	assert.NoError(t, err)
    59  
    60  	os.Args = []string{0: "config_test", "--unknown"}
    61  	_, err = New(nil)
    62  	assert.Error(t, err)
    63  
    64  	os.Args = []string{0: "config_test"} // sources arg is missing, but set PW3_CONFIG
    65  	t.Setenv("PW_SOURCES", "postgresql://foo:baz@bar/test")
    66  	_, err = New(nil)
    67  	assert.NoError(t, err)
    68  }
    69