(t *testing.T, nodeTestCases []NodeRestoreTestCase, template string, extractNodeFunc func(node Node) Node, flags RestoreFlags)
| 104 | } |
| 105 | |
| 106 | func runNodeRestoreTestWithFlags(t *testing.T, nodeTestCases []NodeRestoreTestCase, template string, extractNodeFunc func(node Node) Node, flags RestoreFlags) { |
| 107 | p := parser.New() |
| 108 | p.EnableWindowFunc(true) |
| 109 | for _, testCase := range nodeTestCases { |
| 110 | sourceSQL := fmt.Sprintf(template, testCase.sourceSQL) |
| 111 | expectSQL := fmt.Sprintf(template, testCase.expectSQL) |
| 112 | stmt, err := p.ParseOneStmt(sourceSQL, "", "") |
| 113 | comment := fmt.Sprintf("source %#v", testCase) |
| 114 | require.NoError(t, err, comment) |
| 115 | var sb strings.Builder |
| 116 | err = extractNodeFunc(stmt).Restore(NewRestoreCtx(flags, &sb)) |
| 117 | require.NoError(t, err, comment) |
| 118 | restoreSql := fmt.Sprintf(template, sb.String()) |
| 119 | comment = fmt.Sprintf("source %#v; restore %v", testCase, restoreSql) |
| 120 | require.Equal(t, expectSQL, restoreSql, comment) |
| 121 | stmt2, err := p.ParseOneStmt(restoreSql, "", "") |
| 122 | require.NoError(t, err, comment) |
| 123 | CleanNodeText(stmt) |
| 124 | CleanNodeText(stmt2) |
| 125 | require.Equal(t, stmt, stmt2, comment) |
| 126 | } |
| 127 | } |
no test coverage detected