From 6f17fe0130a20cfb613b36a0aa9a2e7c01a0fbae Mon Sep 17 00:00:00 2001 From: Matt Topol Date: Wed, 15 Apr 2026 16:14:06 -0400 Subject: [PATCH 1/3] docs: update docs and test behavior for --pre --- cmd/dbc/completions/dbc.fish | 2 +- cmd/dbc/completions/dbc.zsh | 2 +- cmd/dbc/search.go | 2 +- cmd/dbc/search_test.go | 37 ++++++++++++++++++++++++++++++++++ docs/guides/finding_drivers.md | 2 +- docs/reference/cli.md | 2 +- 6 files changed, 42 insertions(+), 5 deletions(-) diff --git a/cmd/dbc/completions/dbc.fish b/cmd/dbc/completions/dbc.fish index 3bebb347..57e029fd 100644 --- a/cmd/dbc/completions/dbc.fish +++ b/cmd/dbc/completions/dbc.fish @@ -75,7 +75,7 @@ complete -f -c dbc -n '__fish_dbc_using_subcommand search' -s h -d 'Help' complete -f -c dbc -n '__fish_dbc_using_subcommand search' -l help -d 'Help' complete -f -c dbc -n '__fish_dbc_using_subcommand search' -s v -d 'Verbose' complete -f -c dbc -n '__fish_dbc_using_subcommand search' -l json -d 'Print output as JSON instead of plaintext' -complete -f -c dbc -n '__fish_dbc_using_subcommand search' -l pre -d 'Include pre-release drivers and versions (hidden by default)' +complete -f -c dbc -n '__fish_dbc_using_subcommand search' -l pre -d 'Include pre-release drivers and versions (hidden by default unless already installed)' # remove subcommand complete -f -c dbc -n '__fish_dbc_using_subcommand remove' -s h -d 'Help' diff --git a/cmd/dbc/completions/dbc.zsh b/cmd/dbc/completions/dbc.zsh index 058e8d51..1446bccb 100644 --- a/cmd/dbc/completions/dbc.zsh +++ b/cmd/dbc/completions/dbc.zsh @@ -124,7 +124,7 @@ function _dbc_search_completions { '(-h)--help[Help]' \ '-v[verbose]' \ '--json[Print output as JSON instead of plaintext]' \ - '--pre[Include pre-release drivers and versions (hidden by default)]' \ + '--pre[Include pre-release drivers and versions (hidden by default unless already installed)]' \ ':search term: ' } diff --git a/cmd/dbc/search.go b/cmd/dbc/search.go index 939d710f..bf0a10a0 100644 --- a/cmd/dbc/search.go +++ b/cmd/dbc/search.go @@ -40,7 +40,7 @@ type SearchCmd struct { Verbose bool `arg:"-v" help:"Enable verbose output"` Json bool `help:"Print output as JSON instead of plaintext"` Pattern *regexp.Regexp `arg:"positional" help:"Pattern to search for"` - Pre bool `arg:"--pre" help:"Include pre-release drivers and versions (hidden by default)"` + Pre bool `arg:"--pre" help:"Include pre-release drivers and versions (hidden by default unless already installed)"` } func (s SearchCmd) GetModelCustom(baseModel baseModel) tea.Model { diff --git a/cmd/dbc/search_test.go b/cmd/dbc/search_test.go index d9ed332b..fe1581f1 100644 --- a/cmd/dbc/search_test.go +++ b/cmd/dbc/search_test.go @@ -210,6 +210,43 @@ func (suite *SubcommandTestSuite) TestSearchCmdWithInstalledPre() { "test-driver-docs-url This is manifest-only with its docs_url key set ", suite.runCmd(m)) } +func (suite *SubcommandTestSuite) TestSearchCmdVerboseWithInstalledPre() { + m := InstallCmd{Driver: "test-driver-only-pre", Level: config.ConfigEnv, Pre: true}. + GetModelCustom(baseModel{getDriverRegistry: getTestDriverRegistry, downloadPkg: downloadTestPkg}) + suite.runCmd(m) + + // Verbose search WITHOUT --pre: installed pre-release driver should still appear + m = SearchCmd{Verbose: true}.GetModelCustom( + baseModel{getDriverRegistry: getTestDriverRegistry, + downloadPkg: downloadTestPkg}) + out := suite.runCmd(m) + + suite.Contains(out, "test-driver-only-pre") + suite.Contains(out, "Test Driver Only Prerelease") + suite.Contains(out, "Installed Versions:") + suite.Contains(out, "0.9.0-alpha.1") + suite.Contains(out, "test-driver-1") + suite.Contains(out, "test-driver-2") +} + +func (suite *SubcommandTestSuite) TestSearchCmdWithInstalledPreJSON() { + m := InstallCmd{Driver: "test-driver-only-pre", Level: config.ConfigEnv, Pre: true}. + GetModelCustom(baseModel{getDriverRegistry: getTestDriverRegistry, downloadPkg: downloadTestPkg}) + suite.runCmd(m) + + // JSON search WITHOUT --pre: installed pre-release driver should still appear + m = SearchCmd{Json: true}.GetModelCustom( + baseModel{getDriverRegistry: getTestDriverRegistry, + downloadPkg: downloadTestPkg}) + out := suite.runCmd(m) + + suite.Contains(out, `"test-driver-only-pre"`) + suite.Contains(out, `"installed"`) + suite.Contains(out, `0.9.0-alpha.1`) + suite.Contains(out, `"test-driver-1"`) + suite.Contains(out, `"test-driver-2"`) +} + func (suite *SubcommandTestSuite) TestSearchCmdPartialRegistryFailure() { // Test that search command handles partial registry failure gracefully // (one registry succeeds, another fails - returns both drivers and error) diff --git a/docs/guides/finding_drivers.md b/docs/guides/finding_drivers.md index 96a9a703..69f61bc8 100644 --- a/docs/guides/finding_drivers.md +++ b/docs/guides/finding_drivers.md @@ -208,7 +208,7 @@ $ dbc search --pre Without `--pre`, `dbc search` will: -- Hide drivers that have exclusively pre-release versions (no stable versions) +- Hide drivers that have exclusively pre-release versions (no stable versions), unless the driver is already installed - Exclude pre-release versions from the available versions list With `--pre`, `dbc search` will: diff --git a/docs/reference/cli.md b/docs/reference/cli.md index 70c70756..5652c7e3 100644 --- a/docs/reference/cli.md +++ b/docs/reference/cli.md @@ -73,7 +73,7 @@ $ dbc search [PATTERN] `--pre` {{ since_version('v0.2.0') }} -: Include pre-release drivers and versions (hidden by default) +: Include pre-release drivers and versions (hidden by default unless already installed) `--verbose`, `-v` From de92d86cc212864cd011b09d2f40f82de0b60a7b Mon Sep 17 00:00:00 2001 From: Matt Topol Date: Wed, 15 Apr 2026 17:21:12 -0400 Subject: [PATCH 2/3] some test fixes --- cmd/dbc/search_test.go | 46 +++++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/cmd/dbc/search_test.go b/cmd/dbc/search_test.go index fe1581f1..a28c1685 100644 --- a/cmd/dbc/search_test.go +++ b/cmd/dbc/search_test.go @@ -211,40 +211,50 @@ func (suite *SubcommandTestSuite) TestSearchCmdWithInstalledPre() { } func (suite *SubcommandTestSuite) TestSearchCmdVerboseWithInstalledPre() { + searchModel := SearchCmd{Verbose: true}.GetModelCustom( + baseModel{getDriverRegistry: getTestDriverRegistry, + downloadPkg: downloadTestPkg}) + before := suite.runCmd(searchModel) + suite.NotContains(before, "test-driver-only-pre") + m := InstallCmd{Driver: "test-driver-only-pre", Level: config.ConfigEnv, Pre: true}. GetModelCustom(baseModel{getDriverRegistry: getTestDriverRegistry, downloadPkg: downloadTestPkg}) suite.runCmd(m) - // Verbose search WITHOUT --pre: installed pre-release driver should still appear - m = SearchCmd{Verbose: true}.GetModelCustom( + searchModel = SearchCmd{Verbose: true}.GetModelCustom( baseModel{getDriverRegistry: getTestDriverRegistry, downloadPkg: downloadTestPkg}) - out := suite.runCmd(m) - - suite.Contains(out, "test-driver-only-pre") - suite.Contains(out, "Test Driver Only Prerelease") - suite.Contains(out, "Installed Versions:") - suite.Contains(out, "0.9.0-alpha.1") - suite.Contains(out, "test-driver-1") - suite.Contains(out, "test-driver-2") + after := suite.runCmd(searchModel) + + suite.Contains(after, "test-driver-only-pre") + suite.Contains(after, "Test Driver Only Prerelease") + suite.Contains(after, "Installed Versions:") + suite.Contains(after, "0.9.0-alpha.1") + suite.Contains(after, "test-driver-1") + suite.Contains(after, "test-driver-2") } func (suite *SubcommandTestSuite) TestSearchCmdWithInstalledPreJSON() { + searchModel := SearchCmd{Json: true}.GetModelCustom( + baseModel{getDriverRegistry: getTestDriverRegistry, + downloadPkg: downloadTestPkg}) + before := suite.runCmd(searchModel) + suite.NotContains(before, `"test-driver-only-pre"`) + m := InstallCmd{Driver: "test-driver-only-pre", Level: config.ConfigEnv, Pre: true}. GetModelCustom(baseModel{getDriverRegistry: getTestDriverRegistry, downloadPkg: downloadTestPkg}) suite.runCmd(m) - // JSON search WITHOUT --pre: installed pre-release driver should still appear - m = SearchCmd{Json: true}.GetModelCustom( + searchModel = SearchCmd{Json: true}.GetModelCustom( baseModel{getDriverRegistry: getTestDriverRegistry, downloadPkg: downloadTestPkg}) - out := suite.runCmd(m) + after := suite.runCmd(searchModel) - suite.Contains(out, `"test-driver-only-pre"`) - suite.Contains(out, `"installed"`) - suite.Contains(out, `0.9.0-alpha.1`) - suite.Contains(out, `"test-driver-1"`) - suite.Contains(out, `"test-driver-2"`) + suite.Contains(after, `"test-driver-only-pre"`) + suite.Contains(after, `"installed"`) + suite.Contains(after, `0.9.0-alpha.1`) + suite.Contains(after, `"test-driver-1"`) + suite.Contains(after, `"test-driver-2"`) } func (suite *SubcommandTestSuite) TestSearchCmdPartialRegistryFailure() { From 9d6d67b439098ad0207bafc2c73315a7af221d32 Mon Sep 17 00:00:00 2001 From: Bryce Mecum Date: Wed, 15 Apr 2026 16:11:04 -0700 Subject: [PATCH 3/3] add non-verbose test --- cmd/dbc/search_test.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/cmd/dbc/search_test.go b/cmd/dbc/search_test.go index a28c1685..f0376d2c 100644 --- a/cmd/dbc/search_test.go +++ b/cmd/dbc/search_test.go @@ -234,6 +234,28 @@ func (suite *SubcommandTestSuite) TestSearchCmdVerboseWithInstalledPre() { suite.Contains(after, "test-driver-2") } +func (suite *SubcommandTestSuite) TestSearchCmdNonVerboseWithInstalledPre() { + searchModel := SearchCmd{}.GetModelCustom( + baseModel{getDriverRegistry: getTestDriverRegistry, + downloadPkg: downloadTestPkg}) + before := suite.runCmd(searchModel) + suite.NotContains(before, "test-driver-only-pre") + + m := InstallCmd{Driver: "test-driver-only-pre", Level: config.ConfigEnv, Pre: true}. + GetModelCustom(baseModel{getDriverRegistry: getTestDriverRegistry, downloadPkg: downloadTestPkg}) + suite.runCmd(m) + + searchModel = SearchCmd{}.GetModelCustom( + baseModel{getDriverRegistry: getTestDriverRegistry, + downloadPkg: downloadTestPkg}) + after := suite.runCmd(searchModel) + + suite.Contains(after, "test-driver-only-pre") + suite.Contains(after, "[installed: env=>0.9.0-alpha.1]") + suite.Contains(after, "test-driver-1") + suite.Contains(after, "test-driver-2") +} + func (suite *SubcommandTestSuite) TestSearchCmdWithInstalledPreJSON() { searchModel := SearchCmd{Json: true}.GetModelCustom( baseModel{getDriverRegistry: getTestDriverRegistry,