mirror of https://github.com/usememos/memos.git
fix(test): harden migration container cleanup
- guard against a nil shared docker network after sync.Once initialization - register best-effort cleanup for the v0.26.2 bootstrap container before assertions run
This commit is contained in:
parent
34c9f0c813
commit
fb1bb67d41
|
|
@ -67,12 +67,23 @@ func getTestNetwork(ctx context.Context) (*testcontainers.DockerNetwork, error)
|
|||
return testDockerNetwork.Load(), networkErr
|
||||
}
|
||||
|
||||
func requireTestNetwork(ctx context.Context) (*testcontainers.DockerNetwork, error) {
|
||||
nw, err := getTestNetwork(ctx)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "failed to create test network")
|
||||
}
|
||||
if nw == nil {
|
||||
return nil, errors.New("test network is unavailable")
|
||||
}
|
||||
return nw, nil
|
||||
}
|
||||
|
||||
// GetMySQLDSN starts a MySQL container (if not already running) and creates a fresh database for this test.
|
||||
func GetMySQLDSN(t *testing.T) string {
|
||||
ctx := context.Background()
|
||||
|
||||
mysqlOnce.Do(func() {
|
||||
nw, err := getTestNetwork(ctx)
|
||||
nw, err := requireTestNetwork(ctx)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to create test network: %v", err)
|
||||
}
|
||||
|
|
@ -172,7 +183,7 @@ func GetPostgresDSN(t *testing.T) string {
|
|||
ctx := context.Background()
|
||||
|
||||
postgresOnce.Do(func() {
|
||||
nw, err := getTestNetwork(ctx)
|
||||
nw, err := requireTestNetwork(ctx)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to create test network: %v", err)
|
||||
}
|
||||
|
|
@ -269,9 +280,9 @@ func StartMemosContainer(ctx context.Context, cfg MemosContainerConfig) (testcon
|
|||
"MEMOS_MODE": "prod",
|
||||
}
|
||||
|
||||
nw, err := getTestNetwork(ctx)
|
||||
nw, err := requireTestNetwork(ctx)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "failed to create test network")
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var opts []testcontainers.ContainerCustomizer
|
||||
|
|
|
|||
|
|
@ -31,6 +31,11 @@ func TestMigrationFromV0262PreservesLegacyData(t *testing.T) {
|
|||
t.Logf("Starting Memos %s container for %s schema bootstrap...", cfg.Version, driver)
|
||||
container, err := StartMemosContainer(ctx, cfg)
|
||||
require.NoError(t, err, "failed to start v0.26.2 memos container")
|
||||
t.Cleanup(func() {
|
||||
if container != nil {
|
||||
_ = container.Terminate(ctx)
|
||||
}
|
||||
})
|
||||
|
||||
legacyStore := NewTestingStoreWithDSN(ctx, t, driver, hostDSN)
|
||||
require.Eventually(t, func() bool {
|
||||
|
|
@ -44,6 +49,7 @@ func TestMigrationFromV0262PreservesLegacyData(t *testing.T) {
|
|||
|
||||
err = container.Terminate(ctx)
|
||||
require.NoError(t, err, "failed to stop v0.26.2 memos container")
|
||||
container = nil
|
||||
|
||||
db := openMigrationSQLDB(t, driver, hostDSN)
|
||||
defer db.Close()
|
||||
|
|
|
|||
Loading…
Reference in New Issue