@@ -2,47 +2,14 @@ package mysqldump
2
2
3
3
import (
4
4
"bytes"
5
- "os"
6
5
"strings"
7
6
"testing"
8
7
9
8
sqlmock "github.com/DATA-DOG/go-sqlmock"
10
9
"github.com/stretchr/testify/assert"
11
10
)
12
11
13
- func TestDumpOk (t * testing.T ) {
14
-
15
- tmpFile := "/tmp/test_format.sql"
16
- os .Remove (tmpFile )
17
-
18
- db , mock , err := sqlmock .New ()
19
- assert .NoError (t , err , "an error was not expected when opening a stub database connection" )
20
- defer db .Close ()
21
-
22
- showTablesRows := sqlmock .NewRows ([]string {"Tables_in_Testdb" }).
23
- AddRow ("Test_Table" )
24
-
25
- serverVersionRows := sqlmock .NewRows ([]string {"Version()" }).
26
- AddRow ("test_version" )
27
-
28
- createTableRows := sqlmock .NewRows ([]string {"Table" , "Create Table" }).
29
- AddRow ("Test_Table" , "CREATE TABLE 'Test_Table' (`id` int(11) NOT NULL AUTO_INCREMENT,`email` char(60) DEFAULT NULL, `name` char(60), PRIMARY KEY (`id`))ENGINE=InnoDB DEFAULT CHARSET=latin1" )
30
-
31
- createTableValueRows := sqlmock .NewRows ([]string {"id" , "email" , "name" }).
32
- AddRow (1 , nil , "Test Name 1" ).
33
- AddRow (
2 ,
"[email protected] " ,
"Test Name 2" )
34
-
35
- mock .ExpectQuery ("^SELECT version()" ).WillReturnRows (serverVersionRows )
36
- mock .ExpectQuery ("^SHOW TABLES$" ).WillReturnRows (showTablesRows )
37
- mock .ExpectQuery ("^SHOW CREATE TABLE `Test_Table`$" ).WillReturnRows (createTableRows )
38
- mock .ExpectQuery ("^SELECT (.+) FROM `Test_Table`$" ).WillReturnRows (createTableValueRows )
39
-
40
- buf := new (bytes.Buffer )
41
- assert .NoError (t , Dump (db , buf ), "an error was not expected when dumping a stub database connection" )
42
-
43
- result := strings .Replace (strings .Split (buf .String (), "-- Dump completed" )[0 ], "`" , "~" , - 1 )
44
-
45
- expected := `-- Go SQL Dump ` + version + `
12
+ const expected = `-- Go SQL Dump ` + version + `
46
13
--
47
14
-- ------------------------------------------------------
48
15
-- Server version test_version
@@ -88,5 +55,46 @@ UNLOCK TABLES;
88
55
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
89
56
90
57
`
58
+
59
+ func RunDump (t testing.TB ) string {
60
+ db , mock , err := sqlmock .New ()
61
+ assert .NoError (t , err , "an error was not expected when opening a stub database connection" )
62
+ defer db .Close ()
63
+
64
+ showTablesRows := sqlmock .NewRows ([]string {"Tables_in_Testdb" }).
65
+ AddRow ("Test_Table" )
66
+
67
+ serverVersionRows := sqlmock .NewRows ([]string {"Version()" }).
68
+ AddRow ("test_version" )
69
+
70
+ createTableRows := sqlmock .NewRows ([]string {"Table" , "Create Table" }).
71
+ AddRow ("Test_Table" , "CREATE TABLE 'Test_Table' (`id` int(11) NOT NULL AUTO_INCREMENT,`email` char(60) DEFAULT NULL, `name` char(60), PRIMARY KEY (`id`))ENGINE=InnoDB DEFAULT CHARSET=latin1" )
72
+
73
+ createTableValueRows := sqlmock .NewRows ([]string {"id" , "email" , "name" }).
74
+ AddRow (1 , nil , "Test Name 1" ).
75
+ AddRow (
2 ,
"[email protected] " ,
"Test Name 2" )
76
+
77
+ mock .ExpectQuery ("^SELECT version()" ).WillReturnRows (serverVersionRows )
78
+ mock .ExpectQuery ("^SHOW TABLES$" ).WillReturnRows (showTablesRows )
79
+ mock .ExpectQuery ("^SHOW CREATE TABLE `Test_Table`$" ).WillReturnRows (createTableRows )
80
+ mock .ExpectQuery ("^SELECT (.+) FROM `Test_Table`$" ).WillReturnRows (createTableValueRows )
81
+
82
+ var buf bytes.Buffer
83
+ assert .NoError (t , Dump (db , & buf ), "an error was not expected when dumping a stub database connection" )
84
+
85
+ return buf .String ()
86
+ }
87
+
88
+ func TestDumpOk (t * testing.T ) {
89
+ out := RunDump (t )
90
+
91
+ result := strings .Replace (strings .Split (out , "-- Dump completed" )[0 ], "`" , "~" , - 1 )
92
+
91
93
assert .Equal (t , expected , result )
92
94
}
95
+
96
+ func BenchmarkDump (b * testing.B ) {
97
+ for i := 0 ; i < b .N ; i ++ {
98
+ _ = RunDump (b )
99
+ }
100
+ }
0 commit comments