On Wed, Apr 6, 2022 at 5:12 PM Julian Foad <julianf...@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

Reply via email to