You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Julian Foad <ju...@apache.org> on 2022/04/06 14:01:46 UTC

Pristines-on-demand: fix disabled tests (#4891)

One of the main things blocking pristines-on-demand now is a few edge
case test failures.

It would be great if we could get some further eyes on these.

On the branch, these failures have been converted to XFAIL by adding
'@Wimp' decorators.

Some of them seem to fail even when run against the old WC format,
presumably due to changes that had to be made in libsvn_wc. I suppose
these are the most important to fix, to avoid regressions in existing
behaviour, whereas edge cases in the new pristines-on-demand mode can be
prioritised lower.

One ticket summarises all these test failures (except the auth-denied
case which is #4888):

  https://subversion.apache.org/issue/4891

Could anyone help review these test problems to see which might be
blockers and need fixing?


=== Windows-specific issues

A few of these are Windows-specific. I can't very well investigate those
myself. Who could volunteer to look at those? They are:

    externals_tests.py ... ... ...:
      update_modify_file_external(),
      remap_file_external_with_prop_del(),
      file_external_recorded_info():
        existing issue (Windows only)

These tests are commented with "# Existing issue: `src_stream` not
closed in externals.c:apply_textdelta()"

Does that mean it's a problem already on trunk? Or a hidden problem? If
someone could please take a look, that would be great. If not, could
anyone volunteer to test a possible fix if one of us unixers made a guess?


=== The other issues

    basic_tests.py 8 basic_commit_corruption
    basic_tests.py 9 basic_update_corruption
    revert_tests.py 2 revert_reexpand_keyword
    trans_tests.py 1 keywords_from_birth
    trans_tests.py 3 eol_change_is_text_mod
    update_tests.py 57 skip_access_denied
    upgrade_tests.py 16 replaced_files
    upgrade_tests.py 7 basic_upgrade_1_0

(I obtained the list by diffing the tests on trunk and the branch,
looking for addition of "@Wimp" and similar on the branch tests.)

Daniel, you already investigated and commented on some of them. Might
you have some time to look further? If so, may I propose you start at
the beginning of this list, as you have already added insightful
comments/tests/investigations about some of those.

I will now start at the end of that list and work backwards. I will
spend just a short time on each working out whether it's an easy fix,
fixing if so, and postponing if not. So that we meet somewhere in the
middle and don't overlap, I will post each time I work through a test or
small group of similar tests (such as the two 'trans' tests).


=== Running a test case

Quick reminder on running a test case with a specific WC format:

$ (SRC_DIR=...; cd obj-dir/subversion/tests/cmdline/ && \
    python3 $SRC_DIR/subversion/tests/cmdline/basic_tests.py 8 \
    --bin=$SRC_DIR/bin \
    --config-file=$SRC_DIR/subversion/tests/tests.conf \
    --wc-format-version=1.15 )

Remember to test also with --wc-format-version=1.8.

Thanks,

- Julian



Re: Pristines-on-demand: fix disabled tests (#4891)

Posted by Julian Foad <ju...@foad.me.uk>.
Today I have done a quick review/fix/postpone cycle on the 'upgrade',
'update', and 'trans' tests. Details in
https://subversion.apache.org/issue/4891 .

- Julian


Re: Pristines-on-demand: fix disabled tests (#4891)

Posted by Johan Corveleyn <jc...@gmail.com>.
Okay, with --wc-format-version=1.8, I now get these (X)FAILs and
XPASSes (fails_wc-format-version1.8.log in attachment):

[[[
XFAIL: diff-diff3-test 18: 3-way merge, double add
XFAIL: dirent_uri-test 47: test match with RFC 6125 s. 6.4.3 Rule 3
XFAIL: op-depth-test 42: mixed_rev_move
       [[needs different libsvn_wc entry point]]
XFAIL: op-depth-test 56: commit_moved_away_descendant
XFAIL: op-depth-test 68: move retract (issue 4336)
XFAIL: op-depth-test 69: move/delete file externals (issue 4293)
XFAIL: op-depth-test 75: move more than once, revert intermediate
XFAIL: op-depth-test 79: del4: delete AAA
XFAIL: op-depth-test 80: del4: add AAA
XFAIL: op-depth-test 81: del4: replace AAA
XFAIL: op-depth-test 83: del4: replace self AAA
XFAIL: op-depth-test 85: move4: delete AAA
XFAIL: op-depth-test 87: move4: replace AAA
XFAIL: op-depth-test 86: move4: add AAA
XFAIL: op-depth-test 89: move4: replace self AAA
XFAIL: op-depth-test 95: move within mixed move
XFAIL: basic_tests.py 9: basic corruption detection on update
       [[Relies on wc.text_base_path()]]
XFAIL: basic_tests.py 63: peg rev resolution on non-existent wc paths
XFAIL: blame_tests.py 15: blame -g handles changes from empty mergeinfo
XFAIL: changelist_tests.py 5: diff --changelist (wc-wc and repos-wc)
XFAIL: commit_tests.py 66: last changed of copied subdir
XFAIL: commit_tests.py 74: commit sees tree conflict on unversioned path
XFAIL: copy_tests.py 105: copy and move conflicts
XFAIL: depth_tests.py 49: deleted & moved items left untouched
XFAIL: depth_tests.py 50: unversioned files in excluded directory
XFAIL: diff_tests.py 77: diff repo to wc of a copy
XFAIL: diff_tests.py 90: diff unversioned files in git format
XFAIL: diff_tests.py 92: diff summary repo wc local copy unmodified
XFAIL: diff_tests.py 94: diff git format copy
XFAIL: export_tests.py 11: export working copy at base revision
XFAIL: externals_tests.py 25: update that modifies a file external
XFAIL: externals_tests.py 39: file external remap segfaults due to deleted props
XFAIL: externals_tests.py 44: move with file externals
XFAIL: externals_tests.py 49: file externals versioned obstruction
XFAIL: externals_tests.py 68: check file external recorded info
XFAIL: log_tests.py 46: log --use-merge-history --search
XFAIL: log_tests.py 47: log --use-merge-history --xml
XFAIL: merge_automatic_tests.py 16: cherry2_fwd
XFAIL: merge_automatic_tests.py 17: cherry3_fwd
XFAIL: merge_tests.py 49: avoid repeated merges for cyclic merging
XFAIL: merge_tests.py 64: merge target with non inheritable mergeinfo
XFAIL: merge_tests.py 114: don't inherit bogus mergeinfo
XFAIL: merge_tests.py 115: don't inherit bogus working mergeinfo
XFAIL: patch_tests.py 52: hunks that overlap
XFAIL: patch_tests.py 78: patching a specific merge
XFAIL: patch_tests.py 80: patch empty prop
XFAIL: patch_tests.py 81: patch working copy root
XFAIL: patch_tests.py 82: patch working copy root
XFAIL: pegrev_parse_tests.py 11: add file '.@tau' without pegrev escape
       [[The error message mentions '@tau' instead of '.@tau']]
XFAIL: pegrev_parse_tests.py 23: add file 'E/@tau' without pegrev escape
       [[The error message mentions 'E@tau' instead of 'E/@tau']]
XFAIL: pegrev_parse_tests.py 25: add file 'E/.@tau' without pegrev escape
       [[The error message mentions 'E@tau' instead of 'E/.@tau']]
XFAIL: pegrev_parse_tests.py 28: add file 'E/@' without pegrev escape
       [[The error message is E200009 but should be E125001]]
XFAIL: pegrev_parse_tests.py 39: create directory '.@T' without pegrev escape
       [[The error message mentions '@T' instead of '.@T']]
XFAIL: pegrev_parse_tests.py 49: create directory 'E/@T' without pegrev escape
       [[The error message mentions 'E@T' instead of 'E/@T']]
XFAIL: pegrev_parse_tests.py 51: create directory 'E/.@T' without pegrev escape
       [[The error message mentions 'E@T' instead of 'E/.@T']]
XFAIL: pegrev_parse_tests.py 52: create directory 'E/@' without pegrev escape
       [[Reports error that E exists but should be E125001 for E/@]]
XFAIL: pegrev_parse_tests.py 63: remove '.@kappa' without pegrev escape
       [[The error message mentions '@kappa' instead of '.@kappa']]
XFAIL: pegrev_parse_tests.py 77: remove 'B/@beta' without pegrev escape
       [[The error message mentions 'B@beta' instead of 'B/@beta']]
XFAIL: pegrev_parse_tests.py 79: remove 'D/.@delta' without pegrev escape
       [[The error message mentions 'D@delta' instead of 'D/.@delta']]
XFAIL: pegrev_parse_tests.py 80: remove 'B/@' without pegrev escape
       [[Removes B instead of reporting E125001 for B/@]]
XFAIL: pegrev_parse_tests.py 81: remove missing 'E/@' without pegrev escape
       [[Removes E instead of reporting ENOENT or E125001 for E/@]]
XFAIL: pegrev_parse_tests.py 82: remove missing '@/@' without pegrev escape
       [[Removes @ instead of reporting ENOENT or E125001 for @/@]]
XFAIL: pegrev_parse_tests.py 83: rename 'iota' to 'E/@tau with pegrev escape
       [[Rename creates 'E/@tau@' instead of '@/@tau']]
XFAIL: pegrev_parse_tests.py 84: rename 'iota' to 'E/@tau without pegrev escape
       [[Rename creates 'E@tau' instead of failing]]
XFAIL: revert_tests.py 25: revert a copy with depth=files
XFAIL: revert_tests.py 26: revert a nested add with depth=immediates
XFAIL: revert_tests.py 36: revert_remove_added
XFAIL: special_tests.py 24: cat added symlink
XFAIL: stat_tests.py 37: modified before translation, unmodified after
XFAIL: svnmover_tests.py 25: replace by deleting and copying
XFAIL: svnmover_tests.py 26: see the revision just committed
XFAIL: svnmover_tests.py 27: simple branch
XFAIL: svnrdump_tests.py 51: load: mergeinfo that contains r0
XFAIL: switch_tests.py 9: switch a file to a dir and back to the file
XFAIL: trans_tests.py 10: able to handle inconsistent eols on add
XFAIL: trans_tests.py 11: able to handle inconsistent mime on add
XFAIL: update_tests.py 57: access denied paths should be skipped
XFAIL: update_tests.py 81: update_keywords_on_shortcut
At least one test XPASSED, checking
R:\test_debug-p--wc-format-version1.8\tests.log
XPASS: basic_tests.py 8: basic corruption detection on commit
       [[Relies on wc.text_base_path()]]
XPASS: revert_tests.py 2: revert reexpands manually contracted keyword
Summary of test results:
  2523 tests PASSED
  197 tests SKIPPED
  78 tests XFAILED (18 WORK-IN-PROGRESS)
  2 tests XPASSED (1 WORK-IN-PROGRESS)
]]]


With --wc-format-version=1.15 I get these (see
fails_wc-format-version1.15.log) in attachment:

[[[
XFAIL: diff-diff3-test 18: 3-way merge, double add
XFAIL: dirent_uri-test 47: test match with RFC 6125 s. 6.4.3 Rule 3
XFAIL: op-depth-test 42: mixed_rev_move
       [[needs different libsvn_wc entry point]]
XFAIL: op-depth-test 56: commit_moved_away_descendant
XFAIL: op-depth-test 68: move retract (issue 4336)
XFAIL: op-depth-test 69: move/delete file externals (issue 4293)
XFAIL: op-depth-test 75: move more than once, revert intermediate
XFAIL: op-depth-test 79: del4: delete AAA
XFAIL: op-depth-test 80: del4: add AAA
XFAIL: op-depth-test 81: del4: replace AAA
XFAIL: op-depth-test 83: del4: replace self AAA
XFAIL: op-depth-test 85: move4: delete AAA
XFAIL: op-depth-test 86: move4: add AAA
XFAIL: op-depth-test 87: move4: replace AAA
XFAIL: op-depth-test 89: move4: replace self AAA
XFAIL: op-depth-test 95: move within mixed move
XFAIL: basic_tests.py 8: basic corruption detection on commit
       [[Relies on wc.text_base_path()]]
XFAIL: basic_tests.py 9: basic corruption detection on update
       [[Relies on wc.text_base_path()]]
XFAIL: basic_tests.py 63: peg rev resolution on non-existent wc paths
XFAIL: blame_tests.py 15: blame -g handles changes from empty mergeinfo
XFAIL: changelist_tests.py 5: diff --changelist (wc-wc and repos-wc)
XFAIL: commit_tests.py 66: last changed of copied subdir
XFAIL: commit_tests.py 74: commit sees tree conflict on unversioned path
XFAIL: copy_tests.py 105: copy and move conflicts
XFAIL: depth_tests.py 49: deleted & moved items left untouched
XFAIL: depth_tests.py 50: unversioned files in excluded directory
XFAIL: diff_tests.py 77: diff repo to wc of a copy
XFAIL: diff_tests.py 90: diff unversioned files in git format
XFAIL: diff_tests.py 92: diff summary repo wc local copy unmodified
XFAIL: diff_tests.py 94: diff git format copy
XFAIL: export_tests.py 11: export working copy at base revision
XFAIL: externals_tests.py 25: update that modifies a file external
XFAIL: externals_tests.py 39: file external remap segfaults due to deleted props
XFAIL: externals_tests.py 44: move with file externals
XFAIL: externals_tests.py 49: file externals versioned obstruction
XFAIL: externals_tests.py 68: check file external recorded info
XFAIL: log_tests.py 46: log --use-merge-history --search
XFAIL: log_tests.py 47: log --use-merge-history --xml
XFAIL: merge_automatic_tests.py 16: cherry2_fwd
XFAIL: merge_automatic_tests.py 17: cherry3_fwd
XFAIL: merge_tests.py 49: avoid repeated merges for cyclic merging
XFAIL: merge_tests.py 64: merge target with non inheritable mergeinfo
XFAIL: merge_tests.py 114: don't inherit bogus mergeinfo
XFAIL: merge_tests.py 115: don't inherit bogus working mergeinfo
XFAIL: patch_tests.py 52: hunks that overlap
XFAIL: patch_tests.py 78: patching a specific merge
XFAIL: patch_tests.py 80: patch empty prop
XFAIL: patch_tests.py 81: patch working copy root
XFAIL: patch_tests.py 82: patch working copy root
XFAIL: pegrev_parse_tests.py 11: add file '.@tau' without pegrev escape
       [[The error message mentions '@tau' instead of '.@tau']]
XFAIL: pegrev_parse_tests.py 23: add file 'E/@tau' without pegrev escape
       [[The error message mentions 'E@tau' instead of 'E/@tau']]
XFAIL: pegrev_parse_tests.py 25: add file 'E/.@tau' without pegrev escape
       [[The error message mentions 'E@tau' instead of 'E/.@tau']]
XFAIL: pegrev_parse_tests.py 28: add file 'E/@' without pegrev escape
       [[The error message is E200009 but should be E125001]]
XFAIL: pegrev_parse_tests.py 39: create directory '.@T' without pegrev escape
       [[The error message mentions '@T' instead of '.@T']]
XFAIL: pegrev_parse_tests.py 49: create directory 'E/@T' without pegrev escape
       [[The error message mentions 'E@T' instead of 'E/@T']]
XFAIL: pegrev_parse_tests.py 51: create directory 'E/.@T' without pegrev escape
       [[The error message mentions 'E@T' instead of 'E/.@T']]
XFAIL: pegrev_parse_tests.py 52: create directory 'E/@' without pegrev escape
       [[Reports error that E exists but should be E125001 for E/@]]
XFAIL: pegrev_parse_tests.py 63: remove '.@kappa' without pegrev escape
       [[The error message mentions '@kappa' instead of '.@kappa']]
XFAIL: pegrev_parse_tests.py 77: remove 'B/@beta' without pegrev escape
       [[The error message mentions 'B@beta' instead of 'B/@beta']]
XFAIL: pegrev_parse_tests.py 79: remove 'D/.@delta' without pegrev escape
       [[The error message mentions 'D@delta' instead of 'D/.@delta']]
XFAIL: pegrev_parse_tests.py 80: remove 'B/@' without pegrev escape
       [[Removes B instead of reporting E125001 for B/@]]
XFAIL: pegrev_parse_tests.py 81: remove missing 'E/@' without pegrev escape
       [[Removes E instead of reporting ENOENT or E125001 for E/@]]
XFAIL: pegrev_parse_tests.py 82: remove missing '@/@' without pegrev escape
       [[Removes @ instead of reporting ENOENT or E125001 for @/@]]
XFAIL: pegrev_parse_tests.py 83: rename 'iota' to 'E/@tau with pegrev escape
       [[Rename creates 'E/@tau@' instead of '@/@tau']]
XFAIL: pegrev_parse_tests.py 84: rename 'iota' to 'E/@tau without pegrev escape
       [[Rename creates 'E@tau' instead of failing]]
XFAIL: revert_tests.py 2: revert reexpands manually contracted keyword
XFAIL: revert_tests.py 25: revert a copy with depth=files
XFAIL: revert_tests.py 26: revert a nested add with depth=immediates
XFAIL: revert_tests.py 36: revert_remove_added
XFAIL: special_tests.py 24: cat added symlink
XFAIL: stat_tests.py 37: modified before translation, unmodified after
XFAIL: svnmover_tests.py 25: replace by deleting and copying
XFAIL: svnmover_tests.py 26: see the revision just committed
XFAIL: svnmover_tests.py 27: simple branch
XFAIL: svnrdump_tests.py 51: load: mergeinfo that contains r0
XFAIL: switch_tests.py 9: switch a file to a dir and back to the file
XFAIL: trans_tests.py 1: commit new files with keywords active from birth
XFAIL: trans_tests.py 10: able to handle inconsistent eols on add
XFAIL: trans_tests.py 11: able to handle inconsistent mime on add
XFAIL: update_tests.py 57: access denied paths should be skipped
XFAIL: update_tests.py 81: update_keywords_on_shortcut
XFAIL: upgrade_tests.py 16: upgrade with base and working replaced files
At least one test FAILED, checking
R:\test_debug-p--wc-format-version1.15\tests.log
FAIL:  update_tests.py 83: missing tmp update caused segfault
Summary of test results:
  2521 tests PASSED
  196 tests SKIPPED
  82 tests XFAILED (19 WORK-IN-PROGRESS)
  1 test FAILED
]]]

-- 
Johan

Re: Pristines-on-demand: fix disabled tests (#4891)

Posted by Julian Foad <ju...@apache.org>.
Johan Corveleyn wrote:
>Should be fixed now, with r1899654.

Great! Thanks.

>I suppose not passing the option uses wc-format-version=1.15

No...

>automatically? Or what is the default? Is format 1.8 the same as 1.14
>and anything in between?

Default would be the format '31' which is 1.8 through 1.14.

- Julian

Re: Pristines-on-demand: fix disabled tests (#4891)

Posted by Johan Corveleyn <jc...@gmail.com>.
On Thu, Apr 7, 2022 at 11:31 AM Julian Foad <ju...@apache.org> wrote:
> Now can you run the test suite with --wc-format-version=1.15? On Unixy
> systems that is done by, for example:
>
> $ make svnserveautocheck WC_FORMAT_VERSION=1.15 ...

Okay, passing that option to win-tests.py (the test runner on Windows) failed.
Should be fixed now, with r1899654.

I suppose not passing the option uses wc-format-version=1.15
automatically? Or what is the default? Is format 1.8 the same as 1.14
and anything in between?

Should I run with 'None' and 1.8? Or 1.8 and 1.15?

-- 
Johan

Re: Pristines-on-demand: fix disabled tests (#4891)

Posted by Johan Corveleyn <jc...@gmail.com>.
On Thu, Apr 7, 2022 at 11:31 AM Julian Foad <ju...@apache.org> wrote:
> Jun Omae wrote:
> >> FAIL:  diff_tests.py 48: svn diff --diff-cmd provides the correct arguments
> >
> > I've posted patch for the failure.
> > See https://lists.apache.org/thread/2o0xtqfzy9xg8wzxscj2wb641p2kyo9c
>
> Thank you, Jun Omae. Sorry, I missed that before. Committed now in r1899645.

Thanks, confirmed fixed on Windows.

-- 
Johan

Re: Pristines-on-demand: fix disabled tests (#4891)

Posted by Julian Foad <ju...@apache.org>.
Johan, that's a great start, thanks.

Now can you run the test suite with --wc-format-version=1.15? On Unixy
systems that is done by, for example:

$ make svnserveautocheck WC_FORMAT_VERSION=1.15 ...

Jun Omae wrote:
>> FAIL:  diff_tests.py 48: svn diff --diff-cmd provides the correct arguments
> 
> I've posted patch for the failure.
> See https://lists.apache.org/thread/2o0xtqfzy9xg8wzxscj2wb641p2kyo9c

Thank you, Jun Omae. Sorry, I missed that before. Committed now in r1899645.

- Julian


Re: Pristines-on-demand: fix disabled tests (#4891)

Posted by Jun Omae <ju...@gmail.com>.
On Thu, Apr 7, 2022 at 2:47 PM Johan Corveleyn <jc...@gmail.com> wrote:
> This is in fails.log for that one FAIL:
> [[[
> ...
>   File "C:\Python39\lib\sre_parse.py", line 426, in _escape
>     raise source.error("bad escape %s" % escape, len(escape))
> re.error: bad escape \c at position 32 (line 1, column 33)
> FAIL:  diff_tests.py 48: svn diff --diff-cmd provides the correct arguments
> ]]]

I've posted patch for the failure.
See https://lists.apache.org/thread/2o0xtqfzy9xg8wzxscj2wb641p2kyo9c

-- 
Jun Omae <ju...@gmail.com> (大前 潤)

Re: Pristines-on-demand: fix disabled tests (#4891)

Posted by Johan Corveleyn <jc...@gmail.com>.
On Wed, Apr 6, 2022 at 5:12 PM Julian Foad <ju...@apache.org> wrote:
> Johan Corveleyn wrote:
> >> A few of these are Windows-specific. I can't very well investigate those
> >> myself. Who could volunteer to look at those? They are:
> >>
> >>     externals_tests.py ... ... ...:
> >>       update_modify_file_external(),
> >>       remap_file_external_with_prop_del(),
> >>       file_external_recorded_info():
> >>         existing issue (Windows only)
> >>
> >> These tests are commented with "# Existing issue: `src_stream` not
> >> closed in externals.c:apply_textdelta()"
> >>
> >> Does that mean it's a problem already on trunk? Or a hidden problem? If
> >> someone could please take a look, that would be great. If not, could
> >> anyone volunteer to test a possible fix if one of us unixers made a guess?
> >
> > I have no idea what those tests are about, but I can probably help
> > test things on Windows.
> > I'll try to get the branch built on my Windows machine tonight, and
> > then I can help try out various things.
>
> Great! Thanks.
>
> I found also this one is a Windows-only test:
>
>     update_tests.py 57 skip_access_denied(): access denied paths should
> be skipped
>
> (In principle I don't see why we shouldn't test a similar access-denied
> condition on unix-like systems, though the error code would be
> different. Maybe the answer is the semantics would be so different it
> would fail at a different place in the code path and so be a different
> test case. I don't plan to pursue this.)
>
> I think the current state is this test will report XFAIL/WIMP with
> pristines-on-demand enabled (currently meaning WC format 32) and XPASS otherwise.
>
> This test was introduced in r1143071 with the log message "Make svn
> update handle some access denied scenarios with a proper skip. This
> makes it less likely that the database will be closed after updating with
> working queue items left."
>
> I would guess that gracefully handling the case where the working file
> on disk has this particular kind of OS lock isn't of primary concern.

Just quickly reporting that I've got the branch built and up and
running on Windows now. Running the test suite currently gives these
(X)FAILS and XPASSES. Will look closer tonight ...

[[[
XFAIL: diff-diff3-test 18: 3-way merge, double add
XFAIL: dirent_uri-test 47: test match with RFC 6125 s. 6.4.3 Rule 3
XFAIL: op-depth-test 42: mixed_rev_move
       [[needs different libsvn_wc entry point]]
XFAIL: op-depth-test 56: commit_moved_away_descendant
XFAIL: op-depth-test 68: move retract (issue 4336)
XFAIL: op-depth-test 69: move/delete file externals (issue 4293)
XFAIL: op-depth-test 75: move more than once, revert intermediate
XFAIL: op-depth-test 79: del4: delete AAA
XFAIL: op-depth-test 80: del4: add AAA
XFAIL: op-depth-test 81: del4: replace AAA
XFAIL: op-depth-test 83: del4: replace self AAA
XFAIL: op-depth-test 85: move4: delete AAA
XFAIL: op-depth-test 86: move4: add AAA
XFAIL: op-depth-test 87: move4: replace AAA
XFAIL: op-depth-test 89: move4: replace self AAA
XFAIL: op-depth-test 95: move within mixed move
XFAIL: basic_tests.py 9: basic corruption detection on update
       [[Relies on wc.text_base_path()]]
XFAIL: basic_tests.py 63: peg rev resolution on non-existent wc paths
XFAIL: blame_tests.py 15: blame -g handles changes from empty mergeinfo
XFAIL: changelist_tests.py 5: diff --changelist (wc-wc and repos-wc)
XFAIL: commit_tests.py 66: last changed of copied subdir
XFAIL: commit_tests.py 74: commit sees tree conflict on unversioned path
XFAIL: copy_tests.py 105: copy and move conflicts
XFAIL: depth_tests.py 49: deleted & moved items left untouched
XFAIL: depth_tests.py 50: unversioned files in excluded directory
XFAIL: diff_tests.py 77: diff repo to wc of a copy
XFAIL: diff_tests.py 90: diff unversioned files in git format
XFAIL: diff_tests.py 92: diff summary repo wc local copy unmodified
XFAIL: diff_tests.py 94: diff git format copy
XFAIL: export_tests.py 11: export working copy at base revision
XFAIL: externals_tests.py 25: update that modifies a file external
XFAIL: externals_tests.py 39: file external remap segfaults due to deleted props
XFAIL: externals_tests.py 44: move with file externals
XFAIL: externals_tests.py 49: file externals versioned obstruction
XFAIL: externals_tests.py 68: check file external recorded info
XFAIL: log_tests.py 46: log --use-merge-history --search
XFAIL: log_tests.py 47: log --use-merge-history --xml
XFAIL: merge_automatic_tests.py 16: cherry2_fwd
XFAIL: merge_automatic_tests.py 17: cherry3_fwd
XFAIL: merge_tests.py 49: avoid repeated merges for cyclic merging
XFAIL: merge_tests.py 64: merge target with non inheritable mergeinfo
XFAIL: merge_tests.py 114: don't inherit bogus mergeinfo
XFAIL: merge_tests.py 115: don't inherit bogus working mergeinfo
XFAIL: patch_tests.py 52: hunks that overlap
XFAIL: patch_tests.py 78: patching a specific merge
XFAIL: patch_tests.py 80: patch empty prop
XFAIL: patch_tests.py 81: patch working copy root
XFAIL: patch_tests.py 82: patch working copy root
XFAIL: pegrev_parse_tests.py 11: add file '.@tau' without pegrev escape
       [[The error message mentions '@tau' instead of '.@tau']]
XFAIL: pegrev_parse_tests.py 23: add file 'E/@tau' without pegrev escape
       [[The error message mentions 'E@tau' instead of 'E/@tau']]
XFAIL: pegrev_parse_tests.py 25: add file 'E/.@tau' without pegrev escape
       [[The error message mentions 'E@tau' instead of 'E/.@tau']]
XFAIL: pegrev_parse_tests.py 28: add file 'E/@' without pegrev escape
       [[The error message is E200009 but should be E125001]]
XFAIL: pegrev_parse_tests.py 39: create directory '.@T' without pegrev escape
       [[The error message mentions '@T' instead of '.@T']]
XFAIL: pegrev_parse_tests.py 49: create directory 'E/@T' without pegrev escape
       [[The error message mentions 'E@T' instead of 'E/@T']]
XFAIL: pegrev_parse_tests.py 51: create directory 'E/.@T' without pegrev escape
       [[The error message mentions 'E@T' instead of 'E/.@T']]
XFAIL: pegrev_parse_tests.py 52: create directory 'E/@' without pegrev escape
       [[Reports error that E exists but should be E125001 for E/@]]
XFAIL: pegrev_parse_tests.py 63: remove '.@kappa' without pegrev escape
       [[The error message mentions '@kappa' instead of '.@kappa']]
XFAIL: pegrev_parse_tests.py 77: remove 'B/@beta' without pegrev escape
       [[The error message mentions 'B@beta' instead of 'B/@beta']]
XFAIL: pegrev_parse_tests.py 79: remove 'D/.@delta' without pegrev escape
       [[The error message mentions 'D@delta' instead of 'D/.@delta']]
XFAIL: pegrev_parse_tests.py 80: remove 'B/@' without pegrev escape
       [[Removes B instead of reporting E125001 for B/@]]
XFAIL: pegrev_parse_tests.py 81: remove missing 'E/@' without pegrev escape
       [[Removes E instead of reporting ENOENT or E125001 for E/@]]
XFAIL: pegrev_parse_tests.py 82: remove missing '@/@' without pegrev escape
       [[Removes @ instead of reporting ENOENT or E125001 for @/@]]
XFAIL: pegrev_parse_tests.py 83: rename 'iota' to 'E/@tau with pegrev escape
       [[Rename creates 'E/@tau@' instead of '@/@tau']]
XFAIL: pegrev_parse_tests.py 84: rename 'iota' to 'E/@tau without pegrev escape
       [[Rename creates 'E@tau' instead of failing]]
XFAIL: revert_tests.py 25: revert a copy with depth=files
XFAIL: revert_tests.py 26: revert a nested add with depth=immediates
XFAIL: revert_tests.py 36: revert_remove_added
XFAIL: special_tests.py 24: cat added symlink
XFAIL: stat_tests.py 37: modified before translation, unmodified after
XFAIL: svnmover_tests.py 25: replace by deleting and copying
XFAIL: svnmover_tests.py 26: see the revision just committed
XFAIL: svnmover_tests.py 27: simple branch
XFAIL: svnrdump_tests.py 51: load: mergeinfo that contains r0
XFAIL: switch_tests.py 9: switch a file to a dir and back to the file
XFAIL: trans_tests.py 10: able to handle inconsistent eols on add
XFAIL: trans_tests.py 11: able to handle inconsistent mime on add
XFAIL: update_tests.py 57: access denied paths should be skipped
XFAIL: update_tests.py 81: update_keywords_on_shortcut
At least one test XPASSED, checking R:\test_debug-p\tests.log
XPASS: basic_tests.py 8: basic corruption detection on commit
       [[Relies on wc.text_base_path()]]
XPASS: revert_tests.py 2: revert reexpands manually contracted keyword
At least one test FAILED, checking R:\test_debug-p\tests.log
FAIL:  diff_tests.py 48: svn diff --diff-cmd provides the correct arguments
Summary of test results:
  2522 tests PASSED
  197 tests SKIPPED
  78 tests XFAILED (18 WORK-IN-PROGRESS)
  2 tests XPASSED (1 WORK-IN-PROGRESS)
  1 test FAILED
]]]

This is in fails.log for that one FAIL:
[[[
W: CWD: R:\test_debug-p\subversion\tests\cmdline\svn-test-work\working_copies\diff_tests-48
Traceback (most recent call last):
  File "C:\research\svn\dev\pristines-on-demand-on-mwf\subversion\tests\cmdline\svntest\main.py",
line 1978, in run
    rc = self.pred.run(sandbox)
  File "C:\research\svn\dev\pristines-on-demand-on-mwf\subversion\tests\cmdline\svntest\testcase.py",
line 178, in run
    result = self.func(sandbox)
  File "C:\research\svn\dev\pristines-on-demand-on-mwf\subversion\tests\cmdline\diff_tests.py",
line 3085, in diff_external_diffcmd
    expected_output = svntest.verify.RegexListOutput([
  File "C:\research\svn\dev\pristines-on-demand-on-mwf\subversion\tests\cmdline\svntest\verify.py",
line 267, in __init__
    self.expected_res = [re.compile(e) for e in expected]
  File "C:\research\svn\dev\pristines-on-demand-on-mwf\subversion\tests\cmdline\svntest\verify.py",
line 267, in <listcomp>
    self.expected_res = [re.compile(e) for e in expected]
  File "C:\Python39\lib\re.py", line 252, in compile
    return _compile(pattern, flags)
  File "C:\Python39\lib\re.py", line 304, in _compile
    p = sre_compile.compile(pattern, flags)
  File "C:\Python39\lib\sre_compile.py", line 764, in compile
    p = sre_parse.parse(p, flags)
  File "C:\Python39\lib\sre_parse.py", line 948, in parse
    p = _parse_sub(source, state, flags & SRE_FLAG_VERBOSE, 0)
  File "C:\Python39\lib\sre_parse.py", line 443, in _parse_sub
    itemsappend(_parse(source, state, verbose, nested + 1,
  File "C:\Python39\lib\sre_parse.py", line 525, in _parse
    code = _escape(source, this, state)
  File "C:\Python39\lib\sre_parse.py", line 426, in _escape
    raise source.error("bad escape %s" % escape, len(escape))
re.error: bad escape \c at position 32 (line 1, column 33)
FAIL:  diff_tests.py 48: svn diff --diff-cmd provides the correct arguments
]]]

-- 
Johan

Re: Pristines-on-demand: fix disabled tests (#4891)

Posted by Julian Foad <ju...@apache.org>.
Johan Corveleyn wrote:
>> A few of these are Windows-specific. I can't very well investigate those
>> myself. Who could volunteer to look at those? They are:
>> 
>>     externals_tests.py ... ... ...:
>>       update_modify_file_external(),
>>       remap_file_external_with_prop_del(),
>>       file_external_recorded_info():
>>         existing issue (Windows only)
>> 
>> These tests are commented with "# Existing issue: `src_stream` not
>> closed in externals.c:apply_textdelta()"
>> 
>> Does that mean it's a problem already on trunk? Or a hidden problem? If
>> someone could please take a look, that would be great. If not, could
>> anyone volunteer to test a possible fix if one of us unixers made a guess?
> 
> I have no idea what those tests are about, but I can probably help
> test things on Windows.
> I'll try to get the branch built on my Windows machine tonight, and
> then I can help try out various things.

Great! Thanks.

I found also this one is a Windows-only test:

    update_tests.py 57 skip_access_denied(): access denied paths should
be skipped

(In principle I don't see why we shouldn't test a similar access-denied
condition on unix-like systems, though the error code would be
different. Maybe the answer is the semantics would be so different it
would fail at a different place in the code path and so be a different
test case. I don't plan to pursue this.)

I think the current state is this test will report XFAIL/WIMP with
pristines-on-demand enabled (currently meaning WC format 32) and XPASS otherwise.

This test was introduced in r1143071 with the log message "Make svn
update handle some access denied scenarios with a proper skip. This
makes it less likely that the database will be closed after updating with
working queue items left."

I would guess that gracefully handling the case where the working file
on disk has this particular kind of OS lock isn't of primary concern.

- Julian


Re: Pristines-on-demand: fix disabled tests (#4891)

Posted by Johan Corveleyn <jc...@gmail.com>.
On Wed, Apr 6, 2022 at 4:02 PM Julian Foad <ju...@apache.org> wrote:
> === Windows-specific issues
>
> A few of these are Windows-specific. I can't very well investigate those
> myself. Who could volunteer to look at those? They are:
>
>     externals_tests.py ... ... ...:
>       update_modify_file_external(),
>       remap_file_external_with_prop_del(),
>       file_external_recorded_info():
>         existing issue (Windows only)
>
> These tests are commented with "# Existing issue: `src_stream` not
> closed in externals.c:apply_textdelta()"
>
> Does that mean it's a problem already on trunk? Or a hidden problem? If
> someone could please take a look, that would be great. If not, could
> anyone volunteer to test a possible fix if one of us unixers made a guess?

I have no idea what those tests are about, but I can probably help
test things on Windows.
I'll try to get the branch built on my Windows machine tonight, and
then I can help try out various things.

-- 
Johan