Project

General

Profile

Actions

Bug #1366

closed

Pathname#relative_path_from should handle the scenario where the argument uses a different case for the Windows drive letter

Added by shri (Shri Borde) about 12 years ago. Updated almost 10 years ago.

Status:
Closed
Priority:
Normal
Target version:
ruby -v:
1.9.1p0
Backport:
[ruby-core:23164]

Description

=begin
On Windows, the case of the drive letter can be either upper case or lower case (eg, "C:" or "c:") on the same machine at the same time in different Command Prompt Windows (see below for details). Dir.pwd will return either lower-case or upper-case for the drive letter (“C:/” or “c:/”) depending on the Command Prompt it is run from. However, FILE always uses lower-case drive letter. This can cause an ArgumentError when comparing Dir.pwd and FILE using Pathname#relative_path_from. This happens with version 1.9.1p0 as well. Pathname#relative_path_from should deal with the case where the case of the argument is different.

Here is the result when running from a Command Prompt which is using capital case for the drive letter as can be seen from the prompt "C:\Users\sborde".

C:\Users\sborde> cat c:\bugs\rb1.rb
require 'pathname'
Pathname.new(Dir.pwd).relative_path_from(Pathname.new(FILE))

C:\Users\sborde> c:\Ruby\bin\ruby.exe c:\bugs\test.rb
c:/Ruby/lib/ruby/1.8/pathname.rb:709:in `relative_path_from': different prefix:
"C:/" and "c:/bugs/test.rb" (ArgumentError)
from c:/bugs/test.rb:2

Here are the steps to get two Command Prompts with different cases for the drive letter:

  1. Create two shortcuts on the Desktop pointing to "c:\Windows\system32\cmd.exe"
  2. Right-click to change the properties.
  3. For one of the shortcuts, set the "Start in" folder to "C:\" (upper case). For the other one, set it to "c:\" (lower case).
  4. Double the click the shortcuts
  5. Observe that the prompt in the first one is "C:>" (upper case), and "c:\" (lower case) in the second one.
  6. Run test.rb shown above from both Command Prompts. An ArgumentError will be thrown from the first Command Prompt with the upper case prompt. =end
Actions #1

Updated by nobu (Nobuyoshi Nakada) about 12 years ago

  • Category set to lib
  • Status changed from Open to Assigned
  • Assignee set to yugui (Yuki Sonoda)
  • Target version set to 1.9.1

=begin
Already fixed in r23093, and would be backported by the next patch release.
=end

Actions #2

Updated by yugui (Yuki Sonoda) almost 12 years ago

  • Status changed from Assigned to Closed

=begin

=end

Actions

Also available in: Atom PDF