From afb3f3c72c6cfaca39d4ef45b3ebcf319a2787a7 Mon Sep 17 00:00:00 2001 From: dan Date: Mon, 1 Apr 2019 18:43:09 +0000 Subject: [PATCH] Add a test case to cover a missed VDBE branch generated by window.c. FossilOrigin-Name: b36813d6467c82159bd3bb69d34ac28fc161a13052ca67d7cf9ad75e2aaea9d5 --- manifest | 16 ++++++++-------- manifest.uuid | 2 +- src/test_vdbecov.c | 21 +++++++++++++++++---- test/tester.tcl | 4 ++-- test/window1.test | 13 +++++++++++++ 5 files changed, 41 insertions(+), 15 deletions(-) diff --git a/manifest b/manifest index 52a77e02bf..63995ceed4 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C If\sthe\slibrary\sis\sbuilt\swith\sSQLITE_VDBE_COVERAGE\sdefined,\shave\sthe\sTcl\stests\sgenerate\sa\svdbe\scoverage\sreport\sin\sfile\stestdir/vdbe_coverage.txt. -D 2019-04-01T17:24:20.449 +C Add\sa\stest\scase\sto\scover\sa\smissed\sVDBE\sbranch\sgenerated\sby\swindow.c. +D 2019-04-01T18:43:09.978 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -573,7 +573,7 @@ F src/test_syscall.c 1073306ba2e9bfc886771871a13d3de281ed3939 F src/test_tclsh.c eeafce33ad2136d57e5dec10f1e9a4347447eb72ffd504a1c7b9c6bfe2e71578 F src/test_tclvar.c 33ff42149494a39c5fbb0df3d25d6fafb2f668888e41c0688d07273dcb268dfc F src/test_thread.c 911d15fb14e19c0c542bdc8aabf981c2f10a4858 -F src/test_vdbecov.c acabb99f510041cb4c9428078f5a7113793a53fa48d5fe28a2e7b7047ea6e6a8 +F src/test_vdbecov.c f60c6f135ec42c0de013a1d5136777aa328a776d33277f92abac648930453d43 F src/test_vfs.c c6c6a58f66b26876c7b5769fb323a58b2c7120299b5084e7212c4116f902cbaa F src/test_vfstrace.c bab9594adc976cbe696ff3970728830b4c5ed698 F src/test_windirent.c a895e2c068a06644eef91a7f0a32182445a893b9a0f33d0cdb4283dca2486ac1 @@ -1377,7 +1377,7 @@ F test/temptable.test d2c9b87a54147161bcd1822e30c1d1cd891e5b30 F test/temptable2.test d2940417496e2b9548e01d09990763fbe88c316504033256d51493e1f1a5ce6a F test/temptable3.test d11a0974e52b347e45ee54ef1923c91ed91e4637 F test/temptrigger.test 38f0ca479b1822d3117069e014daabcaacefffcc -F test/tester.tcl 6e7b44695fc072765921ceb8a23bc745eeb86acc3a0e6c3023ab20160af7dab7 +F test/tester.tcl 64ac253a411db1af7649438f674213a45876ca70609570310a8652edf23e5d77 F test/thread001.test b61a29dd87cf669f5f6ac96124a7c97d71b0c80d9012746072055877055cf9ef F test/thread002.test e630504f8a06c00bf8bbe68528774dd96aeb2e58 F test/thread003.test ee4c9efc3b86a6a2767516a37bd64251272560a7 @@ -1679,7 +1679,7 @@ F test/win32heap.test 10fd891266bd00af68671e702317726375e5407561d859be1aa04696f2 F test/win32lock.test fbf107c91d8f5512be5a5b87c4c42ab9fdd54972 F test/win32longpath.test 169c75a3b2e43481f4a62122510210c67b08f26d F test/win32nolock.test ac4f08811a562e45a5755e661f45ca85892bdbbc -F test/window1.test 7484bf9a2ef2d845a50c9aff866efb8cd9d244b5916a9e97fb384e05f33d242b +F test/window1.test 71bb9bfb705edff56ac592c1cf47286096558559b3fba7578e2ee5c8448e2a78 F test/window2.tcl 9bfa842d8a62b0d36dc8c1b5972206393c43847433c6d75940b87fec93ce3143 F test/window2.test 8e6d2a1b9f54dfebee1cde961c8590cd87b4db45c50f44947a211e1b63c2a05e F test/window3.tcl acea6e86a4324a210fd608d06741010ca83ded9fde438341cb978c49928faf03 @@ -1815,7 +1815,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P fa37cf9a6aa3e4325674cb6af68f617d25e349c3f694d0117a19a36fc42daf15 -R 5a984bd4dc22a21ee2cbeb73c0aebdfa +P f0ed714637bf30443d0551d9b6fececa00fc9dfe9669fe720c4598ef71c61e2c +R b75d12f9234f2b1e702210af1ac04c4a U dan -Z c5db50cf41ee79fb991a649e5739587f +Z 54f6e80cb73a18a92422dd48e4043d4f diff --git a/manifest.uuid b/manifest.uuid index d3f387a72c..d5194cfd31 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -f0ed714637bf30443d0551d9b6fececa00fc9dfe9669fe720c4598ef71c61e2c \ No newline at end of file +b36813d6467c82159bd3bb69d34ac28fc161a13052ca67d7cf9ad75e2aaea9d5 \ No newline at end of file diff --git a/src/test_vdbecov.c b/src/test_vdbecov.c index c00458cc36..a001b1df0a 100644 --- a/src/test_vdbecov.c +++ b/src/test_vdbecov.c @@ -36,11 +36,17 @@ static void test_vdbe_branch( } } -static void appendToList(Tcl_Obj *pList, int iLine, int iPath){ +static void appendToList( + Tcl_Obj *pList, + int iLine, + int iPath, + const char *zNever +){ Tcl_Obj *pNew = Tcl_NewObj(); Tcl_IncrRefCount(pNew); Tcl_ListObjAppendElement(0, pNew, Tcl_NewIntObj(iLine)); Tcl_ListObjAppendElement(0, pNew, Tcl_NewIntObj(iPath)); + Tcl_ListObjAppendElement(0, pNew, Tcl_NewStringObj(zNever, -1)); Tcl_ListObjAppendElement(0, pList, pNew); Tcl_DecrRefCount(pNew); } @@ -76,10 +82,17 @@ static int SQLITE_TCLAPI test_vdbe_coverage( Tcl_IncrRefCount(pRes); for(i=0; i> 4)==4); if( b ){ - if( (b & 0x01)==0 ) appendToList(pRes, i, 0); - if( (b & 0x02)==0 ) appendToList(pRes, i, 1); - if( (b & 0x04)==0 ) appendToList(pRes, i, 2); + if( (b & 0x01)==0 ){ + appendToList(pRes, i, 0, bFlag ? "less than" : "falls through"); + } + if( (b & 0x02)==0 ){ + appendToList(pRes, i, 1, bFlag ? "equal" : "taken"); + } + if( (b & 0x04)==0 ){ + appendToList(pRes, i, 2, bFlag ? "greater-than" : "NULL"); + } } } Tcl_SetObjResult(interp, pRes); diff --git a/test/tester.tcl b/test/tester.tcl index 5a829aeba9..6efb59bd6d 100644 --- a/test/tester.tcl +++ b/test/tester.tcl @@ -1330,7 +1330,7 @@ proc vdbe_coverage_report {} { } set fd [open vdbe_coverage.txt w] foreach miss [vdbe_coverage report] { - foreach {line branch} $miss {} + foreach {line branch never} $miss {} set nextfile "" while {[llength $lSrc]>0 && [lindex $lSrc 0 0] < $line} { set nextfile [lindex $lSrc 0 1] @@ -1340,7 +1340,7 @@ proc vdbe_coverage_report {} { puts $fd "" puts $fd "### $nextfile ###" } - puts $fd "Vdbe branch $line: path $branch never taken" + puts $fd "Vdbe branch $line: never $never (path $branch)" } close $fd } diff --git a/test/window1.test b/test/window1.test index 5eea9de8a2..d99aebec0e 100644 --- a/test/window1.test +++ b/test/window1.test @@ -1067,6 +1067,19 @@ do_execsql_test 26.3 { ) FROM t2 } {1 1 2 0 3 1 4 0} +#------------------------------------------------------------------------- +reset_db +do_execsql_test 27.0 { + CREATE TABLE t1(x); + INSERT INTO t1 VALUES(NULL), (1), (2), (3), (4), (5); +} +do_execsql_test 27.1 { + SELECT min(x) FROM t1; +} {1} +do_execsql_test 27.2 { + SELECT min(x) OVER win FROM t1 + WINDOW win AS (ORDER BY rowid ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) +} {1 1 1 2 3 4} finish_test