Skip to content

Commit a9b4d53

Browse files
committed
fix: consistently return errors for backup and restore commands
1 parent 2f8207c commit a9b4d53

File tree

2 files changed

+26
-87
lines changed

2 files changed

+26
-87
lines changed

cmd/immuadmin/command/backup.go

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -158,31 +158,25 @@ func (cl *commandlineBck) backup(cmd *cobra.Command) {
158158
RunE: func(cmd *cobra.Command, args []string) error {
159159
dbDir, err := cmd.Flags().GetString("dbdir")
160160
if err != nil {
161-
cl.quit(err)
162-
return nil
161+
return err
163162
}
164163
if err = cl.mustNotBeWorkingDir(dbDir); err != nil {
165-
cl.quit(err)
166-
return nil
164+
return err
167165
}
168166
manualStopStart, err := cmd.Flags().GetBool("manual-stop-start")
169167
if err != nil {
170-
cl.quit(err)
171-
return nil
168+
return err
172169
}
173170
uncompressed, err := cmd.Flags().GetBool("uncompressed")
174171
if err != nil {
175-
cl.quit(err)
176-
return nil
172+
return err
177173
}
178174
if err := cl.askUserConfirmation(cmd, "backup", manualStopStart); err != nil {
179-
cl.quit(err)
180-
return nil
175+
return err
181176
}
182177
backupPath, err := cl.offlineBackup(dbDir, uncompressed, manualStopStart)
183178
if err != nil {
184-
cl.quit(err)
185-
return nil
179+
return err
186180
}
187181
fmt.Printf("Database backup created: %s\n", backupPath)
188182
return nil
@@ -206,22 +200,18 @@ func (cl *commandlineBck) restore(cmd *cobra.Command) {
206200
snapshotPath := args[0]
207201
dbDir, err := cmd.Flags().GetString("dbdir")
208202
if err != nil {
209-
cl.quit(err)
210-
return nil
203+
return err
211204
}
212205
manualStopStart, err := cmd.Flags().GetBool("manual-stop-start")
213206
if err != nil {
214-
cl.quit(err)
215-
return nil
207+
return err
216208
}
217209
if err := cl.askUserConfirmation(cmd, "restore", manualStopStart); err != nil {
218-
cl.quit(err)
219-
return nil
210+
return err
220211
}
221212
autoBackupPath, err := cl.offlineRestore(snapshotPath, dbDir, manualStopStart)
222213
if err != nil {
223-
cl.quit(err)
224-
return nil
214+
return err
225215
}
226216
fmt.Printf("Database restored from backup %s\n", snapshotPath)
227217
fmt.Printf("A backup of the previous database has been also created: %s\n", autoBackupPath)

cmd/immuadmin/command/backup_test.go

Lines changed: 16 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -363,21 +363,15 @@ func TestBackup(t *testing.T) {
363363
os.GetwdF = func() (string, error) {
364364
return "", errGetwd
365365
}
366-
clb.onError = func(msg interface{}) {
367-
require.Equal(t, errGetwd, msg)
368-
}
369-
require.NoError(t, cmd.Execute())
366+
require.Equal(t, errGetwd, cmd.Execute())
370367
os.GetwdF = getwdFOK
371368

372369
// Abs error
373370
errAbs1 := errors.New("Abs error 1")
374371
os.AbsF = func(path string) (string, error) {
375372
return "", errAbs1
376373
}
377-
clb.onError = func(msg interface{}) {
378-
require.Equal(t, errAbs1, msg)
379-
}
380-
require.NoError(t, cmd.Execute())
374+
require.Equal(t, errAbs1, cmd.Execute())
381375

382376
errAbs2 := errors.New("Abs error 2")
383377
nbAbsCalls = 0
@@ -388,10 +382,7 @@ func TestBackup(t *testing.T) {
388382
}
389383
return "", errAbs2
390384
}
391-
clb.onError = func(msg interface{}) {
392-
require.Equal(t, errAbs2, msg)
393-
}
394-
require.NoError(t, cmd.Execute())
385+
require.Equal(t, errAbs2, cmd.Execute())
395386

396387
os.AbsF = absFOK
397388

@@ -438,25 +429,21 @@ func TestBackup(t *testing.T) {
438429
okReadFromTerminalYNF := termReaderMock.ReadFromTerminalYNF
439430

440431
// canceled
432+
deleteBackupFiles(dbDir)
441433
nokReadFromTerminalYNF := func(def string) (selected string, err error) {
442434
return "N", nil
443435
}
444436
termReaderMock.ReadFromTerminalYNF = nokReadFromTerminalYNF
445-
clb.onError = func(msg interface{}) {
446-
require.Equal(t, "Canceled", msg.(error).Error())
447-
}
448437

449-
require.NoError(t, cmd.Execute())
438+
require.Error(t, cmd.Execute(), "Canceled")
439+
450440
cmd.SetArgs([]string{
451441
"backup",
452442
fmt.Sprintf("--dbdir=%s", dbDir),
453443
"--manual-stop-start",
454444
})
455-
clb.onError = func(msg interface{}) {
456-
require.Equal(t, "Canceled", msg.(error).Error())
457-
}
445+
require.Error(t, cmd.Execute(), "Canceled")
458446

459-
require.NoError(t, cmd.Execute())
460447
termReaderMock.ReadFromTerminalYNF = okReadFromTerminalYNF
461448

462449
okPwReader := clb.passwordReader
@@ -475,12 +462,8 @@ func TestBackup(t *testing.T) {
475462
ReadF: errPwReadF,
476463
}
477464
clb.passwordReader = errPwReader
478-
clb.onError = func(msg interface{}) {
479-
require.Equal(t, pwReadErr, msg)
480-
}
481-
clb.backup(cmd)
482465

483-
require.NoError(t, cmd.Execute())
466+
require.Equal(t, pwReadErr, cmd.Execute())
484467
clb.passwordReader = okPwReader
485468

486469
/*
@@ -508,11 +491,7 @@ func TestBackup(t *testing.T) {
508491
})
509492
expectedErrMsg :=
510493
"cannot backup the current directory, please specify a subdirectory, for example ./data"
511-
clb.onError = func(msg interface{}) {
512-
require.Equal(t, expectedErrMsg, msg.(error).Error())
513-
}
514-
515-
require.NoError(t, cmd.Execute())
494+
require.Error(t, cmd.Execute(), expectedErrMsg)
516495

517496
// dbdir not exists
518497
notADir := dbDir + "_not_a_dir"
@@ -522,23 +501,15 @@ func TestBackup(t *testing.T) {
522501
})
523502
expectedErrMsg =
524503
"stat backup_test_db_dir_not_a_dir: no such file or directory"
525-
clb.onError = func(msg interface{}) {
526-
require.Equal(t, expectedErrMsg, msg.(error).Error())
527-
}
528-
529-
require.NoError(t, cmd.Execute())
504+
require.Error(t, cmd.Execute(), expectedErrMsg)
530505

531506
// dbdir not a dir
532507
_, err = stdos.Create(notADir)
533508
require.NoError(t, err)
534509
defer stdos.Remove(notADir)
535510
expectedErrMsg =
536511
"backup_test_db_dir_not_a_dir is not a directory"
537-
clb.onError = func(msg interface{}) {
538-
require.Equal(t, expectedErrMsg, msg.(error).Error())
539-
}
540-
541-
require.NoError(t, cmd.Execute())
512+
require.Error(t, cmd.Execute(), expectedErrMsg)
542513

543514
// daemon stop error
544515
cmd.SetArgs([]string{
@@ -548,12 +519,7 @@ func TestBackup(t *testing.T) {
548519
daemMock.StopF = func() (string, error) {
549520
return "", errors.New("daemon stop error")
550521
}
551-
clb.onError = func(msg interface{}) {
552-
require.Equal(t, "error stopping immudb server: daemon stop error", msg.(error).Error())
553-
}
554-
clb.backup(cmd)
555-
556-
require.NoError(t, cmd.Execute())
522+
require.Error(t, cmd.Execute(), "error stopping immudb server: daemon stop error")
557523
daemMock.StopF = nil
558524

559525
// daemon start error
@@ -562,7 +528,6 @@ func TestBackup(t *testing.T) {
562528
}
563529
clb.onError = func(msg interface{}) {
564530
}
565-
clb.backup(cmd)
566531
collector.CaptureStderr = true
567532
require.NoError(t, collector.Start())
568533

@@ -646,22 +611,14 @@ func TestRestore(t *testing.T) {
646611
os.StatF = func(name string) (stdos.FileInfo, error) {
647612
return nil, errStat
648613
}
649-
clb.onError = func(msg interface{}) {
650-
require.Equal(t, errStat, msg)
651-
}
652-
653-
require.NoError(t, cmd.Execute())
614+
require.Equal(t, errStat, cmd.Execute())
654615
os.StatF = statFOK
655616

656617
// daemon stop error
657618
daemMock.StopF = func() (string, error) {
658619
return "", errors.New("daemon stop error")
659620
}
660-
clb.onError = func(msg interface{}) {
661-
require.Equal(t, "error stopping immudb server: daemon stop error", fmt.Sprintf("%v", msg))
662-
}
663-
664-
require.NoError(t, cmd.Execute())
621+
require.Error(t, cmd.Execute(), "error stopping immudb server: daemon stop error")
665622
daemMock.StopF = nil
666623

667624
// Rename errors
@@ -670,11 +627,7 @@ func TestRestore(t *testing.T) {
670627
os.RenameF = func(oldpath, newpath string) error {
671628
return errors.New("Rename error 1")
672629
}
673-
clb.onError = func(msg interface{}) {
674-
require.Contains(t, msg.(error).Error(), "Rename error 1")
675-
}
676-
677-
require.NoError(t, cmd.Execute())
630+
require.Error(t, cmd.Execute(), "Rename error 1")
678631

679632
nbCalls := 0
680633
os.RenameF = func(oldpath, newpath string) error {
@@ -684,11 +637,7 @@ func TestRestore(t *testing.T) {
684637
}
685638
return errors.New("Rename error 2")
686639
}
687-
clb.onError = func(msg interface{}) {
688-
require.Contains(t, msg.(error).Error(), "Rename error 2")
689-
}
690-
691-
require.NoError(t, cmd.Execute())
640+
require.Error(t, cmd.Execute(), "Rename error 2")
692641

693642
os.RenameF = renameFOK
694643
}

0 commit comments

Comments
 (0)