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