> -----Original Message-----
> From: br...@apache.org [mailto:br...@apache.org]
> Sent: woensdag 18 juli 2012 03:46
> To: comm...@subversion.apache.org
> Subject: svn commit: r1362739 -
> /subversion/trunk/subversion/tests/cmdline/basic_tests.py
> 
> Author: brane
> Date: Wed Jul 18 01:46:05 2012
> New Revision: 1362739
> 
> URL: http://svn.apache.org/viewvc?rev=1362739&view=rev
> Log:
> Add some XFAIL tests for issue #4193.
> 
> * subversion/tests/cmdline/basic_tests.py
>   (status_through_unversioned_symlink,
> status_through_versioned_symlink,
>    add_through_unversioned_symlink, add_through_versioned_symlink):
> New tests.
> 
> Modified:
>     subversion/trunk/subversion/tests/cmdline/basic_tests.py
> 
> Modified: subversion/trunk/subversion/tests/cmdline/basic_tests.py
> URL:
> http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/
> basic_tests.py?rev=1362739&r1=1362738&r2=1362739&view=diff
> ==========================================================
> ====================
> --- subversion/trunk/subversion/tests/cmdline/basic_tests.py (original)
> +++ subversion/trunk/subversion/tests/cmdline/basic_tests.py Wed Jul 18
> 01:46:05 2012
> @@ -2983,6 +2983,54 @@ def delete_conflicts_one_of_many(sbox):
>    verify_file_deleted("failed to remove conflict file",
>                        sbox.ospath('A/D/G/rho.mine'))
> 
> +@XFail()
> +@Issue(4193)
> +@SkipUnless(svntest.main.is_posix_os)
> +def status_through_unversioned_symlink(sbox):
> +  """file status through unversioned symlink"""
> +
> +  sbox.build(read_only = True)
> +  state = svntest.actions.get_virginal_state(sbox.wc_dir, 1)
> +  os.symlink('A', sbox.ospath('Z'))
> +  svntest.actions.run_and_verify_status(sbox.ospath('Z/mu'), state)
> +
> +@XFail()
> +@Issue(4193)
> +@SkipUnless(svntest.main.is_posix_os)
> +def status_through_versioned_symlink(sbox):
> +  """file status through versioned symlink"""
> +
> +  sbox.build()
> +  state = svntest.actions.get_virginal_state(sbox.wc_dir, 1)
> +  os.symlink('A', sbox.ospath('Z'))
> +  sbox.simple_add('Z')
> +  state.add({'Z': Item(status='A ')})
> +  svntest.actions.run_and_verify_status(sbox.ospath('Z/mu'), state)
> +
> +@XFail()
> +@Issue(4193)
> +@SkipUnless(svntest.main.is_posix_os)
> +def add_through_unversioned_symlink(sbox):
> +  """add file through unversioned symlink"""
> +
> +  sbox.build()
> +  os.symlink('A', sbox.ospath('Z'))
> +  sbox.simple_append('A/kappa', 'xyz', True)
> +  sbox.simple_add('Z/kappa')
> +
> +@XFail()
> +@Issue(4193)
> +@SkipUnless(svntest.main.is_posix_os)
> +def add_through_versioned_symlink(sbox):
> +  """add file through versioned symlink"""
> +
> +  sbox.build()
> +  os.symlink('A', sbox.ospath('Z'))
> +  sbox.simple_add('Z')
> +  sbox.simple_append('A/kappa', 'xyz', True)
> +  sbox.simple_add('Z/kappa')
> +
> +

All these test, exercise exactly the same code in libsvn_wc, where we transform 
an absolute path into a wcroot, working copy relative path by looking it up in 
the database.

In 1.6 all these cases worked because we found a .svn directory with metadata 
in the immediate parent (=the symlinked directory). 

I'm not sure if we really want to support all these corner cases (including 
those where this symlink is versioned itself). We never intentionally broke 
this feature.


I think we can only fix this problem by starting reading symlink targets and 
handle/parse them ourself. Which is something we never did in the generic case 
before and which will probably open a lot of new issues.



For this class of issues I would have used one of the less common *_tests.py 
files than basic_tests, as that is also used by many as the light version of 
running our entire test suite. 

sbox has a few optional arguments that would make the tests cheaper to run, by 
not duplicating the repository etc. These would apply to all 4 tests.

        Bert 


Reply via email to