For git style patches there is some magic that also allows creating symlinks via the file mode. I think we have some test cases on that behavior. you might be able to use this for building a regression test for this case.
Bert On Thu, Jul 19, 2018 at 8:51 PM, Daniel Shahaf <d...@daniel.shahaf.name> wrote: > Dmitry Pavlenko wrote on Thu, Jul 19, 2018 at 19:03:30 +0200: > > I'm attaching a reproducing test. > > > > Thanks for the test! > > > I'm not 100% sure that > > > > [ > > 'Index: %s\n' % sbox.path('iota'), > > '=========================================================== > ========\n', > > '--- %s\t(revision 1)\n' % sbox.path('iota'), > > '+++ %s\t(working copy)\n' % sbox.path('iota'), > > '@@ -1 +1 @@\n', > > '-This is the file \'iota\'.\n', > > '+link iota\n', > > '\ No newline at end of file\n', > > '\n', > > 'Property changes on: iota\n', > > '___________________________________________________________ > ________\n', > > 'Added: svn:special\n', > > '## -0,0 +1 ##\n', > > '+*\n', > > '\ No newline at end of property\n', > > ] > > > > is the expected output but definitely the diff command shouldn't fail > with > > exit code 1 as it does now. > > There isn't a patch flying around that produces this output, right? > > In this case, I suggest that we add a regression test that simply expects > any > output and exit code zero — that's «run_and_verify_svn(svntest. > verify.AnyOutput, > [], 'diff', wc_dir)» — and add a comment reminding us to write a more > explicit > expectation once the issue is fixed. This would make sure the patch start > passing as soon as we change the behaviour, even if the expected output > predicted is a little off. > > > +++ subversion/tests/cmdline/diff_tests.py (working copy) > > @@ -5201,7 +5201,36 @@ def diff_summary_repo_wc_local_ > copy_unmodified(sbo > > '--old=' + sbox.ospath('iota') + '@HEAD', > > '--new=' + sbox.ospath('iota2')) > > > > +def diff_file_replaced_by_symlink(sbox): > > There should be an "@XFail()" decorator here, so `make test` (and > `./diff_tests.py`) still exit 0 despite this test (X)FAILing. > > > + "diff base vs working: symlink replaces a file" > > + sbox.build() > > Since this test doesn't commit, it can pass read_only=True, then build() > would > be cheaper. > > > + svntest.actions.run_and_verify_svn([ > > + '\ No newline at end of file\n', > > Please don't add new instances of backslash-space; it's an > undefined/deprecated > syntax that generates warnings in newer Pythons. See r1834787. > > Cheers, > > Daniel >