Fix invocation issues when running brz in Python module directories.
Review Request #12301 — Created May 25, 2022 and submitted
When running Bazaar or Breezy, we construct a plugin path in order to
rbsshas an SSH provider. To avoid overriding existing
plugins, we factor in an existing path in the environment. If that's
empty, the plugin path ends up with a trailing
Breezy seems to, intentionally or otherwise, treat an empty path after
:as "current directory." This can cause failures if trying to run
from within a Python module path (which can happen in unit test runs).
We now strip away any trailing
:, from either our provided path or an
existing plugin path, in order to avoid this. We also no longer convert
to UTF-8, as
SCMTool.popen()normalizes environment variables for us.
While working on this, I found that we sometimes also joined the
repository path to itself when trying to validate a repository. This
actually worked, which is why we didn't notice it before (presumably,
Bazaar and Breezy handle the path until it finds a Bazaar repository,
ignoring the rest). However, it's clearly wrong. We no longer perform
this join for repository validation.
Unit tests now pass. This was discovered on my release-5.0.x tree, but
is being backported to release-4.0.x.