package db_testimport ("context""database/sql""errors""fmt""testing""github.com/mattn/go-sqlite3""github.com/navidrome/navidrome/db""github.com/navidrome/navidrome/log""github.com/navidrome/navidrome/tests". "github.com/onsi/ginkgo/v2". "github.com/onsi/gomega")func TestDB(t *testing.T) {tests.Init(t, false)log.SetLevel(log.LevelFatal)RegisterFailHandler(Fail)RunSpecs(t, "DB Suite")}var _ = DescribeTable("IsBusy",func(err error, expected bool) {Expect(db.IsBusy(err)).To(Equal(expected))},Entry("SQLITE_BUSY", sqlite3.Error{Code: sqlite3.ErrBusy}, true),Entry("SQLITE_BUSY_SNAPSHOT", sqlite3.Error{Code: sqlite3.ErrBusy, ExtendedCode: sqlite3.ErrBusySnapshot}, true),Entry("a wrapped SQLITE_BUSY", fmt.Errorf("persisting: %w", sqlite3.Error{Code: sqlite3.ErrBusy}), true),Entry("another SQLite error", sqlite3.Error{Code: sqlite3.ErrConstraint}, false),Entry("a non-SQLite error", errors.New("database is locked"), false),Entry("nil", nil, false),)var _ = Describe("IsSchemaEmpty", func() {var database *sql.DBvar ctx context.ContextBeforeEach(func() {ctx = context.Background()path := "file::memory:"database, _ = sql.Open(db.Dialect, path)})It("returns false if the goose metadata table is found", func() {_, err := database.Exec("create table goose_db_version (id primary key);")Expect(err).ToNot(HaveOccurred())Expect(db.IsSchemaEmpty(ctx, database)).To(BeFalse())})It("returns true if the schema is brand new", func() {Expect(db.IsSchemaEmpty(ctx, database)).To(BeTrue())})})