subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From julianf...@apache.org
Subject svn commit: r1643119 - in /subversion/branches/1.8.x-r1643074: ./ subversion/include/svn_repos.h subversion/libsvn_repos/load-fs-vtable.c subversion/tests/libsvn_repos/repos-test.c subversion/tests/svn_test.h
Date Mon, 15 Dec 2014 17:12:39 GMT
Author: julianfoad
Date: Wed Dec  3 13:47:13 2014
New Revision: 1643119

URL: http://svn.apache.org/r1643119
Log:
On the '1.8.x-r1643074' branch: merge r1643074 from trunk.

Modified:
    subversion/branches/1.8.x-r1643074/   (props changed)
    subversion/branches/1.8.x-r1643074/subversion/include/svn_repos.h
    subversion/branches/1.8.x-r1643074/subversion/libsvn_repos/load-fs-vtable.c
    subversion/branches/1.8.x-r1643074/subversion/tests/libsvn_repos/repos-test.c   (contents, props changed)
    subversion/branches/1.8.x-r1643074/subversion/tests/svn_test.h

Propchange: subversion/branches/1.8.x-r1643074/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Dec  3 13:47:13 2014
@@ -125,4 +125,4 @@
 /subversion/branches/uris-as-urls:1060426-1064427
 /subversion/branches/verify-at-commit:1462039-1462408
 /subversion/branches/wc-collate-path:1407642
-/subversion/trunk:1467440,1467450,1467481,1467587,1467597,1467668,1467675,1467803,1467807,1467951,1468109,1468116,1468151,1468347,1468395,1468439,1468487,1468565-1468566,1468980,1469248,1469363,1469478,1469489,1469512-1469513,1469550,1469556,1469645,1469674,1469833,1469862,1469866,1469871,1469994,1470031,1470037,1470221,1470238,1470246,1470248,1470537,1470650,1470738,1470781,1470898,1470904,1470908,1470913,1470936,1470993-1470994,1471028-1471029,1471107,1471153,1471302,1471443,1471490,1471744,1475704,1475724,1475772,1475963,1476092,1476155,1476181,1476193,1476254,1476359,1476366,1476607,1477294,1477359,1477729-1477730,1477876,1477891,1478001,1478220-1478221,1478465,1478617,1478897,1478951,1478987,1478998,1479320-1479321,1479323,1479326,1479329,1479540,1479563,1479605,1479896,1480054,1480077,1480080,1480082,1480119,1480149,1480344,1480412,1480426,1480442,1480616,1480641-1480642,1480664,1480669,1480681,1480723,1480738,1480765,1481010,1481418,1481594,1481596,1481625,1481627-1481628,148
 1631-1481632,1481772,1481782,1481800,1481813,1481847,1481944,1481981,1482282,1482327,1482338,1482350,1482354,1482436,1482479,1482524,1482528,1482536,1482554,1482558,1482592,1482724,1482759,1482779,1482829,1482969-1482970,1482973,1483015,1483077,1483101,1483116,1483125,1483391,1483397,1483555,1483557,1483575,1483580,1483781,1483927,1483939,1483947,1483964-1483965,1483968,1483972,1483975,1483977,1483984,1484006,1484016-1484017,1484023,1484755,1485018,1485127,1485350,1485413,1485427,1485447,1485449,1485497,1485501,1485650,1486072,1486457,1486572,1486809,1486915,1486931,1487083,1487094,1488183,1488267,1488294,1488425,1488639,1488693,1488878,1489114,1489116-1489117,1489203,1489339,1489935,1490045,1490326,1490679,1490684,1490721,1491432,1491499,1491707,1491739,1491755-1491756,1491762,1491770,1491816,1491868,1492005,1492020,1492145,1492148,1492152,1492164,1492264,1492295,1493102,1493424,1493475,1493703,1493720,1493951,1494089,1494171,1494223,1494287,1494298,1494318,1494342,1494657,1494913,
 1494967,1495063,1495104,1495204,1495209,1495214,1495256,1495329,1495428,1495432,1495446,1495597,1495805,1495850,1495978,1496007,1496110-1496111,1496127,1496132,1496151,1496470,1496938,1496957,1497002,1497318-1497319,1497551,1497614,1497804,1497975,1497980,1498000,1498012,1498136,1498449,1498455-1498456,1498483-1498484,1498486,1498550,1498564,1498851,1498885,1498997,1499034,1499044,1499064,1499095-1499096,1499100,1499403,1499423,1499438,1499447,1499460,1499470,1499483,1499492,1499496,1499498,1499595,1499727,1500074,1500175,1500226,1500680,1500695,1500762,1500799,1500801-1500802,1500904,1500928,1501199,1501207,1501656,1501702,1502097,1502267,1502577,1502777,1502811,1502901,1502909,1502952,1503009-1503010,1503058,1503061,1503211,1503318,1503528,1503884,1504192,1504505,1506040-1506041,1506047,1506058,1506966,1507044,1507382,1507567,1507589,1507889,1507891,1508438,1509186,1509196,1511057,1511272,1511353,1511603,1512067,1512119,1512195,1512300-1512301,1512432,1512471-1512472,1513119,15131
 22,1513156,1513463,1513472,1513874,1513879-1513880,1513943,1514295,1514315,1514318,1514356,1514628,1514763,1514785,1514804,1515119,1515141,1515201,1515225,1515237,1515343,1515366,1515516,1515534,1515721,1515992,1515997,1516023-1516024,1516049,1516051-1516053,1516071,1516271,1516429,1516556,1516565,1516567,1516806,1518184,1518942,1519615,1519617,1519733,1519816,1519823,1519955,1520065,1520529,1520532,1520539,1520745,1522892,1523666,1524869,1525902,1526439,1526655,1527103,1527105,1530763,1530768,1530872,1530922,1530967,1531002,1531004,1531014,1531938,1532023,1532098,1532316,1534102,1534149,1534158,1534713,1534737,1534860,1535115,1535161,1535532,1535610,1535676,1536350,1536383,1536464,1536488,1536537,1536914,1536931,1537018,1537147,1537190,1537193,1537221,1537263,1537360,1537415,1537555,1537700,1538516-1538517,1538519,1538574,1538581,1538812,1538925,1538928,1538939,1540044,1540417,1540752,1541432,1541635,1541638,1541705,1541790,1542042,1542069,1542071,1542119,1542129,1542138,1542146,15
 42151,1542610,1542765,1542767,1542774,1543145,1543187,1543413,1543594,1543961,1544295,1544316,1544597,1544600,1544688,1544690,1544878,1544895,1545111,1545122,1545302,1545835,1545845,1547252,1547454,1547774,1547866,1547873,1548097,1548105,1548170,1548486,1548673,1549858,1549874,1550691,1550772,1550803,1551524,1551579,1552957-1552958,1553101,1553105,1553113,1553376-1553377,1553501,1553556,1554978,1555403,1555499,1557320,1557522,1559009,1559197,1560690,1560701,1561426,1561703,1563110,1564292,1564576,1564966,1564969,1565085,1565531,1566503-1566504,1567064,1567109,1567134,1567204,1567228,1567286,1567392,1567492,1567494,1567740,1567752,1567985,1568070,1568180,1568349,1568361,1568872,1568953,1568955,1569069,1570642,1571214,1571747,1571787,1571795,1572102,1572200,1572340,1573088,1573106,1573209,1574868,1575270,1575284,1575525,1575915,1577151,1577200,1577294,1577739,1577755,1577812-1577813,1578273,1578311,1578326,1578670,1578820,1578853,1578875,1579274,1579429,1579588,1579684,1580626,1580650
 ,1580832,1580867,1580872,1581296,1581305,1581315,1581430,1581810,1583580,1583977,1584342,1584576,1584592,1584745,1585686,1586052,1586255,1586352,1586467,1587511,1587946,1587968,1588772,1588778,1589184,1589188,1589360,1589460,1589486,1590212,1591123,1592014,1592034,1593992,1594156,1594223,1594794,1594814,1594834,1595061,1595431,1596866,1600311,1600315,1600323,1600331,1600348,1600368,1600393,1600563,1600781,1600909,1601851,1606009,1611379,1612225,1612405,1615211,1615219,1615255-1615256,1615260,1615263,1615354,1616131,1617687,1619105,1619118,1619153,1619774,1619802,1620332,1621978,1621981,1625533,1625537,1628431,1628536,1628540,1633126,1636874,1637826,1640730,1641564
+/subversion/trunk:1467440,1467450,1467481,1467587,1467597,1467668,1467675,1467803,1467807,1467951,1468109,1468116,1468151,1468347,1468395,1468439,1468487,1468565-1468566,1468980,1469248,1469363,1469478,1469489,1469512-1469513,1469550,1469556,1469645,1469674,1469833,1469862,1469866,1469871,1469994,1470031,1470037,1470221,1470238,1470246,1470248,1470537,1470650,1470738,1470781,1470898,1470904,1470908,1470913,1470936,1470993-1470994,1471028-1471029,1471107,1471153,1471302,1471443,1471490,1471744,1475704,1475724,1475772,1475963,1476092,1476155,1476181,1476193,1476254,1476359,1476366,1476607,1477294,1477359,1477729-1477730,1477876,1477891,1478001,1478220-1478221,1478465,1478617,1478897,1478951,1478987,1478998,1479320-1479321,1479323,1479326,1479329,1479540,1479563,1479605,1479896,1480054,1480077,1480080,1480082,1480119,1480149,1480344,1480412,1480426,1480442,1480616,1480641-1480642,1480664,1480669,1480681,1480723,1480738,1480765,1481010,1481418,1481594,1481596,1481625,1481627-1481628,148
 1631-1481632,1481772,1481782,1481800,1481813,1481847,1481944,1481981,1482282,1482327,1482338,1482350,1482354,1482436,1482479,1482524,1482528,1482536,1482554,1482558,1482592,1482724,1482759,1482779,1482829,1482969-1482970,1482973,1483015,1483077,1483101,1483116,1483125,1483391,1483397,1483555,1483557,1483575,1483580,1483781,1483927,1483939,1483947,1483964-1483965,1483968,1483972,1483975,1483977,1483984,1484006,1484016-1484017,1484023,1484755,1485018,1485127,1485350,1485413,1485427,1485447,1485449,1485497,1485501,1485650,1486072,1486457,1486572,1486809,1486915,1486931,1487083,1487094,1488183,1488267,1488294,1488425,1488639,1488693,1488878,1489114,1489116-1489117,1489203,1489339,1489935,1490045,1490326,1490679,1490684,1490721,1491432,1491499,1491707,1491739,1491755-1491756,1491762,1491770,1491816,1491868,1492005,1492020,1492145,1492148,1492152,1492164,1492264,1492295,1493102,1493424,1493475,1493703,1493720,1493951,1494089,1494171,1494223,1494287,1494298,1494318,1494342,1494657,1494913,
 1494967,1495063,1495104,1495204,1495209,1495214,1495256,1495329,1495428,1495432,1495446,1495597,1495805,1495850,1495978,1496007,1496110-1496111,1496127,1496132,1496151,1496470,1496938,1496957,1497002,1497318-1497319,1497551,1497614,1497804,1497975,1497980,1498000,1498012,1498136,1498449,1498455-1498456,1498483-1498484,1498486,1498550,1498564,1498851,1498885,1498997,1499034,1499044,1499064,1499095-1499096,1499100,1499403,1499423,1499438,1499447,1499460,1499470,1499483,1499492,1499496,1499498,1499595,1499727,1500074,1500175,1500226,1500680,1500695,1500762,1500799,1500801-1500802,1500904,1500928,1501199,1501207,1501656,1501702,1502097,1502267,1502577,1502777,1502811,1502901,1502909,1502952,1503009-1503010,1503058,1503061,1503211,1503318,1503528,1503884,1504192,1504505,1506040-1506041,1506047,1506058,1506966,1507044,1507382,1507567,1507589,1507889,1507891,1508438,1509186,1509196,1511057,1511272,1511353,1511603,1512067,1512119,1512195,1512300-1512301,1512432,1512471-1512472,1513119,15131
 22,1513156,1513463,1513472,1513874,1513879-1513880,1513943,1514295,1514315,1514318,1514356,1514628,1514763,1514785,1514804,1515119,1515141,1515201,1515225,1515237,1515343,1515366,1515516,1515534,1515721,1515992,1515997,1516023-1516024,1516049,1516051-1516053,1516071,1516271,1516429,1516556,1516565,1516567,1516806,1518184,1518942,1519615,1519617,1519733,1519816,1519823,1519955,1520065,1520529,1520532,1520539,1520745,1522892,1523666,1524869,1525902,1526439,1526655,1527103,1527105,1530763,1530768,1530872,1530922,1530967,1531002,1531004,1531014,1531938,1532023,1532098,1532316,1534102,1534149,1534158,1534713,1534737,1534860,1535115,1535161,1535532,1535610,1535676,1536350,1536383,1536464,1536488,1536537,1536914,1536931,1537018,1537147,1537190,1537193,1537221,1537263,1537360,1537415,1537555,1537700,1538516-1538517,1538519,1538574,1538581,1538812,1538925,1538928,1538939,1540044,1540417,1540752,1541432,1541635,1541638,1541705,1541790,1542042,1542069,1542071,1542119,1542129,1542138,1542146,15
 42151,1542610,1542765,1542767,1542774,1543145,1543187,1543413,1543594,1543961,1544295,1544316,1544597,1544600,1544688,1544690,1544878,1544895,1545111,1545122,1545302,1545835,1545845,1547252,1547454,1547774,1547866,1547873,1548097,1548105,1548170,1548486,1548673,1549858,1549874,1550691,1550772,1550803,1551524,1551579,1552957-1552958,1553101,1553105,1553113,1553376-1553377,1553501,1553556,1554978,1555403,1555499,1557320,1557522,1559009,1559197,1560690,1560701,1561426,1561703,1563110,1564292,1564576,1564966,1564969,1565085,1565531,1566503-1566504,1567064,1567109,1567134,1567204,1567228,1567286,1567392,1567492,1567494,1567740,1567752,1567985,1568070,1568180,1568349,1568361,1568872,1568953,1568955,1569069,1570642,1571214,1571747,1571787,1571795,1572102,1572200,1572340,1573088,1573106,1573209,1574868,1575270,1575284,1575525,1575915,1577151,1577200,1577294,1577739,1577755,1577812-1577813,1578273,1578311,1578326,1578670,1578820,1578853,1578875,1579274,1579429,1579588,1579684,1580626,1580650
 ,1580832,1580867,1580872,1581296,1581305,1581315,1581430,1581810,1583580,1583977,1584342,1584576,1584592,1584745,1585686,1586052,1586255,1586352,1586467,1587511,1587946,1587968,1588772,1588778,1589184,1589188,1589360,1589460,1589486,1590212,1591123,1592014,1592034,1593992,1594156,1594223,1594794,1594814,1594834,1595061,1595431,1596866,1600311,1600315,1600323,1600331,1600348,1600368,1600393,1600563,1600781,1600909,1601851,1606009,1611379,1612225,1612405,1615211,1615219,1615255-1615256,1615260,1615263,1615354,1616131,1617687,1619105,1619118,1619153,1619774,1619802,1620332,1621978,1621981,1625533,1625537,1628431,1628536,1628540,1633126,1636874,1637826,1640730,1641564,1643074

Modified: subversion/branches/1.8.x-r1643074/subversion/include/svn_repos.h
URL: http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1643074/subversion/include/svn_repos.h?rev=1643119&r1=1643118&r2=1643119&view=diff
==============================================================================
--- subversion/branches/1.8.x-r1643074/subversion/include/svn_repos.h (original)
+++ subversion/branches/1.8.x-r1643074/subversion/include/svn_repos.h Wed Dec  3 13:47:13 2014
@@ -273,7 +273,10 @@ typedef enum svn_repos_notify_warning_t
    * @see svn_fs.h:"Directory entry names and directory paths" */
   /* ### TODO(doxygen): make that a proper doxygen link */
   /* See svn_fs__path_valid(). */
-  svn_repos_notify_warning_invalid_fspath
+  svn_repos_notify_warning_invalid_fspath,
+
+  /* Found invalid mergeinfo */
+  svn_repos__notify_warning_invalid_mergeinfo
 
 } svn_repos_notify_warning_t;
 

Modified: subversion/branches/1.8.x-r1643074/subversion/libsvn_repos/load-fs-vtable.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1643074/subversion/libsvn_repos/load-fs-vtable.c?rev=1643119&r1=1643118&r2=1643119&view=diff
==============================================================================
--- subversion/branches/1.8.x-r1643074/subversion/libsvn_repos/load-fs-vtable.c (original)
+++ subversion/branches/1.8.x-r1643074/subversion/libsvn_repos/load-fs-vtable.c Wed Dec  3 13:47:13 2014
@@ -745,6 +745,67 @@ set_revision_property(void *baton,
 }
 
 
+/* Adjust mergeinfo:
+ *   - normalize line endings (if all CRLF, change to LF; but error if mixed);
+ *   - adjust revision numbers (see renumber_mergeinfo_revs());
+ *   - adjust paths (see prefix_mergeinfo_paths()).
+ */
+static svn_error_t *
+adjust_mergeinfo_property(struct revision_baton *rb,
+                          svn_string_t **new_value_p,
+                          const svn_string_t *old_value,
+                          apr_pool_t *result_pool)
+{
+  struct parse_baton *pb = rb->pb;
+  svn_string_t prop_val = *old_value;
+
+  /* Tolerate mergeinfo with "\r\n" line endings because some
+     dumpstream sources might contain as much.  If so normalize
+     the line endings to '\n' and make a notification to
+     PARSE_BATON->FEEDBACK_STREAM that we have made this
+     correction. */
+  if (strstr(prop_val.data, "\r"))
+    {
+      const char *prop_eol_normalized;
+
+      SVN_ERR(svn_subst_translate_cstring2(prop_val.data,
+                                           &prop_eol_normalized,
+                                           "\n",  /* translate to LF */
+                                           FALSE, /* no repair */
+                                           NULL,  /* no keywords */
+                                           FALSE, /* no expansion */
+                                           result_pool));
+      prop_val.data = prop_eol_normalized;
+      prop_val.len = strlen(prop_eol_normalized);
+
+      if (pb->notify_func)
+        {
+          /* ### TODO: Use proper scratch pool instead of pb->notify_pool */
+          svn_repos_notify_t *notify
+                  = svn_repos_notify_create(
+                                svn_repos_notify_load_normalized_mergeinfo,
+                                pb->notify_pool);
+
+          pb->notify_func(pb->notify_baton, notify, pb->notify_pool);
+          svn_pool_clear(pb->notify_pool);
+        }
+    }
+
+  /* Renumber mergeinfo as appropriate. */
+  SVN_ERR(renumber_mergeinfo_revs(new_value_p, &prop_val, rb,
+                                  result_pool));
+  if (pb->parent_dir)
+    {
+      /* Prefix the merge source paths with PB->parent_dir. */
+      /* ASSUMPTION: All source paths are included in the dump stream. */
+      SVN_ERR(prefix_mergeinfo_paths(new_value_p, *new_value_p,
+                                     pb->parent_dir, result_pool));
+    }
+
+  return SVN_NO_ERROR;
+}
+
+
 static svn_error_t *
 set_node_property(void *baton,
                   const char *name,
@@ -758,57 +819,42 @@ set_node_property(void *baton,
   if (rb->skipped)
     return SVN_NO_ERROR;
 
+  /* Adjust mergeinfo. If this fails, presumably because the mergeinfo
+     property has an ill-formed value, then we must not fail to load
+     the repository (at least if it's a simple load with no revision
+     offset adjustments, path changes, etc.) so just warn and leave it
+     as it is. */
   if (strcmp(name, SVN_PROP_MERGEINFO) == 0)
     {
-      svn_string_t *renumbered_mergeinfo;
-      /* ### Need to cast away const. We cannot change the declaration of
-       * ### this function since it is part of svn_repos_parse_fns2_t. */
-      svn_string_t *prop_val = (svn_string_t *)value;
-
-      /* Tolerate mergeinfo with "\r\n" line endings because some
-         dumpstream sources might contain as much.  If so normalize
-         the line endings to '\n' and make a notification to
-         PARSE_BATON->FEEDBACK_STREAM that we have made this
-         correction. */
-      if (strstr(prop_val->data, "\r"))
-        {
-          const char *prop_eol_normalized;
-
-          SVN_ERR(svn_subst_translate_cstring2(prop_val->data,
-                                               &prop_eol_normalized,
-                                               "\n",  /* translate to LF */
-                                               FALSE, /* no repair */
-                                               NULL,  /* no keywords */
-                                               FALSE, /* no expansion */
-                                               nb->pool));
-          prop_val->data = prop_eol_normalized;
-          prop_val->len = strlen(prop_eol_normalized);
+      svn_string_t *new_value;
+      svn_error_t *err;
 
+      err = adjust_mergeinfo_property(rb, &new_value, value, nb->pool);
+      if (err)
+        {
+          if (pb->validate_props)
+            {
+              return svn_error_quick_wrap(
+                       err,
+                       _("Invalid svn:mergeinfo value"));
+            }
           if (pb->notify_func)
             {
-              /* ### TODO: Use proper scratch pool instead of pb->notify_pool */
               svn_repos_notify_t *notify
-                      = svn_repos_notify_create(
-                                    svn_repos_notify_load_normalized_mergeinfo,
-                                    pb->notify_pool);
+                = svn_repos_notify_create(svn_repos_notify_warning,
+                                          pb->notify_pool);
 
+              notify->warning = svn_repos__notify_warning_invalid_mergeinfo;
+              notify->warning_str = _("Invalid svn:mergeinfo value; "
+                                      "leaving unchanged");
               pb->notify_func(pb->notify_baton, notify, pb->notify_pool);
               svn_pool_clear(pb->notify_pool);
             }
+          svn_error_clear(err);
         }
-
-      /* Renumber mergeinfo as appropriate. */
-      SVN_ERR(renumber_mergeinfo_revs(&renumbered_mergeinfo, prop_val, rb,
-                                      nb->pool));
-      value = renumbered_mergeinfo;
-      if (pb->parent_dir)
+      else
         {
-          /* Prefix the merge source paths with PB->parent_dir. */
-          /* ASSUMPTION: All source paths are included in the dump stream. */
-          svn_string_t *mergeinfo_val;
-          SVN_ERR(prefix_mergeinfo_paths(&mergeinfo_val, value,
-                                         pb->parent_dir, nb->pool));
-          value = mergeinfo_val;
+          value = new_value;
         }
     }
 

Modified: subversion/branches/1.8.x-r1643074/subversion/tests/libsvn_repos/repos-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1643074/subversion/tests/libsvn_repos/repos-test.c?rev=1643119&r1=1643118&r2=1643119&view=diff
==============================================================================
--- subversion/branches/1.8.x-r1643074/subversion/tests/libsvn_repos/repos-test.c (original)
+++ subversion/branches/1.8.x-r1643074/subversion/tests/libsvn_repos/repos-test.c Wed Dec  3 13:47:13 2014
@@ -3320,6 +3320,208 @@ test_dump_r0_mergeinfo(const svn_test_op
   return SVN_NO_ERROR;
 }
 
+
+/* Test dumping in the presence of the property PROP_NAME:PROP_VAL.
+ * Return the dumped data in *DUMP_DATA_P (if DUMP_DATA_P is not null).
+ * REPOS is an empty repository.
+ * See svn_repos_dump_fs3() for START_REV, END_REV, NOTIFY_FUNC, NOTIFY_BATON.
+ */
+static svn_error_t *
+test_dump_bad_props(svn_stringbuf_t **dump_data_p,
+                    svn_repos_t *repos,
+                    const char *prop_name,
+                    const svn_string_t *prop_val,
+                    svn_revnum_t start_rev,
+                    svn_revnum_t end_rev,
+                    svn_repos_notify_func_t notify_func,
+                    void *notify_baton,
+                    apr_pool_t *pool)
+{
+  const char *test_path = "/bar";
+  svn_fs_t *fs = svn_repos_fs(repos);
+  svn_fs_txn_t *txn;
+  svn_fs_root_t *txn_root;
+  svn_revnum_t youngest_rev = 0;
+  svn_stringbuf_t *dump_data = svn_stringbuf_create_empty(pool);
+  svn_stream_t *stream = svn_stream_from_stringbuf(dump_data, pool);
+  const char *expected_str;
+
+  /* Revision 1:  Any commit will do, here  */
+  SVN_ERR(svn_fs_begin_txn2(&txn, fs, youngest_rev, 0, pool));
+  SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool));
+  SVN_ERR(svn_fs_make_dir(txn_root, test_path , pool));
+  SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, pool));
+  SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
+
+  /* Revision 2:  Add the bad property */
+  SVN_ERR(svn_fs_begin_txn2(&txn, fs, youngest_rev, 0, pool));
+  SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool));
+  SVN_ERR(svn_fs_change_node_prop(txn_root, test_path , prop_name, prop_val,
+                                  pool));
+  SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, pool));
+  SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
+
+  /* Test that a dump completes without error. */
+  SVN_ERR(svn_repos_dump_fs3(repos, stream, start_rev, end_rev,
+                             FALSE, FALSE,
+                             notify_func, notify_baton,
+                             NULL, NULL,
+                             pool));
+  svn_stream_close(stream);
+
+  /* Check that the property appears in the dump data */
+  expected_str = apr_psprintf(pool, "K %d\n%s\n"
+                                    "V %d\n%s\n"
+                                    "PROPS-END\n",
+                              (int)strlen(prop_name), prop_name,
+                              (int)prop_val->len, prop_val->data);
+  SVN_TEST_ASSERT(strstr(dump_data->data, expected_str));
+
+  if (dump_data_p)
+    *dump_data_p = dump_data;
+  return SVN_NO_ERROR;
+}
+
+/* Test loading in the presence of the property PROP_NAME:PROP_VAL.
+ * Load data from DUMP_DATA.
+ * REPOS is an empty repository.
+ */
+static svn_error_t *
+test_load_bad_props(svn_stringbuf_t *dump_data,
+                    svn_repos_t *repos,
+                    const char *prop_name,
+                    const svn_string_t *prop_val,
+                    const char *parent_fspath,
+                    svn_boolean_t validate_props,
+                    svn_repos_notify_func_t notify_func,
+                    void *notify_baton,
+                    apr_pool_t *pool)
+{
+  const char *test_path = apr_psprintf(pool, "%s%s",
+                                       parent_fspath ? parent_fspath : "",
+                                       "/bar");
+  svn_stream_t *stream = svn_stream_from_stringbuf(dump_data, pool);
+  svn_fs_t *fs;
+  svn_fs_root_t *rev_root;
+  svn_revnum_t youngest_rev;
+  svn_string_t *loaded_prop_val;
+
+  SVN_ERR(svn_repos_load_fs4(repos, stream,
+                             SVN_INVALID_REVNUM, SVN_INVALID_REVNUM,
+                             svn_repos_load_uuid_default,
+                             parent_fspath,
+                             FALSE, FALSE, /*use_*_commit_hook*/
+                             validate_props,
+                             notify_func, notify_baton,
+                             NULL, NULL, /*cancellation*/
+                             pool));
+  svn_stream_close(stream);
+
+  /* Check the loaded property */
+  fs = svn_repos_fs(repos);
+  SVN_ERR(svn_fs_youngest_rev(&youngest_rev, fs, pool));
+  SVN_ERR(svn_fs_revision_root(&rev_root, fs, youngest_rev, pool));
+  SVN_ERR(svn_fs_node_prop(&loaded_prop_val,
+                           rev_root, test_path, prop_name, pool));
+  SVN_TEST_ASSERT(svn_string_compare(loaded_prop_val, prop_val));
+  return SVN_NO_ERROR;
+}
+
+static void
+load_r0_mergeinfo_notifier(void *baton,
+                           const svn_repos_notify_t *notify,
+                           apr_pool_t *scratch_pool)
+{
+  svn_boolean_t *had_mergeinfo_warning = baton;
+
+  if (notify->action == svn_repos_notify_warning)
+    {
+      if (notify->warning == svn_repos__notify_warning_invalid_mergeinfo)
+        {
+          *had_mergeinfo_warning = TRUE;
+        }
+    }
+}
+
+/* Regression test for the 'load' part of issue #4476 "Mergeinfo
+ * containing r0 makes svnsync and svnadmin dump fail".
+ *
+ * Bad mergeinfo should not prevent loading a backup, at least when we do not
+ * require mergeinfo revision numbers or paths to be adjusted during loading.
+ */
+static svn_error_t *
+test_load_r0_mergeinfo(const svn_test_opts_t *opts,
+                       apr_pool_t *pool)
+{
+  const char *prop_name = "svn:mergeinfo";
+  const svn_string_t *prop_val = svn_string_create("/foo:0", pool);
+  svn_stringbuf_t *dump_data = svn_stringbuf_create_empty(pool);
+
+  /* Produce a dump file containing bad mergeinfo */
+  {
+    svn_repos_t *repos;
+
+    SVN_ERR(svn_test__create_repos(&repos, "test-repo-load-r0-mi-1",
+                                   opts, pool));
+    SVN_ERR(test_dump_bad_props(&dump_data, repos,
+                                prop_name, prop_val,
+                                SVN_INVALID_REVNUM, SVN_INVALID_REVNUM,
+                                NULL, NULL, pool));
+  }
+
+  /* Test loading without validating properties: should warn and succeed */
+  {
+    svn_repos_t *repos;
+    svn_boolean_t had_mergeinfo_warning = FALSE;
+
+    SVN_ERR(svn_test__create_repos(&repos, "test-repo-load-r0-mi-2",
+                                   opts, pool));
+
+    /* Without changing revision numbers or paths */
+    SVN_ERR(test_load_bad_props(dump_data, repos,
+                                prop_name, prop_val,
+                                NULL /*parent_dir*/, FALSE /*validate_props*/,
+                                load_r0_mergeinfo_notifier, &had_mergeinfo_warning,
+                                pool));
+    SVN_TEST_ASSERT(had_mergeinfo_warning);
+
+    /* With changing revision numbers and/or paths (by loading the same data
+       again, on top of existing revisions, into subdirectory 'bar') */
+    had_mergeinfo_warning = FALSE;
+    SVN_ERR(test_load_bad_props(dump_data, repos,
+                                prop_name, prop_val,
+                                "/bar", FALSE /*validate_props*/,
+                                load_r0_mergeinfo_notifier, &had_mergeinfo_warning,
+                                pool));
+    SVN_TEST_ASSERT(had_mergeinfo_warning);
+  }
+
+  /* Test loading with validating properties: should return an error */
+  {
+    svn_repos_t *repos;
+
+    SVN_ERR(svn_test__create_repos(&repos, "test-repo-load-r0-mi-3",
+                                   opts, pool));
+
+    /* Without changing revision numbers or paths */
+    SVN_TEST__ASSERT_ANY_ERROR(test_load_bad_props(dump_data, repos,
+                                prop_name, prop_val,
+                                NULL /*parent_dir*/, TRUE /*validate_props*/,
+                                NULL, NULL,
+                                pool));
+
+    /* With changing revision numbers and/or paths (by loading the same data
+       again, on top of existing revisions, into subdirectory 'bar') */
+    SVN_TEST__ASSERT_ANY_ERROR(test_load_bad_props(dump_data, repos,
+                                prop_name, prop_val,
+                                "/bar", TRUE /*validate_props*/,
+                                NULL, NULL,
+                                pool));
+  }
+
+  return SVN_NO_ERROR;
+}
+
 /* The test table.  */
 
 struct svn_test_descriptor_t test_funcs[] =
@@ -3367,5 +3569,7 @@ struct svn_test_descriptor_t test_funcs[
                        "test filenames with control characters"),
     SVN_TEST_OPTS_PASS(test_dump_r0_mergeinfo,
                        "test dumping with r0 mergeinfo"),
+    SVN_TEST_OPTS_PASS(test_load_r0_mergeinfo,
+                       "test loading with r0 mergeinfo"),
     SVN_TEST_NULL
   };

Propchange: subversion/branches/1.8.x-r1643074/subversion/tests/libsvn_repos/repos-test.c
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Wed Dec  3 13:47:13 2014
@@ -0,0 +1,129 @@
+/subversion/branches/1.5.x-r30215/subversion/tests/libsvn_repos/repos-test.c:870312
+/subversion/branches/1.7.x-fs-verify/subversion/tests/libsvn_repos/repos-test.c:1146708,1161180
+/subversion/branches/1.8.x-VS2013-14/subversion/tests/libsvn_repos/repos-test.c:1603404-1615199
+/subversion/branches/1.8.x-apr-0.9/subversion/tests/libsvn_repos/repos-test.c:1585493-1589570
+/subversion/branches/1.8.x-busted-proxy/subversion/tests/libsvn_repos/repos-test.c:1499222-1502434
+/subversion/branches/1.8.x-gpg-agent/subversion/tests/libsvn_repos/repos-test.c:1600789-1640662
+/subversion/branches/1.8.x-issue4400/subversion/tests/libsvn_repos/repos-test.c:1507591-1512557
+/subversion/branches/1.8.x-issue4437/subversion/tests/libsvn_repos/repos-test.c:1567249-1591140
+/subversion/branches/1.8.x-issue4448/subversion/tests/libsvn_repos/repos-test.c:1540420-1541802
+/subversion/branches/1.8.x-issue4480/subversion/tests/libsvn_repos/repos-test.c:1588773-1591136
+/subversion/branches/1.8.x-javahl-exception-crash/subversion/tests/libsvn_repos/repos-test.c:1586424-1588151
+/subversion/branches/1.8.x-libsvnjavahl-version/subversion/tests/libsvn_repos/repos-test.c:1483910-1485054
+/subversion/branches/1.8.x-openssl-dirs/subversion/tests/libsvn_repos/repos-test.c:1535137-1540436
+/subversion/branches/1.8.x-r1477876/subversion/tests/libsvn_repos/repos-test.c:1477981-1487716
+/subversion/branches/1.8.x-r1481625/subversion/tests/libsvn_repos/repos-test.c:1481637-1482135
+/subversion/branches/1.8.x-r1495063/subversion/tests/libsvn_repos/repos-test.c:1495804-1501074
+/subversion/branches/1.8.x-r1497310-partial/subversion/tests/libsvn_repos/repos-test.c:1497500-1501063
+/subversion/branches/1.8.x-r1502267/subversion/tests/libsvn_repos/repos-test.c:1502268-1515998
+/subversion/branches/1.8.x-r1507044/subversion/tests/libsvn_repos/repos-test.c:1507282-1511571
+/subversion/branches/1.8.x-r1513879/subversion/tests/libsvn_repos/repos-test.c:1514699-1516021
+/subversion/branches/1.8.x-r1536931/subversion/tests/libsvn_repos/repos-test.c:1536934-1591145
+/subversion/branches/1.8.x-r1537147/subversion/tests/libsvn_repos/repos-test.c:1537201-1537216
+/subversion/branches/1.8.x-r1537193/subversion/tests/libsvn_repos/repos-test.c:1537217-1541815
+/subversion/branches/1.8.x-r1541790/subversion/tests/libsvn_repos/repos-test.c:1541791-1542075
+/subversion/branches/1.8.x-r1544597/subversion/tests/libsvn_repos/repos-test.c:1564547-1591149
+/subversion/branches/1.8.x-r1554978/subversion/tests/libsvn_repos/repos-test.c:1555500-1565076
+/subversion/branches/1.8.x-r1561426/subversion/tests/libsvn_repos/repos-test.c:1561547-1640480
+/subversion/branches/1.8.x-r1564215/subversion/tests/libsvn_repos/repos-test.c:1564281-1564620
+/subversion/branches/1.8.x-r1567286/subversion/tests/libsvn_repos/repos-test.c:1567364-1567731
+/subversion/branches/1.8.x-r1567985/subversion/tests/libsvn_repos/repos-test.c:1568016-1568055
+/subversion/branches/1.8.x-r1574868/subversion/tests/libsvn_repos/repos-test.c:1575329-1579873
+/subversion/branches/1.8.x-r1577151/subversion/tests/libsvn_repos/repos-test.c:1589064-1589574
+/subversion/branches/1.8.x-r1577812/subversion/tests/libsvn_repos/repos-test.c:1577814-1588145
+/subversion/branches/1.8.x-r1578311/subversion/tests/libsvn_repos/repos-test.c:1578312-1589576
+/subversion/branches/1.8.x-r1578853/subversion/tests/libsvn_repos/repos-test.c:1578879-1581682
+/subversion/branches/1.8.x-r1579588/subversion/tests/libsvn_repos/repos-test.c:1579589-1591112
+/subversion/branches/1.8.x-r1580626/subversion/tests/libsvn_repos/repos-test.c:1580631,1580652,1580661,1581435,1588382-1591134
+/subversion/branches/1.8.x-r1581305/subversion/tests/libsvn_repos/repos-test.c:1581320-1582587
+/subversion/branches/1.8.x-r1584342/subversion/tests/libsvn_repos/repos-test.c:1584350-1589572
+/subversion/branches/1.8.x-r1589360/subversion/tests/libsvn_repos/repos-test.c:1604732-1640658
+/subversion/branches/1.8.x-r1594223/subversion/tests/libsvn_repos/repos-test.c:1594224-1606975
+/subversion/branches/1.8.x-r1611379/subversion/tests/libsvn_repos/repos-test.c:1612525-1640664
+/subversion/branches/1.8.x-r1619774/subversion/tests/libsvn_repos/repos-test.c:1626728-1640478
+/subversion/branches/1.8.x-r1621978/subversion/tests/libsvn_repos/repos-test.c:1622021-1640850
+/subversion/branches/1.8.x-r1625533/subversion/tests/libsvn_repos/repos-test.c:1640743-1642632
+/subversion/branches/1.8.x-r1633126/subversion/tests/libsvn_repos/repos-test.c:1633130-1642634
+/subversion/branches/1.8.x-r1641564/subversion/tests/libsvn_repos/repos-test.c:1641570-1642636
+/subversion/branches/1.8.x-r175-daemonize/subversion/tests/libsvn_repos/repos-test.c:1515866-1516020
+/subversion/branches/1.8.x-rm-external-dir/subversion/tests/libsvn_repos/repos-test.c:1600632-1615197
+/subversion/branches/1.8.x-serf-1.3+-windows/subversion/tests/libsvn_repos/repos-test.c:1517122-1533873
+/subversion/branches/1.8.x-serf-no-lock-support/subversion/tests/libsvn_repos/repos-test.c:1584583-1591109
+/subversion/branches/1.8.x-svn_fs_info-removal/subversion/tests/libsvn_repos/repos-test.c:1467420-1468159
+/subversion/branches/1.8.x-svnsync-serf-memory/subversion/tests/libsvn_repos/repos-test.c:1515248-1515701
+/subversion/branches/1.8.x-synvsync-serf-memory/subversion/tests/libsvn_repos/repos-test.c:1515247
+/subversion/branches/1.8.x-tristate-chunked-request/subversion/tests/libsvn_repos/repos-test.c:1502435-1503894
+/subversion/branches/10Gb/subversion/tests/libsvn_repos/repos-test.c:1388102,1388163-1388190,1388195,1388202,1388205,1388211,1388276,1388362,1388375,1388394,1388636,1388639-1388640,1388643-1388644,1388654,1388720,1388789,1388795,1388801,1388805,1388807,1388810,1388816,1389044,1389276,1389289,1389662,1389867,1390017,1390209,1390216,1390407,1390409,1390414,1390419,1390955
+/subversion/branches/atomic-revprop/subversion/tests/libsvn_repos/repos-test.c:965046-1000689
+/subversion/branches/auto-props-sdc/subversion/tests/libsvn_repos/repos-test.c:1384106-1401643
+/subversion/branches/bdb-reverse-deltas/subversion/tests/libsvn_repos/repos-test.c:872050-872529
+/subversion/branches/diff-callbacks3/subversion/tests/libsvn_repos/repos-test.c:870059-870761
+/subversion/branches/diff-optimizations/subversion/tests/libsvn_repos/repos-test.c:1031270-1037352
+/subversion/branches/diff-optimizations-bytes/subversion/tests/libsvn_repos/repos-test.c:1037353-1067789
+/subversion/branches/dont-save-plaintext-passwords-by-default/subversion/tests/libsvn_repos/repos-test.c:870728-871118
+/subversion/branches/double-delete/subversion/tests/libsvn_repos/repos-test.c:870511-872970
+/subversion/branches/ev2-export/subversion/tests/libsvn_repos/repos-test.c:1325914,1332738,1413107
+/subversion/branches/explore-wc/subversion/tests/libsvn_repos/repos-test.c:875486,875493,875497,875507,875511,875514,875559,875580-875581,875584,875587,875611,875627,875647,875667-875668,875711-875712,875733-875734,875736,875744-875748,875751,875758,875782,875795-875796,875830,875836,875838,875842,875852,875855,875864,875870,875873,875880,875885-875888,875890,875897-875898,875905,875907-875909,875935,875943-875944,875946,875979,875982-875983,875985-875986,875990,875997
+/subversion/branches/file-externals/subversion/tests/libsvn_repos/repos-test.c:871779-873302
+/subversion/branches/fs-rep-sharing/subversion/tests/libsvn_repos/repos-test.c:869036-873803
+/subversion/branches/fsfs-pack/subversion/tests/libsvn_repos/repos-test.c:873717-874575
+/subversion/branches/gnome-keyring/subversion/tests/libsvn_repos/repos-test.c:870558-871410
+/subversion/branches/gpg-agent-password-store/subversion/tests/libsvn_repos/repos-test.c:1005036-1150766
+/subversion/branches/http-protocol-v2/subversion/tests/libsvn_repos/repos-test.c:874395-876041
+/subversion/branches/in-memory-cache/subversion/tests/libsvn_repos/repos-test.c:869829-871452
+/subversion/branches/in-repo-authz/subversion/tests/libsvn_repos/repos-test.c:1414342-1424779
+/subversion/branches/inheritable-props/subversion/tests/libsvn_repos/repos-test.c:1297080-1395089
+/subversion/branches/integrate-cache-item-serialization/subversion/tests/libsvn_repos/repos-test.c:1068724-1068739
+/subversion/branches/integrate-cache-membuffer/subversion/tests/libsvn_repos/repos-test.c:998649-998852
+/subversion/branches/integrate-compression-level/subversion/tests/libsvn_repos/repos-test.c:1068651-1072287
+/subversion/branches/integrate-io-improvements/subversion/tests/libsvn_repos/repos-test.c:1068684-1072297
+/subversion/branches/integrate-is-cachable/subversion/tests/libsvn_repos/repos-test.c:1072568-1074082
+/subversion/branches/integrate-partial-getter/subversion/tests/libsvn_repos/repos-test.c:1072558-1076552
+/subversion/branches/integrate-readline-speedup/subversion/tests/libsvn_repos/repos-test.c:1072553-1072555
+/subversion/branches/integrate-stream-api-extensions/subversion/tests/libsvn_repos/repos-test.c:1068695-1072516
+/subversion/branches/integrate-string-improvements/subversion/tests/libsvn_repos/repos-test.c:1068251-1190617
+/subversion/branches/integrate-txdelta-caching/subversion/tests/libsvn_repos/repos-test.c:1072541-1078213
+/subversion/branches/issue-2779-dev/subversion/tests/libsvn_repos/repos-test.c:965496-984198
+/subversion/branches/issue-2843-dev/subversion/tests/libsvn_repos/repos-test.c:871432-874179
+/subversion/branches/issue-3000/subversion/tests/libsvn_repos/repos-test.c:871713,871716-871719,871721-871726,871728,871734
+/subversion/branches/issue-3067-deleted-subtrees/subversion/tests/libsvn_repos/repos-test.c:873375-874084
+/subversion/branches/issue-3148-dev/subversion/tests/libsvn_repos/repos-test.c:875193-875204
+/subversion/branches/issue-3220-dev/subversion/tests/libsvn_repos/repos-test.c:872210-872226
+/subversion/branches/issue-3242-dev/subversion/tests/libsvn_repos/repos-test.c:879653-896436
+/subversion/branches/issue-3334-dirs/subversion/tests/libsvn_repos/repos-test.c:875156-875867
+/subversion/branches/issue-3975/subversion/tests/libsvn_repos/repos-test.c:1152931-1160746
+/subversion/branches/issue-4116-dev/subversion/tests/libsvn_repos/repos-test.c:1424719-1425040
+/subversion/branches/issue-4194-dev/subversion/tests/libsvn_repos/repos-test.c:1410507-1414880
+/subversion/branches/javahl-ra/subversion/tests/libsvn_repos/repos-test.c:1342682,1344977
+/subversion/branches/kwallet/subversion/tests/libsvn_repos/repos-test.c:870785-871314
+/subversion/branches/log-g-performance/subversion/tests/libsvn_repos/repos-test.c:870941-871032
+/subversion/branches/merge-skips-obstructions/subversion/tests/libsvn_repos/repos-test.c:874525-874615
+/subversion/branches/multi-layer-moves/subversion/tests/libsvn_repos/repos-test.c:1239019-1300930
+/subversion/branches/nfc-nfd-aware-client/subversion/tests/libsvn_repos/repos-test.c:870276,870376
+/subversion/branches/node_pool/subversion/tests/libsvn_repos/repos-test.c:1304828-1305388
+/subversion/branches/performance/subversion/tests/libsvn_repos/repos-test.c:979193,980118,981087,981090,981189,981194,981287,981684,981827,982043,982355,983398,983406,983430,983474,983488,983490,983760,983764,983766,983770,984927,984973,984984,985014,985037,985046,985472,985477,985482,985487-985488,985493,985497,985500,985514,985601,985603,985606,985669,985673,985695,985697,986453,986465,986485,986491-986492,986517,986521,986605,986608,986817,986832,987865,987868-987869,987872,987886-987888,987893,988319,988898,990330,990533,990535-990537,990541,990568,990572,990574-990575,990600,990759,992899,992904,992911,993127,993141,994956,995478,995507,995603,998012,998858,999098,1001413,1001417,1004291,1022668,1022670,1022676,1022715,1022719,1025660,1025672,1027193,1027203,1027206,1027214,1027227,1028077,1028092,1028094,1028104,1028107,1028111,1028354,1029038,1029042-1029043,1029054-1029055,1029062-1029063,1029078,1029080,1029090,1029092-1029093,1029111,1029151,1029158,1029229-1029230,1029232
 ,1029335-1029336,1029339-1029340,1029342,1029344,1030763,1030827,1031203,1031235,1032285,1032333,1033040,1033057,1033294,1035869,1035882,1039511,1043705,1053735,1056015,1066452,1067683,1067697-1078365
+/subversion/branches/py-tests-as-modules/subversion/tests/libsvn_repos/repos-test.c:956579-1033052
+/subversion/branches/ra_serf-digest-authn/subversion/tests/libsvn_repos/repos-test.c:875693-876404
+/subversion/branches/reintegrate-improvements/subversion/tests/libsvn_repos/repos-test.c:873853-874164
+/subversion/branches/revprop-cache/subversion/tests/libsvn_repos/repos-test.c:1298521-1326293
+/subversion/branches/revprop-packing/subversion/tests/libsvn_repos/repos-test.c:1143907,1143971,1143997,1144017,1144499,1144568,1146145
+/subversion/branches/subtree-mergeinfo/subversion/tests/libsvn_repos/repos-test.c:876734-878766
+/subversion/branches/svn-mergeinfo-enhancements/subversion/tests/libsvn_repos/repos-test.c:870119-870195,870197-870288
+/subversion/branches/svn-patch-improvements/subversion/tests/libsvn_repos/repos-test.c:918519-934609
+/subversion/branches/svn_mutex/subversion/tests/libsvn_repos/repos-test.c:1141683-1182099
+/subversion/branches/svnpatch-diff/subversion/tests/libsvn_repos/repos-test.c:865738-876477
+/subversion/branches/svnraisetc/subversion/tests/libsvn_repos/repos-test.c:874709-875149
+/subversion/branches/svnserve-logging/subversion/tests/libsvn_repos/repos-test.c:869828-870893
+/subversion/branches/tc-issue-3334/subversion/tests/libsvn_repos/repos-test.c:874697-874773
+/subversion/branches/tc-merge-notify/subversion/tests/libsvn_repos/repos-test.c:874017-874062
+/subversion/branches/tc-resolve/subversion/tests/libsvn_repos/repos-test.c:874191-874239
+/subversion/branches/tc_url_rev/subversion/tests/libsvn_repos/repos-test.c:874351-874483
+/subversion/branches/tree-conflicts/subversion/tests/libsvn_repos/repos-test.c:868291-873154
+/subversion/branches/tree-conflicts-notify/subversion/tests/libsvn_repos/repos-test.c:873926-874008
+/subversion/branches/tristate-chunked-request/subversion/tests/libsvn_repos/repos-test.c:1502401,1502673
+/subversion/branches/tweak-build-take-two/subversion/tests/libsvn_repos/repos-test.c:1424288-1425049,1425051-1425613
+/subversion/branches/uris-as-urls/subversion/tests/libsvn_repos/repos-test.c:1060426-1064427
+/subversion/branches/verify-at-commit/subversion/tests/libsvn_repos/repos-test.c:1462039-1462408
+/subversion/branches/wc-collate-path/subversion/tests/libsvn_repos/repos-test.c:1407642
+/subversion/trunk/subversion/tests/libsvn_repos/dump-load-test.c:1643074
+/subversion/trunk/subversion/tests/libsvn_repos/repos-test.c:1467440,1467450,1467481,1467587,1467597,1467668,1467675,1467803,1467807,1467951,1468109,1468116,1468151,1468347,1468395,1468439,1468487,1468565-1468566,1468980,1469248,1469363,1469478,1469489,1469512-1469513,1469550,1469556,1469645,1469674,1469833,1469862,1469866,1469871,1469994,1470031,1470037,1470221,1470238,1470246,1470248,1470537,1470650,1470738,1470781,1470898,1470904,1470908,1470913,1470936,1470993-1470994,1471028-1471029,1471107,1471153,1471302,1471443,1471490,1471744,1475704,1475724,1475772,1475963,1476092,1476155,1476181,1476193,1476254,1476359,1476366,1476607,1477294,1477359,1477729-1477730,1477876,1477891,1478001,1478220-1478221,1478465,1478617,1478897,1478951,1478987,1478998,1479320-1479321,1479323,1479326,1479329,1479540,1479563,1479605,1479896,1480054,1480077,1480080,1480082,1480119,1480149,1480344,1480412,1480426,1480442,1480616,1480641-1480642,1480664,1480669,1480681,1480723,1480738,1480765,1481010,1481418,
 1481594,1481596,1481625,1481627-1481628,1481631-1481632,1481772,1481782,1481800,1481813,1481847,1481944,1481981,1482282,1482327,1482338,1482350,1482354,1482436,1482479,1482524,1482528,1482536,1482554,1482558,1482592,1482724,1482759,1482779,1482829,1482969-1482970,1482973,1483015,1483077,1483101,1483116,1483125,1483391,1483397,1483555,1483557,1483575,1483580,1483781,1483927,1483939,1483947,1483964-1483965,1483968,1483972,1483975,1483977,1483984,1484006,1484016-1484017,1484023,1484755,1485018,1485127,1485350,1485413,1485427,1485447,1485449,1485497,1485501,1485650,1486072,1486457,1486572,1486809,1486915,1486931,1487083,1487094,1488183,1488267,1488294,1488425,1488639,1488693,1488878,1489114,1489116-1489117,1489203,1489339,1489935,1490045,1490326,1490679,1490684,1490721,1491432,1491499,1491707,1491739,1491755-1491756,1491762,1491770,1491816,1491868,1492005,1492020,1492145,1492148,1492152,1492164,1492264,1492295,1493102,1493424,1493475,1493703,1493720,1493951,1494089,1494171,1494223,14942
 87,1494298,1494318,1494342,1494657,1494913,1494967,1495063,1495104,1495204,1495209,1495214,1495256,1495329,1495428,1495432,1495446,1495597,1495805,1495850,1495978,1496007,1496110-1496111,1496127,1496132,1496151,1496470,1496938,1496957,1497002,1497318-1497319,1497551,1497614,1497804,1497975,1497980,1498000,1498012,1498136,1498449,1498455-1498456,1498483-1498484,1498486,1498550,1498564,1498851,1498885,1498997,1499034,1499044,1499064,1499095-1499096,1499100,1499403,1499423,1499438,1499447,1499460,1499470,1499483,1499492,1499496,1499498,1499595,1499727,1500074,1500175,1500226,1500680,1500695,1500762,1500799,1500801-1500802,1500904,1500928,1501199,1501207,1501656,1501702,1502097,1502267,1502577,1502777,1502811,1502901,1502909,1502952,1503009-1503010,1503058,1503061,1503211,1503318,1503528,1503884,1504192,1504505,1506040-1506041,1506047,1506058,1506966,1507044,1507382,1507567,1507589,1507889,1507891,1508438,1509186,1509196,1511057,1511272,1511353,1511603,1512067,1512119,1512195,1512300-15
 12301,1512432,1512471-1512472,1513119,1513122,1513156,1513463,1513472,1513874,1513879-1513880,1513943,1514295,1514315,1514318,1514356,1514628,1514763,1514785,1514804,1515119,1515141,1515201,1515225,1515237,1515343,1515366,1515516,1515534,1515721,1515992,1515997,1516023-1516024,1516049,1516051-1516053,1516071,1516271,1516429,1516556,1516565,1516567,1516806,1518184,1518942,1519615,1519617,1519733,1519816,1519823,1519955,1520065,1520529,1520532,1520539,1520745,1522892,1523666,1524869,1525902,1526439,1526655,1527103,1527105,1530763,1530768,1530872,1530922,1530967,1531002,1531004,1531014,1531938,1532023,1532098,1532316,1534102,1534149,1534158,1534713,1534737,1534860,1535115,1535161,1535532,1535610,1535676,1536350,1536383,1536464,1536488,1536537,1536914,1536931,1537018,1537147,1537190,1537193,1537221,1537263,1537360,1537415,1537555,1537700,1538516-1538517,1538519,1538574,1538581,1538812,1538925,1538928,1538939,1540044,1540417,1540752,1541432,1541635,1541638,1541705,1541790,1542042,1542069
 ,1542071,1542119,1542129,1542138,1542146,1542151,1542610,1542765,1542767,1542774,1543145,1543187,1543413,1543594,1543961,1544295,1544316,1544597,1544600,1544688,1544690,1544878,1544895,1545111,1545122,1545302,1545835,1545845,1547252,1547454,1547774,1547866,1547873,1548097,1548105,1548170,1548486,1548673,1549858,1549874,1550691,1550772,1550803,1551524,1551579,1552957-1552958,1553101,1553105,1553113,1553376-1553377,1553501,1553556,1554978,1555403,1555499,1557320,1557522,1559009,1559197,1560690,1560701,1561426,1561703,1563110,1564292,1564576,1564966,1564969,1565085,1565531,1566503-1566504,1567064,1567109,1567134,1567204,1567228,1567286,1567392,1567492,1567494,1567740,1567752,1567985,1568070,1568180,1568349,1568361,1568872,1568953,1568955,1569069,1570642,1571214,1571747,1571787,1571795,1572102,1572200,1572340,1573088,1573106,1573209,1574868,1575270,1575284,1575525,1575915,1577151,1577200,1577294,1577739,1577755,1577812-1577813,1578273,1578311,1578326,1578670,1578820,1578853,1578875,1579
 274,1579429,1579588,1579684,1580626,1580650,1580832,1580867,1580872,1581296,1581305,1581315,1581430,1581810,1583580,1583977,1584342,1584576,1584592,1584745,1585686,1586052,1586255,1586352,1586467,1587511,1587946,1587968,1588772,1588778,1589184,1589188,1589360,1589460,1589486,1590212,1591123,1592014,1592034,1593992,1594156,1594223,1594794,1594814,1594834,1595061,1595431,1596866,1600311,1600315,1600323,1600331,1600348,1600368,1600393,1600563,1600781,1600909,1601851,1606009,1611379,1612225,1612405,1615211,1615219,1615255-1615256,1615260,1615263,1615354,1616131,1617687,1619105,1619118,1619153,1619774,1619802,1620332,1621978,1621981,1625533,1625537,1628431,1628536,1628540,1633126,1636874,1637826,1640730,1641564,1643074

Modified: subversion/branches/1.8.x-r1643074/subversion/tests/svn_test.h
URL: http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1643074/subversion/tests/svn_test.h?rev=1643119&r1=1643118&r2=1643119&view=diff
==============================================================================
--- subversion/branches/1.8.x-r1643074/subversion/tests/svn_test.h (original)
+++ subversion/branches/1.8.x-r1643074/subversion/tests/svn_test.h Wed Dec  3 13:47:13 2014
@@ -73,6 +73,23 @@ extern "C" {
     svn_error_clear(err__);                                               \
   } while (0)
 
+/** Handy macro for testing that an svn_error_t is returned.
+ * The result must be neither SVN_NO_ERROR nor SVN_ERR_ASSERTION_FAIL.
+ * The error returned by EXPR will be cleared.
+ */
+#define SVN_TEST__ASSERT_ANY_ERROR(expr)                                  \
+  do {                                                                    \
+    svn_error_t *err__ = (expr);                                          \
+    if (err__ == SVN_NO_ERROR || err__->apr_err == SVN_ERR_ASSERTION_FAIL)\
+      return err__ ? svn_error_createf(SVN_ERR_TEST_FAILED, err__,        \
+                                       "Expected error but got %s",       \
+                                       "SVN_ERR_ASSERTION_FAIL")          \
+                   : svn_error_createf(SVN_ERR_TEST_FAILED, err__,        \
+                                       "Expected error but got %s",       \
+                                       "SVN_NO_ERROR");                   \
+    svn_error_clear(err__);                                               \
+  } while (0)
+
 /** Handy macro for testing string equality.
  *
  * EXPR and/or EXPECTED_EXPR may be NULL which compares equal to NULL and



Mime
View raw message