mirror of
https://git.vectorsigma.ru/public/photoview.git
synced 2026-07-29 02:08:43 +00:00
* Move exif. * Better name. * Add tests and fix codes. * Rename cleanup. Remove context because it doesn't use. * Update comments. * Protect the global var with sync.Once. * Avoid exit * Fix the pointer. * Apply recommends. * Fix parsing date. * Fix shadow name. * Add log when exif parsing has parse failures. * Add error context. * Fix advices.
80 lines
1.5 KiB
Go
80 lines
1.5 KiB
Go
package test_utils
|
|
|
|
import (
|
|
"flag"
|
|
"log"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/joho/godotenv"
|
|
"github.com/photoview/photoview/api/scanner/externaltools/exif"
|
|
"github.com/photoview/photoview/api/scanner/media_encoding/executable_worker"
|
|
"github.com/photoview/photoview/api/test_utils/flags"
|
|
"github.com/photoview/photoview/api/utils"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
var test_dbm TestDBManager = TestDBManager{}
|
|
|
|
func UnitTestRun(m *testing.M) {
|
|
exitCode := 1
|
|
defer func() {
|
|
os.Exit(exitCode)
|
|
}()
|
|
|
|
flag.Parse()
|
|
|
|
exitCode = m.Run()
|
|
}
|
|
|
|
func IntegrationTestRun(m *testing.M) {
|
|
exitCode := 1
|
|
defer func() {
|
|
os.Exit(exitCode)
|
|
}()
|
|
|
|
flag.Parse()
|
|
|
|
if flags.Database {
|
|
envPath := PathFromAPIRoot("testing.env")
|
|
|
|
if err := godotenv.Load(envPath); err != nil {
|
|
log.Println("No testing.env file found")
|
|
}
|
|
}
|
|
defer test_dbm.Close()
|
|
|
|
faceModelsPath := PathFromAPIRoot("data", "models")
|
|
utils.ConfigureTestFaceRecognitionModelsPath(faceModelsPath)
|
|
|
|
exifCleanup, err := exif.Initialize()
|
|
if err != nil {
|
|
log.Panicf("init exif error: %v", err)
|
|
}
|
|
defer exifCleanup()
|
|
|
|
terminateWorkers := executable_worker.Initialize()
|
|
defer terminateWorkers()
|
|
|
|
exitCode = m.Run()
|
|
}
|
|
|
|
func FilesystemTest(t *testing.T) {
|
|
if !flags.Filesystem {
|
|
t.Skip("Filesystem integration tests disabled")
|
|
}
|
|
utils.ConfigureTestCache(t.TempDir())
|
|
}
|
|
|
|
func DatabaseTest(t *testing.T) *gorm.DB {
|
|
if !flags.Database {
|
|
t.Skip("Database integration tests disabled")
|
|
}
|
|
|
|
if err := test_dbm.SetupAndReset(); err != nil {
|
|
t.Fatalf("failed to setup or reset test database: %v", err)
|
|
}
|
|
|
|
return test_dbm.DB
|
|
}
|