Skip to content

Commit 3874bc5

Browse files
committed
Config: Enhance tests for configuration and database file names photoprism#5304
Signed-off-by: Michael Mayer <[email protected]>
1 parent d6f0e80 commit 3874bc5

File tree

7 files changed

+148
-43
lines changed

7 files changed

+148
-43
lines changed

internal/config/config_db_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ func TestConfig_DatabasePortString(t *testing.T) {
174174
func TestConfig_DatabaseName(t *testing.T) {
175175
c := NewConfig(CliTestContext())
176176
resetDatabaseOptions(c)
177-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/storage/testdata/index.db?_busy_timeout=5000", c.DatabaseName())
177+
assert.Equal(t, ProjectRoot+"/storage/testdata/index.db?_busy_timeout=5000", c.DatabaseName())
178178
}
179179

180180
func TestConfig_DatabaseUser(t *testing.T) {
@@ -251,13 +251,13 @@ func TestConfig_DatabaseDSN(t *testing.T) {
251251
c.options.DatabaseDriver = "MariaDB"
252252
assert.Equal(t, "photoprism:@tcp(localhost)/photoprism?charset=utf8mb4,utf8&collation=utf8mb4_unicode_ci&parseTime=true&timeout=15s", c.DatabaseDSN())
253253
c.options.DatabaseDriver = "tidb"
254-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/storage/testdata/index.db?_busy_timeout=5000", c.DatabaseDSN())
254+
assert.Equal(t, ProjectRoot+"/storage/testdata/index.db?_busy_timeout=5000", c.DatabaseDSN())
255255
c.options.DatabaseDriver = "Postgres"
256-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/storage/testdata/index.db?_busy_timeout=5000", c.DatabaseDSN())
256+
assert.Equal(t, ProjectRoot+"/storage/testdata/index.db?_busy_timeout=5000", c.DatabaseDSN())
257257
c.options.DatabaseDriver = "SQLite"
258-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/storage/testdata/index.db?_busy_timeout=5000", c.DatabaseDSN())
258+
assert.Equal(t, ProjectRoot+"/storage/testdata/index.db?_busy_timeout=5000", c.DatabaseDSN())
259259
c.options.DatabaseDriver = ""
260-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/storage/testdata/index.db?_busy_timeout=5000", c.DatabaseDSN())
260+
assert.Equal(t, ProjectRoot+"/storage/testdata/index.db?_busy_timeout=5000", c.DatabaseDSN())
261261
}
262262

263263
func TestConfig_DatabaseDSNFlags(t *testing.T) {
@@ -304,8 +304,8 @@ func TestConfig_DatabaseFile(t *testing.T) {
304304
driver := c.DatabaseDriver()
305305
assert.Equal(t, SQLite3, driver)
306306
c.options.DatabaseDSN = ""
307-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/storage/testdata/index.db", c.DatabaseFile())
308-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/storage/testdata/index.db?_busy_timeout=5000", c.DatabaseDSN())
307+
assert.Equal(t, ProjectRoot+"/storage/testdata/index.db", c.DatabaseFile())
308+
assert.Equal(t, ProjectRoot+"/storage/testdata/index.db?_busy_timeout=5000", c.DatabaseDSN())
309309
}
310310

311311
func TestConfig_DatabaseTimeout(t *testing.T) {

internal/config/config_storage_test.go

Lines changed: 57 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package config
22

33
import (
4+
"os"
5+
"path/filepath"
46
"strings"
57
"testing"
68
"time"
@@ -30,7 +32,7 @@ func TestConfig_SidecarPath(t *testing.T) {
3032
c.options.SidecarPath = ".photoprism"
3133
assert.Equal(t, ".photoprism", c.SidecarPath())
3234
c.options.SidecarPath = ""
33-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/storage/testdata/sidecar", c.SidecarPath())
35+
assert.Equal(t, ProjectRoot+"/storage/testdata/sidecar", c.SidecarPath())
3436
}
3537

3638
func TestConfig_SidecarYaml(t *testing.T) {
@@ -135,7 +137,7 @@ func TestConfig_TempPath(t *testing.T) {
135137
t.Logf("c.options.TempPath: '%s'", c.options.TempPath)
136138
t.Logf("c.tempPath(): '%s'", d0)
137139

138-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/storage/testdata/temp", c.tempPath())
140+
assert.Equal(t, ProjectRoot+"/storage/testdata/temp", c.tempPath())
139141

140142
c.options.TempPath = ""
141143

@@ -192,22 +194,60 @@ func TestConfig_CmdLibPath(t *testing.T) {
192194

193195
func TestConfig_CachePath2(t *testing.T) {
194196
c := NewConfig(CliTestContext())
195-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/storage/testdata/cache", c.CachePath())
197+
assert.Equal(t, ProjectRoot+"/storage/testdata/cache", c.CachePath())
196198
c.options.CachePath = ""
197-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/storage/testdata/cache", c.CachePath())
199+
assert.Equal(t, ProjectRoot+"/storage/testdata/cache", c.CachePath())
200+
}
201+
202+
func TestConfig_SettingsYaml(t *testing.T) {
203+
t.Run("Default", func(t *testing.T) {
204+
c := NewConfig(CliTestContext())
205+
assert.Contains(t, c.SettingsYaml(), "settings.yml")
206+
})
207+
t.Run("PreferYamlExtension", func(t *testing.T) {
208+
c := NewConfig(CliTestContext())
209+
tempDir := t.TempDir()
210+
c.options.ConfigPath = tempDir
211+
212+
yamlPath := filepath.Join(tempDir, "settings"+fs.ExtYaml)
213+
if err := os.WriteFile(yamlPath, []byte("ui:\n"), fs.ModeFile); err != nil {
214+
t.Fatalf("write %s: %v", yamlPath, err)
215+
}
216+
217+
assert.Equal(t, yamlPath, c.SettingsYaml())
218+
})
219+
}
220+
221+
func TestConfig_HubConfigFile(t *testing.T) {
222+
t.Run("Default", func(t *testing.T) {
223+
c := NewConfig(CliTestContext())
224+
assert.Contains(t, c.HubConfigFile(), "hub.yml")
225+
})
226+
t.Run("PreferYamlExtension", func(t *testing.T) {
227+
c := NewConfig(CliTestContext())
228+
tempDir := t.TempDir()
229+
c.options.ConfigPath = tempDir
230+
231+
yamlPath := filepath.Join(tempDir, "hub"+fs.ExtYaml)
232+
if err := os.WriteFile(yamlPath, []byte("host: example\n"), fs.ModeFile); err != nil {
233+
t.Fatalf("write %s: %v", yamlPath, err)
234+
}
235+
236+
assert.Equal(t, yamlPath, c.HubConfigFile())
237+
})
198238
}
199239

200240
func TestConfig_StoragePath(t *testing.T) {
201241
c := NewConfig(CliTestContext())
202-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/storage/testdata", c.StoragePath())
242+
assert.Equal(t, ProjectRoot+"/storage/testdata", c.StoragePath())
203243
c.options.StoragePath = ""
204-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/storage/testdata/originals/.photoprism/storage", c.StoragePath())
244+
assert.Equal(t, ProjectRoot+"/storage/testdata/originals/.photoprism/storage", c.StoragePath())
205245
}
206246

207247
func TestConfig_TestdataPath(t *testing.T) {
208248
c := NewConfig(CliTestContext())
209249

210-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/storage/testdata/testdata", c.TestdataPath())
250+
assert.Equal(t, ProjectRoot+"/storage/testdata/testdata", c.TestdataPath())
211251
}
212252

213253
func TestConfig_AlbumsPath(t *testing.T) {
@@ -218,13 +258,13 @@ func TestConfig_AlbumsPath(t *testing.T) {
218258
// If this test fails, please manually move “albums” to the “backup” folder
219259
// in the “storage/testdata” directory within your development environment:
220260
// https://github.com/photoprism/photoprism/discussions/4520
221-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/storage/testdata/backup/albums", c.BackupAlbumsPath())
261+
assert.Equal(t, ProjectRoot+"/storage/testdata/backup/albums", c.BackupAlbumsPath())
222262
}
223263

224264
func TestConfig_OriginalsAlbumsPath(t *testing.T) {
225265
c := NewConfig(CliTestContext())
226266

227-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/storage/testdata/originals/albums", c.OriginalsAlbumsPath())
267+
assert.Equal(t, ProjectRoot+"/storage/testdata/originals/albums", c.OriginalsAlbumsPath())
228268
}
229269

230270
func TestConfig_CreateDirectories(t *testing.T) {
@@ -419,21 +459,21 @@ func TestConfig_CreateDirectories2(t *testing.T) {
419459

420460
func TestConfig_PIDFilename2(t *testing.T) {
421461
c := NewConfig(CliTestContext())
422-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/storage/testdata/photoprism.pid", c.PIDFilename())
423-
c.options.PIDFilename = "/go/src/github.com/photoprism/photoprism/internal/config/testdata/test.pid"
424-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/internal/config/testdata/test.pid", c.PIDFilename())
462+
assert.Equal(t, ProjectRoot+"/storage/testdata/photoprism.pid", c.PIDFilename())
463+
c.options.PIDFilename = ProjectRoot + "/internal/config/testdata/test.pid"
464+
assert.Equal(t, ProjectRoot+"/internal/config/testdata/test.pid", c.PIDFilename())
425465
}
426466

427467
func TestConfig_LogFilename2(t *testing.T) {
428468
c := NewConfig(CliTestContext())
429-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/storage/testdata/photoprism.log", c.LogFilename())
430-
c.options.LogFilename = "/go/src/github.com/photoprism/photoprism/internal/config/testdata/test.log"
431-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/internal/config/testdata/test.log", c.LogFilename())
469+
assert.Equal(t, ProjectRoot+"/storage/testdata/photoprism.log", c.LogFilename())
470+
c.options.LogFilename = ProjectRoot + "/internal/config/testdata/test.log"
471+
assert.Equal(t, ProjectRoot+"/internal/config/testdata/test.log", c.LogFilename())
432472
}
433473

434474
func TestConfig_OriginalsPath2(t *testing.T) {
435475
c := NewConfig(CliTestContext())
436-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/storage/testdata/originals", c.OriginalsPath())
476+
assert.Equal(t, ProjectRoot+"/storage/testdata/originals", c.OriginalsPath())
437477
c.options.OriginalsPath = ""
438478
if s := c.OriginalsPath(); s != "" && s != "/photoprism/originals" {
439479
t.Errorf("unexpected originals path: %s", s)
@@ -467,7 +507,7 @@ func TestConfig_AssetsPath(t *testing.T) {
467507
c := NewConfig(CliTestContext())
468508

469509
assert.True(t, strings.HasSuffix(c.AssetsPath(), "/assets"))
470-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/assets", c.AssetsPath())
510+
assert.Equal(t, ProjectRoot+"/assets", c.AssetsPath())
471511
c.options.AssetsPath = ""
472512
if s := c.AssetsPath(); s != "" && s != "/opt/photoprism/assets" {
473513
t.Errorf("unexpected assets path: %s", s)

internal/config/config_test.go

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ import (
1414
"github.com/photoprism/photoprism/pkg/fs"
1515
)
1616

17+
// ProjectRoot references the project root directory for use in tests.
18+
var ProjectRoot = fs.Abs("../../")
19+
1720
// Runs first when package is tested.
1821
func init() {
1922
hub.ApplyTestConfig()
@@ -127,8 +130,21 @@ func TestConfig_OptionsYaml(t *testing.T) {
127130
t.Run("ChangePath", func(t *testing.T) {
128131
c := NewConfig(CliTestContext())
129132
assert.Contains(t, c.OptionsYaml(), "options.yml")
130-
c.options.ConfigPath = "/go/src/github.com/photoprism/photoprism/internal/config/testdata/"
131-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/internal/config/testdata/options.yml", c.OptionsYaml())
133+
c.options.ConfigPath = ProjectRoot + "/internal/config/testdata/"
134+
assert.Equal(t, ProjectRoot+"/internal/config/testdata/options.yml", c.OptionsYaml())
135+
})
136+
t.Run("PreferYamlExtension", func(t *testing.T) {
137+
c := NewConfig(CliTestContext())
138+
tempDir := t.TempDir()
139+
c.options.ConfigPath = tempDir
140+
c.options.OptionsYaml = ""
141+
142+
yamlPath := filepath.Join(tempDir, "options"+fs.ExtYaml)
143+
if err := os.WriteFile(yamlPath, []byte("foo: bar\n"), fs.ModeFile); err != nil {
144+
t.Fatalf("write %s: %v", yamlPath, err)
145+
}
146+
147+
assert.Equal(t, yamlPath, c.OptionsYaml())
132148
})
133149
}
134150

@@ -163,7 +179,7 @@ func TestConfig_ImportPath(t *testing.T) {
163179
c := NewConfig(CliTestContext())
164180
c.AssertTestData(t)
165181

166-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/storage/testdata/import", c.ImportPath())
182+
assert.Equal(t, ProjectRoot+"/storage/testdata/import", c.ImportPath())
167183
result := c.ImportPath()
168184
assert.True(t, strings.HasPrefix(result, "/"))
169185
assert.True(t, strings.HasSuffix(result, "/storage/testdata/import"))
@@ -217,14 +233,14 @@ func TestConfig_ExamplesPath(t *testing.T) {
217233
c := NewConfig(CliTestContext())
218234

219235
path := c.ExamplesPath()
220-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/assets/examples", path)
236+
assert.Equal(t, ProjectRoot+"/assets/examples", path)
221237
}
222238

223239
func TestConfig_TemplatesPath(t *testing.T) {
224240
c := NewConfig(CliTestContext())
225241

226242
path := c.TemplatesPath()
227-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/assets/templates", path)
243+
assert.Equal(t, ProjectRoot+"/assets/templates", path)
228244
}
229245

230246
func TestConfig_CustomTemplatesPath(t *testing.T) {
@@ -246,14 +262,14 @@ func TestConfig_StaticPath(t *testing.T) {
246262
c := NewConfig(CliTestContext())
247263

248264
path := c.StaticPath()
249-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/assets/static", path)
265+
assert.Equal(t, ProjectRoot+"/assets/static", path)
250266
}
251267

252268
func TestConfig_StaticFile(t *testing.T) {
253269
c := NewConfig(CliTestContext())
254270

255271
path := c.StaticFile("video/404.mp4")
256-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/assets/static/video/404.mp4", path)
272+
assert.Equal(t, ProjectRoot+"/assets/static/video/404.mp4", path)
257273

258274
path = c.StaticFile("/img/logo.png")
259275
assert.Equal(t, filepath.Join(c.StaticPath(), "img/logo.png"), path)
@@ -263,7 +279,7 @@ func TestConfig_StaticBuildPath(t *testing.T) {
263279
c := NewConfig(CliTestContext())
264280

265281
path := c.StaticBuildPath()
266-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/assets/static/build", path)
282+
assert.Equal(t, ProjectRoot+"/assets/static/build", path)
267283
}
268284

269285
func TestConfig_StaticBuildFile(t *testing.T) {
@@ -277,7 +293,7 @@ func TestConfig_StaticImgPath(t *testing.T) {
277293
c := NewConfig(CliTestContext())
278294

279295
result := c.StaticImgPath()
280-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/assets/static/img", result)
296+
assert.Equal(t, ProjectRoot+"/assets/static/img", result)
281297
}
282298

283299
func TestConfig_StaticImgFile(t *testing.T) {
@@ -290,11 +306,11 @@ func TestConfig_StaticImgFile(t *testing.T) {
290306
func TestConfig_ThemePath(t *testing.T) {
291307
c := NewConfig(CliTestContext())
292308

293-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/storage/testdata/config/theme", c.ThemePath())
309+
assert.Equal(t, ProjectRoot+"/storage/testdata/config/theme", c.ThemePath())
294310
c.SetThemePath("testdata/static/img/wallpaper")
295-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/internal/config/testdata/static/img/wallpaper", c.ThemePath())
311+
assert.Equal(t, ProjectRoot+"/internal/config/testdata/static/img/wallpaper", c.ThemePath())
296312
c.SetThemePath("")
297-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/storage/testdata/config/theme", c.ThemePath())
313+
assert.Equal(t, ProjectRoot+"/storage/testdata/config/theme", c.ThemePath())
298314
}
299315

300316
func TestConfig_IndexWorkers(t *testing.T) {

internal/config/config_vision_test.go

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,35 @@
11
package config
22

33
import (
4+
"os"
5+
"path/filepath"
46
"strings"
57
"testing"
68

79
"github.com/stretchr/testify/assert"
810

911
"github.com/photoprism/photoprism/internal/ai/vision"
12+
"github.com/photoprism/photoprism/pkg/fs"
1013
)
1114

1215
func TestConfig_VisionYaml(t *testing.T) {
13-
c := NewConfig(CliTestContext())
14-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/storage/testdata/config/vision.yml", c.VisionYaml())
16+
t.Run("Default", func(t *testing.T) {
17+
c := NewConfig(CliTestContext())
18+
assert.Equal(t, ProjectRoot+"/storage/testdata/config/vision.yml", c.VisionYaml())
19+
})
20+
t.Run("PreferYamlExtension", func(t *testing.T) {
21+
c := NewConfig(CliTestContext())
22+
tempDir := t.TempDir()
23+
c.options.ConfigPath = tempDir
24+
c.options.VisionYaml = ""
25+
26+
yamlPath := filepath.Join(tempDir, "vision"+fs.ExtYaml)
27+
if err := os.WriteFile(yamlPath, []byte("models: []\n"), fs.ModeFile); err != nil {
28+
t.Fatalf("write %s: %v", yamlPath, err)
29+
}
30+
31+
assert.Equal(t, yamlPath, c.VisionYaml())
32+
})
1533
}
1634

1735
func TestConfig_VisionApi(t *testing.T) {
@@ -42,7 +60,7 @@ func TestConfig_ModelsPath(t *testing.T) {
4260

4361
path := c.NasnetModelPath()
4462
assert.True(t, strings.HasPrefix(path, c.ModelsPath()))
45-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/assets/models/nasnet", path)
63+
assert.Equal(t, ProjectRoot+"/assets/models/nasnet", path)
4664
}
4765

4866
func TestConfig_TensorFlowDisabled(t *testing.T) {

internal/config/dsn_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ import (
99

1010
func TestNewDSN(t *testing.T) {
1111
t.Run("File", func(t *testing.T) {
12-
dsn := NewDSN("/go/src/github.com/photoprism/photoprism/storage/index.db?_busy_timeout=5000")
12+
dsn := NewDSN(ProjectRoot + "/storage/index.db?_busy_timeout=5000")
1313

1414
assert.Equal(t, "", dsn.Driver)
1515
assert.Equal(t, "", dsn.User)
1616
assert.Equal(t, "", dsn.Password)
1717
assert.Equal(t, "", dsn.Net)
18-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/storage", dsn.Server)
18+
assert.Equal(t, ProjectRoot+"/storage", dsn.Server)
1919
assert.Equal(t, "index.db", dsn.Name)
2020
assert.Equal(t, "_busy_timeout=5000", dsn.Params)
2121
})

internal/config/options_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,6 @@ func TestOptions_ExpandFilenames(t *testing.T) {
4949
assert.Equal(t, "tmp", p.TempPath)
5050
assert.Equal(t, "import", p.ImportPath)
5151
p.expandFilenames()
52-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/internal/config/tmp", p.TempPath)
53-
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/internal/config/import", p.ImportPath)
52+
assert.Equal(t, ProjectRoot+"/internal/config/tmp", p.TempPath)
53+
assert.Equal(t, ProjectRoot+"/internal/config/import", p.ImportPath)
5454
}

0 commit comments

Comments
 (0)