You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by rh...@apache.org on 2012/05/21 22:06:02 UTC

svn commit: r1341183 - in /subversion/trunk: build/transform_sql.py subversion/tests/libsvn_wc/wc-queries-test.c

Author: rhuijben
Date: Mon May 21 20:06:02 2012
New Revision: 1341183

URL: http://svn.apache.org/viewvc?rev=1341183&view=rev
Log:
Make wc-queries-test failures much easier to diagnose by extending the sqlite
transform script a bit. Store names and some optional value during .sql
parsing and make that information available in the test.

* build/transform_sql.py
  (Processor): Extend regex to capture flags.
  (_sub_statement): Generate extra macro.
  (main): Generate a DECLARE_STATEMENT_INFO macro.

* subversion/tests/libsvn_wc/wc-queries-test.c
  (wc_query_info): New static variable.
  (test_parsable,
   test_query_expectations): Extend error messages with statement name.

Modified:
    subversion/trunk/build/transform_sql.py
    subversion/trunk/subversion/tests/libsvn_wc/wc-queries-test.c

Modified: subversion/trunk/build/transform_sql.py
URL: http://svn.apache.org/viewvc/subversion/trunk/build/transform_sql.py?rev=1341183&r1=1341182&r2=1341183&view=diff
==============================================================================
--- subversion/trunk/build/transform_sql.py (original)
+++ subversion/trunk/build/transform_sql.py Mon May 21 20:06:02 2012
@@ -49,7 +49,7 @@ class Processor(object):
 
   # a few SQL comments that act as directives for this transform system
   re_format = re.compile('-- *format: *([0-9]+)')
-  re_statement = re.compile('-- *STMT_([A-Z_0-9]+)')
+  re_statement = re.compile('-- *STMT_([A-Z_0-9]+)( +\(([^\)]*)\))?')
   re_include = re.compile('-- *include: *([-a-z]+)')
   re_define = re.compile('-- *define: *([A-Z_0-9]+)')
 
@@ -66,6 +66,13 @@ class Processor(object):
     self.close_define()
     self.output.write('#define STMT_%s %d\n' % (match.group(1),
                                                 self.stmt_count))
+
+    if match.group(3) == None:
+      info = 'NULL'
+    else:
+      info = '"' + match.group(3) + '"'
+    self.output.write('#define STMT_%d_INFO {"STMT_%s", %s}\n' %
+                      (self.stmt_count, match.group(1), info))
     self.output.write('#define STMT_%d \\\n' % (self.stmt_count,))
     self.var_printed = True
 
@@ -167,6 +174,13 @@ def main(input_filepath, output):
       + ', \\\n'.join('    STMT_%d' % (i,) for i in range(proc.stmt_count))
       + ', \\\n    NULL \\\n  }\n')
 
+    output.write('\n')
+
+    output.write(
+      '#define %s_DECLARE_STATEMENT_INFO(varname) \\\n' % (var_name,)
+      + '  static const char * const varname[][2] = { \\\n'
+      + ', \\\n'.join('    STMT_%d_INFO' % (i) for i in range(proc.stmt_count))
+      + ', \\\n    {NULL, NULL} \\\n  }\n')
 
 if __name__ == '__main__':
   if len(sys.argv) < 2 or len(sys.argv) > 3:

Modified: subversion/trunk/subversion/tests/libsvn_wc/wc-queries-test.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_wc/wc-queries-test.c?rev=1341183&r1=1341182&r2=1341183&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/libsvn_wc/wc-queries-test.c (original)
+++ subversion/trunk/subversion/tests/libsvn_wc/wc-queries-test.c Mon May 21 20:06:02 2012
@@ -39,6 +39,7 @@
 #include "../../libsvn_wc/wc-queries.h"
 
 WC_QUERIES_SQL_DECLARE_STATEMENTS(wc_queries);
+WC_QUERIES_SQL_DECLARE_STATEMENT_INFO(wc_query_info);
 
 /* The first query after the normal wc queries */
 #define STMT_SCHEMA_FIRST STMT_CREATE_SCHEMA
@@ -215,8 +216,9 @@ test_parsable(apr_pool_t *scratch_pool)
 
           if (r != SQLITE_OK)
             return svn_error_createf(SVN_ERR_SQLITE_ERROR, NULL,
-                                     "Preparing statement %d failed: %s\n%s",
-                                     i, sqlite3_errmsg(sdb),
+                                     "Preparing %s failed: %s\n%s",
+                                     wc_query_info[i][0],
+                                     sqlite3_errmsg(sdb),
                                      text);
 
           SQLITE_ERR(sqlite3_finalize(stmt));
@@ -555,9 +557,9 @@ test_query_expectations(apr_pool_t *scra
           if (item->automatic_index)
             {
               warnings = svn_error_createf(SVN_ERR_TEST_FAILED, warnings,
-                                "WC-Query %d: "
+                                "%s: "
                                 "Creates a temporary index: %s\n",
-                                i, wc_queries[i]);
+                                wc_query_info[i][0], wc_queries[i]);
               break;
             }
 
@@ -567,26 +569,27 @@ test_query_expectations(apr_pool_t *scra
                        || (item->expression_vars < 1)) && !is_slow_statement(i))
             {
               warnings = svn_error_createf(SVN_ERR_TEST_FAILED, warnings,
-                                "WC-Query %d: "
+                                "%s: "
                                 "Uses %s with only %d index component: (%s)\n%s",
-                                i, item->table, item->expression_vars,
-                                item->expressions, wc_queries[i]);
+                                wc_query_info[i][0], item->table,
+                                item->expression_vars, item->expressions,
+                                wc_queries[i]);
               break;
             }
           else if (!item->index && !is_slow_statement(i))
             {
               warnings = svn_error_createf(SVN_ERR_TEST_FAILED, warnings,
-                                "WC-Query %d: "
+                                "%s: "
                                 "Query on %s doesn't use an index:\n%s",
-                                i, item->table, wc_queries[i]);
+                                wc_query_info[i][0], item->table, wc_queries[i]);
               break;
             }
           else if (item->scan && !is_slow_statement(i))
             {
               warnings = svn_error_createf(SVN_ERR_TEST_FAILED, warnings,
-                                "WC-Query %d: "
+                                "Query %s: "
                                 "Performs scan on %s:\n%s",
-                                i, item->table, wc_queries[i]);
+                                wc_query_info[i][0], item->table, wc_queries[i]);
               break;
             }
         }