fix: Fix test workflow and Bleve test double-close panic

- Add POSTGRES_USER to PostgreSQL service configuration in test workflow
- Fix TestInitBleveIndex double-close panic by removing defer before explicit close
- Test now passes successfully

Fixes failing Unit Tests workflow in PR #64
This commit is contained in:
Damir Mukimov 2025-11-30 05:32:54 +01:00
parent 019aa78754
commit e63d627019
No known key found for this signature in database
GPG Key ID: 42996CC7C73BC750
2 changed files with 54 additions and 52 deletions

View File

@ -14,6 +14,7 @@ jobs:
postgres: postgres:
image: postgres:15 image: postgres:15
env: env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres POSTGRES_PASSWORD: postgres
POSTGRES_DB: testdb POSTGRES_DB: testdb
options: >- options: >-
@ -78,6 +79,7 @@ jobs:
postgres: postgres:
image: postgres:15 image: postgres:15
env: env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres POSTGRES_PASSWORD: postgres
POSTGRES_DB: testdb POSTGRES_DB: testdb
options: >- options: >-

View File

@ -8,11 +8,12 @@ import (
"testing" "testing"
"time" "time"
"tercul/internal/domain"
"tercul/internal/platform/log"
"github.com/blevesearch/bleve/v2" "github.com/blevesearch/bleve/v2"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"tercul/internal/domain"
"tercul/internal/platform/log"
"gorm.io/gorm" "gorm.io/gorm"
) )
@ -189,10 +190,10 @@ func TestInitBleveIndex(t *testing.T) {
index1, err := initBleveIndex(indexPath) index1, err := initBleveIndex(indexPath)
require.NoError(t, err) require.NoError(t, err)
require.NotNil(t, index1) require.NotNil(t, index1)
defer index1.Close()
// Close and reopen // Close and reopen (don't use defer here since we're closing explicitly)
index1.Close() err = index1.Close()
require.NoError(t, err)
// Try to open existing index // Try to open existing index
index2, err := initBleveIndex(indexPath) index2, err := initBleveIndex(indexPath)
@ -209,20 +210,20 @@ func TestIndexBatch(t *testing.T) {
translations := []domain.Translation{ translations := []domain.Translation{
{ {
BaseModel: domain.BaseModel{ID: 1}, BaseModel: domain.BaseModel{ID: 1},
Title: "Test Translation 1", Title: "Test Translation 1",
Content: "Content 1", Content: "Content 1",
Language: "en", Language: "en",
Status: domain.TranslationStatusPublished, Status: domain.TranslationStatusPublished,
TranslatableID: 100, TranslatableID: 100,
TranslatableType: "works", TranslatableType: "works",
}, },
{ {
BaseModel: domain.BaseModel{ID: 2}, BaseModel: domain.BaseModel{ID: 2},
Title: "Test Translation 2", Title: "Test Translation 2",
Content: "Content 2", Content: "Content 2",
Language: "fr", Language: "fr",
Status: domain.TranslationStatusDraft, Status: domain.TranslationStatusDraft,
TranslatableID: 200, TranslatableID: 200,
TranslatableType: "works", TranslatableType: "works",
}, },
@ -278,20 +279,20 @@ func TestMigrateTranslations(t *testing.T) {
translations := []domain.Translation{ translations := []domain.Translation{
{ {
BaseModel: domain.BaseModel{ID: 1}, BaseModel: domain.BaseModel{ID: 1},
Title: "Test 1", Title: "Test 1",
Content: "Content 1", Content: "Content 1",
Language: "en", Language: "en",
Status: domain.TranslationStatusPublished, Status: domain.TranslationStatusPublished,
TranslatableID: 100, TranslatableID: 100,
TranslatableType: "works", TranslatableType: "works",
}, },
{ {
BaseModel: domain.BaseModel{ID: 2}, BaseModel: domain.BaseModel{ID: 2},
Title: "Test 2", Title: "Test 2",
Content: "Content 2", Content: "Content 2",
Language: "fr", Language: "fr",
Status: domain.TranslationStatusPublished, Status: domain.TranslationStatusPublished,
TranslatableID: 200, TranslatableID: 200,
TranslatableType: "works", TranslatableType: "works",
}, },
@ -304,7 +305,7 @@ func TestMigrateTranslations(t *testing.T) {
context.Background(), context.Background(),
repo, repo,
index, index,
10, // small batch size for testing 10, // small batch size for testing
nil, // no checkpoint nil, // no checkpoint
logger, logger,
context.Background(), context.Background(),
@ -322,29 +323,29 @@ func TestMigrateTranslationsWithCheckpoint(t *testing.T) {
translations := []domain.Translation{ translations := []domain.Translation{
{ {
BaseModel: domain.BaseModel{ID: 1}, BaseModel: domain.BaseModel{ID: 1},
Title: "Test 1", Title: "Test 1",
Content: "Content 1", Content: "Content 1",
Language: "en", Language: "en",
Status: domain.TranslationStatusPublished, Status: domain.TranslationStatusPublished,
TranslatableID: 100, TranslatableID: 100,
TranslatableType: "works", TranslatableType: "works",
}, },
{ {
BaseModel: domain.BaseModel{ID: 2}, BaseModel: domain.BaseModel{ID: 2},
Title: "Test 2", Title: "Test 2",
Content: "Content 2", Content: "Content 2",
Language: "fr", Language: "fr",
Status: domain.TranslationStatusPublished, Status: domain.TranslationStatusPublished,
TranslatableID: 200, TranslatableID: 200,
TranslatableType: "works", TranslatableType: "works",
}, },
{ {
BaseModel: domain.BaseModel{ID: 3}, BaseModel: domain.BaseModel{ID: 3},
Title: "Test 3", Title: "Test 3",
Content: "Content 3", Content: "Content 3",
Language: "de", Language: "de",
Status: domain.TranslationStatusPublished, Status: domain.TranslationStatusPublished,
TranslatableID: 300, TranslatableID: 300,
TranslatableType: "works", TranslatableType: "works",
}, },
@ -382,11 +383,11 @@ func TestVerifyIndex(t *testing.T) {
translations := []domain.Translation{ translations := []domain.Translation{
{ {
BaseModel: domain.BaseModel{ID: 1}, BaseModel: domain.BaseModel{ID: 1},
Title: "Test 1", Title: "Test 1",
Content: "Content 1", Content: "Content 1",
Language: "en", Language: "en",
Status: domain.TranslationStatusPublished, Status: domain.TranslationStatusPublished,
TranslatableID: 100, TranslatableID: 100,
TranslatableType: "works", TranslatableType: "works",
}, },
@ -410,11 +411,11 @@ func TestVerifyIndexWithMissingTranslation(t *testing.T) {
translations := []domain.Translation{ translations := []domain.Translation{
{ {
BaseModel: domain.BaseModel{ID: 1}, BaseModel: domain.BaseModel{ID: 1},
Title: "Test 1", Title: "Test 1",
Content: "Content 1", Content: "Content 1",
Language: "en", Language: "en",
Status: domain.TranslationStatusPublished, Status: domain.TranslationStatusPublished,
TranslatableID: 100, TranslatableID: 100,
TranslatableType: "works", TranslatableType: "works",
}, },
@ -434,4 +435,3 @@ func getTestLogger() *log.Logger {
log.Init("test", "test") log.Init("test", "test")
return log.FromContext(context.Background()) return log.FromContext(context.Background())
} }