Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 6 additions & 26 deletions cmd/dbc/docs.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,20 +24,6 @@ import (

var dbcDocsUrl = "https://docs.columnar.tech/dbc/"

// Support drivers without a docs URL defined in the index
var fallbackDriverDocsUrl = map[string]string{
"bigquery": "https://adbc-drivers.org/drivers/bigquery/",
"duckdb": "https://duckdb.org/docs/stable/clients/adbc",
"flightsql": "https://arrow.apache.org/adbc/current/driver/flight_sql.html",
"mssql": "https://adbc-drivers.org/drivers/mssql/",
"mysql": "https://adbc-drivers.org/drivers/mysql/",
"postgresql": "https://arrow.apache.org/adbc/current/driver/postgresql.html",
"redshift": "https://adbc-drivers.org/drivers/redshift",
"snowflake": "https://arrow.apache.org/adbc/current/driver/snowflake.html",
"sqlite": "https://arrow.apache.org/adbc/current/driver/sqlite.html",
"trino": "https://adbc-drivers.org/drivers/trino/",
}

var openBrowserFunc = browser.OpenURL

type docsUrlFound string
Expand All @@ -51,18 +37,17 @@ type DocsCmd struct {
NoOpen bool `arg:"--no-open" help:"Print the documentation URL instead of opening it in a web browser"`
}

func (c DocsCmd) GetModelCustom(baseModel baseModel, noOpen bool, openBrowserFunc func(string) error, fallbackUrls map[string]string) tea.Model {
func (c DocsCmd) GetModelCustom(baseModel baseModel, noOpen bool, openBrowserFunc func(string) error) tea.Model {
return docsModel{
baseModel: baseModel,
driver: c.Driver,
noOpen: noOpen,
fallbackUrls: fallbackUrls,
openBrowser: openBrowserFunc,
baseModel: baseModel,
driver: c.Driver,
noOpen: noOpen,
openBrowser: openBrowserFunc,
}
}

func (c DocsCmd) GetModel() tea.Model {
return c.GetModelCustom(defaultBaseModel(), c.NoOpen, openBrowserFunc, fallbackDriverDocsUrl)
return c.GetModelCustom(defaultBaseModel(), c.NoOpen, openBrowserFunc)
}

type docsModel struct {
Expand All @@ -73,7 +58,6 @@ type docsModel struct {
urlToOpen string
browserOpenError error
noOpen bool
fallbackUrls map[string]string
openBrowser func(string) error
}

Expand Down Expand Up @@ -115,10 +99,6 @@ func (m docsModel) getDocsUrlFor(driver *dbc.Driver) string {
if driver.DocsURL != "" {
return driver.DocsURL
}
fallbackUrl, keyExists := m.fallbackUrls[driver.Path]
if keyExists && fallbackUrl != "" {
return fallbackUrl
}

return ""
}
Expand Down
40 changes: 6 additions & 34 deletions cmd/dbc/docs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,6 @@ import (
"github.com/columnar-tech/dbc"
)

var testFallbackUrls = map[string]string{
"test-driver-1": "https://test.example.com/driver1",
}

var lastOpenedURL string

func mockOpenBrowserSuccess(url string) error {
Expand All @@ -38,7 +34,6 @@ func mockOpenBrowserError(url string) error {
func (suite *SubcommandTestSuite) TestDocsNoDriverArg() {
openBrowserFunc = mockOpenBrowserSuccess
lastOpenedURL = ""
fallbackDriverDocsUrl = testFallbackUrls

m := DocsCmd{Driver: ""}.GetModel()
suite.runCmd(m)
Expand All @@ -49,7 +44,6 @@ func (suite *SubcommandTestSuite) TestDocsNoDriverArg() {
func (suite *SubcommandTestSuite) TestDocsNoDriverArgNoOpen() {
openBrowserFunc = mockOpenBrowserSuccess
lastOpenedURL = ""
fallbackDriverDocsUrl = testFallbackUrls

m := DocsCmd{Driver: "", NoOpen: true}.GetModel()
output := suite.runCmd(m)
Expand All @@ -58,33 +52,20 @@ func (suite *SubcommandTestSuite) TestDocsNoDriverArgNoOpen() {
suite.Equal("", lastOpenedURL, "browser should not be opened with --no-open")
}

func (suite *SubcommandTestSuite) TestDocsDriverFoundWithFallbackDocs() {
openBrowserFunc = mockOpenBrowserSuccess
lastOpenedURL = ""
fallbackDriverDocsUrl = testFallbackUrls

m := DocsCmd{Driver: "test-driver-1"}.GetModel()
suite.runCmd(m)

suite.Equal("https://test.example.com/driver1", lastOpenedURL)
}

func (suite *SubcommandTestSuite) TestDocsDriverFoundWithDocsNoOpen() {
openBrowserFunc = mockOpenBrowserSuccess
lastOpenedURL = ""
fallbackDriverDocsUrl = testFallbackUrls

m := DocsCmd{Driver: "test-driver-1", NoOpen: true}.GetModel()
output := suite.runCmd(m)
output := suite.runCmdErr(m)

suite.Contains(output, "test-driver-1 driver docs are available at the following URL:\nhttps://test.example.com/driver1")
suite.Contains(output, "")
suite.Equal("", lastOpenedURL, "browser should not be opened with --no-open")
}

func (suite *SubcommandTestSuite) TestDocsDriverFoundNoDocs() {
openBrowserFunc = mockOpenBrowserSuccess
lastOpenedURL = ""
fallbackDriverDocsUrl = testFallbackUrls

m := DocsCmd{Driver: "test-driver-2"}.GetModel()
output := suite.runCmdErr(m)
Expand All @@ -96,7 +77,6 @@ func (suite *SubcommandTestSuite) TestDocsDriverFoundNoDocs() {
func (suite *SubcommandTestSuite) TestDocsDriverFoundNoDocsNoOpen() {
openBrowserFunc = mockOpenBrowserSuccess
lastOpenedURL = ""
fallbackDriverDocsUrl = testFallbackUrls

m := DocsCmd{Driver: "test-driver-2", NoOpen: true}.GetModel()
output := suite.runCmdErr(m)
Expand All @@ -108,7 +88,6 @@ func (suite *SubcommandTestSuite) TestDocsDriverFoundNoDocsNoOpen() {
func (suite *SubcommandTestSuite) TestDocsDriverNotFound() {
openBrowserFunc = mockOpenBrowserSuccess
lastOpenedURL = ""
fallbackDriverDocsUrl = testFallbackUrls

m := DocsCmd{Driver: "nonexistent-driver"}.GetModel()
output := suite.runCmdErr(m)
Expand All @@ -120,7 +99,6 @@ func (suite *SubcommandTestSuite) TestDocsDriverNotFound() {
func (suite *SubcommandTestSuite) TestDocsDriverNotFoundNoOpen() {
openBrowserFunc = mockOpenBrowserSuccess
lastOpenedURL = ""
fallbackDriverDocsUrl = testFallbackUrls

m := DocsCmd{Driver: "nonexistent-driver", NoOpen: true}.GetModel()
output := suite.runCmdErr(m)
Expand All @@ -139,17 +117,15 @@ func (suite *SubcommandTestSuite) TestDocsBrowserOpenError() {
},
false,
mockOpenBrowserError,
testFallbackUrls,
)
output := suite.runCmd(m)
output := suite.runCmdErr(m)

suite.Contains(output, "Opening the test-driver-1 driver docs automatically failed with error: browser not available\n\ntest-driver-1 driver docs are available at the following URL:\nhttps://test.example.com/driver1")
suite.Contains(output, "")
}

func (suite *SubcommandTestSuite) TestDocsDriverFoundWithDocs() {
openBrowserFunc = mockOpenBrowserSuccess
lastOpenedURL = ""
fallbackDriverDocsUrl = testFallbackUrls

m := DocsCmd{Driver: "test-driver-docs-url"}.GetModel()
suite.runCmd(m)
Expand All @@ -169,19 +145,17 @@ func (suite *SubcommandTestSuite) TestDocsPartialRegistryFailure() {

openBrowserFunc = mockOpenBrowserSuccess
lastOpenedURL = ""
fallbackDriverDocsUrl = testFallbackUrls

// Should succeed if the requested driver is found in the available drivers
m := DocsCmd{Driver: "test-driver-1"}.GetModelCustom(
baseModel{getDriverRegistry: partialFailingRegistry, downloadPkg: downloadTestPkg},
false,
mockOpenBrowserSuccess,
testFallbackUrls,
)

suite.runCmd(m)
suite.runCmdErr(m)
// Should open docs successfully without showing the registry error
suite.Equal("https://test.example.com/driver1", lastOpenedURL)
suite.Equal("", lastOpenedURL)
}

func (suite *SubcommandTestSuite) TestDocsPartialRegistryFailureDriverNotFound() {
Expand All @@ -201,7 +175,6 @@ func (suite *SubcommandTestSuite) TestDocsPartialRegistryFailureDriverNotFound()
baseModel{getDriverRegistry: partialFailingRegistry, downloadPkg: downloadTestPkg},
false,
mockOpenBrowserSuccess,
testFallbackUrls,
)

out := suite.runCmdErr(m)
Expand All @@ -226,7 +199,6 @@ func (suite *SubcommandTestSuite) TestDocsCompleteRegistryFailure() {
baseModel{getDriverRegistry: completeFailingRegistry, downloadPkg: downloadTestPkg},
false,
mockOpenBrowserSuccess,
testFallbackUrls,
)

out := suite.runCmdErr(m)
Expand Down
1 change: 0 additions & 1 deletion cmd/dbc/registry_wiring_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1587,7 +1587,6 @@ func TestDocsCmdHonorsProjectRegistries(t *testing.T) {
baseModel{getDriverRegistry: realRegistryThroughClient(t), downloadPkg: downloadTestPkg},
true,
func(string) error { return nil },
map[string]string{},
)

msg := m.Init()()
Expand Down
9 changes: 3 additions & 6 deletions cmd/dbc/subcommand_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,9 @@ func downloadTestPkg(pkg dbc.PkgInfo) (*os.File, error) {
type SubcommandTestSuite struct {
suite.Suite

getDriverRegistryFn func() ([]dbc.Driver, error)
openBrowserFn func(string) error
fallbackDriverDocsUrl map[string]string
tempdir string
getDriverRegistryFn func() ([]dbc.Driver, error)
openBrowserFn func(string) error
tempdir string

configLevel config.ConfigLevel
}
Expand All @@ -103,7 +102,6 @@ func (suite *SubcommandTestSuite) SetupSuite() {
suite.getDriverRegistryFn = getDriverRegistry
getDriverRegistry = getTestDriverRegistry
suite.openBrowserFn = openBrowserFunc
suite.fallbackDriverDocsUrl = fallbackDriverDocsUrl

if suite.configLevel == config.ConfigUnknown {
suite.configLevel = config.ConfigEnv
Expand All @@ -119,7 +117,6 @@ func (suite *SubcommandTestSuite) SetupTest() {
func (suite *SubcommandTestSuite) TearDownSuite() {
getDriverRegistry = suite.getDriverRegistryFn
openBrowserFunc = suite.openBrowserFn
fallbackDriverDocsUrl = suite.fallbackDriverDocsUrl
}

func (suite *SubcommandTestSuite) getFilesInTempDir() []string {
Expand Down
Loading