mirror of https://github.com/databricks/cli.git
82 lines
2.0 KiB
Go
82 lines
2.0 KiB
Go
|
package run
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
flag "github.com/spf13/pflag"
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
"github.com/stretchr/testify/require"
|
||
|
)
|
||
|
|
||
|
func setupPipelineOptions(t *testing.T) (*flag.FlagSet, *PipelineOptions) {
|
||
|
var fs flag.FlagSet
|
||
|
var opts PipelineOptions
|
||
|
opts.Define(&fs)
|
||
|
return &fs, &opts
|
||
|
}
|
||
|
|
||
|
func TestPipelineOptionsRefreshAll(t *testing.T) {
|
||
|
fs, opts := setupPipelineOptions(t)
|
||
|
err := fs.Parse([]string{`--refresh-all`})
|
||
|
require.NoError(t, err)
|
||
|
assert.True(t, opts.RefreshAll)
|
||
|
}
|
||
|
|
||
|
func TestPipelineOptionsRefresh(t *testing.T) {
|
||
|
fs, opts := setupPipelineOptions(t)
|
||
|
err := fs.Parse([]string{`--refresh=arg1,arg2,arg3`})
|
||
|
require.NoError(t, err)
|
||
|
assert.Equal(t, []string{"arg1", "arg2", "arg3"}, opts.Refresh)
|
||
|
}
|
||
|
|
||
|
func TestPipelineOptionsFullRefreshAll(t *testing.T) {
|
||
|
fs, opts := setupPipelineOptions(t)
|
||
|
err := fs.Parse([]string{`--full-refresh-all`})
|
||
|
require.NoError(t, err)
|
||
|
assert.True(t, opts.FullRefreshAll)
|
||
|
}
|
||
|
|
||
|
func TestPipelineOptionsFullRefresh(t *testing.T) {
|
||
|
fs, opts := setupPipelineOptions(t)
|
||
|
err := fs.Parse([]string{`--full-refresh=arg1,arg2,arg3`})
|
||
|
require.NoError(t, err)
|
||
|
assert.Equal(t, []string{"arg1", "arg2", "arg3"}, opts.FullRefresh)
|
||
|
}
|
||
|
|
||
|
func TestPipelineOptionsValidateSuccessWithSingleOption(t *testing.T) {
|
||
|
args := []string{
|
||
|
`--refresh-all`,
|
||
|
`--refresh=arg1,arg2,arg3`,
|
||
|
`--full-refresh-all`,
|
||
|
`--full-refresh=arg1,arg2,arg3`,
|
||
|
}
|
||
|
for _, arg := range args {
|
||
|
fs, opts := setupPipelineOptions(t)
|
||
|
err := fs.Parse([]string{arg})
|
||
|
require.NoError(t, err)
|
||
|
err = opts.Validate(nil)
|
||
|
assert.NoError(t, err)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestPipelineOptionsValidateFailureWithMultipleOptions(t *testing.T) {
|
||
|
args := []string{
|
||
|
`--refresh-all`,
|
||
|
`--refresh=arg1,arg2,arg3`,
|
||
|
`--full-refresh-all`,
|
||
|
`--full-refresh=arg1,arg2,arg3`,
|
||
|
}
|
||
|
for i := range args {
|
||
|
for j := range args {
|
||
|
if i == j {
|
||
|
continue
|
||
|
}
|
||
|
fs, opts := setupPipelineOptions(t)
|
||
|
err := fs.Parse([]string{args[i], args[j]})
|
||
|
require.NoError(t, err)
|
||
|
err = opts.Validate(nil)
|
||
|
assert.ErrorContains(t, err, "pipeline run arguments are mutually exclusive")
|
||
|
}
|
||
|
}
|
||
|
}
|