pathname2 1.3.1 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES +14 -0
 - data/MANIFEST +4 -0
 - data/README +16 -5
 - data/lib/pathname2.rb +81 -18
 - data/test/tc_pathname.rb +74 -20
 - data/test/tc_pathname_win.rb +248 -28
 - metadata +5 -7
 
    
        data/CHANGES
    CHANGED
    
    | 
         @@ -1,3 +1,17 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            == 1.4.0 -
         
     | 
| 
      
 2 
     | 
    
         
            +
            * Added destructive and non-destructive methods for some methods - pstrip,
         
     | 
| 
      
 3 
     | 
    
         
            +
              pstrip!, undecorate, undecorate!, clean and clean!.
         
     | 
| 
      
 4 
     | 
    
         
            +
            * Added a C extension version of this package.  You can use the C version
         
     | 
| 
      
 5 
     | 
    
         
            +
              instead of the pure Ruby version instead.  See the README for more details.
         
     | 
| 
      
 6 
     | 
    
         
            +
            * Fixed bug in the root method where the result wasn't guaranteed to be a
         
     | 
| 
      
 7 
     | 
    
         
            +
              Pathname class.
         
     | 
| 
      
 8 
     | 
    
         
            +
            * Fixed bugs in Windows version where the receiver was inadvertantly modified
         
     | 
| 
      
 9 
     | 
    
         
            +
              in some cases, and added tests to check for this in the future.
         
     | 
| 
      
 10 
     | 
    
         
            +
            * Modified the Dir.glob facade so that it (temporarily) changes to the path
         
     | 
| 
      
 11 
     | 
    
         
            +
              directory, globs on that path, then returns to the original directory.
         
     | 
| 
      
 12 
     | 
    
         
            +
            * Added the bench_pathname.rb script to let you benchmark all Pathname
         
     | 
| 
      
 13 
     | 
    
         
            +
              methods.
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
       1 
15 
     | 
    
         
             
            == 1.3.1 - 21-Nov-2005
         
     | 
| 
       2 
16 
     | 
    
         
             
            * Added the Pathname#children method.
         
     | 
| 
       3 
17 
     | 
    
         
             
            * Added tests for the Pathname#children method.
         
     | 
    
        data/MANIFEST
    CHANGED
    
    
    
        data/README
    CHANGED
    
    | 
         @@ -5,7 +5,7 @@ 
     | 
|
| 
       5 
5 
     | 
    
         
             
               * Ruby 1.8.0 or later
         
     | 
| 
       6 
6 
     | 
    
         
             
               * facade 1.0.0 or later (available on the RAA)
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
            == Installation
         
     | 
| 
      
 8 
     | 
    
         
            +
            == Installation, pure Ruby
         
     | 
| 
       9 
9 
     | 
    
         
             
            === Manual Installation
         
     | 
| 
       10 
10 
     | 
    
         
             
               ruby test/tc_pathname.rb (Unix, optional)
         
     | 
| 
       11 
11 
     | 
    
         
             
               ruby test/tc_pathname_win.rb (Windows, optional)
         
     | 
| 
         @@ -15,6 +15,13 @@ 
     | 
|
| 
       15 
15 
     | 
    
         
             
               ruby test/tc_pathname.rb (Unix, optional)
         
     | 
| 
       16 
16 
     | 
    
         
             
               ruby test/tc_pathname_win.rb (Windows, optional)
         
     | 
| 
       17 
17 
     | 
    
         
             
               gem install pathname2-<version>.gem
         
     | 
| 
      
 18 
     | 
    
         
            +
               
         
     | 
| 
      
 19 
     | 
    
         
            +
            == Installation, C extension
         
     | 
| 
      
 20 
     | 
    
         
            +
               cd to the 'ext' directory.
         
     | 
| 
      
 21 
     | 
    
         
            +
               ruby extconf.rb
         
     | 
| 
      
 22 
     | 
    
         
            +
               make
         
     | 
| 
      
 23 
     | 
    
         
            +
               run appropriate test (optional)
         
     | 
| 
      
 24 
     | 
    
         
            +
               make install
         
     | 
| 
       18 
25 
     | 
    
         | 
| 
       19 
26 
     | 
    
         
             
            == Synopsis
         
     | 
| 
       20 
27 
     | 
    
         
             
               require "pathname2"
         
     | 
| 
         @@ -28,7 +35,7 @@ 
     | 
|
| 
       28 
35 
     | 
    
         
             
               path1.dirname # "/foo/bar"
         
     | 
| 
       29 
36 
     | 
    
         
             
               path1.to_a    # ['foo','bar','baz']
         
     | 
| 
       30 
37 
     | 
    
         | 
| 
       31 
     | 
    
         
            -
               #  
     | 
| 
      
 38 
     | 
    
         
            +
               # Windows
         
     | 
| 
       32 
39 
     | 
    
         
             
               path1 = "C:/foo/bar/baz"
         
     | 
| 
       33 
40 
     | 
    
         
             
               path2 = "../zap"
         
     | 
| 
       34 
41 
     | 
    
         | 
| 
         @@ -39,7 +46,7 @@ 
     | 
|
| 
       39 
46 
     | 
    
         
             
            == Win32 Notes
         
     | 
| 
       40 
47 
     | 
    
         
             
               All forward slashes are converted to backslashes for Pathname objects.
         
     | 
| 
       41 
48 
     | 
    
         | 
| 
       42 
     | 
    
         
            -
            == Differences between Unix and  
     | 
| 
      
 49 
     | 
    
         
            +
            == Differences between Unix and Windows
         
     | 
| 
       43 
50 
     | 
    
         
             
               If your pathname consists solely of ".", or "..", the return
         
     | 
| 
       44 
51 
     | 
    
         
             
               value for Pathname#clean will be different. On Win32, "\\" is returned,
         
     | 
| 
       45 
52 
     | 
    
         
             
               while on Unix "." is returned.  I consider this an extreme edge case and
         
     | 
| 
         @@ -73,8 +80,12 @@ 
     | 
|
| 
       73 
80 
     | 
    
         
             
               not the one defined in the FileUtils module.
         
     | 
| 
       74 
81 
     | 
    
         | 
| 
       75 
82 
     | 
    
         
             
            == Known Issues
         
     | 
| 
       76 
     | 
    
         
            -
               You cannot pass a frozen string to the constructor on  
     | 
| 
       77 
     | 
    
         
            -
               There is an unresolved issue with Win32API and frozen 
     | 
| 
      
 83 
     | 
    
         
            +
               You cannot pass a frozen string to the constructor on Windows using the
         
     | 
| 
      
 84 
     | 
    
         
            +
               pure Ruby version.  There is an unresolved issue with Win32API and frozen
         
     | 
| 
      
 85 
     | 
    
         
            +
               objects.
         
     | 
| 
      
 86 
     | 
    
         
            +
               
         
     | 
| 
      
 87 
     | 
    
         
            +
               Pathname#glob is not yet implemented in the C version.
         
     | 
| 
      
 88 
     | 
    
         
            +
               Pathname#find is not implemented properly in the C version.
         
     | 
| 
       78 
89 
     | 
    
         | 
| 
       79 
90 
     | 
    
         
             
            == License
         
     | 
| 
       80 
91 
     | 
    
         
             
               Ruby's
         
     | 
    
        data/lib/pathname2.rb
    CHANGED
    
    | 
         @@ -45,6 +45,8 @@ class Pathname < String 
     | 
|
| 
       45 
45 
     | 
    
         
             
               extend Facade
         
     | 
| 
       46 
46 
     | 
    
         
             
               facade File
         
     | 
| 
       47 
47 
     | 
    
         
             
               facade Dir
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
               alias :_plus_ :+ # Used to prevent infinite loops in some cases
         
     | 
| 
       48 
50 
     | 
    
         | 
| 
       49 
51 
     | 
    
         
             
               if PLATFORM.match("mswin")
         
     | 
| 
       50 
52 
     | 
    
         
             
                  require "Win32API"
         
     | 
| 
         @@ -75,7 +77,7 @@ class Pathname < String 
     | 
|
| 
       75 
77 
     | 
    
         
             
                     Win32API.new("shlwapi", "PathRemoveBackslash", "P", "P")
         
     | 
| 
       76 
78 
     | 
    
         
             
               end
         
     | 
| 
       77 
79 
     | 
    
         | 
| 
       78 
     | 
    
         
            -
               VERSION  = "1. 
     | 
| 
      
 80 
     | 
    
         
            +
               VERSION  = "1.4.0"
         
     | 
| 
       79 
81 
     | 
    
         
             
               MAX_PATH = 260
         
     | 
| 
       80 
82 
     | 
    
         | 
| 
       81 
83 
     | 
    
         
             
               # Creates and returns a new Pathname object.
         
     | 
| 
         @@ -103,7 +105,7 @@ class Pathname < String 
     | 
|
| 
       103 
105 
     | 
    
         
             
                     end
         
     | 
| 
       104 
106 
     | 
    
         
             
                  end
         
     | 
| 
       105 
107 
     | 
    
         | 
| 
       106 
     | 
    
         
            -
                  # Convert forward slashes to backslashes on  
     | 
| 
      
 108 
     | 
    
         
            +
                  # Convert forward slashes to backslashes on Windows
         
     | 
| 
       107 
109 
     | 
    
         
             
                  path = path.tr("/", @sep) if @win
         
     | 
| 
       108 
110 
     | 
    
         
             
                  super(path)
         
     | 
| 
       109 
111 
     | 
    
         
             
               end
         
     | 
| 
         @@ -133,7 +135,7 @@ class Pathname < String 
     | 
|
| 
       133 
135 
     | 
    
         
             
               # Win32 only
         
     | 
| 
       134 
136 
     | 
    
         
             
               #
         
     | 
| 
       135 
137 
     | 
    
         
             
               # Removes the decoration from a path string.  For example,
         
     | 
| 
       136 
     | 
    
         
            -
               # C:\Path\File[5].txt would become C:\Path\File.txt.
         
     | 
| 
      
 138 
     | 
    
         
            +
               # C:\Path\File[5].txt would become C:\Path\File.txt.  Non-destructive.
         
     | 
| 
       137 
139 
     | 
    
         
             
               def undecorate
         
     | 
| 
       138 
140 
     | 
    
         
             
                  unless @win
         
     | 
| 
       139 
141 
     | 
    
         
             
                     raise NotImplementedError, "not supported on this platform"
         
     | 
| 
         @@ -144,6 +146,20 @@ class Pathname < String 
     | 
|
| 
       144 
146 
     | 
    
         
             
                  Pathname.new(buf.split(0.chr).first)
         
     | 
| 
       145 
147 
     | 
    
         
             
               end
         
     | 
| 
       146 
148 
     | 
    
         | 
| 
      
 149 
     | 
    
         
            +
               # Win32 only
         
     | 
| 
      
 150 
     | 
    
         
            +
               #
         
     | 
| 
      
 151 
     | 
    
         
            +
               # Performs the substitution of Pathname#undecorate in place.
         
     | 
| 
      
 152 
     | 
    
         
            +
               def undecorate!
         
     | 
| 
      
 153 
     | 
    
         
            +
                  unless @win
         
     | 
| 
      
 154 
     | 
    
         
            +
                     raise NotImplementedError, "not supported on this platform"
         
     | 
| 
      
 155 
     | 
    
         
            +
                  end
         
     | 
| 
      
 156 
     | 
    
         
            +
                  buf = 0.chr * MAX_PATH
         
     | 
| 
      
 157 
     | 
    
         
            +
                  buf[0..self.length-1] = self
         
     | 
| 
      
 158 
     | 
    
         
            +
                  @@PathUndecorate.call(buf)
         
     | 
| 
      
 159 
     | 
    
         
            +
                  replace(buf.split(0.chr).first)
         
     | 
| 
      
 160 
     | 
    
         
            +
                  self
         
     | 
| 
      
 161 
     | 
    
         
            +
               end
         
     | 
| 
      
 162 
     | 
    
         
            +
               
         
     | 
| 
       147 
163 
     | 
    
         
             
               # Win32 only
         
     | 
| 
       148 
164 
     | 
    
         
             
               #
         
     | 
| 
       149 
165 
     | 
    
         
             
               # Returns the short path for a long path name.  For example,
         
     | 
| 
         @@ -172,8 +188,23 @@ class Pathname < String 
     | 
|
| 
       172 
188 
     | 
    
         
             
                  Pathname.new(buf.split(0.chr).first)
         
     | 
| 
       173 
189 
     | 
    
         
             
               end
         
     | 
| 
       174 
190 
     | 
    
         | 
| 
       175 
     | 
    
         
            -
               # Removes trailing slash, if present.
         
     | 
| 
      
 191 
     | 
    
         
            +
               # Removes trailing slash, if present.  Non-destructive.
         
     | 
| 
       176 
192 
     | 
    
         
             
               def pstrip
         
     | 
| 
      
 193 
     | 
    
         
            +
                  str = self.dup
         
     | 
| 
      
 194 
     | 
    
         
            +
                  if @win
         
     | 
| 
      
 195 
     | 
    
         
            +
                     @@PathRemoveBackslash.call(str)
         
     | 
| 
      
 196 
     | 
    
         
            +
                     str.strip!
         
     | 
| 
      
 197 
     | 
    
         
            +
                  else
         
     | 
| 
      
 198 
     | 
    
         
            +
                     if str[-1] == @sep
         
     | 
| 
      
 199 
     | 
    
         
            +
                        str.strip!
         
     | 
| 
      
 200 
     | 
    
         
            +
                        str.chop!
         
     | 
| 
      
 201 
     | 
    
         
            +
                     end
         
     | 
| 
      
 202 
     | 
    
         
            +
                  end
         
     | 
| 
      
 203 
     | 
    
         
            +
                  Pathname.new(str)
         
     | 
| 
      
 204 
     | 
    
         
            +
               end
         
     | 
| 
      
 205 
     | 
    
         
            +
               
         
     | 
| 
      
 206 
     | 
    
         
            +
               # Removes trailing slash, if present.  Destructive.
         
     | 
| 
      
 207 
     | 
    
         
            +
               def pstrip!
         
     | 
| 
       177 
208 
     | 
    
         
             
                  if @win
         
     | 
| 
       178 
209 
     | 
    
         
             
                     @@PathRemoveBackslash.call(self)
         
     | 
| 
       179 
210 
     | 
    
         
             
                     strip!
         
     | 
| 
         @@ -275,9 +306,9 @@ class Pathname < String 
     | 
|
| 
       275 
306 
     | 
    
         
             
               # Returns the root directory of the path, or '.' if there is no root
         
     | 
| 
       276 
307 
     | 
    
         
             
               # directory.
         
     | 
| 
       277 
308 
     | 
    
         
             
               #
         
     | 
| 
       278 
     | 
    
         
            -
               # On Unix, this means the '/' character.  On  
     | 
| 
       279 
     | 
    
         
            -
               #  
     | 
| 
       280 
     | 
    
         
            -
               #  
     | 
| 
      
 309 
     | 
    
         
            +
               # On Unix, this means the '/' character.  On Windows, this can refer
         
     | 
| 
      
 310 
     | 
    
         
            +
               # to the drive letter, or the server and share path if the path is a
         
     | 
| 
      
 311 
     | 
    
         
            +
               # UNC path.
         
     | 
| 
       281 
312 
     | 
    
         
             
               def root
         
     | 
| 
       282 
313 
     | 
    
         
             
                  dir = "."   
         
     | 
| 
       283 
314 
     | 
    
         
             
                  if @win
         
     | 
| 
         @@ -285,12 +316,12 @@ class Pathname < String 
     | 
|
| 
       285 
316 
     | 
    
         
             
                     buf[0..self.length-1] = self
         
     | 
| 
       286 
317 
     | 
    
         | 
| 
       287 
318 
     | 
    
         
             
                     if @@PathStripToRoot.call(buf) > 0
         
     | 
| 
       288 
     | 
    
         
            -
                        dir =  
     | 
| 
      
 319 
     | 
    
         
            +
                        dir = buf.split(0.chr).first
         
     | 
| 
       289 
320 
     | 
    
         
             
                     end
         
     | 
| 
       290 
321 
     | 
    
         
             
                  else
         
     | 
| 
       291 
322 
     | 
    
         
             
                     dir = "/" if self =~ /^\//
         
     | 
| 
       292 
323 
     | 
    
         
             
                  end
         
     | 
| 
       293 
     | 
    
         
            -
                  dir
         
     | 
| 
      
 324 
     | 
    
         
            +
                  Pathname.new(dir)
         
     | 
| 
       294 
325 
     | 
    
         
             
               end
         
     | 
| 
       295 
326 
     | 
    
         | 
| 
       296 
327 
     | 
    
         
             
               # Returns whether or not the path consists only of a root directory.
         
     | 
| 
         @@ -352,12 +383,13 @@ class Pathname < String 
     | 
|
| 
       352 
383 
     | 
    
         | 
| 
       353 
384 
     | 
    
         
             
                  # Any path plus "." is the same directory
         
     | 
| 
       354 
385 
     | 
    
         
             
                  return self if string == "."
         
     | 
| 
      
 386 
     | 
    
         
            +
                  return string if self == "."
         
     | 
| 
       355 
387 
     | 
    
         | 
| 
       356 
388 
     | 
    
         
             
                  # Use the builtin PathAppend method if on Windows - much easier
         
     | 
| 
       357 
389 
     | 
    
         
             
                  if @win
         
     | 
| 
       358 
390 
     | 
    
         
             
                     buf = 0.chr * MAX_PATH
         
     | 
| 
       359 
391 
     | 
    
         
             
                     buf[0..self.length-1] = self
         
     | 
| 
       360 
     | 
    
         
            -
                     @@PathAppend.call(buf, string 
     | 
| 
      
 392 
     | 
    
         
            +
                     @@PathAppend.call(buf, string)
         
     | 
| 
       361 
393 
     | 
    
         
             
                     buf.strip!
         
     | 
| 
       362 
394 
     | 
    
         
             
                     return Pathname.new(buf) # PathAppend cleans automatically
         
     | 
| 
       363 
395 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -369,7 +401,8 @@ class Pathname < String 
     | 
|
| 
       369 
401 
     | 
    
         
             
                  new_string = array.join(@sep)
         
     | 
| 
       370 
402 
     | 
    
         | 
| 
       371 
403 
     | 
    
         
             
                  unless relative? || @win
         
     | 
| 
       372 
     | 
    
         
            -
                      
     | 
| 
      
 404 
     | 
    
         
            +
                     temp = @sep + new_string # Add root path back if needed
         
     | 
| 
      
 405 
     | 
    
         
            +
                     new_string.replace(temp)
         
     | 
| 
       373 
406 
     | 
    
         
             
                  end
         
     | 
| 
       374 
407 
     | 
    
         | 
| 
       375 
408 
     | 
    
         
             
                  Pathname.new(new_string).clean
         
     | 
| 
         @@ -411,11 +444,39 @@ class Pathname < String 
     | 
|
| 
       411 
444 
     | 
    
         
             
                     end
         
     | 
| 
       412 
445 
     | 
    
         
             
                  }
         
     | 
| 
       413 
446 
     | 
    
         
             
                  final = final.join(@sep)
         
     | 
| 
       414 
     | 
    
         
            -
                  final = root 
     | 
| 
      
 447 
     | 
    
         
            +
                  final = root._plus_(final) if root != "."
         
     | 
| 
       415 
448 
     | 
    
         
             
                  final = "." if final.empty?
         
     | 
| 
       416 
449 
     | 
    
         
             
                  Pathname.new(final)
         
     | 
| 
       417 
450 
     | 
    
         
             
               end
         
     | 
| 
       418 
451 
     | 
    
         
             
               alias :cleanpath :clean
         
     | 
| 
      
 452 
     | 
    
         
            +
               
         
     | 
| 
      
 453 
     | 
    
         
            +
               # Removes unnecessary '.' paths and ellides '..' paths appropriately.
         
     | 
| 
      
 454 
     | 
    
         
            +
               # Modifies the receiver in place.
         
     | 
| 
      
 455 
     | 
    
         
            +
               def clean!
         
     | 
| 
      
 456 
     | 
    
         
            +
                  return self if self.empty?
         
     | 
| 
      
 457 
     | 
    
         
            +
             
     | 
| 
      
 458 
     | 
    
         
            +
                  if @win
         
     | 
| 
      
 459 
     | 
    
         
            +
                     path = 0.chr * MAX_PATH
         
     | 
| 
      
 460 
     | 
    
         
            +
                     if @@PathCanonicalize.call(path, self) > 0
         
     | 
| 
      
 461 
     | 
    
         
            +
                        replace(path.split(0.chr).first)
         
     | 
| 
      
 462 
     | 
    
         
            +
                     end
         
     | 
| 
      
 463 
     | 
    
         
            +
                     return self
         
     | 
| 
      
 464 
     | 
    
         
            +
                  end
         
     | 
| 
      
 465 
     | 
    
         
            +
             
     | 
| 
      
 466 
     | 
    
         
            +
                  final = []
         
     | 
| 
      
 467 
     | 
    
         
            +
                  to_a.each{ |element|
         
     | 
| 
      
 468 
     | 
    
         
            +
                     next if element == "."
         
     | 
| 
      
 469 
     | 
    
         
            +
                     final.push(element)
         
     | 
| 
      
 470 
     | 
    
         
            +
                     if element == ".." && self != ".."
         
     | 
| 
      
 471 
     | 
    
         
            +
                        2.times{ final.pop }
         
     | 
| 
      
 472 
     | 
    
         
            +
                     end
         
     | 
| 
      
 473 
     | 
    
         
            +
                  }
         
     | 
| 
      
 474 
     | 
    
         
            +
                  final = final.join(@sep)
         
     | 
| 
      
 475 
     | 
    
         
            +
                  final = root + final if root != "."
         
     | 
| 
      
 476 
     | 
    
         
            +
                  final = "." if final.empty?
         
     | 
| 
      
 477 
     | 
    
         
            +
                  replace(Pathname.new(final))
         
     | 
| 
      
 478 
     | 
    
         
            +
                  self
         
     | 
| 
      
 479 
     | 
    
         
            +
               end
         
     | 
| 
       419 
480 
     | 
    
         | 
| 
       420 
481 
     | 
    
         
             
               #-- Find facade
         
     | 
| 
       421 
482 
     | 
    
         | 
| 
         @@ -434,7 +495,7 @@ class Pathname < String 
     | 
|
| 
       434 
495 
     | 
    
         
             
                  if self == "."
         
     | 
| 
       435 
496 
     | 
    
         
             
                     Find.find(self){ |f| yield Pathname.new(f.sub(%r{\A\./}, '')) }
         
     | 
| 
       436 
497 
     | 
    
         
             
                  else
         
     | 
| 
       437 
     | 
    
         
            -
                     Find.find(self)  
     | 
| 
      
 498 
     | 
    
         
            +
                     Find.find(self){ |f| yield Pathname.new(f) }
         
     | 
| 
       438 
499 
     | 
    
         
             
                  end
         
     | 
| 
       439 
500 
     | 
    
         
             
               end
         
     | 
| 
       440 
501 
     | 
    
         | 
| 
         @@ -464,11 +525,13 @@ class Pathname < String 
     | 
|
| 
       464 
525 
     | 
    
         | 
| 
       465 
526 
     | 
    
         
             
               # Dir.glob
         
     | 
| 
       466 
527 
     | 
    
         
             
               def glob(*args)
         
     | 
| 
       467 
     | 
    
         
            -
                   
     | 
| 
       468 
     | 
    
         
            -
                      
     | 
| 
       469 
     | 
    
         
            -
             
     | 
| 
       470 
     | 
    
         
            -
                      
     | 
| 
       471 
     | 
    
         
            -
             
     | 
| 
      
 528 
     | 
    
         
            +
                  Dir.chdir(self){
         
     | 
| 
      
 529 
     | 
    
         
            +
                     if block_given?
         
     | 
| 
      
 530 
     | 
    
         
            +
                        Dir.glob(*args){ |file| yield Pathname.new(file) }
         
     | 
| 
      
 531 
     | 
    
         
            +
                     else
         
     | 
| 
      
 532 
     | 
    
         
            +
                        Dir.glob(*args).map{ |file| Pathname.new(file) }
         
     | 
| 
      
 533 
     | 
    
         
            +
                     end
         
     | 
| 
      
 534 
     | 
    
         
            +
                  }
         
     | 
| 
       472 
535 
     | 
    
         
             
               end
         
     | 
| 
       473 
536 
     | 
    
         | 
| 
       474 
537 
     | 
    
         
             
               # Dir.chdir
         
     | 
    
        data/test/tc_pathname.rb
    CHANGED
    
    | 
         @@ -1,11 +1,18 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            ##############################################################################
         
     | 
| 
       2 
2 
     | 
    
         
             
            # tc_pathname.rb
         
     | 
| 
       3 
3 
     | 
    
         
             
            #
         
     | 
| 
       4 
     | 
    
         
            -
            # Test suite for the pathname package (Unix)
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
      
 4 
     | 
    
         
            +
            # Test suite for the pathname package (Unix).  If you pass a 'c' as command
         
     | 
| 
      
 5 
     | 
    
         
            +
            # line option, it will test against the C extension.  Otherwise, it will run
         
     | 
| 
      
 6 
     | 
    
         
            +
            # the tests against the pure Ruby version.
         
     | 
| 
      
 7 
     | 
    
         
            +
            ##############################################################################
         
     | 
| 
       6 
8 
     | 
    
         
             
            Dir.chdir ".." if File.basename(Dir.pwd) == "test"
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            # Test against the C extension if a 'c' is provided as an argument.
         
     | 
| 
      
 11 
     | 
    
         
            +
            if ARGV[0] && ARGV[0].chomp.downcase == "c"
         
     | 
| 
      
 12 
     | 
    
         
            +
               $LOAD_PATH.unshift Dir.pwd + "/ext"
         
     | 
| 
      
 13 
     | 
    
         
            +
            else
         
     | 
| 
      
 14 
     | 
    
         
            +
               $LOAD_PATH.unshift Dir.pwd + "/lib"
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
       9 
16 
     | 
    
         | 
| 
       10 
17 
     | 
    
         
             
            if PLATFORM.match("mswin")
         
     | 
| 
       11 
18 
     | 
    
         
             
               STDERR.puts("Please run 'tc_pathname_win.rb' instead.")
         
     | 
| 
         @@ -19,10 +26,18 @@ class TC_Pathname < Test::Unit::TestCase 
     | 
|
| 
       19 
26 
     | 
    
         
             
               def setup
         
     | 
| 
       20 
27 
     | 
    
         
             
                  @abs_path = Pathname.new("/usr/local/bin")
         
     | 
| 
       21 
28 
     | 
    
         
             
                  @rel_path = Pathname.new("usr/local/bin")
         
     | 
| 
      
 29 
     | 
    
         
            +
                  @cur_path = Pathname.new(Dir.pwd)
         
     | 
| 
       22 
30 
     | 
    
         | 
| 
       23 
31 
     | 
    
         
             
                  @abs_array = []
         
     | 
| 
       24 
32 
     | 
    
         
             
                  @rel_array = []
         
     | 
| 
       25 
33 
     | 
    
         
             
               end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
               # Convenience method to verify that the receiver was not modified
         
     | 
| 
      
 36 
     | 
    
         
            +
               # except perhaps slashes
         
     | 
| 
      
 37 
     | 
    
         
            +
               def assert_non_destructive
         
     | 
| 
      
 38 
     | 
    
         
            +
                  assert_equal("/usr/local/bin", @abs_path)
         
     | 
| 
      
 39 
     | 
    
         
            +
                  assert_equal("usr/local/bin", @rel_path)
         
     | 
| 
      
 40 
     | 
    
         
            +
               end
         
     | 
| 
       26 
41 
     | 
    
         | 
| 
       27 
42 
     | 
    
         
             
               # Convenience method for test_plus
         
     | 
| 
       28 
43 
     | 
    
         
             
               def assert_pathname_plus(a, b, c)
         
     | 
| 
         @@ -41,7 +56,7 @@ class TC_Pathname < Test::Unit::TestCase 
     | 
|
| 
       41 
56 
     | 
    
         
             
               end
         
     | 
| 
       42 
57 
     | 
    
         | 
| 
       43 
58 
     | 
    
         
             
               def test_version
         
     | 
| 
       44 
     | 
    
         
            -
                  assert_equal("1. 
     | 
| 
      
 59 
     | 
    
         
            +
                  assert_equal("1.4.0", Pathname::VERSION)
         
     | 
| 
       45 
60 
     | 
    
         
             
               end
         
     | 
| 
       46 
61 
     | 
    
         | 
| 
       47 
62 
     | 
    
         
             
               def test_ascend
         
     | 
| 
         @@ -61,6 +76,8 @@ class TC_Pathname < Test::Unit::TestCase 
     | 
|
| 
       61 
76 
     | 
    
         
             
                  assert_equal("usr/local", @rel_array[1])
         
     | 
| 
       62 
77 
     | 
    
         
             
                  assert_equal("usr", @rel_array[2])
         
     | 
| 
       63 
78 
     | 
    
         
             
                  assert_equal(3, @rel_array.length)
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
                  assert_non_destructive
         
     | 
| 
       64 
81 
     | 
    
         
             
               end
         
     | 
| 
       65 
82 
     | 
    
         | 
| 
       66 
83 
     | 
    
         
             
               def test_descend
         
     | 
| 
         @@ -80,35 +97,48 @@ class TC_Pathname < Test::Unit::TestCase 
     | 
|
| 
       80 
97 
     | 
    
         
             
                  assert_equal("usr/local", @rel_array[1])
         
     | 
| 
       81 
98 
     | 
    
         
             
                  assert_equal("usr/local/bin", @rel_array[2])
         
     | 
| 
       82 
99 
     | 
    
         
             
                  assert_equal(3, @rel_array.length)
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
                  assert_non_destructive
         
     | 
| 
       83 
102 
     | 
    
         
             
               end
         
     | 
| 
       84 
103 
     | 
    
         | 
| 
       85 
104 
     | 
    
         
             
               def test_children
         
     | 
| 
       86 
     | 
    
         
            -
                  Dir.chdir("..") if File.basename(Dir.pwd) == "test"
         
     | 
| 
       87 
     | 
    
         
            -
                  @cur_path = Pathname.new(Dir.pwd)
         
     | 
| 
       88 
     | 
    
         
            -
             
     | 
| 
       89 
105 
     | 
    
         
             
                  assert_respond_to(@cur_path, :children)
         
     | 
| 
       90 
106 
     | 
    
         
             
                  assert_nothing_raised{ @cur_path.children }
         
     | 
| 
       91 
107 
     | 
    
         
             
                  assert_kind_of(Array, @cur_path.children)
         
     | 
| 
       92 
108 
     | 
    
         | 
| 
      
 109 
     | 
    
         
            +
                  # Delete Eclipse related files
         
     | 
| 
      
 110 
     | 
    
         
            +
                  children = @cur_path.children
         
     | 
| 
      
 111 
     | 
    
         
            +
                  children.delete_if{ |e| File.basename(e) == "CVS" }
         
     | 
| 
      
 112 
     | 
    
         
            +
                  children.delete_if{ |e| File.basename(e) == ".cvsignore" }
         
     | 
| 
      
 113 
     | 
    
         
            +
                  children.delete_if{ |e| File.basename(e) == ".project" }
         
     | 
| 
      
 114 
     | 
    
         
            +
             
     | 
| 
       93 
115 
     | 
    
         
             
                  assert_equal(
         
     | 
| 
       94 
116 
     | 
    
         
             
                     [
         
     | 
| 
       95 
117 
     | 
    
         
             
                        Dir.pwd + "/CHANGES",
         
     | 
| 
       96 
118 
     | 
    
         
             
                        Dir.pwd + "/MANIFEST",
         
     | 
| 
       97 
119 
     | 
    
         
             
                        Dir.pwd + "/README",
         
     | 
| 
       98 
     | 
    
         
            -
                        Dir.pwd + "/install.rb",
         
     | 
| 
       99 
     | 
    
         
            -
                        Dir.pwd + "/pathname2.gemspec",
         
     | 
| 
       100 
120 
     | 
    
         
             
                        Dir.pwd + "/examples",
         
     | 
| 
      
 121 
     | 
    
         
            +
                        Dir.pwd + "/ext",
         
     | 
| 
      
 122 
     | 
    
         
            +
                        Dir.pwd + "/install.rb",
         
     | 
| 
       101 
123 
     | 
    
         
             
                        Dir.pwd + "/lib",
         
     | 
| 
      
 124 
     | 
    
         
            +
                        Dir.pwd + "/pathname2.gemspec",
         
     | 
| 
       102 
125 
     | 
    
         
             
                        Dir.pwd + "/test"
         
     | 
| 
       103 
126 
     | 
    
         
             
                     ],
         
     | 
| 
       104 
     | 
    
         
            -
                      
     | 
| 
      
 127 
     | 
    
         
            +
                     children.sort
         
     | 
| 
       105 
128 
     | 
    
         
             
                  )
         
     | 
| 
      
 129 
     | 
    
         
            +
             
     | 
| 
      
 130 
     | 
    
         
            +
                  # Delete Eclipse related files
         
     | 
| 
      
 131 
     | 
    
         
            +
                  children = @cur_path.children(false)
         
     | 
| 
      
 132 
     | 
    
         
            +
                  children.delete("CVS")
         
     | 
| 
      
 133 
     | 
    
         
            +
                  children.delete(".cvsignore")
         
     | 
| 
      
 134 
     | 
    
         
            +
                  children.delete(".project")
         
     | 
| 
      
 135 
     | 
    
         
            +
             
     | 
| 
       106 
136 
     | 
    
         
             
                  assert_equal(
         
     | 
| 
       107 
137 
     | 
    
         
             
                     [
         
     | 
| 
       108 
     | 
    
         
            -
                        "CHANGES","MANIFEST","README"," 
     | 
| 
       109 
     | 
    
         
            -
                        " 
     | 
| 
      
 138 
     | 
    
         
            +
                        "CHANGES", "MANIFEST", "README", "examples", "ext",
         
     | 
| 
      
 139 
     | 
    
         
            +
                        "install.rb", "lib", "pathname2.gemspec", "test"
         
     | 
| 
       110 
140 
     | 
    
         
             
                     ],
         
     | 
| 
       111 
     | 
    
         
            -
                      
     | 
| 
      
 141 
     | 
    
         
            +
                     children.sort
         
     | 
| 
       112 
142 
     | 
    
         
             
                  )
         
     | 
| 
       113 
143 
     | 
    
         
             
               end
         
     | 
| 
       114 
144 
     | 
    
         | 
| 
         @@ -123,47 +153,67 @@ class TC_Pathname < Test::Unit::TestCase 
     | 
|
| 
       123 
153 
     | 
    
         
             
               def test_root
         
     | 
| 
       124 
154 
     | 
    
         
             
                  assert_respond_to(@abs_path, :root)
         
     | 
| 
       125 
155 
     | 
    
         
             
                  assert_nothing_raised{ @abs_path.root }
         
     | 
| 
      
 156 
     | 
    
         
            +
                  assert_nothing_raised{ @rel_path.root }
         
     | 
| 
      
 157 
     | 
    
         
            +
             
     | 
| 
       126 
158 
     | 
    
         
             
                  assert_equal("/", @abs_path.root)
         
     | 
| 
      
 159 
     | 
    
         
            +
                  assert_equal(".", @rel_path.root)
         
     | 
| 
       127 
160 
     | 
    
         | 
| 
       128 
     | 
    
         
            -
                   
     | 
| 
       129 
     | 
    
         
            -
                  path2 = Pathname.new("foo/bar/baz")
         
     | 
| 
       130 
     | 
    
         
            -
                  assert_equal(".", path1.root)
         
     | 
| 
       131 
     | 
    
         
            -
                  assert_equal(".", path2.root)
         
     | 
| 
      
 161 
     | 
    
         
            +
                  assert_non_destructive
         
     | 
| 
       132 
162 
     | 
    
         
             
               end
         
     | 
| 
       133 
163 
     | 
    
         | 
| 
       134 
164 
     | 
    
         
             
               def test_root?
         
     | 
| 
       135 
165 
     | 
    
         
             
                  assert_respond_to(@abs_path, :root?)
         
     | 
| 
       136 
166 
     | 
    
         
             
                  assert_nothing_raised{ @abs_path.root? }
         
     | 
| 
      
 167 
     | 
    
         
            +
                  assert_nothing_raised{ @rel_path.root? }
         
     | 
| 
       137 
168 
     | 
    
         | 
| 
       138 
169 
     | 
    
         
             
                  path1 = Pathname.new("/")
         
     | 
| 
       139 
170 
     | 
    
         
             
                  path2 = Pathname.new("a")
         
     | 
| 
       140 
171 
     | 
    
         
             
                  assert_equal(true, path1.root?)
         
     | 
| 
       141 
172 
     | 
    
         
             
                  assert_equal(false, path2.root?)
         
     | 
| 
      
 173 
     | 
    
         
            +
             
     | 
| 
      
 174 
     | 
    
         
            +
                  assert_non_destructive
         
     | 
| 
       142 
175 
     | 
    
         
             
               end
         
     | 
| 
       143 
176 
     | 
    
         | 
| 
       144 
177 
     | 
    
         
             
               def test_absolute
         
     | 
| 
       145 
178 
     | 
    
         
             
                  assert_respond_to(@abs_path, :absolute?)
         
     | 
| 
       146 
179 
     | 
    
         
             
                  assert_nothing_raised{ @abs_path.absolute? }
         
     | 
| 
      
 180 
     | 
    
         
            +
                  assert_nothing_raised{ @rel_path.absolute? }
         
     | 
| 
      
 181 
     | 
    
         
            +
             
     | 
| 
      
 182 
     | 
    
         
            +
                  assert_equal(true, @abs_path.absolute?)
         
     | 
| 
      
 183 
     | 
    
         
            +
                  assert_equal(false, @rel_path.absolute?)
         
     | 
| 
      
 184 
     | 
    
         
            +
             
     | 
| 
       147 
185 
     | 
    
         
             
                  assert_equal(true, Pathname.new("/usr/bin/ruby").absolute?)
         
     | 
| 
       148 
186 
     | 
    
         
             
                  assert_equal(false, Pathname.new("foo").absolute?)
         
     | 
| 
       149 
187 
     | 
    
         
             
                  assert_equal(false, Pathname.new("foo/bar").absolute?)
         
     | 
| 
       150 
188 
     | 
    
         
             
                  assert_equal(false, Pathname.new("../foo/bar").absolute?)
         
     | 
| 
      
 189 
     | 
    
         
            +
             
     | 
| 
      
 190 
     | 
    
         
            +
                  assert_non_destructive
         
     | 
| 
       151 
191 
     | 
    
         
             
               end
         
     | 
| 
       152 
192 
     | 
    
         | 
| 
       153 
193 
     | 
    
         
             
               def test_relative
         
     | 
| 
       154 
194 
     | 
    
         
             
                  assert_respond_to(@abs_path, :relative?)
         
     | 
| 
       155 
195 
     | 
    
         
             
                  assert_nothing_raised{ @abs_path.relative? }
         
     | 
| 
      
 196 
     | 
    
         
            +
                  assert_nothing_raised{ @rel_path.relative? }
         
     | 
| 
      
 197 
     | 
    
         
            +
             
     | 
| 
      
 198 
     | 
    
         
            +
                  assert_equal(false, @abs_path.relative?)
         
     | 
| 
      
 199 
     | 
    
         
            +
                  assert_equal(true, @rel_path.relative?)
         
     | 
| 
      
 200 
     | 
    
         
            +
             
     | 
| 
       156 
201 
     | 
    
         
             
                  assert_equal(false, Pathname.new("/usr/bin/ruby").relative?)
         
     | 
| 
       157 
202 
     | 
    
         
             
                  assert_equal(true, Pathname.new("foo").relative?)
         
     | 
| 
       158 
203 
     | 
    
         
             
                  assert_equal(true, Pathname.new("foo/bar").relative?)
         
     | 
| 
       159 
204 
     | 
    
         
             
                  assert_equal(true, Pathname.new("../foo/bar").relative?)
         
     | 
| 
      
 205 
     | 
    
         
            +
             
     | 
| 
      
 206 
     | 
    
         
            +
                  assert_non_destructive
         
     | 
| 
       160 
207 
     | 
    
         
             
               end
         
     | 
| 
       161 
208 
     | 
    
         | 
| 
       162 
209 
     | 
    
         
             
               def test_to_a
         
     | 
| 
       163 
210 
     | 
    
         
             
                  assert_respond_to(@abs_path, :to_a)
         
     | 
| 
       164 
211 
     | 
    
         
             
                  assert_nothing_raised{ @abs_path.to_a }
         
     | 
| 
      
 212 
     | 
    
         
            +
                  assert_nothing_raised{ @rel_path.to_a }
         
     | 
| 
       165 
213 
     | 
    
         
             
                  assert_kind_of(Array, @abs_path.to_a)
         
     | 
| 
       166 
214 
     | 
    
         
             
                  assert_equal(%w/usr local bin/, @abs_path.to_a)
         
     | 
| 
      
 215 
     | 
    
         
            +
             
     | 
| 
      
 216 
     | 
    
         
            +
                  assert_non_destructive
         
     | 
| 
       167 
217 
     | 
    
         
             
               end
         
     | 
| 
       168 
218 
     | 
    
         | 
| 
       169 
219 
     | 
    
         
             
               def test_spaceship_operator
         
     | 
| 
         @@ -202,7 +252,7 @@ class TC_Pathname < Test::Unit::TestCase 
     | 
|
| 
       202 
252 
     | 
    
         
             
               # Any tests marked with "***" mean that this behavior is different than
         
     | 
| 
       203 
253 
     | 
    
         
             
               # the current implementation.  It also means I disagree with the current
         
     | 
| 
       204 
254 
     | 
    
         
             
               # implementation.
         
     | 
| 
       205 
     | 
    
         
            -
               def  
     | 
| 
      
 255 
     | 
    
         
            +
               def test_clean
         
     | 
| 
       206 
256 
     | 
    
         
             
                  # Standard stuff
         
     | 
| 
       207 
257 
     | 
    
         
             
                  assert_equal("/a/b/c", Pathname.new("/a/b/c").cleanpath)
         
     | 
| 
       208 
258 
     | 
    
         
             
                  assert_equal("b/c", Pathname.new("./b/c").cleanpath)
         
     | 
| 
         @@ -220,6 +270,8 @@ class TC_Pathname < Test::Unit::TestCase 
     | 
|
| 
       220 
270 
     | 
    
         
             
                  assert_equal("..", Pathname.new("..").cleanpath)
         
     | 
| 
       221 
271 
     | 
    
         
             
                  assert_equal('/', Pathname.new('/').cleanpath)
         
     | 
| 
       222 
272 
     | 
    
         
             
                  assert_equal('/', Pathname.new('//').cleanpath)
         
     | 
| 
      
 273 
     | 
    
         
            +
             
     | 
| 
      
 274 
     | 
    
         
            +
                  assert_non_destructive
         
     | 
| 
       223 
275 
     | 
    
         
             
               end
         
     | 
| 
       224 
276 
     | 
    
         | 
| 
       225 
277 
     | 
    
         
             
               def test_facade_io
         
     | 
| 
         @@ -253,6 +305,7 @@ class TC_Pathname < Test::Unit::TestCase 
     | 
|
| 
       253 
305 
     | 
    
         
             
                  }
         
     | 
| 
       254 
306 
     | 
    
         
             
               end
         
     | 
| 
       255 
307 
     | 
    
         | 
| 
      
 308 
     | 
    
         
            +
               # Doesn't work properly in 1.4.0
         
     | 
| 
       256 
309 
     | 
    
         
             
               def test_facade_find
         
     | 
| 
       257 
310 
     | 
    
         
             
                  assert_respond_to(@abs_path, :find)
         
     | 
| 
       258 
311 
     | 
    
         
             
                  assert_nothing_raised{ @abs_path.find{} }
         
     | 
| 
         @@ -266,6 +319,7 @@ class TC_Pathname < Test::Unit::TestCase 
     | 
|
| 
       266 
319 
     | 
    
         
             
               def teardown
         
     | 
| 
       267 
320 
     | 
    
         
             
                  @abs_path = nil
         
     | 
| 
       268 
321 
     | 
    
         
             
                  @rel_path = nil
         
     | 
| 
      
 322 
     | 
    
         
            +
                  @cur_path = nil
         
     | 
| 
       269 
323 
     | 
    
         | 
| 
       270 
324 
     | 
    
         
             
                  @abs_array.clear
         
     | 
| 
       271 
325 
     | 
    
         
             
                  @rel_array.clear
         
     | 
    
        data/test/tc_pathname_win.rb
    CHANGED
    
    | 
         @@ -1,11 +1,20 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            ##########################################################################
         
     | 
| 
       2 
2 
     | 
    
         
             
            # tc_pathname_win.rb
         
     | 
| 
       3 
3 
     | 
    
         
             
            #
         
     | 
| 
       4 
     | 
    
         
            -
            # MS Windows test suite for the Pathname class.
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
      
 4 
     | 
    
         
            +
            # MS Windows test suite for the Pathname class.  To test explicitly
         
     | 
| 
      
 5 
     | 
    
         
            +
            # against the C extension pass the letter 'c' as an argument.
         
     | 
| 
      
 6 
     | 
    
         
            +
            ###########################################################################
         
     | 
| 
       6 
7 
     | 
    
         
             
            Dir.chdir ".." if File.basename(Dir.pwd) == "test"
         
     | 
| 
       7 
8 
     | 
    
         
             
            $LOAD_PATH.unshift Dir.pwd
         
     | 
| 
       8 
     | 
    
         
            -
            $ 
     | 
| 
      
 9 
     | 
    
         
            +
            $c_extension = false
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            # If the user passes a 'c', test against the C extension
         
     | 
| 
      
 12 
     | 
    
         
            +
            if ARGV[0] && ARGV[0].downcase == "c"
         
     | 
| 
      
 13 
     | 
    
         
            +
               $c_extension = true
         
     | 
| 
      
 14 
     | 
    
         
            +
               $LOAD_PATH.unshift Dir.pwd + "/ext"
         
     | 
| 
      
 15 
     | 
    
         
            +
            else
         
     | 
| 
      
 16 
     | 
    
         
            +
               $LOAD_PATH.unshift Dir.pwd + "/lib"
         
     | 
| 
      
 17 
     | 
    
         
            +
            end
         
     | 
| 
       9 
18 
     | 
    
         | 
| 
       10 
19 
     | 
    
         
             
            unless PLATFORM.match("mswin")
         
     | 
| 
       11 
20 
     | 
    
         
             
               STDERR.puts("Please run 'tc_pathname.rb' instead.")
         
     | 
| 
         @@ -19,6 +28,7 @@ class TC_Pathname_MSWin < Test::Unit::TestCase 
     | 
|
| 
       19 
28 
     | 
    
         
             
               def setup
         
     | 
| 
       20 
29 
     | 
    
         
             
                  @fpath = Pathname.new("C:/Program Files/Windows NT/Accessories")
         
     | 
| 
       21 
30 
     | 
    
         
             
                  @bpath = Pathname.new("C:\\Program Files\\Windows NT\\Accessories")
         
     | 
| 
      
 31 
     | 
    
         
            +
                  @dpath = Pathname.new("C:\\Program Files\\File[5].txt")
         
     | 
| 
       22 
32 
     | 
    
         
             
                  @spath = Pathname.new("C:\\PROGRA~1\\WINDOW~1\\ACCESS~1")
         
     | 
| 
       23 
33 
     | 
    
         
             
                  @upath = Pathname.new("\\\\foo\\bar\\baz")
         
     | 
| 
       24 
34 
     | 
    
         
             
                  @npath = Pathname.new("foo\\bar\\baz")
         
     | 
| 
         @@ -27,6 +37,11 @@ class TC_Pathname_MSWin < Test::Unit::TestCase 
     | 
|
| 
       27 
37 
     | 
    
         
             
                  @ypath = Pathname.new("\\\\foo")
         
     | 
| 
       28 
38 
     | 
    
         
             
                  @zpath = Pathname.new("\\\\")
         
     | 
| 
       29 
39 
     | 
    
         
             
                  @epath = Pathname.new("")
         
     | 
| 
      
 40 
     | 
    
         
            +
                  @ppath = Pathname.new("C:\\foo\\bar\\")
         
     | 
| 
      
 41 
     | 
    
         
            +
                  @cpath = Pathname.new("C:\\foo\\..\\bar\\.\\baz")
         
     | 
| 
      
 42 
     | 
    
         
            +
                  @tpath = Pathname.new("C:\\foo\\bar")
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                  @cur_path = Pathname.new(Dir.pwd)
         
     | 
| 
       30 
45 
     | 
    
         | 
| 
       31 
46 
     | 
    
         
             
                  @abs_array = []
         
     | 
| 
       32 
47 
     | 
    
         
             
                  @rel_array = []
         
     | 
| 
         @@ -34,7 +49,7 @@ class TC_Pathname_MSWin < Test::Unit::TestCase 
     | 
|
| 
       34 
49 
     | 
    
         
             
               end
         
     | 
| 
       35 
50 
     | 
    
         | 
| 
       36 
51 
     | 
    
         
             
               def test_version
         
     | 
| 
       37 
     | 
    
         
            -
                  assert_equal("1. 
     | 
| 
      
 52 
     | 
    
         
            +
                  assert_equal("1.4.0", Pathname::VERSION)
         
     | 
| 
       38 
53 
     | 
    
         
             
               end
         
     | 
| 
       39 
54 
     | 
    
         | 
| 
       40 
55 
     | 
    
         
             
               # Convenience method for test_plus
         
     | 
| 
         @@ -53,11 +68,31 @@ class TC_Pathname_MSWin < Test::Unit::TestCase 
     | 
|
| 
       53 
68 
     | 
    
         
             
                  assert_equal(int, result)
         
     | 
| 
       54 
69 
     | 
    
         
             
               end
         
     | 
| 
       55 
70 
     | 
    
         | 
| 
      
 71 
     | 
    
         
            +
               # Convenience method to verify that the receiver was not modified
         
     | 
| 
      
 72 
     | 
    
         
            +
               # except perhaps slashes
         
     | 
| 
      
 73 
     | 
    
         
            +
               def assert_non_destructive      
         
     | 
| 
      
 74 
     | 
    
         
            +
                  assert_equal("C:\\Program Files\\Windows NT\\Accessories", @fpath)
         
     | 
| 
      
 75 
     | 
    
         
            +
                  assert_equal("C:\\Program Files\\Windows NT\\Accessories", @bpath)
         
     | 
| 
      
 76 
     | 
    
         
            +
                  assert_equal("C:\\Program Files\\File[5].txt", @dpath)
         
     | 
| 
      
 77 
     | 
    
         
            +
                  assert_equal("C:\\PROGRA~1\\WINDOW~1\\ACCESS~1", @spath)
         
     | 
| 
      
 78 
     | 
    
         
            +
                  assert_equal("\\\\foo\\bar\\baz", @upath)
         
     | 
| 
      
 79 
     | 
    
         
            +
                  assert_equal("foo\\bar\\baz", @npath)
         
     | 
| 
      
 80 
     | 
    
         
            +
                  assert_equal("Z:\\", @rpath)
         
     | 
| 
      
 81 
     | 
    
         
            +
                  assert_equal("\\\\foo\\bar", @xpath)
         
     | 
| 
      
 82 
     | 
    
         
            +
                  assert_equal("\\\\foo", @ypath)
         
     | 
| 
      
 83 
     | 
    
         
            +
                  assert_equal("\\\\", @zpath)
         
     | 
| 
      
 84 
     | 
    
         
            +
                  assert_equal("", @epath)
         
     | 
| 
      
 85 
     | 
    
         
            +
                  assert_equal("C:\\foo\\bar\\", @ppath)
         
     | 
| 
      
 86 
     | 
    
         
            +
                  assert_equal("C:\\foo\\..\\bar\\.\\baz", @cpath)
         
     | 
| 
      
 87 
     | 
    
         
            +
               end
         
     | 
| 
      
 88 
     | 
    
         
            +
               
         
     | 
| 
       56 
89 
     | 
    
         
             
               def test_short_path
         
     | 
| 
       57 
90 
     | 
    
         
             
                  assert_respond_to(@bpath, :short_path)
         
     | 
| 
       58 
91 
     | 
    
         
             
                  assert_nothing_raised{ @bpath.short_path }      
         
     | 
| 
       59 
92 
     | 
    
         
             
                  assert_kind_of(Pathname, @bpath.short_path)
         
     | 
| 
       60 
93 
     | 
    
         
             
                  assert_equal("C:\\PROGRA~1\\WINDOW~1\\ACCESS~1", @bpath.short_path)
         
     | 
| 
      
 94 
     | 
    
         
            +
                  
         
     | 
| 
      
 95 
     | 
    
         
            +
                  assert_equal("C:\\Program Files\\Windows NT\\Accessories", @bpath)
         
     | 
| 
       61 
96 
     | 
    
         
             
               end
         
     | 
| 
       62 
97 
     | 
    
         | 
| 
       63 
98 
     | 
    
         
             
               def test_long_path
         
     | 
| 
         @@ -69,13 +104,108 @@ class TC_Pathname_MSWin < Test::Unit::TestCase 
     | 
|
| 
       69 
104 
     | 
    
         
             
                     "C:\\Program Files\\Windows NT\\Accessories",
         
     | 
| 
       70 
105 
     | 
    
         
             
                     @spath.long_path
         
     | 
| 
       71 
106 
     | 
    
         
             
                  )
         
     | 
| 
      
 107 
     | 
    
         
            +
                  
         
     | 
| 
      
 108 
     | 
    
         
            +
                  assert_equal("C:\\PROGRA~1\\WINDOW~1\\ACCESS~1", @spath)
         
     | 
| 
      
 109 
     | 
    
         
            +
               end
         
     | 
| 
      
 110 
     | 
    
         
            +
               
         
     | 
| 
      
 111 
     | 
    
         
            +
               def test_undecorate
         
     | 
| 
      
 112 
     | 
    
         
            +
                  assert_respond_to(@dpath, :undecorate)
         
     | 
| 
      
 113 
     | 
    
         
            +
                  assert_nothing_raised{ @dpath.undecorate }
         
     | 
| 
      
 114 
     | 
    
         
            +
                  assert_kind_of(Pathname, @dpath.undecorate)
         
     | 
| 
      
 115 
     | 
    
         
            +
                  
         
     | 
| 
      
 116 
     | 
    
         
            +
                  assert_equal('C:\Program Files\File.txt', @dpath.undecorate)    
         
     | 
| 
      
 117 
     | 
    
         
            +
                  assert_equal('C:\Path\File', Pathname.new('C:\Path\File').undecorate)
         
     | 
| 
      
 118 
     | 
    
         
            +
                  assert_equal('C:\Path\File', Pathname.new('C:\Path\File[12]').undecorate)
         
     | 
| 
      
 119 
     | 
    
         
            +
                  assert_equal('C:\Path\[3].txt',
         
     | 
| 
      
 120 
     | 
    
         
            +
                     Pathname.new('C:\Path\[3].txt').undecorate
         
     | 
| 
      
 121 
     | 
    
         
            +
                  )
         
     | 
| 
      
 122 
     | 
    
         
            +
                  assert_equal('\\foo\bar.txt',Pathname.new('\\foo\bar[5].txt').undecorate)
         
     | 
| 
      
 123 
     | 
    
         
            +
                  assert_equal('\\foo\bar', Pathname.new('\\foo\bar[5]').undecorate)
         
     | 
| 
      
 124 
     | 
    
         
            +
                  assert_equal('\\foo\bar', Pathname.new('\\foo\bar').undecorate)
         
     | 
| 
      
 125 
     | 
    
         
            +
                  
         
     | 
| 
      
 126 
     | 
    
         
            +
                  assert_equal("C:\\Program Files\\File[5].txt", @dpath)
         
     | 
| 
      
 127 
     | 
    
         
            +
               end
         
     | 
| 
      
 128 
     | 
    
         
            +
               
         
     | 
| 
      
 129 
     | 
    
         
            +
               def test_undecorate_bang
         
     | 
| 
      
 130 
     | 
    
         
            +
                  assert_respond_to(@dpath, :undecorate!)
         
     | 
| 
      
 131 
     | 
    
         
            +
                  assert_nothing_raised{ @dpath.undecorate! }
         
     | 
| 
      
 132 
     | 
    
         
            +
                  assert_kind_of(Pathname, @dpath.undecorate!)
         
     | 
| 
      
 133 
     | 
    
         
            +
                  
         
     | 
| 
      
 134 
     | 
    
         
            +
                  assert_equal('C:\Program Files\File.txt', @dpath.undecorate!)    
         
     | 
| 
      
 135 
     | 
    
         
            +
                  assert_equal('C:\Path\File', Pathname.new('C:\Path\File').undecorate!)
         
     | 
| 
      
 136 
     | 
    
         
            +
                  assert_equal('C:\Path\File', Pathname.new('C:\Path\File[12]').undecorate!)
         
     | 
| 
      
 137 
     | 
    
         
            +
                  assert_equal('C:\Path\[3].txt',
         
     | 
| 
      
 138 
     | 
    
         
            +
                     Pathname.new('C:\Path\[3].txt').undecorate!
         
     | 
| 
      
 139 
     | 
    
         
            +
                  )
         
     | 
| 
      
 140 
     | 
    
         
            +
                  assert_equal('\\foo\bar.txt',Pathname.new('\\foo\bar[5].txt').undecorate!)
         
     | 
| 
      
 141 
     | 
    
         
            +
                  assert_equal('\\foo\bar', Pathname.new('\\foo\bar[5]').undecorate!)
         
     | 
| 
      
 142 
     | 
    
         
            +
                  assert_equal('\\foo\bar', Pathname.new('\\foo\bar').undecorate!)
         
     | 
| 
      
 143 
     | 
    
         
            +
                  
         
     | 
| 
      
 144 
     | 
    
         
            +
                  assert_equal('C:\Program Files\File.txt', @dpath)
         
     | 
| 
      
 145 
     | 
    
         
            +
               end
         
     | 
| 
      
 146 
     | 
    
         
            +
               
         
     | 
| 
      
 147 
     | 
    
         
            +
               def test_unc
         
     | 
| 
      
 148 
     | 
    
         
            +
                  assert_respond_to(@upath, :unc?)
         
     | 
| 
      
 149 
     | 
    
         
            +
                  assert_nothing_raised{ @upath.unc? }
         
     | 
| 
      
 150 
     | 
    
         
            +
                  
         
     | 
| 
      
 151 
     | 
    
         
            +
                  assert_equal(true, @upath.unc?)
         
     | 
| 
      
 152 
     | 
    
         
            +
                  assert_equal(true, @xpath.unc?)
         
     | 
| 
      
 153 
     | 
    
         
            +
                  assert_equal(true, @ypath.unc?)
         
     | 
| 
      
 154 
     | 
    
         
            +
                  assert_equal(true, @zpath.unc?)
         
     | 
| 
      
 155 
     | 
    
         
            +
                  assert_equal(false, @fpath.unc?)
         
     | 
| 
      
 156 
     | 
    
         
            +
                  assert_equal(false, @bpath.unc?)
         
     | 
| 
      
 157 
     | 
    
         
            +
                  assert_equal(false, @dpath.unc?)
         
     | 
| 
      
 158 
     | 
    
         
            +
                  assert_equal(false, @spath.unc?)
         
     | 
| 
      
 159 
     | 
    
         
            +
                  assert_equal(false, @epath.unc?)
         
     | 
| 
      
 160 
     | 
    
         
            +
             
     | 
| 
      
 161 
     | 
    
         
            +
                  # Arguably a bug in the PathIsUNC() function since drive letters
         
     | 
| 
      
 162 
     | 
    
         
            +
                  # are, in fact, a legal part of a UNC path (for historical reasons).
         
     | 
| 
      
 163 
     | 
    
         
            +
                  assert_equal(false, Pathname.new("C:\\\\foo\\bar\\baz").unc?)
         
     | 
| 
      
 164 
     | 
    
         
            +
                  
         
     | 
| 
      
 165 
     | 
    
         
            +
                  assert_non_destructive
         
     | 
| 
      
 166 
     | 
    
         
            +
               end
         
     | 
| 
      
 167 
     | 
    
         
            +
               
         
     | 
| 
      
 168 
     | 
    
         
            +
               def test_pstrip
         
     | 
| 
      
 169 
     | 
    
         
            +
                  assert_respond_to(@ppath, :pstrip)
         
     | 
| 
      
 170 
     | 
    
         
            +
                  assert_nothing_raised{ @ppath.pstrip }
         
     | 
| 
      
 171 
     | 
    
         
            +
                  assert_nothing_raised{ @fpath.pstrip }
         
     | 
| 
      
 172 
     | 
    
         
            +
                  assert_kind_of(Pathname, @ppath.pstrip)
         
     | 
| 
      
 173 
     | 
    
         
            +
             
     | 
| 
      
 174 
     | 
    
         
            +
                  assert_equal('C:\foo', Pathname.new("C:\\foo\\").pstrip)
         
     | 
| 
      
 175 
     | 
    
         
            +
                  assert_equal('C:\foo', Pathname.new("C:\\foo").pstrip)
         
     | 
| 
      
 176 
     | 
    
         
            +
                  assert_equal("", Pathname.new("").pstrip)
         
     | 
| 
      
 177 
     | 
    
         
            +
                  
         
     | 
| 
      
 178 
     | 
    
         
            +
                  assert_equal("C:\\foo\\bar\\", @ppath)
         
     | 
| 
       72 
179 
     | 
    
         
             
               end
         
     | 
| 
       73 
180 
     | 
    
         | 
| 
      
 181 
     | 
    
         
            +
               def test_pstrip_bang
         
     | 
| 
      
 182 
     | 
    
         
            +
                  assert_respond_to(@ppath, :pstrip!)
         
     | 
| 
      
 183 
     | 
    
         
            +
                  assert_nothing_raised{ @ppath.pstrip! }
         
     | 
| 
      
 184 
     | 
    
         
            +
                  assert_nothing_raised{ @fpath.pstrip! }
         
     | 
| 
      
 185 
     | 
    
         
            +
                  assert_kind_of(Pathname, @ppath.pstrip!)
         
     | 
| 
      
 186 
     | 
    
         
            +
             
     | 
| 
      
 187 
     | 
    
         
            +
                  assert_equal('C:\foo', Pathname.new("C:\\foo\\").pstrip!)
         
     | 
| 
      
 188 
     | 
    
         
            +
                  assert_equal('C:\foo', Pathname.new("C:\\foo").pstrip!)
         
     | 
| 
      
 189 
     | 
    
         
            +
                  assert_equal("", Pathname.new("").pstrip!)
         
     | 
| 
      
 190 
     | 
    
         
            +
                  
         
     | 
| 
      
 191 
     | 
    
         
            +
                  assert_equal("C:\\foo\\bar", @ppath)
         
     | 
| 
      
 192 
     | 
    
         
            +
               end
         
     | 
| 
      
 193 
     | 
    
         
            +
               
         
     | 
| 
      
 194 
     | 
    
         
            +
               def test_exists
         
     | 
| 
      
 195 
     | 
    
         
            +
                  assert_respond_to(@fpath, :exists?)
         
     | 
| 
      
 196 
     | 
    
         
            +
                  assert_nothing_raised{ @fpath.exists? }
         
     | 
| 
      
 197 
     | 
    
         
            +
                  assert_equal(true, Pathname.new("C:\\").exists?)
         
     | 
| 
      
 198 
     | 
    
         
            +
                  assert_equal(false, Pathname.new("X:\\foo\\bar\\baz").exists?)
         
     | 
| 
      
 199 
     | 
    
         
            +
               end
         
     | 
| 
      
 200 
     | 
    
         
            +
             
         
     | 
| 
       74 
201 
     | 
    
         
             
               def test_each
         
     | 
| 
      
 202 
     | 
    
         
            +
                  array = []
         
     | 
| 
      
 203 
     | 
    
         
            +
                  
         
     | 
| 
       75 
204 
     | 
    
         
             
                  assert_respond_to(@fpath, :each)
         
     | 
| 
       76 
     | 
    
         
            -
                  assert_nothing_raised{ @fpath.each{ |e| } }
         
     | 
| 
      
 205 
     | 
    
         
            +
                  assert_nothing_raised{ @fpath.each{ |e| array.push(e) } }
         
     | 
| 
      
 206 
     | 
    
         
            +
                  assert_equal(["C:", "Program Files", "Windows NT", "Accessories"], array)
         
     | 
| 
       77 
207 
     | 
    
         
             
               end
         
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
      
 208 
     | 
    
         
            +
              
         
     | 
| 
       79 
209 
     | 
    
         
             
               def test_descend
         
     | 
| 
       80 
210 
     | 
    
         
             
                  assert_respond_to(@bpath, :descend)
         
     | 
| 
       81 
211 
     | 
    
         
             
                  assert_nothing_raised{ @bpath.descend{} }
         
     | 
| 
         @@ -95,8 +225,10 @@ class TC_Pathname_MSWin < Test::Unit::TestCase 
     | 
|
| 
       95 
225 
     | 
    
         | 
| 
       96 
226 
     | 
    
         
             
                  assert_equal("\\\\foo\\bar", @unc_array[0])
         
     | 
| 
       97 
227 
     | 
    
         
             
                  assert_equal("\\\\foo\\bar\\baz", @unc_array[1])
         
     | 
| 
      
 228 
     | 
    
         
            +
                  
         
     | 
| 
      
 229 
     | 
    
         
            +
                  assert_non_destructive      
         
     | 
| 
       98 
230 
     | 
    
         
             
               end
         
     | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
      
 231 
     | 
    
         
            +
                
         
     | 
| 
       100 
232 
     | 
    
         
             
               def test_ascend
         
     | 
| 
       101 
233 
     | 
    
         
             
                  assert_respond_to(@bpath, :ascend)
         
     | 
| 
       102 
234 
     | 
    
         
             
                  assert_nothing_raised{ @bpath.ascend{} }
         
     | 
| 
         @@ -118,16 +250,20 @@ class TC_Pathname_MSWin < Test::Unit::TestCase 
     | 
|
| 
       118 
250 
     | 
    
         | 
| 
       119 
251 
     | 
    
         
             
                  assert_equal("\\\\foo\\bar\\baz", @unc_array[0])
         
     | 
| 
       120 
252 
     | 
    
         
             
                  assert_equal("\\\\foo\\bar", @unc_array[1])
         
     | 
| 
       121 
     | 
    
         
            -
                  assert_equal(2, @unc_array.length) 
     | 
| 
      
 253 
     | 
    
         
            +
                  assert_equal(2, @unc_array.length)
         
     | 
| 
      
 254 
     | 
    
         
            +
                  
         
     | 
| 
      
 255 
     | 
    
         
            +
                  assert_non_destructive     
         
     | 
| 
      
 256 
     | 
    
         
            +
               end
         
     | 
| 
      
 257 
     | 
    
         
            +
              
         
     | 
| 
      
 258 
     | 
    
         
            +
               # Fails due to PathIsURL for some reason in pure Ruby
         
     | 
| 
      
 259 
     | 
    
         
            +
               def test_immutability
         
     | 
| 
      
 260 
     | 
    
         
            +
                  if $c_extension
         
     | 
| 
      
 261 
     | 
    
         
            +
                     path = "C:\\Program Files\\foo\\bar".freeze
         
     | 
| 
      
 262 
     | 
    
         
            +
                     assert_equal(true, path.frozen?)
         
     | 
| 
      
 263 
     | 
    
         
            +
                     assert_nothing_raised{ Pathname.new(path) }
         
     | 
| 
      
 264 
     | 
    
         
            +
                     assert_nothing_raised{ Pathname.new(path).root }
         
     | 
| 
      
 265 
     | 
    
         
            +
                  end
         
     | 
| 
       122 
266 
     | 
    
         
             
               end
         
     | 
| 
       123 
     | 
    
         
            -
               
         
     | 
| 
       124 
     | 
    
         
            -
               # Fails due to PathIsURL for some reason
         
     | 
| 
       125 
     | 
    
         
            -
               #def test_immutability
         
     | 
| 
       126 
     | 
    
         
            -
               #   path = "C:\\Program Files\\foo\\bar".freeze
         
     | 
| 
       127 
     | 
    
         
            -
               #   assert_equal(true, path.frozen?)
         
     | 
| 
       128 
     | 
    
         
            -
               #   assert_nothing_raised{ Pathname.new(path) }
         
     | 
| 
       129 
     | 
    
         
            -
               #   assert_nothing_raised{ Pathname.new(path).root }
         
     | 
| 
       130 
     | 
    
         
            -
               #end
         
     | 
| 
       131 
267 
     | 
    
         | 
| 
       132 
268 
     | 
    
         
             
               def test_plus_operator
         
     | 
| 
       133 
269 
     | 
    
         
             
                  # Standard stuff
         
     | 
| 
         @@ -144,9 +280,24 @@ class TC_Pathname_MSWin < Test::Unit::TestCase 
     | 
|
| 
       144 
280 
     | 
    
         
             
                  assert_pathname_plus("\\\\", "\\\\", "")
         
     | 
| 
       145 
281 
     | 
    
         
             
                  assert_pathname_plus("\\\\foo\\baz", "\\\\foo\\bar", "\\..\\baz")
         
     | 
| 
       146 
282 
     | 
    
         
             
                  assert_pathname_plus("\\\\", "\\\\", "..\\..\\..\\..")
         
     | 
| 
      
 283 
     | 
    
         
            +
             
     | 
| 
      
 284 
     | 
    
         
            +
                  # Pathname + String
         
     | 
| 
      
 285 
     | 
    
         
            +
                  assert_nothing_raised{ @tpath + "bar" }
         
     | 
| 
      
 286 
     | 
    
         
            +
                  assert_equal('C:\foo\bar\baz', @tpath + 'baz')
         
     | 
| 
      
 287 
     | 
    
         
            +
                  assert_equal('C:\foo\bar', @tpath)
         
     | 
| 
      
 288 
     | 
    
         
            +
             
     | 
| 
      
 289 
     | 
    
         
            +
                  # Ensure neither left nor right operand are modified
         
     | 
| 
      
 290 
     | 
    
         
            +
                  assert_nothing_raised{ @tpath + @npath }
         
     | 
| 
      
 291 
     | 
    
         
            +
                  assert_equal('C:\foo\bar\foo\bar\baz', @tpath + @npath)
         
     | 
| 
      
 292 
     | 
    
         
            +
                  assert_equal('C:\foo\bar', @tpath)
         
     | 
| 
      
 293 
     | 
    
         
            +
                  assert_equal('foo\bar\baz', @npath)
         
     | 
| 
       147 
294 
     | 
    
         
             
               end
         
     | 
| 
       148 
     | 
    
         
            -
             
     | 
| 
      
 295 
     | 
    
         
            +
              
         
     | 
| 
       149 
296 
     | 
    
         
             
               def test_clean
         
     | 
| 
      
 297 
     | 
    
         
            +
                  assert_respond_to(@cpath, :clean)
         
     | 
| 
      
 298 
     | 
    
         
            +
                  assert_nothing_raised{ @cpath.clean }
         
     | 
| 
      
 299 
     | 
    
         
            +
                  assert_kind_of(Pathname, @cpath.clean)
         
     | 
| 
      
 300 
     | 
    
         
            +
             
     | 
| 
       150 
301 
     | 
    
         
             
                  # Our preset stuff
         
     | 
| 
       151 
302 
     | 
    
         
             
                  assert_equal("C:\\Program Files\\Windows NT\\Accessories", @fpath.clean)
         
     | 
| 
       152 
303 
     | 
    
         
             
                  assert_equal("C:\\Program Files\\Windows NT\\Accessories", @bpath.clean)
         
     | 
| 
         @@ -157,6 +308,7 @@ class TC_Pathname_MSWin < Test::Unit::TestCase 
     | 
|
| 
       157 
308 
     | 
    
         
             
                  assert_equal("\\\\foo", @ypath.clean)
         
     | 
| 
       158 
309 
     | 
    
         
             
                  assert_equal("\\\\", @zpath.clean)
         
     | 
| 
       159 
310 
     | 
    
         
             
                  assert_equal("", @epath.clean)
         
     | 
| 
      
 311 
     | 
    
         
            +
                  assert_equal("C:\\bar\\baz", @cpath.clean)
         
     | 
| 
       160 
312 
     | 
    
         | 
| 
       161 
313 
     | 
    
         
             
                  # Standard stuff
         
     | 
| 
       162 
314 
     | 
    
         
             
                  assert_equal("C:\\a\\c", Pathname.new("C:\\a\\.\\b\\..\\c").clean)
         
     | 
| 
         @@ -170,8 +322,43 @@ class TC_Pathname_MSWin < Test::Unit::TestCase 
     | 
|
| 
       170 
322 
     | 
    
         
             
                  # Edge cases
         
     | 
| 
       171 
323 
     | 
    
         
             
                  assert_equal("\\", Pathname.new(".").clean)
         
     | 
| 
       172 
324 
     | 
    
         
             
                  assert_equal("\\", Pathname.new("..").clean)
         
     | 
| 
      
 325 
     | 
    
         
            +
             
     | 
| 
      
 326 
     | 
    
         
            +
                  assert_non_destructive
         
     | 
| 
       173 
327 
     | 
    
         
             
               end
         
     | 
| 
       174 
     | 
    
         
            -
             
     | 
| 
      
 328 
     | 
    
         
            +
             
     | 
| 
      
 329 
     | 
    
         
            +
               def test_clean_bang
         
     | 
| 
      
 330 
     | 
    
         
            +
                  assert_respond_to(@cpath, :clean!)
         
     | 
| 
      
 331 
     | 
    
         
            +
                  assert_nothing_raised{ @cpath.clean! }
         
     | 
| 
      
 332 
     | 
    
         
            +
                  assert_kind_of(Pathname, @cpath.clean!)
         
     | 
| 
      
 333 
     | 
    
         
            +
             
     | 
| 
      
 334 
     | 
    
         
            +
                  # Our preset stuff
         
     | 
| 
      
 335 
     | 
    
         
            +
                  assert_equal("C:\\Program Files\\Windows NT\\Accessories", @fpath.clean!)
         
     | 
| 
      
 336 
     | 
    
         
            +
                  assert_equal("C:\\Program Files\\Windows NT\\Accessories", @bpath.clean!)
         
     | 
| 
      
 337 
     | 
    
         
            +
                  assert_equal("\\\\foo\\bar\\baz", @upath.clean!)
         
     | 
| 
      
 338 
     | 
    
         
            +
                  assert_equal("foo\\bar\\baz", @npath.clean!)
         
     | 
| 
      
 339 
     | 
    
         
            +
                  assert_equal("Z:\\", @rpath.clean!)
         
     | 
| 
      
 340 
     | 
    
         
            +
                  assert_equal("\\\\foo\\bar", @xpath.clean!)
         
     | 
| 
      
 341 
     | 
    
         
            +
                  assert_equal("\\\\foo", @ypath.clean!)
         
     | 
| 
      
 342 
     | 
    
         
            +
                  assert_equal("\\\\", @zpath.clean!)
         
     | 
| 
      
 343 
     | 
    
         
            +
                  assert_equal("", @epath.clean!)
         
     | 
| 
      
 344 
     | 
    
         
            +
                  assert_equal("C:\\bar\\baz", @cpath.clean!)
         
     | 
| 
      
 345 
     | 
    
         
            +
             
     | 
| 
      
 346 
     | 
    
         
            +
                  # Standard stuff
         
     | 
| 
      
 347 
     | 
    
         
            +
                  assert_equal("C:\\a\\c", Pathname.new("C:\\a\\.\\b\\..\\c").clean!)
         
     | 
| 
      
 348 
     | 
    
         
            +
                  assert_equal("C:\\a", Pathname.new("C:\\.\\a").clean!)
         
     | 
| 
      
 349 
     | 
    
         
            +
                  assert_equal("C:\\a\\b", Pathname.new("C:\\a\\.\\b").clean!)
         
     | 
| 
      
 350 
     | 
    
         
            +
                  assert_equal("C:\\b", Pathname.new("C:\\a\\..\\b").clean!)
         
     | 
| 
      
 351 
     | 
    
         
            +
                  assert_equal("C:\\a", Pathname.new("C:\\a\\.").clean!)
         
     | 
| 
      
 352 
     | 
    
         
            +
                  assert_equal("C:\\d", Pathname.new("C:\\..\\..\\..\\d").clean!)
         
     | 
| 
      
 353 
     | 
    
         
            +
                  assert_equal("C:\\a\\", Pathname.new("C:\\a\\").clean!)
         
     | 
| 
      
 354 
     | 
    
         
            +
                  
         
     | 
| 
      
 355 
     | 
    
         
            +
                  # Edge cases
         
     | 
| 
      
 356 
     | 
    
         
            +
                  assert_equal("\\", Pathname.new(".").clean!)
         
     | 
| 
      
 357 
     | 
    
         
            +
                  assert_equal("\\", Pathname.new("..").clean!)
         
     | 
| 
      
 358 
     | 
    
         
            +
             
     | 
| 
      
 359 
     | 
    
         
            +
                  assert_equal("C:\\bar\\baz", @cpath)
         
     | 
| 
      
 360 
     | 
    
         
            +
               end
         
     | 
| 
      
 361 
     | 
    
         
            +
             
     | 
| 
       175 
362 
     | 
    
         
             
               def test_absolute
         
     | 
| 
       176 
363 
     | 
    
         
             
                  assert_equal(true, @fpath.absolute?)
         
     | 
| 
       177 
364 
     | 
    
         
             
                  assert_equal(true, @bpath.absolute?)
         
     | 
| 
         @@ -182,6 +369,8 @@ class TC_Pathname_MSWin < Test::Unit::TestCase 
     | 
|
| 
       182 
369 
     | 
    
         
             
                  assert_equal(true, @ypath.absolute?)
         
     | 
| 
       183 
370 
     | 
    
         
             
                  assert_equal(true, @zpath.absolute?)
         
     | 
| 
       184 
371 
     | 
    
         
             
                  assert_equal(false, @epath.absolute?)
         
     | 
| 
      
 372 
     | 
    
         
            +
                  
         
     | 
| 
      
 373 
     | 
    
         
            +
                  assert_non_destructive
         
     | 
| 
       185 
374 
     | 
    
         
             
               end
         
     | 
| 
       186 
375 
     | 
    
         | 
| 
       187 
376 
     | 
    
         
             
               def test_relative
         
     | 
| 
         @@ -194,10 +383,12 @@ class TC_Pathname_MSWin < Test::Unit::TestCase 
     | 
|
| 
       194 
383 
     | 
    
         
             
                  assert_equal(false, @ypath.relative?)
         
     | 
| 
       195 
384 
     | 
    
         
             
                  assert_equal(false, @zpath.relative?)
         
     | 
| 
       196 
385 
     | 
    
         
             
                  assert_equal(true, @epath.relative?)
         
     | 
| 
      
 386 
     | 
    
         
            +
                  
         
     | 
| 
      
 387 
     | 
    
         
            +
                  assert_non_destructive
         
     | 
| 
       197 
388 
     | 
    
         
             
               end
         
     | 
| 
       198 
389 
     | 
    
         | 
| 
       199 
390 
     | 
    
         
             
               def test_root
         
     | 
| 
       200 
     | 
    
         
            -
                  assert_equal("C:\\", @fpath.root)
         
     | 
| 
      
 391 
     | 
    
         
            +
                  assert_equal("C:\\", @fpath.root)     
         
     | 
| 
       201 
392 
     | 
    
         
             
                  assert_equal("C:\\", @bpath.root)
         
     | 
| 
       202 
393 
     | 
    
         
             
                  assert_equal("\\\\foo\\bar", @upath.root)
         
     | 
| 
       203 
394 
     | 
    
         
             
                  assert_equal(".", @npath.root)
         
     | 
| 
         @@ -210,6 +401,8 @@ class TC_Pathname_MSWin < Test::Unit::TestCase 
     | 
|
| 
       210 
401 
     | 
    
         
             
                  # Edge cases
         
     | 
| 
       211 
402 
     | 
    
         
             
                  assert_equal(".", Pathname.new("..").root)
         
     | 
| 
       212 
403 
     | 
    
         
             
                  assert_equal(".", Pathname.new(".").root)
         
     | 
| 
      
 404 
     | 
    
         
            +
                  
         
     | 
| 
      
 405 
     | 
    
         
            +
                  assert_non_destructive
         
     | 
| 
       213 
406 
     | 
    
         
             
               end
         
     | 
| 
       214 
407 
     | 
    
         | 
| 
       215 
408 
     | 
    
         
             
               def test_drive_number
         
     | 
| 
         @@ -226,6 +419,8 @@ class TC_Pathname_MSWin < Test::Unit::TestCase 
     | 
|
| 
       226 
419 
     | 
    
         
             
                  # Edge cases
         
     | 
| 
       227 
420 
     | 
    
         
             
                  assert_equal(nil, Pathname.new("..").drive_number)
         
     | 
| 
       228 
421 
     | 
    
         
             
                  assert_equal(nil, Pathname.new(".").drive_number)
         
     | 
| 
      
 422 
     | 
    
         
            +
                  
         
     | 
| 
      
 423 
     | 
    
         
            +
                  assert_non_destructive
         
     | 
| 
       229 
424 
     | 
    
         
             
               end
         
     | 
| 
       230 
425 
     | 
    
         | 
| 
       231 
426 
     | 
    
         
             
               def test_to_a
         
     | 
| 
         @@ -239,6 +434,9 @@ class TC_Pathname_MSWin < Test::Unit::TestCase 
     | 
|
| 
       239 
434 
     | 
    
         
             
                  assert_equal(["foo"], @ypath.to_a)
         
     | 
| 
       240 
435 
     | 
    
         
             
                  assert_equal([], @zpath.to_a)
         
     | 
| 
       241 
436 
     | 
    
         
             
                  assert_equal([], @epath.to_a)
         
     | 
| 
      
 437 
     | 
    
         
            +
                  assert_equal(["C:", "foo", "bar"], @ppath.to_a)
         
     | 
| 
      
 438 
     | 
    
         
            +
                  
         
     | 
| 
      
 439 
     | 
    
         
            +
                  assert_non_destructive
         
     | 
| 
       242 
440 
     | 
    
         
             
               end
         
     | 
| 
       243 
441 
     | 
    
         | 
| 
       244 
442 
     | 
    
         
             
               def test_is_root
         
     | 
| 
         @@ -251,8 +449,13 @@ class TC_Pathname_MSWin < Test::Unit::TestCase 
     | 
|
| 
       251 
449 
     | 
    
         
             
                  assert_equal(true, @ypath.root?)
         
     | 
| 
       252 
450 
     | 
    
         
             
                  assert_equal(true, @zpath.root?)
         
     | 
| 
       253 
451 
     | 
    
         
             
                  assert_equal(false, @epath.root?)
         
     | 
| 
      
 452 
     | 
    
         
            +
                  assert_equal(false, @ppath.root?)
         
     | 
| 
      
 453 
     | 
    
         
            +
                  
         
     | 
| 
      
 454 
     | 
    
         
            +
                  assert_non_destructive
         
     | 
| 
       254 
455 
     | 
    
         
             
               end
         
     | 
| 
       255 
     | 
    
         
            -
             
     | 
| 
      
 456 
     | 
    
         
            +
              
         
     | 
| 
      
 457 
     | 
    
         
            +
               # These are the methods from IO we have to explicitly define since
         
     | 
| 
      
 458 
     | 
    
         
            +
               # they aren't handled by Facade.
         
     | 
| 
       256 
459 
     | 
    
         
             
               def test_facade_io
         
     | 
| 
       257 
460 
     | 
    
         
             
                  assert_respond_to(@fpath, :foreach)
         
     | 
| 
       258 
461 
     | 
    
         
             
                  assert_respond_to(@fpath, :read)
         
     | 
| 
         @@ -297,17 +500,21 @@ class TC_Pathname_MSWin < Test::Unit::TestCase 
     | 
|
| 
       297 
500 
     | 
    
         
             
               end
         
     | 
| 
       298 
501 
     | 
    
         | 
| 
       299 
502 
     | 
    
         
             
               def test_children
         
     | 
| 
       300 
     | 
    
         
            -
                  Dir.chdir("..") if File.basename(Dir.pwd) == "test"
         
     | 
| 
       301 
     | 
    
         
            -
                  @cur_path = Pathname.new(Dir.pwd)
         
     | 
| 
       302 
     | 
    
         
            -
             
     | 
| 
       303 
503 
     | 
    
         
             
                  assert_respond_to(@cur_path, :children)
         
     | 
| 
       304 
504 
     | 
    
         
             
                  assert_nothing_raised{ @cur_path.children }
         
     | 
| 
       305 
505 
     | 
    
         
             
                  assert_kind_of(Array, @cur_path.children)
         
     | 
| 
       306 
506 
     | 
    
         | 
| 
      
 507 
     | 
    
         
            +
                  # Delete Eclipse related files
         
     | 
| 
      
 508 
     | 
    
         
            +
                  children = @cur_path.children
         
     | 
| 
      
 509 
     | 
    
         
            +
                  children.delete_if{ |e| File.basename(e) == "CVS" }
         
     | 
| 
      
 510 
     | 
    
         
            +
                  children.delete_if{ |e| File.basename(e) == ".cvsignore" }
         
     | 
| 
      
 511 
     | 
    
         
            +
                  children.delete_if{ |e| File.basename(e) == ".project" }
         
     | 
| 
      
 512 
     | 
    
         
            +
             
     | 
| 
       307 
513 
     | 
    
         
             
                  assert_equal(
         
     | 
| 
       308 
514 
     | 
    
         
             
                     [
         
     | 
| 
       309 
515 
     | 
    
         
             
                        Dir.pwd + "/CHANGES",
         
     | 
| 
       310 
516 
     | 
    
         
             
                        Dir.pwd + "/examples",
         
     | 
| 
      
 517 
     | 
    
         
            +
                        Dir.pwd + "/ext",
         
     | 
| 
       311 
518 
     | 
    
         
             
                        Dir.pwd + "/install.rb",
         
     | 
| 
       312 
519 
     | 
    
         
             
                        Dir.pwd + "/lib",
         
     | 
| 
       313 
520 
     | 
    
         
             
                        Dir.pwd + "/MANIFEST",
         
     | 
| 
         @@ -315,20 +522,28 @@ class TC_Pathname_MSWin < Test::Unit::TestCase 
     | 
|
| 
       315 
522 
     | 
    
         
             
                        Dir.pwd + "/README",
         
     | 
| 
       316 
523 
     | 
    
         
             
                        Dir.pwd + "/test"
         
     | 
| 
       317 
524 
     | 
    
         
             
                     ].map{ |e| e.tr("/","\\") },
         
     | 
| 
       318 
     | 
    
         
            -
                      
     | 
| 
      
 525 
     | 
    
         
            +
                     children
         
     | 
| 
       319 
526 
     | 
    
         
             
                  )
         
     | 
| 
      
 527 
     | 
    
         
            +
                  
         
     | 
| 
      
 528 
     | 
    
         
            +
                  # Delete Eclipse related files
         
     | 
| 
      
 529 
     | 
    
         
            +
                  children = @cur_path.children(false)
         
     | 
| 
      
 530 
     | 
    
         
            +
                  children.delete("CVS")
         
     | 
| 
      
 531 
     | 
    
         
            +
                  children.delete(".cvsignore")
         
     | 
| 
      
 532 
     | 
    
         
            +
                  children.delete(".project")
         
     | 
| 
      
 533 
     | 
    
         
            +
                  
         
     | 
| 
       320 
534 
     | 
    
         
             
                  assert_equal(
         
     | 
| 
       321 
535 
     | 
    
         
             
                     [
         
     | 
| 
       322 
     | 
    
         
            -
                        "CHANGES","examples","install.rb","lib",
         
     | 
| 
      
 536 
     | 
    
         
            +
                        "CHANGES","examples","ext","install.rb","lib",
         
     | 
| 
       323 
537 
     | 
    
         
             
                        "MANIFEST", "pathname2.gemspec", "README", "test"
         
     | 
| 
       324 
538 
     | 
    
         
             
                     ],
         
     | 
| 
       325 
     | 
    
         
            -
                      
     | 
| 
      
 539 
     | 
    
         
            +
                     children
         
     | 
| 
       326 
540 
     | 
    
         
             
                  )
         
     | 
| 
       327 
541 
     | 
    
         
             
               end
         
     | 
| 
       328 
     | 
    
         
            -
             
     | 
| 
      
 542 
     | 
    
         
            +
              
         
     | 
| 
       329 
543 
     | 
    
         
             
               def teardown
         
     | 
| 
       330 
544 
     | 
    
         
             
                  @fpath = nil
         
     | 
| 
       331 
545 
     | 
    
         
             
                  @bpath = nil
         
     | 
| 
      
 546 
     | 
    
         
            +
                  @dpath = nil
         
     | 
| 
       332 
547 
     | 
    
         
             
                  @spath = nil
         
     | 
| 
       333 
548 
     | 
    
         
             
                  @upath = nil
         
     | 
| 
       334 
549 
     | 
    
         
             
                  @npath = nil
         
     | 
| 
         @@ -337,6 +552,11 @@ class TC_Pathname_MSWin < Test::Unit::TestCase 
     | 
|
| 
       337 
552 
     | 
    
         
             
                  @ypath = nil
         
     | 
| 
       338 
553 
     | 
    
         
             
                  @zpath = nil
         
     | 
| 
       339 
554 
     | 
    
         
             
                  @epath = nil
         
     | 
| 
      
 555 
     | 
    
         
            +
                  @ppath = nil
         
     | 
| 
      
 556 
     | 
    
         
            +
                  @cpath = nil
         
     | 
| 
      
 557 
     | 
    
         
            +
                  @tpath = nil
         
     | 
| 
      
 558 
     | 
    
         
            +
             
     | 
| 
      
 559 
     | 
    
         
            +
                  @cur_path = nil
         
     | 
| 
       340 
560 
     | 
    
         | 
| 
       341 
561 
     | 
    
         
             
                  @abs_array.clear
         
     | 
| 
       342 
562 
     | 
    
         
             
                  @rel_array.clear
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,10 +1,10 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
     | 
    
         
            -
            rubygems_version: 0.8. 
     | 
| 
      
 2 
     | 
    
         
            +
            rubygems_version: 0.8.10
         
     | 
| 
       3 
3 
     | 
    
         
             
            specification_version: 1
         
     | 
| 
       4 
4 
     | 
    
         
             
            name: pathname2
         
     | 
| 
       5 
5 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       6 
     | 
    
         
            -
              version: 1. 
     | 
| 
       7 
     | 
    
         
            -
            date: 2005- 
     | 
| 
      
 6 
     | 
    
         
            +
              version: 1.4.0
         
     | 
| 
      
 7 
     | 
    
         
            +
            date: 2005-12-19
         
     | 
| 
       8 
8 
     | 
    
         
             
            summary: An alternate implementation of the Pathname class
         
     | 
| 
       9 
9 
     | 
    
         
             
            require_paths: 
         
     | 
| 
       10 
10 
     | 
    
         
             
              - lib
         
     | 
| 
         @@ -24,17 +24,15 @@ required_ruby_version: !ruby/object:Gem::Version::Requirement 
     | 
|
| 
       24 
24 
     | 
    
         
             
                    version: 0.0.0
         
     | 
| 
       25 
25 
     | 
    
         
             
              version: 
         
     | 
| 
       26 
26 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       27 
     | 
    
         
            -
            signing_key: 
         
     | 
| 
       28 
     | 
    
         
            -
            cert_chain: 
         
     | 
| 
       29 
27 
     | 
    
         
             
            authors: 
         
     | 
| 
       30 
28 
     | 
    
         
             
              - Daniel J. Berger
         
     | 
| 
       31 
29 
     | 
    
         
             
            files: 
         
     | 
| 
       32 
30 
     | 
    
         
             
              - lib/pathname2.rb
         
     | 
| 
      
 31 
     | 
    
         
            +
              - README
         
     | 
| 
       33 
32 
     | 
    
         
             
              - CHANGES
         
     | 
| 
       34 
33 
     | 
    
         
             
              - MANIFEST
         
     | 
| 
       35 
     | 
    
         
            -
              - README
         
     | 
| 
       36 
     | 
    
         
            -
              - test/tc_pathname.rb
         
     | 
| 
       37 
34 
     | 
    
         
             
              - test/tc_pathname_win.rb
         
     | 
| 
      
 35 
     | 
    
         
            +
              - test/tc_pathname.rb
         
     | 
| 
       38 
36 
     | 
    
         
             
            test_files: 
         
     | 
| 
       39 
37 
     | 
    
         
             
              - test/tc_pathname.rb
         
     | 
| 
       40 
38 
     | 
    
         
             
            rdoc_options: []
         
     |