Merge pull request #8504 from chrisroberts/fix/win-unc-paths

Do not prefix Windows paths if UNC prefix already exists
This commit is contained in:
Chris Roberts 2017-04-24 08:47:42 -07:00 committed by GitHub
commit 3fabe90f36
2 changed files with 17 additions and 4 deletions

View File

@ -188,11 +188,16 @@ module Vagrant
def windows_unc_path(path)
path = path.gsub("/", "\\")
# If the path is just a drive letter, then return that as-is
return path + "\\" if path =~ /^[a-zA-Z]:\\?$/
# Convert to UNC path
"\\\\?\\" + path.gsub("/", "\\")
if path =~ /^[a-zA-Z]:\\?$/
# If the path is just a drive letter, then return that as-is
path + "\\"
elsif path.start_with?("\\\\")
# If the path already starts with `\\` assume UNC and return as-is
path
else
"\\\\?\\" + path.gsub("/", "\\")
end
end
# Returns a boolean noting whether the terminal supports color.

View File

@ -55,5 +55,13 @@ describe Vagrant::Util::Platform do
it "correctly converts a path" do
expect(described_class.windows_unc_path("c:/foo").to_s).to eql("\\\\?\\c:\\foo")
end
context "when given a UNC path" do
let(:unc_path){ "\\\\srvname\\path" }
it "should not modify the path" do
expect(described_class.windows_unc_path(unc_path).to_s).to eql(unc_path)
end
end
end
end