Further improve SVN path normalization and fix test regressions.

Review Request #11042 — Created June 11, 2020 and submitted

Information

Review Board
release-3.0.x

Reviewers

My previous change for SVN path normalization didn't actually work as
well as I had thought. It was tested in the CI environment that
originally unveiled the problems we had with quoting behavior, but those
tests were performed against a svn+ssh:// URL rather than the
file:// URL that the patch was ultimately written against.

It turns out that these two types of URLs have different restrictions. A
file:// URL cannot use non-printable characters (character codes 0
through 31), even if escaped, whereas other URLs can.

This change updates our tests to check against both. We now check
character codes 32+ for file:// URLs and 0+ for others. We also
validate that non-printable character codes aren't provided in a file
path, catching errors before it hits Subversion.

Unit tests pass on Python 2.7 and 3.x (when applied to the release-4.0.x
branch).

Unit tests also pass with this patch in the CI environment.

Summary ID
Further improve SVN path normalization and fix test regressions.
My previous change for SVN path normalization didn't actually work as well as I had thought. It was tested in the CI environment that originally unveiled the problems we had with quoting behavior, but those tests were performed against a `svn+ssh://` URL rather than the `file://` URL that the patch was ultimately written against. It turns out that these two types of URLs have different restrictions. A `file://` URL cannot use non-printable characters (character codes 0 through 31), even if escaped, whereas other URLs can. This change updates our tests to check against both. We now check character codes 32+ for `file://` URLs and 0+ for others. We also validate that non-printable character codes aren't provided in a file path, catching errors before it hits Subversion.
b3a7f08892ea042a90fae91c857c133aa11653e8
david
  1. Ship It!
  2. 
      
chipx86
Review request changed
Status:
Completed
Change Summary:
Pushed to release-3.0.x (3287e03)