Skip to content

Commit 8ff0c79

Browse files
committed
Fix the warning checks in enginetest to be more strict
Previously if an error was expected but none was produced the test would pass.
1 parent 260b407 commit 8ff0c79

File tree

3 files changed

+93
-55
lines changed

3 files changed

+93
-55
lines changed

enginetest/evaluation.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1042,15 +1042,25 @@ func AssertWarningAndTestQuery(
10421042
// check warnings depend on context, which ServerEngine does not depend on
10431043
if expectedWarningsCount > 0 {
10441044
assert.Equal(t, expectedWarningsCount, len(ctx.Warnings()))
1045+
// Verify that if warnings are expected, we also configured a specific value check.
1046+
if expectedCode == 0 && len(expectedWarningMessageSubstring) == 0 {
1047+
require.Fail("Invalid test setup. Warning expected, but no value validation was configured.")
1048+
}
1049+
} else {
1050+
if expectedCode != 0 || len(expectedWarningMessageSubstring) != 0 {
1051+
require.Fail("Invalid test setup. No warnings expected, but value validation was configured")
1052+
}
1053+
assert.Zero(t, len(ctx.Warnings()), "Unexpected warnings")
10451054
}
10461055

10471056
if expectedCode > 0 {
1057+
// Not ideal. We are only supporting all warning codes being identical in a given test.
10481058
for _, warning := range ctx.Warnings() {
10491059
assert.Equal(t, expectedCode, warning.Code, "Unexpected warning code")
10501060
}
10511061
}
1052-
10531062
if len(expectedWarningMessageSubstring) > 0 {
1063+
// Not ideal. All messages must have the same substring for a given test.
10541064
for _, warning := range ctx.Warnings() {
10551065
assert.Contains(t, warning.Message, expectedWarningMessageSubstring, "Unexpected warning message")
10561066
}

enginetest/queries/insert_queries.go

Lines changed: 50 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1546,49 +1546,56 @@ var InsertScripts = []ScriptTest{
15461546
Expected: []sql.Row{
15471547
{types.OkResult{RowsAffected: 1}},
15481548
},
1549-
ExpectedWarning: mysql.ERDupEntry,
1549+
ExpectedWarningsCount: 1,
1550+
ExpectedWarning: mysql.ERDupEntry,
15501551
},
15511552
{
15521553
Query: "INSERT IGNORE INTO y VALUES (5, NULL)",
15531554
Expected: []sql.Row{
15541555
{types.OkResult{RowsAffected: 1}},
15551556
},
1556-
ExpectedWarning: mysql.ERBadNullError,
1557+
ExpectedWarningsCount: 1,
1558+
ExpectedWarning: mysql.ERBadNullError,
15571559
},
15581560
{
15591561
Query: "INSERT IGNORE INTO y SELECT * FROM y WHERE pk=(SELECT pk+10 FROM y WHERE pk > 1);",
15601562
Expected: []sql.Row{
15611563
{types.OkResult{RowsAffected: 0}},
15621564
},
1563-
ExpectedWarning: mysql.ERSubqueryNo1Row,
1565+
ExpectedWarningsCount: 5,
1566+
ExpectedWarning: mysql.ERSubqueryNo1Row,
15641567
},
15651568
{
15661569
Query: "INSERT IGNORE INTO y SELECT 10, 0 FROM dual WHERE 1=(SELECT 1 FROM dual UNION SELECT 2 FROM dual);",
15671570
Expected: []sql.Row{
15681571
{types.OkResult{RowsAffected: 0}},
15691572
},
1570-
ExpectedWarning: mysql.ERSubqueryNo1Row,
1573+
ExpectedWarningsCount: 1,
1574+
ExpectedWarning: mysql.ERSubqueryNo1Row,
15711575
},
15721576
{
15731577
Query: "INSERT IGNORE INTO y SELECT 11, 0 FROM dual WHERE 1=(SELECT 1 FROM dual UNION SELECT 2 FROM dual) UNION SELECT 12, 0 FROM dual;",
15741578
Expected: []sql.Row{
15751579
{types.OkResult{RowsAffected: 1}},
15761580
},
1577-
ExpectedWarning: mysql.ERSubqueryNo1Row,
1581+
ExpectedWarningsCount: 1,
1582+
ExpectedWarning: mysql.ERSubqueryNo1Row,
15781583
},
15791584
{
15801585
Query: "INSERT IGNORE INTO y SELECT 13, 0 FROM dual UNION SELECT 14, 0 FROM dual WHERE 1=(SELECT 1 FROM dual UNION SELECT 2 FROM dual);",
15811586
Expected: []sql.Row{
15821587
{types.OkResult{RowsAffected: 1}},
15831588
},
1584-
ExpectedWarning: mysql.ERSubqueryNo1Row,
1589+
ExpectedWarningsCount: 1,
1590+
ExpectedWarning: mysql.ERSubqueryNo1Row,
15851591
},
15861592
{
15871593
Query: "INSERT IGNORE INTO y VALUES (3, 8)",
15881594
Expected: []sql.Row{
15891595
{types.OkResult{RowsAffected: 0}},
15901596
},
1591-
ExpectedWarning: mysql.ERDupEntry,
1597+
ExpectedWarningsCount: 1,
1598+
ExpectedWarning: mysql.ERDupEntry,
15921599
},
15931600
},
15941601
},
@@ -2176,7 +2183,8 @@ var InsertScripts = []ScriptTest{
21762183
Expected: []sql.Row{
21772184
{types.OkResult{RowsAffected: 0}},
21782185
},
2179-
ExpectedWarning: mysql.ErNoReferencedRow2,
2186+
ExpectedWarningsCount: 1,
2187+
ExpectedWarning: mysql.ErNoReferencedRow2,
21802188
},
21812189
},
21822190
},
@@ -2622,7 +2630,8 @@ var InsertIgnoreScripts = []ScriptTest{
26222630
Expected: []sql.Row{
26232631
{types.OkResult{RowsAffected: 1}},
26242632
},
2625-
ExpectedWarning: mysql.ERBadNullError,
2633+
ExpectedWarningsCount: 1,
2634+
ExpectedWarning: mysql.ERBadNullError,
26262635
},
26272636
},
26282637
},
@@ -2638,7 +2647,8 @@ var InsertIgnoreScripts = []ScriptTest{
26382647
Expected: []sql.Row{
26392648
{types.OkResult{RowsAffected: 1}},
26402649
},
2641-
ExpectedWarning: mysql.ERTruncatedWrongValueForField,
2650+
ExpectedWarningsCount: 1,
2651+
ExpectedWarning: mysql.ERTruncatedWrongValueForField,
26422652
},
26432653
{
26442654
Query: "SELECT * FROM t1",
@@ -2651,7 +2661,8 @@ var InsertIgnoreScripts = []ScriptTest{
26512661
Expected: []sql.Row{
26522662
{types.OkResult{RowsAffected: 1}},
26532663
},
2654-
ExpectedWarning: mysql.ERUnknownError,
2664+
ExpectedWarningsCount: 1,
2665+
ExpectedWarning: mysql.ERUnknownError,
26552666
},
26562667
{
26572668
Query: "SELECT * FROM t2",
@@ -2675,7 +2686,8 @@ var InsertIgnoreScripts = []ScriptTest{
26752686
Expected: []sql.Row{
26762687
{types.OkResult{RowsAffected: 2}},
26772688
},
2678-
ExpectedWarning: mysql.ERTruncatedWrongValueForField,
2689+
ExpectedWarningsCount: 1,
2690+
ExpectedWarning: mysql.ERTruncatedWrongValueForField,
26792691
},
26802692
{
26812693
Query: "SELECT * FROM t1",
@@ -2688,7 +2700,8 @@ var InsertIgnoreScripts = []ScriptTest{
26882700
Expected: []sql.Row{
26892701
{types.OkResult{RowsAffected: 1}},
26902702
},
2691-
ExpectedWarning: mysql.ERUnknownError,
2703+
ExpectedWarningsCount: 1,
2704+
ExpectedWarning: mysql.ERUnknownError,
26922705
},
26932706
{
26942707
Query: "SELECT * FROM t2",
@@ -2722,7 +2735,8 @@ var InsertIgnoreScripts = []ScriptTest{
27222735
Expected: []sql.Row{
27232736
{types.OkResult{RowsAffected: 3}},
27242737
},
2725-
ExpectedWarning: mysql.ERDupEntry,
2738+
ExpectedWarningsCount: 1,
2739+
ExpectedWarning: mysql.ERDupEntry,
27262740
},
27272741
{
27282742
Query: "SELECT * from one_uniq;",
@@ -2735,7 +2749,8 @@ var InsertIgnoreScripts = []ScriptTest{
27352749
Expected: []sql.Row{
27362750
{types.OkResult{RowsAffected: 8}},
27372751
},
2738-
ExpectedWarning: mysql.ERDupEntry,
2752+
ExpectedWarningsCount: 1,
2753+
ExpectedWarning: mysql.ERDupEntry,
27392754
},
27402755
{
27412756
Query: "SELECT * from two_uniq;",
@@ -2784,7 +2799,8 @@ var IgnoreWithDuplicateUniqueKeyKeylessScripts = []ScriptTest{
27842799
Expected: []sql.Row{
27852800
{types.OkResult{RowsAffected: 3}},
27862801
},
2787-
ExpectedWarning: mysql.ERDupEntry,
2802+
ExpectedWarningsCount: 1,
2803+
ExpectedWarning: mysql.ERDupEntry,
27882804
},
27892805
{
27902806
Query: "SELECT * from one_uniq;",
@@ -2797,7 +2813,8 @@ var IgnoreWithDuplicateUniqueKeyKeylessScripts = []ScriptTest{
27972813
Expected: []sql.Row{
27982814
{types.OkResult{RowsAffected: 8}},
27992815
},
2800-
ExpectedWarning: mysql.ERDupEntry,
2816+
ExpectedWarningsCount: 1,
2817+
ExpectedWarning: mysql.ERDupEntry,
28012818
},
28022819
{
28032820
Query: "SELECT * from two_uniq;",
@@ -2831,9 +2848,10 @@ var IgnoreWithDuplicateUniqueKeyKeylessScripts = []ScriptTest{
28312848
Expected: []sql.Row{{types.NewOkResult(0)}},
28322849
},
28332850
{
2834-
Query: "INSERT IGNORE INTO keyless VALUES (1, 3)",
2835-
Expected: []sql.Row{{types.NewOkResult(0)}},
2836-
ExpectedWarning: mysql.ERDupEntry,
2851+
Query: "INSERT IGNORE INTO keyless VALUES (1, 3)",
2852+
Expected: []sql.Row{{types.NewOkResult(0)}},
2853+
ExpectedWarningsCount: 1,
2854+
ExpectedWarning: mysql.ERDupEntry,
28372855
},
28382856
},
28392857
},
@@ -2857,27 +2875,28 @@ var IgnoreWithDuplicateUniqueKeyKeylessScripts = []ScriptTest{
28572875
ExpectedErr: sql.ErrUniqueKeyViolation,
28582876
},
28592877
{
2860-
Query: "UPDATE IGNORE keyless SET val = 1 where pk = 1",
2861-
Expected: []sql.Row{{newUpdateResult(1, 1)}},
2862-
ExpectedWarning: mysql.ERDupEntry,
2878+
Query: "UPDATE IGNORE keyless SET val = 1 where pk = 1",
2879+
Expected: []sql.Row{{newUpdateResult(1, 1)}},
28632880
},
28642881
{
28652882
Query: "ALTER TABLE keyless ADD CONSTRAINT c UNIQUE(val)",
28662883
Expected: []sql.Row{{types.NewOkResult(0)}},
28672884
},
28682885
{
2869-
Query: "UPDATE IGNORE keyless SET val = 3 where pk = 1",
2870-
Expected: []sql.Row{{newUpdateResult(1, 0)}},
2871-
ExpectedWarning: mysql.ERDupEntry,
2886+
Query: "UPDATE IGNORE keyless SET val = 3 where pk = 1",
2887+
Expected: []sql.Row{{newUpdateResult(1, 0)}},
2888+
ExpectedWarningsCount: 1,
2889+
ExpectedWarning: mysql.ERDupEntry,
28722890
},
28732891
{
28742892
Query: "SELECT * FROM keyless ORDER BY pk",
28752893
Expected: []sql.Row{{1, 1}, {2, 2}, {3, 3}},
28762894
},
28772895
{
2878-
Query: "UPDATE IGNORE keyless SET val = val + 1 ORDER BY pk",
2879-
Expected: []sql.Row{{newUpdateResult(3, 1)}},
2880-
ExpectedWarning: mysql.ERDupEntry,
2896+
Query: "UPDATE IGNORE keyless SET val = val + 1 ORDER BY pk",
2897+
Expected: []sql.Row{{newUpdateResult(3, 1)}},
2898+
ExpectedWarningsCount: 2,
2899+
ExpectedWarning: mysql.ERDupEntry,
28812900
},
28822901
{
28832902
Query: "SELECT * FROM keyless ORDER BY pk",
@@ -2915,7 +2934,8 @@ var InsertBrokenScripts = []ScriptTest{
29152934
Expected: []sql.Row{
29162935
{types.OkResult{RowsAffected: 1}},
29172936
},
2918-
ExpectedWarning: mysql.ERTruncatedWrongValueForField,
2937+
ExpectedWarningsCount: 1,
2938+
ExpectedWarning: mysql.ERTruncatedWrongValueForField,
29192939
},
29202940
},
29212941
},

enginetest/queries/update_queries.go

Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -623,18 +623,20 @@ var UpdateIgnoreScripts = []ScriptTest{
623623
},
624624
Assertions: []ScriptTestAssertion{
625625
{
626-
Query: "UPDATE IGNORE pkTable set pk = pk + 1, val = val + 1",
627-
Expected: []sql.Row{{newUpdateResult(3, 1)}},
628-
ExpectedWarning: mysql.ERDupEntry,
626+
Query: "UPDATE IGNORE pkTable set pk = pk + 1, val = val + 1",
627+
Expected: []sql.Row{{newUpdateResult(3, 1)}},
628+
ExpectedWarningsCount: 2,
629+
ExpectedWarning: mysql.ERDupEntry,
629630
},
630631
{
631632
Query: "SELECT * FROM pkTable order by pk",
632633
Expected: []sql.Row{{1, 1}, {2, 2}, {4, 4}},
633634
},
634635
{
635-
Query: "UPDATE IGNORE idxTable set val = val + 1",
636-
Expected: []sql.Row{{newUpdateResult(3, 1)}},
637-
ExpectedWarning: mysql.ERDupEntry,
636+
Query: "UPDATE IGNORE idxTable set val = val + 1",
637+
Expected: []sql.Row{{newUpdateResult(3, 1)}},
638+
ExpectedWarningsCount: 2,
639+
ExpectedWarning: mysql.ERDupEntry,
638640
},
639641
{
640642
Query: "SELECT * FROM idxTable order by pk",
@@ -649,9 +651,10 @@ var UpdateIgnoreScripts = []ScriptTest{
649651
Expected: []sql.Row{{1, 1}, {2, 3}, {4, 4}},
650652
},
651653
{
652-
Query: "UPDATE IGNORE pkTable SET pk = NULL",
653-
Expected: []sql.Row{{newUpdateResult(3, 3)}},
654-
ExpectedWarning: mysql.ERBadNullError,
654+
Query: "UPDATE IGNORE pkTable SET pk = NULL",
655+
Expected: []sql.Row{{newUpdateResult(3, 3)}},
656+
ExpectedWarningsCount: 3,
657+
ExpectedWarning: mysql.ERBadNullError,
655658
},
656659
{
657660
Query: "SELECT * FROM pkTable order by pk",
@@ -666,9 +669,10 @@ var UpdateIgnoreScripts = []ScriptTest{
666669
Expected: []sql.Row{{0, 0}, {0, 3}, {0, 4}},
667670
},
668671
{
669-
Query: "UPDATE IGNORE idxTable set pk = pk + 1, val = val + 1", // two bad updates
670-
Expected: []sql.Row{{newUpdateResult(3, 1)}},
671-
ExpectedWarning: mysql.ERDupEntry,
672+
Query: "UPDATE IGNORE idxTable set pk = pk + 1, val = val + 1", // two bad updates
673+
Expected: []sql.Row{{newUpdateResult(3, 1)}},
674+
ExpectedWarningsCount: 2,
675+
ExpectedWarning: mysql.ERDupEntry,
672676
},
673677
{
674678
Query: "SELECT * FROM idxTable order by pk",
@@ -684,18 +688,20 @@ var UpdateIgnoreScripts = []ScriptTest{
684688
},
685689
Assertions: []ScriptTestAssertion{
686690
{
687-
Query: "UPDATE IGNORE t1 SET v1 = 'dsddads'",
688-
Expected: []sql.Row{{newUpdateResult(1, 1)}},
689-
ExpectedWarning: mysql.ERTruncatedWrongValueForField,
691+
Query: "UPDATE IGNORE t1 SET v1 = 'dsddads'",
692+
Expected: []sql.Row{{newUpdateResult(1, 1)}},
693+
ExpectedWarningsCount: 1,
694+
ExpectedWarning: mysql.ERTruncatedWrongValueForField,
690695
},
691696
{
692697
Query: "SELECT * FROM t1",
693698
Expected: []sql.Row{{1, 0, 1}},
694699
},
695700
{
696-
Query: "UPDATE IGNORE t1 SET pk = 'dasda', v2 = 'dsddads'",
697-
Expected: []sql.Row{{newUpdateResult(1, 1)}},
698-
ExpectedWarning: mysql.ERTruncatedWrongValueForField,
701+
Query: "UPDATE IGNORE t1 SET pk = 'dasda', v2 = 'dsddads'",
702+
Expected: []sql.Row{{newUpdateResult(1, 1)}},
703+
ExpectedWarningsCount: 2,
704+
ExpectedWarning: mysql.ERTruncatedWrongValueForField,
699705
},
700706
{
701707
Query: "SELECT * FROM t1",
@@ -713,9 +719,10 @@ var UpdateIgnoreScripts = []ScriptTest{
713719
},
714720
Assertions: []ScriptTestAssertion{
715721
{
716-
Query: "UPDATE IGNORE objects SET color = 'orange' where id = 2",
717-
Expected: []sql.Row{{newUpdateResult(1, 0)}},
718-
ExpectedWarning: mysql.ErNoReferencedRow2,
722+
Query: "UPDATE IGNORE objects SET color = 'orange' where id = 2",
723+
Expected: []sql.Row{{newUpdateResult(1, 0)}},
724+
ExpectedWarningsCount: 1,
725+
ExpectedWarning: mysql.ErNoReferencedRow2,
719726
},
720727
{
721728
Query: "SELECT * FROM objects ORDER BY id",
@@ -732,9 +739,10 @@ var UpdateIgnoreScripts = []ScriptTest{
732739
},
733740
Assertions: []ScriptTestAssertion{
734741
{
735-
Query: "UPDATE IGNORE checksTable SET pk = pk + 1 where pk = 4",
736-
Expected: []sql.Row{{newUpdateResult(1, 0)}},
737-
ExpectedWarning: mysql.ERUnknownError,
742+
Query: "UPDATE IGNORE checksTable SET pk = pk + 1 where pk = 4",
743+
Expected: []sql.Row{{newUpdateResult(1, 0)}},
744+
ExpectedWarningsCount: 1,
745+
ExpectedWarning: mysql.ERUnknownError,
738746
},
739747
{
740748
Query: "SELECT * from checksTable ORDER BY pk",

0 commit comments

Comments
 (0)