@@ -95,11 +95,15 @@ func TestParser_Format(t *testing.T) {
9595 builder .WriteString ("-- Origin SQL:\n " )
9696 builder .Write (fileBytes )
9797 builder .WriteString ("\n \n -- Format SQL:\n " )
98+ var formatSQLBuilder strings.Builder
9899 for _ , stmt := range stmts {
99- builder .WriteString (stmt .String (0 ))
100- builder .WriteByte (';' )
101- builder .WriteByte ('\n' )
100+ formatSQLBuilder .WriteString (stmt .String (0 ))
101+ formatSQLBuilder .WriteByte (';' )
102+ formatSQLBuilder .WriteByte ('\n' )
102103 }
104+ formatSQL := formatSQLBuilder .String ()
105+ builder .WriteString (formatSQL )
106+ validFormatSQL (t , formatSQL )
103107 g := goldie .New (t ,
104108 goldie .WithNameSuffix ("" ),
105109 goldie .WithDiffEngine (goldie .ColoredDiff ),
@@ -109,3 +113,17 @@ func TestParser_Format(t *testing.T) {
109113 }
110114 }
111115}
116+
117+ // validFormatSQL Verify that the format sql can be re-parsed with consistent results
118+ func validFormatSQL (t * testing.T , sql string ) {
119+ parser := NewParser (sql )
120+ stmts , err := parser .ParseStmts ()
121+ require .NoError (t , err )
122+ var builder strings.Builder
123+ for _ , stmt := range stmts {
124+ builder .WriteString (stmt .String (0 ))
125+ builder .WriteByte (';' )
126+ builder .WriteByte ('\n' )
127+ }
128+ require .Equal (t , sql , builder .String ())
129+ }
0 commit comments