~svn/ubuntu/oneiric/subversion/ppa

« back to all changes in this revision

Viewing changes to subversion/tests/cmdline/externals_tests.py

  • Committer: Max Bowsher
  • Date: 2010-07-01 22:34:24 UTC
  • mfrom: (0.4.3 sid)
  • Revision ID: maxb@f2s.com-20100701223424-b2astfwbpjwg5rwh
Tags: 1.6.12dfsg-1svn1
* Merge from debian testing, remaining changes:
  - Create pot file on build.
  - Build a python-subversion-dbg package.
  - (Build-)depend on default-jre-headless/-jdk.
  - Do not apply java-build patch.
  - debian/rules: Manually create the doxygen output directory, otherwise
    we get weird build failures when running parallel builds.
  - Disable the serf backend because serf is in universe.
  - Amend the XS-Python-Version line to ">= 2.4" rather than explicit
    versions (only building for 2.6 in Lucid since that is the only Python
    in Lucid).
* Urgency medium, as it (probably) fixes some FTBFS.
* New upstream version.
  - Fixes some or all cases of inappropriate need for read access to the
    root of the repository.  (Closes: #510883)
* Disable parallel mode for 'make check', which appears to have made
  some build daemons sad.
* svn-bisect: use pegs to support bisecting in deleted branches.
  Thanks Nikita Borodikhin.  (Closes: #582344)
* patches/ruby-test-info: expand for more failures nobody can figure
  out.  Sigh.
* Upgrade from source format 1.0 to 1.0.
* New upstream version.  Rediff a patch or two.
  - Mergeinfo queries no longer require access to repository root.
    (Ref: #510883)
  - Ignores errors reading .svn/ in parent directories.  (Closes: #570271)
* rules: Run 'check' target in parallel mode.

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
 
19
19
# General modules
20
20
import sys
 
21
import re
21
22
import os
22
23
import warnings
23
24
 
1198
1199
                                        None, None, None, None, None,
1199
1200
                                        True)
1200
1201
 
 
1202
########################################################################
 
1203
 
 
1204
# Issue #3351.
 
1205
def switch_relative_external(sbox):
 
1206
  "switch a relative external"
 
1207
 
 
1208
  sbox.build()
 
1209
  wc_dir = sbox.wc_dir
 
1210
  repo_url = sbox.repo_url
 
1211
 
 
1212
  # Create a relative external in A/D on ../B
 
1213
  A_path = os.path.join(wc_dir, 'A')
 
1214
  A_copy_path = os.path.join(wc_dir, 'A_copy')
 
1215
  A_copy_url = repo_url + '/A_copy'
 
1216
  D_path = os.path.join(A_path, 'D')
 
1217
  ext_path = os.path.join(D_path, 'ext')
 
1218
  externals_prop = "../B ext\n"
 
1219
  change_external(D_path, externals_prop)
 
1220
  svntest.actions.run_and_verify_svn(None, None, [],
 
1221
                                     'ci', '-m', 'log msg',
 
1222
                                     '--quiet', wc_dir)
 
1223
 
 
1224
  # Update our working copy, and create a "branch" (A => A_copy)
 
1225
  svntest.actions.run_and_verify_svn(None, None, [], 'up',
 
1226
                                     '--quiet', wc_dir)
 
1227
  svntest.actions.run_and_verify_svn(None, None, [], 'cp',
 
1228
                                     '--quiet', A_path, A_copy_path)
 
1229
  svntest.actions.run_and_verify_svn(None, None, [],
 
1230
                                     'ci', '-m', 'log msg',
 
1231
                                     '--quiet', wc_dir)
 
1232
 
 
1233
  # Okay.  We now want to switch A to A_copy, which *should* cause
 
1234
  # A/D/ext to point to the URL for A_copy/D/ext.
 
1235
  svntest.actions.run_and_verify_svn(None, None, [], 'sw',
 
1236
                                     '--quiet', A_copy_url, A_path)
 
1237
 
 
1238
  expected_infos = [
 
1239
    { 'Path' : re.escape(D_path),
 
1240
      'URL' : sbox.repo_url + '/A_copy/D',
 
1241
      },
 
1242
    { 'Path' : re.escape(ext_path),
 
1243
      'URL' : sbox.repo_url + '/A_copy/B',
 
1244
      },
 
1245
    ]
 
1246
  svntest.actions.run_and_verify_info(expected_infos, D_path, ext_path)
 
1247
 
 
1248
#----------------------------------------------------------------------
 
1249
 
 
1250
# Issue #3552
 
1251
def wc_repos_file_externals(sbox):
 
1252
  "tag directory with file externals from wc to url"
 
1253
 
 
1254
  sbox.build()
 
1255
  wc_dir = sbox.wc_dir
 
1256
  repo_url = sbox.repo_url
 
1257
 
 
1258
  # Add a file A/theta.
 
1259
  theta_path = os.path.join(wc_dir, 'A', 'theta')
 
1260
  svntest.main.file_write(theta_path, 'theta', 'w')
 
1261
  svntest.main.run_svn(None, 'add', theta_path)
 
1262
 
 
1263
  # Created expected output tree for 'svn ci'
 
1264
  expected_output = svntest.wc.State(wc_dir, {
 
1265
    'A/theta' : Item(verb='Adding'),
 
1266
    })
 
1267
 
 
1268
  # Create expected status tree
 
1269
  expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
 
1270
  expected_status.add({
 
1271
    'A/theta' : Item(status='  ', wc_rev=2),
 
1272
    })
 
1273
 
 
1274
  # Commit the new file, creating revision 2.
 
1275
  svntest.actions.run_and_verify_commit(wc_dir, expected_output,
 
1276
                                        expected_status, None, wc_dir)
 
1277
 
 
1278
 
 
1279
  # Create a file external on the file A/theta
 
1280
  C = os.path.join(wc_dir, 'A', 'C')
 
1281
  external = os.path.join(C, 'theta')
 
1282
  externals_prop = "^/A/theta theta\n"
 
1283
 
 
1284
  # Set and commit the property.
 
1285
  change_external(C, externals_prop)
 
1286
 
 
1287
 
 
1288
  # Now, /A/C/theta is designated as a file external pointing to
 
1289
  # the file /A/theta, but the external file is not there yet.
 
1290
  # Try to actually insert the external file via a verified update:
 
1291
  expected_output = svntest.wc.State(wc_dir, {
 
1292
      'A/C/theta'      : Item(status='E '),
 
1293
    })
 
1294
 
 
1295
  expected_disk = svntest.main.greek_state.copy()
 
1296
  expected_disk.add({
 
1297
    'A/theta'      : Item('theta'),
 
1298
    'A/C'          : Item(props={'svn:externals':externals_prop}),
 
1299
    'A/C/theta'    : Item('theta'),
 
1300
    })
 
1301
 
 
1302
  expected_status = svntest.actions.get_virginal_state(wc_dir, 3)
 
1303
  expected_status.add({
 
1304
    'A/theta'   : Item(status='  ', wc_rev=3),
 
1305
    })
 
1306
 
 
1307
  svntest.actions.run_and_verify_update(wc_dir,
 
1308
                                        expected_output,
 
1309
                                        expected_disk,
 
1310
                                        expected_status,
 
1311
                                        None, None, None, None, None,
 
1312
                                        True)
 
1313
 
 
1314
  # Copy A/C to a new tag in the repos
 
1315
  tag_url = repo_url + '/A/I'
 
1316
  svntest.main.run_svn(None, 'cp', C, tag_url, '-m', 'create tag')
 
1317
 
 
1318
  # Try to actually insert the external file (A/I/theta) via a verified update:
 
1319
  expected_output = svntest.wc.State(wc_dir, {
 
1320
      'A/I'            : Item(status='A '),
 
1321
      'A/I/theta'      : Item(status='E '),
 
1322
    })
 
1323
 
 
1324
  expected_disk = svntest.main.greek_state.copy()
 
1325
  expected_disk.add({
 
1326
    'A/theta'      : Item('theta'),
 
1327
    'A/C'          : Item(props={'svn:externals':externals_prop}),
 
1328
    'A/C/theta'    : Item('theta'),
 
1329
    'A/I'          : Item(props={'svn:externals':externals_prop}),
 
1330
    'A/I/theta'    : Item('theta'),
 
1331
    })
 
1332
 
 
1333
  expected_status = svntest.actions.get_virginal_state(wc_dir, 4)
 
1334
  expected_status.add({
 
1335
    'A/theta'   : Item(status='  ', wc_rev=4),
 
1336
    'A/I'       : Item(status='  ', wc_rev=4),
 
1337
    })
 
1338
 
 
1339
  svntest.actions.run_and_verify_update(wc_dir,
 
1340
                                        expected_output,
 
1341
                                        expected_disk,
 
1342
                                        expected_status,
 
1343
                                        None, None, None, None, None,
 
1344
                                        True)
 
1345
 
1201
1346
 
1202
1347
########################################################################
1203
1348
# Run the tests
1223
1368
              can_place_file_external_into_dir_external,
1224
1369
              external_into_path_with_spaces,
1225
1370
              binary_file_externals,
 
1371
              switch_relative_external,
 
1372
              wc_repos_file_externals,
1226
1373
             ]
1227
1374
 
1228
1375
if __name__ == '__main__':