You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ju...@apache.org on 2014/12/09 16:15:33 UTC

svn commit: r1644082 - in /subversion/branches/1.7.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

Author: julianfoad
Date: Tue Dec  9 15:15:32 2014
New Revision: 1644082

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

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

Propchange: subversion/branches/1.7.x-r1643074/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Dec  9 15:15:32 2014
@@ -151,4 +151,4 @@
 /subversion/branches/tree-conflicts:868291-873154
 /subversion/branches/tree-conflicts-notify:873926-874008
 /subversion/branches/uris-as-urls:1060426-1064427
-/subversion/trunk:1146013,1146121,1146219,1146222,1146274,1146492,1146555,1146606,1146620,1146684,1146762,1146781,1146832,1146834,1146870,1146899,1146904,1147293,1147299,1147309,1147882,1148071,1148083,1148094,1148131,1148374,1148424,1148566,1148588,1148652,1148662,1148699,1148853,1148877,1148882,1148936,1149103,1149105,1149135,1149141,1149160,1149228,1149240,1149343,1149371-1149372,1149377,1149398,1149401,1149539,1149572,1149627,1149675,1149701,1149713,1150242,1150254,1150260-1150261,1150266,1150302,1150327,1150344,1150368,1150372,1150441,1150506,1150812,1150853,1151036,1151177,1151610,1151854,1151906,1151911,1152129,1152140,1152189-1152190,1152267,1152282,1152286,1152726,1152809,1153138,1153141,1153416,1153540,1153566,1153799,1153807,1153968,1154009,1154023,1154115,1154119,1154121,1154144,1154155,1154159,1154165,1154215,1154225,1154273,1154278,1154379,1154382,1154461,1154717-1154718,1154733,1154908,1154982,1155015,1155044,1155124,1155131,1155160,1155313,1155334,1155391,1155404,115
 6085,1156098,1156216,1156218,1156312,1156527,1156717,1156721,1156750,1156827,1156838,1157416,1158187,1158193-1158194,1158196,1158201,1158207,1158209-1158210,1158217,1158285,1158288,1158303,1158309,1158407,1158419,1158421,1158436,1158455,1158616-1158617,1158634,1158854,1158875,1158886,1158893,1158896,1158919,1158923-1158924,1158929,1158963,1159093,1159098,1159101,1159132,1159136,1159148,1159230,1159275,1159400,1159686,1159760,1159772,1160605,1160671,1160682,1160704-1160705,1160756,1161063,1161080,1161185,1161210,1161683,1161721,1162024,1162033,1162201,1162516,1162880,1162974,1162995,1163243,1163372,1163383,1163557,1163792,1163953,1164027,1164116,1164386,1164426,1164517,1164535,1164554,1164580,1164614,1164645,1164760,1164765,1164929,1166267,1166500,1166555,1166678,1167062,1167173,1167209,1167269,1167503,1167659,1167681,1169524,1169531,1169650,1171708,1173111,1173425,1173639,1174051,1174060,1174342,1174652,1174761,1174797-1174798,1174806,1175888,1176915,1176949,1177001,1177492,1177732,
 1178280,1178282,1178942,1179680,1179767,1179776,1180154,1181090,1181110,1181155,1181215,1181609,1181666,1182115,1182527,1182771,1182904,1182909,1183054,1183263,1183347,1185222,1185242,1185280,1185282,1185730,1185738,1185746,1185763,1185768,1185886,1185911,1185918,1186059,1186092,1186101,1186107,1186109,1186121,1186231,1186240,1186422,1186434,1186732,1186755,1186784,1186815,1186928,1186944,1186981,1186983,1187311,1187676,1187695,1188609,1188652,1188677,1188762,1188774,1189190,1189261,1189395,1189580,1189665,1190463,1195480,1197135,1197998,1199876,1199950,1200277,1200837,1200896,1201002,1201072,1201419,1201824,1202132,1202135,1202187,1202333,1202630,1202807,1203546,1203651,1203653,1203977,1204167,1204478,1204610,1204673,1205188,1205193,1205209,1205726,1205839,1205848,1205968,1206523,1206533,1206576,1206718-1206719,1206724,1206741,1206748,1207555,1207656,1207663,1207808,1207823,1207858,1207949,1208840,1209631,1209654,1210147,1210195,1210913,1211048,1211483,1211859,1211885,1212476,12124
 82,1212484,1213331,1213673,1213681,1213690,1213711,1213716,1214139,1215260,1215288,1215374-1215375,1215379,1220740,1220742,1220750,1220861,1221178,1221303,1221767,1221780,1221793,1222521,1222628,1222644,1222693,1222699,1225491,1226597,1227146,1227237,1227250,1227352,1227372,1227384-1227385,1227900,1228340,1229252,1229303,1229677,1229833,1229980,1230212,1230714,1230798,1231029,1231944-1231945,1232202,1232207,1232221-1232222,1232267,1232413,1233292,1235264,1235296,1235302,1235736,1236163,1236173,1236283,1236343,1237720,1237779,1238121,1239382,1239596,1239631,1239655,1239747,1240314,1240485,1240619,1240752,1241530,1241553,1241599,1241626,1241713,1241726,1242116,1242537,1242607,1242759,1242770,1242794,1243694,1243840,1243920,1243976,1244303,1244317,1244466,1244551,1245284-1245285,1245711,1245738,1245746,1245764,1245809,1245817,1245929,1245935,1291429,1291446,1291520,1291594,1291680,1291685,1291700,1291704,1291726,1291729,1291797,1291810,1291941,1292090,1292248,1292255,1292260,1292296,12
 92322,1292507,1292516,1292768,1292827,1292926,1293229,1293577,1293945,1293972,1293976,1293998,1294134,1294136,1294147,1294236,1294470,1294586,1295007,1295303,1295372,1295418,1296251,1296303,1296369,1296691,1297522,1298343,1300265,1302399,1302417,1302539,1302588,1302591,1302613,1305853,1306111,1306275,1306334,1307177,1309865,1309992,1310378,1310428,1310535,1310594,1311702,1311747,1311935,1325361,1327474,1327490,1327495,1327979,1328002,1328038,1328144,1328267-1328268,1328353,1328846-1328847,1328852,1328878,1329388,1329417,1329876,1330258,1330382,1330444,1330520,1335104,1335555,1337441,1338291,1338297,1338314,1338688,1338708,1338713,1338739,1338748,1338810,1339159,1339164,1340556,1341012,1341031,1341034,1341076,1341544,1341560,1342984,1344864-1344865,1344869,1345482,1345740,1346765,1348822,1349215,1349367,1349371,1349380,1349778,1351117,1351772,1352031,1352068,1353572,1354626,1354652,1354876,1354907,1355340,1361007,1361019,1361341,1362508,1365519,1365549,1365554,1365556,1365592,1367498
 ,1368065,1368128,1368197-1368198,1371282,1374198,1374800,1374802,1375052,1375089,1376414,1378847,1380175,1380295,1380697,1382843,1383029,1383466,1383483,1383946,1386594,1386601,1387226,1387943,1388975,1389364,1389499,1389658,1389851,1389878,1389928,1390653,1390965,1391020,1391022,1391641,1391935,1392502,1392599,1393061,1393156,1393165,1393542,1393551,1393598,1394519,1396285,1398100,1399174,1401915,1402417,1402421,1403258,1403583,1403588,1403691,1403964,1403982,1404912,1405922,1407131,1407812,1408650,1409146,1409939,1410106,1410203,1413402,1419670-1419681,1421011,1421103,1421380,1421541,1422053,1422100,1423585,1423646,1423837,1423840,1423848,1424977,1425368,1426138,1426264,1426752,1426830,1427197,1427210,1427278,1429201,1434128,1434405,1434414,1434418,1434435,1434476,1434750,1435361,1438602,1438683,1441810,1443763,1443929,1445753,1451678,1452617,1452780,1452967,1453780,1454088,1454217,1455352,1458341,1459599,1461278,1461562,1461580,1461701,1461743,1462041,1462293,1462300,1462302,1462
 321,1462334,1465975,1476359,1477730,1481010,1481627,1482282,1483781,1485350,1490684,1496127,1503528,1507044,1512432,1512471-1512472,1513463,1513472,1514763,1515119,1515237,1515992,1515997,1516023-1516024,1516051-1516052,1516565,1516806,1518184,1520529,1520532,1520539,1522892,1524869,1527103,1527105,1535551,1535591,1537360,1537415,1537555,1537700,1539309,1541705,1541790,1542042,1542069,1542071,1542119,1542129,1542610,1544295,1544316,1545835,1545845,1550691,1550772,1551579,1557320,1560690,1561237,1563066-1563068,1564215,1564576,1564966,1564969,1565531,1566503,1567492,1567494,1568180,1568349,1568872,1569069,1574868,1577200,1577739,1577755,1580626,1580650,1587968,1588772,1590212,1591123,1594156,1595431,1600909,1615219,1615255-1615256,1636874,1637826,1640730,1641564
+/subversion/trunk:1146013,1146121,1146219,1146222,1146274,1146492,1146555,1146606,1146620,1146684,1146762,1146781,1146832,1146834,1146870,1146899,1146904,1147293,1147299,1147309,1147882,1148071,1148083,1148094,1148131,1148374,1148424,1148566,1148588,1148652,1148662,1148699,1148853,1148877,1148882,1148936,1149103,1149105,1149135,1149141,1149160,1149228,1149240,1149343,1149371-1149372,1149377,1149398,1149401,1149539,1149572,1149627,1149675,1149701,1149713,1150242,1150254,1150260-1150261,1150266,1150302,1150327,1150344,1150368,1150372,1150441,1150506,1150812,1150853,1151036,1151177,1151610,1151854,1151906,1151911,1152129,1152140,1152189-1152190,1152267,1152282,1152286,1152726,1152809,1153138,1153141,1153416,1153540,1153566,1153799,1153807,1153968,1154009,1154023,1154115,1154119,1154121,1154144,1154155,1154159,1154165,1154215,1154225,1154273,1154278,1154379,1154382,1154461,1154717-1154718,1154733,1154908,1154982,1155015,1155044,1155124,1155131,1155160,1155313,1155334,1155391,1155404,115
 6085,1156098,1156216,1156218,1156312,1156527,1156717,1156721,1156750,1156827,1156838,1157416,1158187,1158193-1158194,1158196,1158201,1158207,1158209-1158210,1158217,1158285,1158288,1158303,1158309,1158407,1158419,1158421,1158436,1158455,1158616-1158617,1158634,1158854,1158875,1158886,1158893,1158896,1158919,1158923-1158924,1158929,1158963,1159093,1159098,1159101,1159132,1159136,1159148,1159230,1159275,1159400,1159686,1159760,1159772,1160605,1160671,1160682,1160704-1160705,1160756,1161063,1161080,1161185,1161210,1161683,1161721,1162024,1162033,1162201,1162516,1162880,1162974,1162995,1163243,1163372,1163383,1163557,1163792,1163953,1164027,1164116,1164386,1164426,1164517,1164535,1164554,1164580,1164614,1164645,1164760,1164765,1164929,1166267,1166500,1166555,1166678,1167062,1167173,1167209,1167269,1167503,1167659,1167681,1169524,1169531,1169650,1171708,1173111,1173425,1173639,1174051,1174060,1174342,1174652,1174761,1174797-1174798,1174806,1175888,1176915,1176949,1177001,1177492,1177732,
 1178280,1178282,1178942,1179680,1179767,1179776,1180154,1181090,1181110,1181155,1181215,1181609,1181666,1182115,1182527,1182771,1182904,1182909,1183054,1183263,1183347,1185222,1185242,1185280,1185282,1185730,1185738,1185746,1185763,1185768,1185886,1185911,1185918,1186059,1186092,1186101,1186107,1186109,1186121,1186231,1186240,1186422,1186434,1186732,1186755,1186784,1186815,1186928,1186944,1186981,1186983,1187311,1187676,1187695,1188609,1188652,1188677,1188762,1188774,1189190,1189261,1189395,1189580,1189665,1190463,1195480,1197135,1197998,1199876,1199950,1200277,1200837,1200896,1201002,1201072,1201419,1201824,1202132,1202135,1202187,1202333,1202630,1202807,1203546,1203651,1203653,1203977,1204167,1204478,1204610,1204673,1205188,1205193,1205209,1205726,1205839,1205848,1205968,1206523,1206533,1206576,1206718-1206719,1206724,1206741,1206748,1207555,1207656,1207663,1207808,1207823,1207858,1207949,1208840,1209631,1209654,1210147,1210195,1210913,1211048,1211483,1211859,1211885,1212476,12124
 82,1212484,1213331,1213673,1213681,1213690,1213711,1213716,1214139,1215260,1215288,1215374-1215375,1215379,1220740,1220742,1220750,1220861,1221178,1221303,1221767,1221780,1221793,1222521,1222628,1222644,1222693,1222699,1225491,1226597,1227146,1227237,1227250,1227352,1227372,1227384-1227385,1227900,1228340,1229252,1229303,1229677,1229833,1229980,1230212,1230714,1230798,1231029,1231944-1231945,1232202,1232207,1232221-1232222,1232267,1232413,1233292,1235264,1235296,1235302,1235736,1236163,1236173,1236283,1236343,1237720,1237779,1238121,1239382,1239596,1239631,1239655,1239747,1240314,1240485,1240619,1240752,1241530,1241553,1241599,1241626,1241713,1241726,1242116,1242537,1242607,1242759,1242770,1242794,1243694,1243840,1243920,1243976,1244303,1244317,1244466,1244551,1245284-1245285,1245711,1245738,1245746,1245764,1245809,1245817,1245929,1245935,1291429,1291446,1291520,1291594,1291680,1291685,1291700,1291704,1291726,1291729,1291797,1291810,1291941,1292090,1292248,1292255,1292260,1292296,12
 92322,1292507,1292516,1292768,1292827,1292926,1293229,1293577,1293945,1293972,1293976,1293998,1294134,1294136,1294147,1294236,1294470,1294586,1295007,1295303,1295372,1295418,1296251,1296303,1296369,1296691,1297522,1298343,1300265,1302399,1302417,1302539,1302588,1302591,1302613,1305853,1306111,1306275,1306334,1307177,1309865,1309992,1310378,1310428,1310535,1310594,1311702,1311747,1311935,1325361,1327474,1327490,1327495,1327979,1328002,1328038,1328144,1328267-1328268,1328353,1328846-1328847,1328852,1328878,1329388,1329417,1329876,1330258,1330382,1330444,1330520,1335104,1335555,1337441,1338291,1338297,1338314,1338688,1338708,1338713,1338739,1338748,1338810,1339159,1339164,1340556,1341012,1341031,1341034,1341076,1341544,1341560,1342984,1344864-1344865,1344869,1345482,1345740,1346765,1348822,1349215,1349367,1349371,1349380,1349778,1351117,1351772,1352031,1352068,1353572,1354626,1354652,1354876,1354907,1355340,1361007,1361019,1361341,1362508,1365519,1365549,1365554,1365556,1365592,1367498
 ,1368065,1368128,1368197-1368198,1371282,1374198,1374800,1374802,1375052,1375089,1376414,1378847,1380175,1380295,1380697,1382843,1383029,1383466,1383483,1383946,1386594,1386601,1387226,1387943,1388975,1389364,1389499,1389658,1389851,1389878,1389928,1390653,1390965,1391020,1391022,1391641,1391935,1392502,1392599,1393061,1393156,1393165,1393542,1393551,1393598,1394519,1396285,1398100,1399174,1401915,1402417,1402421,1403258,1403583,1403588,1403691,1403964,1403982,1404912,1405922,1407131,1407812,1408650,1409146,1409939,1410106,1410203,1413402,1419670-1419681,1421011,1421103,1421380,1421541,1422053,1422100,1423585,1423646,1423837,1423840,1423848,1424977,1425368,1426138,1426264,1426752,1426830,1427197,1427210,1427278,1429201,1434128,1434405,1434414,1434418,1434435,1434476,1434750,1435361,1438602,1438683,1441810,1443763,1443929,1445753,1451678,1452617,1452780,1452967,1453780,1454088,1454217,1455352,1458341,1459599,1461278,1461562,1461580,1461701,1461743,1462041,1462293,1462300,1462302,1462
 321,1462334,1465975,1476359,1477730,1481010,1481627,1482282,1483781,1485350,1490684,1496127,1503528,1507044,1512432,1512471-1512472,1513463,1513472,1514763,1515119,1515237,1515992,1515997,1516023-1516024,1516051-1516052,1516565,1516806,1518184,1520529,1520532,1520539,1522892,1524869,1527103,1527105,1535551,1535591,1537360,1537415,1537555,1537700,1539309,1541705,1541790,1542042,1542069,1542071,1542119,1542129,1542610,1544295,1544316,1545835,1545845,1550691,1550772,1551579,1557320,1560690,1561237,1563066-1563068,1564215,1564576,1564966,1564969,1565531,1566503,1567492,1567494,1568180,1568349,1568872,1569069,1574868,1577200,1577739,1577755,1580626,1580650,1587968,1588772,1590212,1591123,1594156,1595431,1600909,1615219,1615255-1615256,1636874,1637826,1640730,1641564,1643074

Modified: subversion/branches/1.7.x-r1643074/subversion/include/svn_repos.h
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1643074/subversion/include/svn_repos.h?rev=1644082&r1=1644081&r2=1644082&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1643074/subversion/include/svn_repos.h (original)
+++ subversion/branches/1.7.x-r1643074/subversion/include/svn_repos.h Tue Dec  9 15:15:32 2014
@@ -264,7 +264,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.7.x-r1643074/subversion/libsvn_repos/load-fs-vtable.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1643074/subversion/libsvn_repos/load-fs-vtable.c?rev=1644082&r1=1644081&r2=1644082&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1643074/subversion/libsvn_repos/load-fs-vtable.c (original)
+++ subversion/branches/1.7.x-r1643074/subversion/libsvn_repos/load-fs-vtable.c Tue Dec  9 15:15:32 2014
@@ -682,6 +682,61 @@ 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)
+        {
+          pb->notify->action = svn_repos_notify_load_normalized_mergeinfo;
+          pb->notify_func(pb->notify_baton, pb->notify, rb->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,
@@ -691,51 +746,38 @@ set_node_property(void *baton,
   struct revision_baton *rb = nb->rb;
   struct parse_baton *pb = rb->pb;
 
+  /* 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)
             {
-              pb->notify->action = svn_repos_notify_load_normalized_mergeinfo;
+              pb->notify->action = svn_repos_notify_warning;
+              pb->notify->warning = svn_repos__notify_warning_invalid_mergeinfo;
+              pb->notify->warning_str = _("Invalid svn:mergeinfo value; "
+                                          "leaving unchanged");
               pb->notify_func(pb->notify_baton, pb->notify, nb->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.7.x-r1643074/subversion/tests/libsvn_repos/repos-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1643074/subversion/tests/libsvn_repos/repos-test.c?rev=1644082&r1=1644081&r2=1644082&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1643074/subversion/tests/libsvn_repos/repos-test.c (original)
+++ subversion/branches/1.7.x-r1643074/subversion/tests/libsvn_repos/repos-test.c Tue Dec  9 15:15:32 2014
@@ -2586,6 +2586,206 @@ 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("", 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_fs3(repos, stream,
+                             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("", 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[] =
@@ -2623,5 +2823,7 @@ struct svn_test_descriptor_t test_funcs[
                        "test issue 4060"),
     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.7.x-r1643074/subversion/tests/libsvn_repos/repos-test.c
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Tue Dec  9 15:15:32 2014
@@ -0,0 +1,155 @@
+/subversion/1.7.x-issue4059/subversion/tests/libsvn_repos/repos-test.c:1239661-1239744
+/subversion/branches/1.5.x-r30215/subversion/tests/libsvn_repos/repos-test.c:870312
+/subversion/branches/1.7.x-JavaHL-pools/subversion/tests/libsvn_repos/repos-test.c:1158684-1158722
+/subversion/branches/1.7.x-diff-translate/subversion/tests/libsvn_repos/repos-test.c:1568403-1569065
+/subversion/branches/1.7.x-disable_zlib_asm/subversion/tests/libsvn_repos/repos-test.c:1593915-1615219
+/subversion/branches/1.7.x-fsfs-commit/subversion/tests/libsvn_repos/repos-test.c:1536760-1541380
+/subversion/branches/1.7.x-gssapi-solaris10/subversion/tests/libsvn_repos/repos-test.c:1453164-1515067
+/subversion/branches/1.7.x-issue3888/subversion/tests/libsvn_repos/repos-test.c:1148937-1149162
+/subversion/branches/1.7.x-issue3975/subversion/tests/libsvn_repos/repos-test.c:1160761-1161546
+/subversion/branches/1.7.x-issue3976/subversion/tests/libsvn_repos/repos-test.c:1161731-1165397
+/subversion/branches/1.7.x-issue4032/subversion/tests/libsvn_repos/repos-test.c:1186668-1186784
+/subversion/branches/1.7.x-issue4035/subversion/tests/libsvn_repos/repos-test.c:1186202-1186315
+/subversion/branches/1.7.x-issue4035-r1185738/subversion/tests/libsvn_repos/repos-test.c:1186316-1186778
+/subversion/branches/1.7.x-issue4059/subversion/tests/libsvn_repos/repos-test.c:1239745-1242661
+/subversion/branches/1.7.x-issue4087/subversion/tests/libsvn_repos/repos-test.c:1243707-1336073
+/subversion/branches/1.7.x-issue4093/subversion/tests/libsvn_repos/repos-test.c:1229839-1230236
+/subversion/branches/1.7.x-issue4102/subversion/tests/libsvn_repos/repos-test.c:1292401-1295402
+/subversion/branches/1.7.x-issue4123/subversion/tests/libsvn_repos/repos-test.c:1293358-1293812
+/subversion/branches/1.7.x-issue4144/subversion/tests/libsvn_repos/repos-test.c:1305854-1306143
+/subversion/branches/1.7.x-issue4153/subversion/tests/libsvn_repos/repos-test.c:1309894-1539233
+/subversion/branches/1.7.x-issue4161/subversion/tests/libsvn_repos/repos-test.c:1330697-1331209
+/subversion/branches/1.7.x-issue4166/subversion/tests/libsvn_repos/repos-test.c:1330474-1336071
+/subversion/branches/1.7.x-issue4169/subversion/tests/libsvn_repos/repos-test.c:1330537-1336116
+/subversion/branches/1.7.x-issue4257/subversion/tests/libsvn_repos/repos-test.c:1454456-1461404
+/subversion/branches/1.7.x-issue4263/subversion/tests/libsvn_repos/repos-test.c:1423588-1434547
+/subversion/branches/1.7.x-issue4270/subversion/tests/libsvn_repos/repos-test.c:1433737-1485341
+/subversion/branches/1.7.x-issue4306/subversion/tests/libsvn_repos/repos-test.c:1438872-1514941
+/subversion/branches/1.7.x-issue4332/subversion/tests/libsvn_repos/repos-test.c:1453478-1460963
+/subversion/branches/1.7.x-issue4340/subversion/tests/libsvn_repos/repos-test.c:1461589-1485180
+/subversion/branches/1.7.x-issue4408/subversion/tests/libsvn_repos/repos-test.c:1512143-1514943
+/subversion/branches/1.7.x-issue4428/subversion/tests/libsvn_repos/repos-test.c:1525912-1538136
+/subversion/branches/1.7.x-issue4460/subversion/tests/libsvn_repos/repos-test.c:1563069-1564892
+/subversion/branches/1.7.x-issue4480/subversion/tests/libsvn_repos/repos-test.c:1588781-1590205
+/subversion/branches/1.7.x-issue4k/subversion/tests/libsvn_repos/repos-test.c:1166502-1167193
+/subversion/branches/1.7.x-javahl-exception-crash/subversion/tests/libsvn_repos/repos-test.c:1586451-1589333
+/subversion/branches/1.7.x-log-diff/subversion/tests/libsvn_repos/repos-test.c:1295670-1295699
+/subversion/branches/1.7.x-md5-collision/subversion/tests/libsvn_repos/repos-test.c:1600982-1615192
+/subversion/branches/1.7.x-neon-0.30/subversion/tests/libsvn_repos/repos-test.c:1566319-1568587
+/subversion/branches/1.7.x-neon-default/subversion/tests/libsvn_repos/repos-test.c:1148803-1158680
+/subversion/branches/1.7.x-neon-properr/subversion/tests/libsvn_repos/repos-test.c:1440619-1461944
+/subversion/branches/1.7.x-r1152189/subversion/tests/libsvn_repos/repos-test.c:1152759-1154249
+/subversion/branches/1.7.x-r1155160/subversion/tests/libsvn_repos/repos-test.c:1158704-1159223
+/subversion/branches/1.7.x-r1159093/subversion/tests/libsvn_repos/repos-test.c:1159097-1159230
+/subversion/branches/1.7.x-r1163557/subversion/tests/libsvn_repos/repos-test.c:1163574-1170648
+/subversion/branches/1.7.x-r1173425/subversion/tests/libsvn_repos/repos-test.c:1173429-1176454
+/subversion/branches/1.7.x-r1180154/subversion/tests/libsvn_repos/repos-test.c:1186224-1186351
+/subversion/branches/1.7.x-r1201824/subversion/tests/libsvn_repos/repos-test.c:1202121-1207333
+/subversion/branches/1.7.x-r1210147/subversion/tests/libsvn_repos/repos-test.c:1213310-1293110
+/subversion/branches/1.7.x-r1213331/subversion/tests/libsvn_repos/repos-test.c:1213684-1213756
+/subversion/branches/1.7.x-r1227815-conflict/subversion/tests/libsvn_repos/repos-test.c:1642662-1643026
+/subversion/branches/1.7.x-r1232221/subversion/tests/libsvn_repos/repos-test.c:1232358-1238008
+/subversion/branches/1.7.x-r1236343/subversion/tests/libsvn_repos/repos-test.c:1236628-1239394
+/subversion/branches/1.7.x-r1242759/subversion/tests/libsvn_repos/repos-test.c:1372522-1393041
+/subversion/branches/1.7.x-r1306111/subversion/tests/libsvn_repos/repos-test.c:1306301-1331207
+/subversion/branches/1.7.x-r1341012/subversion/tests/libsvn_repos/repos-test.c:1341013-1355629
+/subversion/branches/1.7.x-r1348822/subversion/tests/libsvn_repos/repos-test.c:1348878-1355700
+/subversion/branches/1.7.x-r1352031/subversion/tests/libsvn_repos/repos-test.c:1431725-1435017
+/subversion/branches/1.7.x-r1352068/subversion/tests/libsvn_repos/repos-test.c:1352087-1364232
+/subversion/branches/1.7.x-r1361007/subversion/tests/libsvn_repos/repos-test.c:1361110-1367853
+/subversion/branches/1.7.x-r1361341/subversion/tests/libsvn_repos/repos-test.c:1361342-1367855
+/subversion/branches/1.7.x-r1365554/subversion/tests/libsvn_repos/repos-test.c:1365558-1367850
+/subversion/branches/1.7.x-r1375052/subversion/tests/libsvn_repos/repos-test.c:1376643-1380970
+/subversion/branches/1.7.x-r1383483/subversion/tests/libsvn_repos/repos-test.c:1383601-1383951
+/subversion/branches/1.7.x-r1388975/subversion/tests/libsvn_repos/repos-test.c:1392898-1393044
+/subversion/branches/1.7.x-r1389851/subversion/tests/libsvn_repos/repos-test.c:1389853-1392834
+/subversion/branches/1.7.x-r1389878/subversion/tests/libsvn_repos/repos-test.c:1389879-1393126
+/subversion/branches/1.7.x-r1389928/subversion/tests/libsvn_repos/repos-test.c:1390384-1391747
+/subversion/branches/1.7.x-r1398325/subversion/tests/libsvn_repos/repos-test.c:1398353-1398633
+/subversion/branches/1.7.x-r1399174/subversion/tests/libsvn_repos/repos-test.c:1399176-1403964
+/subversion/branches/1.7.x-r1401915/subversion/tests/libsvn_repos/repos-test.c:1401934-1407349
+/subversion/branches/1.7.x-r1407131/subversion/tests/libsvn_repos/repos-test.c:1407164-1419607
+/subversion/branches/1.7.x-r1423646/subversion/tests/libsvn_repos/repos-test.c:1423647-1424282
+/subversion/branches/1.7.x-r1426752/subversion/tests/libsvn_repos/repos-test.c:1426753-1485335
+/subversion/branches/1.7.x-r1426762/subversion/tests/libsvn_repos/repos-test.c:1538732-1538859
+/subversion/branches/1.7.x-r1427278/subversion/tests/libsvn_repos/repos-test.c:1433724-1485338
+/subversion/branches/1.7.x-r1461743/subversion/tests/libsvn_repos/repos-test.c:1461745-1482189
+/subversion/branches/1.7.x-r1462041/subversion/tests/libsvn_repos/repos-test.c:1617243-1641028
+/subversion/branches/1.7.x-r1475724/subversion/tests/libsvn_repos/repos-test.c:1475743-1482192
+/subversion/branches/1.7.x-r1481010/subversion/tests/libsvn_repos/repos-test.c:1481034-1482194
+/subversion/branches/1.7.x-r1482759/subversion/tests/libsvn_repos/repos-test.c:1483584-1485046
+/subversion/branches/1.7.x-r1507044/subversion/tests/libsvn_repos/repos-test.c:1507300-1511568
+/subversion/branches/1.7.x-r1527103/subversion/tests/libsvn_repos/repos-test.c:1527110-1541378
+/subversion/branches/1.7.x-r1541790/subversion/tests/libsvn_repos/repos-test.c:1541792-1542083
+/subversion/branches/1.7.x-r1551579/subversion/tests/libsvn_repos/repos-test.c:1551587-1589566
+/subversion/branches/1.7.x-r1564215/subversion/tests/libsvn_repos/repos-test.c:1564280-1564618
+/subversion/branches/1.7.x-r1568872-neon+serf/subversion/tests/libsvn_repos/repos-test.c:1568942-1569623
+/subversion/branches/1.7.x-r1574868/subversion/tests/libsvn_repos/repos-test.c:1575332-1642628
+/subversion/branches/1.7.x-r1580626/subversion/tests/libsvn_repos/repos-test.c:1580636-1590207
+/subversion/branches/1.7.x-r1594157/subversion/tests/libsvn_repos/repos-test.c:1594673-1643028
+/subversion/branches/1.7.x-r1641564/subversion/tests/libsvn_repos/repos-test.c:1641574-1642630
+/subversion/branches/1.7.x-san-cert/subversion/tests/libsvn_repos/repos-test.c:1614969-1615212
+/subversion/branches/1.7.x-serf-1.3.x-Windows/subversion/tests/libsvn_repos/repos-test.c:1543441-1589564
+/subversion/branches/1.7.x-serf-server-root-segfaults/subversion/tests/libsvn_repos/repos-test.c:1383952-1392726
+/subversion/branches/1.7.x-svn-patch-eol-fixes/subversion/tests/libsvn_repos/repos-test.c:1207511-1235924
+/subversion/branches/1.8.x/subversion/tests/libsvn_repos/repos-test.c:1577779
+/subversion/branches/1.8.x-issue4480/subversion/tests/libsvn_repos/repos-test.c:1588775
+/subversion/branches/1.8.x-javahl-exception-crash/subversion/tests/libsvn_repos/repos-test.c:1586439
+/subversion/branches/1.8.x-openssl-dirs/subversion/tests/libsvn_repos/repos-test.c:1535139
+/subversion/branches/1.8.x-serf-1.3+-windows/subversion/tests/libsvn_repos/repos-test.c:1517123
+/subversion/branches/atomic-revprop/subversion/tests/libsvn_repos/repos-test.c:965046-1000689
+/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/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/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/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-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/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/nfc-nfd-aware-client/subversion/tests/libsvn_repos/repos-test.c:870276,870376
+/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,985695,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-10293
 36,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-packing/subversion/tests/libsvn_repos/repos-test.c:1143907,1143971,1143997,1144017,1144499,1144568
+/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/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/uris-as-urls/subversion/tests/libsvn_repos/repos-test.c:1060426-1064427
+/subversion/trunk/subversion/tests/libsvn_repos/dump-load-test.c:1643074
+/subversion/trunk/subversion/tests/libsvn_repos/repos-test.c:1146013,1146121,1146219,1146222,1146274,1146492,1146555,1146606,1146620,1146684,1146762,1146781,1146832,1146834,1146870,1146899,1146904,1147293,1147299,1147309,1147882,1148071,1148083,1148094,1148131,1148374,1148424,1148566,1148588,1148652,1148662,1148699,1148853,1148877,1148882,1148936,1149103,1149105,1149135,1149141,1149160,1149228,1149240,1149343,1149371-1149372,1149377,1149398,1149401,1149539,1149572,1149627,1149675,1149701,1149713,1150242,1150254,1150260-1150261,1150266,1150302,1150327,1150344,1150368,1150372,1150441,1150506,1150812,1150853,1151036,1151177,1151610,1151854,1151906,1151911,1152129,1152140,1152189-1152190,1152267,1152282,1152286,1152726,1152809,1153138,1153141,1153416,1153540,1153566,1153799,1153807,1153968,1154009,1154023,1154115,1154119,1154121,1154144,1154155,1154159,1154165,1154215,1154225,1154273,1154278,1154379,1154382,1154461,1154717-1154718,1154733,1154908,1154982,1155015,1155044,1155124,1155131,
 1155160,1155313,1155334,1155391,1155404,1156085,1156098,1156216,1156218,1156312,1156527,1156717,1156721,1156750,1156827,1156838,1157416,1158187,1158193-1158194,1158196,1158201,1158207,1158209-1158210,1158217,1158285,1158288,1158303,1158309,1158407,1158419,1158421,1158436,1158455,1158616-1158617,1158634,1158854,1158875,1158886,1158893,1158896,1158919,1158923-1158924,1158929,1158963,1159093,1159098,1159101,1159132,1159136,1159148,1159230,1159275,1159400,1159686,1159760,1159772,1160605,1160671,1160682,1160704-1160705,1160756,1161063,1161080,1161185,1161210,1161683,1161721,1162024,1162033,1162201,1162516,1162880,1162974,1162995,1163243,1163372,1163383,1163557,1163792,1163953,1164027,1164116,1164386,1164426,1164517,1164535,1164554,1164580,1164614,1164645,1164760,1164765,1164929,1166267,1166500,1166555,1166678,1167062,1167173,1167209,1167269,1167503,1167659,1167681,1169524,1169531,1169650,1171708,1173111,1173425,1173639,1174051,1174060,1174342,1174652,1174761,1174797-1174798,1174806,11758
 88,1176915,1176949,1177001,1177492,1177732,1178280,1178282,1178942,1179680,1179767,1179776,1180154,1181090,1181110,1181155,1181215,1181609,1181666,1182115,1182527,1182771,1182904,1182909,1183054,1183263,1183347,1185222,1185242,1185280,1185282,1185730,1185738,1185746,1185763,1185768,1185886,1185911,1185918,1186059,1186092,1186101,1186107,1186109,1186121,1186231,1186240,1186422,1186434,1186732,1186755,1186784,1186815,1186928,1186944,1186981,1186983,1187311,1187676,1187695,1188609,1188652,1188677,1188762,1188774,1189190,1189261,1189395,1189580,1189665,1190463,1195480,1197135,1197998,1199876,1199950,1200277,1200837,1200896,1201002,1201072,1201419,1201824,1202132,1202135,1202187,1202333,1202630,1202807,1203546,1203651,1203653,1203977,1204167,1204478,1204610,1204673,1205188,1205193,1205209,1205726,1205839,1205848,1205968,1206523,1206533,1206576,1206718-1206719,1206724,1206741,1206748,1207555,1207656,1207663,1207808,1207823,1207858,1207949,1208840,1209631,1209654,1210147,1210195,1210913,12
 11048,1211483,1211859,1211885,1212476,1212482,1212484,1213331,1213673,1213681,1213690,1213711,1213716,1214139,1215260,1215288,1215374-1215375,1215379,1220740,1220742,1220750,1220861,1221178,1221303,1221767,1221780,1221793,1222521,1222628,1222644,1222693,1222699,1225491,1226597,1227146,1227237,1227250,1227352,1227372,1227384-1227385,1227900,1228340,1229252,1229303,1229677,1229833,1229980,1230212,1230714,1230798,1231029,1231944-1231945,1232202,1232207,1232221-1232222,1232267,1232413,1233292,1235264,1235296,1235302,1235736,1236163,1236173,1236283,1236343,1237720,1237779,1238121,1239382,1239596,1239631,1239655,1239747,1240314,1240485,1240619,1240752,1241530,1241553,1241599,1241626,1241713,1241726,1242116,1242537,1242607,1242759,1242770,1242794,1243694,1243840,1243920,1243976,1244303,1244317,1244466,1244551,1245284-1245285,1245711,1245738,1245746,1245764,1245809,1245817,1245929,1245935,1291429,1291446,1291520,1291594,1291680,1291685,1291700,1291704,1291726,1291729,1291797,1291810,1291941
 ,1292090,1292248,1292255,1292260,1292296,1292322,1292507,1292516,1292768,1292827,1292926,1293229,1293577,1293945,1293972,1293976,1293998,1294134,1294136,1294147,1294236,1294470,1294586,1295007,1295303,1295372,1295418,1296251,1296303,1296369,1296691,1297522,1298343,1300265,1302399,1302417,1302539,1302588,1302591,1302613,1305853,1306111,1306275,1306334,1307177,1309865,1309992,1310378,1310428,1310535,1310594,1311702,1311747,1311935,1325361,1327474,1327490,1327495,1327979,1328002,1328038,1328144,1328267-1328268,1328353,1328846-1328847,1328852,1328878,1329388,1329417,1329876,1330258,1330382,1330444,1330520,1335104,1335555,1337441,1338291,1338297,1338314,1338688,1338708,1338713,1338739,1338748,1338810,1339159,1339164,1340556,1341012,1341031,1341034,1341076,1341544,1341560,1342984,1344864-1344865,1344869,1345482,1345740,1346765,1348822,1349215,1349367,1349371,1349380,1349778,1351117,1351772,1352031,1352068,1353572,1354626,1354652,1354876,1354907,1355340,1361007,1361019,1361341,1362508,1365
 519,1365549,1365554,1365556,1365592,1367498,1368065,1368128,1368197-1368198,1371282,1374198,1374800,1374802,1375052,1375089,1376414,1378847,1380175,1380295,1380697,1382843,1383029,1383466,1383483,1383946,1386594,1386601,1387226,1387943,1388975,1389364,1389499,1389658,1389851,1389878,1389928,1390653,1390965,1391020,1391022,1391641,1391935,1392502,1392599,1393061,1393156,1393165,1393542,1393551,1393598,1394519,1396285,1398100,1399174,1401915,1402417,1402421,1403258,1403583,1403588,1403691,1403964,1403982,1404912,1405922,1407131,1407812,1408650,1409146,1409939,1410106,1410203,1413402,1419670-1419681,1421011,1421103,1421380,1421541,1422053,1422100,1423585,1423646,1423837,1423840,1423848,1424977,1425368,1426138,1426264,1426752,1426830,1427197,1427210,1427278,1429201,1434128,1434405,1434414,1434418,1434435,1434476,1434750,1435361,1438602,1438683,1441810,1443763,1443929,1445753,1451678,1452617,1452780,1452967,1453780,1454088,1454217,1455352,1458341,1459599,1461278,1461562,1461580,1461701,1
 461743,1462041,1462293,1462300,1462302,1462321,1462334,1465975,1476359,1477730,1481010,1481627,1482282,1483781,1485350,1490684,1496127,1503528,1507044,1512432,1512471-1512472,1513463,1513472,1514763,1515119,1515237,1515992,1515997,1516023-1516024,1516051-1516052,1516565,1516806,1518184,1520529,1520532,1520539,1522892,1524869,1527103,1527105,1535551,1535591,1537360,1537415,1537555,1537700,1539309,1541705,1541790,1542042,1542069,1542071,1542119,1542129,1542610,1544295,1544316,1545835,1545845,1550691,1550772,1551579,1557320,1560690,1561237,1563066-1563068,1564215,1564576,1564966,1564969,1565531,1566503,1567492,1567494,1568180,1568349,1568872,1569069,1574868,1577200,1577739,1577755,1580626,1580650,1587968,1588772,1590212,1591123,1594156,1595431,1600909,1615219,1615255-1615256,1636874,1637826,1640730,1641564,1643074

Modified: subversion/branches/1.7.x-r1643074/subversion/tests/svn_test.h
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1643074/subversion/tests/svn_test.h?rev=1644082&r1=1644081&r2=1644082&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1643074/subversion/tests/svn_test.h (original)
+++ subversion/branches/1.7.x-r1643074/subversion/tests/svn_test.h Tue Dec  9 15:15:32 2014
@@ -53,6 +53,23 @@ extern "C" {
                                #expr, __FILE__, __LINE__);        \
   } 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.
  */
 #define SVN_TEST_STRING_ASSERT(expr, expected_expr)                 \