snapshot of https://github.com/sqlc-dev/sqlc.git (main, 2026-09-16; blobs > 131072B omitted)
Some checks failed
kotlin / test (push) Has been skipped
python / test (push) Has been skipped
typescript / test (push) Has been skipped
go / build darwin/amd64 (push) Has been cancelled
go / build linux/amd64 (push) Has been cancelled
go / build windows/amd64 (push) Has been cancelled
go / build darwin/arm64 (push) Has been cancelled
go / build linux/arm64 (push) Has been cancelled
go / build windows/arm64 (push) Has been cancelled
go / test (push) Has been cancelled
go / vuln_check (push) Has been cancelled
Some checks failed
kotlin / test (push) Has been skipped
python / test (push) Has been skipped
typescript / test (push) Has been skipped
go / build darwin/amd64 (push) Has been cancelled
go / build linux/amd64 (push) Has been cancelled
go / build windows/amd64 (push) Has been cancelled
go / build darwin/arm64 (push) Has been cancelled
go / build linux/arm64 (push) Has been cancelled
go / build windows/arm64 (push) Has been cancelled
go / test (push) Has been cancelled
go / vuln_check (push) Has been cancelled
This commit is contained in:
155
internal/opts/experiment_test.go
Normal file
155
internal/opts/experiment_test.go
Normal file
@@ -0,0 +1,155 @@
|
||||
package opts
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestExperimentFromString(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
input string
|
||||
want Experiment
|
||||
}{
|
||||
{
|
||||
name: "empty string",
|
||||
input: "",
|
||||
want: Experiment{},
|
||||
},
|
||||
{
|
||||
name: "whitespace only",
|
||||
input: " ",
|
||||
want: Experiment{},
|
||||
},
|
||||
{
|
||||
name: "unknown experiment",
|
||||
input: "unknownexperiment",
|
||||
want: Experiment{},
|
||||
},
|
||||
{
|
||||
name: "multiple unknown experiments",
|
||||
input: "foo,bar,baz",
|
||||
want: Experiment{},
|
||||
},
|
||||
{
|
||||
name: "unknown with no prefix",
|
||||
input: "nounknown",
|
||||
want: Experiment{},
|
||||
},
|
||||
{
|
||||
name: "whitespace around experiments",
|
||||
input: " foo , bar , baz ",
|
||||
want: Experiment{},
|
||||
},
|
||||
{
|
||||
name: "empty items in list",
|
||||
input: "foo,,bar",
|
||||
want: Experiment{},
|
||||
},
|
||||
{
|
||||
name: "enable coreanalyzer",
|
||||
input: "coreanalyzer",
|
||||
want: Experiment{CoreAnalyzer: true},
|
||||
},
|
||||
{
|
||||
name: "disable coreanalyzer",
|
||||
input: "nocoreanalyzer",
|
||||
want: Experiment{CoreAnalyzer: false},
|
||||
},
|
||||
{
|
||||
name: "enable then disable coreanalyzer",
|
||||
input: "coreanalyzer,nocoreanalyzer",
|
||||
want: Experiment{CoreAnalyzer: false},
|
||||
},
|
||||
{
|
||||
name: "coreanalyzer case insensitive",
|
||||
input: "CoreAnalyzer",
|
||||
want: Experiment{CoreAnalyzer: true},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got := ExperimentFromString(tt.input)
|
||||
if got != tt.want {
|
||||
t.Errorf("ExperimentFromString(%q) = %+v, want %+v", tt.input, got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestExperimentEnabled(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
exp Experiment
|
||||
want []string
|
||||
}{
|
||||
{
|
||||
name: "no experiments enabled",
|
||||
exp: Experiment{},
|
||||
want: nil,
|
||||
},
|
||||
{
|
||||
name: "coreanalyzer enabled",
|
||||
exp: Experiment{CoreAnalyzer: true},
|
||||
want: []string{"coreanalyzer"},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got := tt.exp.Enabled()
|
||||
if len(got) != len(tt.want) {
|
||||
t.Errorf("Experiment.Enabled() = %v, want %v", got, tt.want)
|
||||
return
|
||||
}
|
||||
for i := range got {
|
||||
if got[i] != tt.want[i] {
|
||||
t.Errorf("Experiment.Enabled()[%d] = %q, want %q", i, got[i], tt.want[i])
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestExperimentString(t *testing.T) {
|
||||
exp := Experiment{}
|
||||
if got := exp.String(); got != "" {
|
||||
t.Errorf("Experiment.String() = %q, want %q", got, "")
|
||||
}
|
||||
}
|
||||
|
||||
func TestIsKnownExperiment(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
input string
|
||||
want bool
|
||||
}{
|
||||
{
|
||||
name: "unknown experiment",
|
||||
input: "unknown",
|
||||
want: false,
|
||||
},
|
||||
{
|
||||
name: "empty string",
|
||||
input: "",
|
||||
want: false,
|
||||
},
|
||||
{
|
||||
name: "coreanalyzer lowercase",
|
||||
input: "coreanalyzer",
|
||||
want: true,
|
||||
},
|
||||
{
|
||||
name: "coreanalyzer mixed case",
|
||||
input: "CoreAnalyzer",
|
||||
want: true,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got := isKnownExperiment(tt.input)
|
||||
if got != tt.want {
|
||||
t.Errorf("isKnownExperiment(%q) = %v, want %v", tt.input, got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user