win32-dir 0.4.4 → 0.4.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0abef2cc454787626bc32d89de4bc1d1dc1e20ce
4
- data.tar.gz: b042f768bc130b2b5eb6eaa7699b8804c3218d4c
3
+ metadata.gz: fc264e17d1f2e530579a3a8fcc10b3551a3614f9
4
+ data.tar.gz: 33499544ea2cd22078cc9270de270cb66a19d1f9
5
5
  SHA512:
6
- metadata.gz: f3a6e1540dcecf539acc55d0de4dc465f9c811d0ab427a7fdd12e3f458718f19ba5ea9bea5121ed8b0a34b5fb200390d59e4a861c3cff68cfadce90da01c072b
7
- data.tar.gz: 3e3c8f2ef6369233dcdba2fcbc8048c5ae18db79da9d24417ba6265bf13b43d64fae0d73ac6d067b6fad5a6edf4fa241e210f91c260541780762fdd45fc11f21
6
+ metadata.gz: aa1143644ec25286a8e5da0842e549c4d43435b8322f9c266ee153ff06c3122adb4c1469f500687881b85476b05111636b7c88a7d5b87f3f90c9127cdf41207c
7
+ data.tar.gz: c18966592a496f45d5338a3c3772d30692975d96031914f7522f586dc42fb0a369e9489ec374de9ec3cf6ebff440663c92e64e4bc78baf909faa2ff1fcd7151d
data/CHANGES CHANGED
@@ -1,3 +1,8 @@
1
+ == 0.4.5 - 23-Sep-2013
2
+ * Yet another encoding fix, this time one that affected JRuby.
3
+ * Fixed the Dir[] and Dir.glob methods so they match the spec. Thanks go
4
+ to Chris Westbrook for the spot.
5
+
1
6
  == 0.4.4 - 22-Sep-2013
2
7
  * Yet another encoding fix. Thanks go to Rob Reynolds for the patch.
3
8
 
data/lib/win32/dir.rb CHANGED
@@ -8,7 +8,7 @@ class Dir
8
8
  extend Dir::Functions
9
9
 
10
10
  # The version of the win32-dir library.
11
- VERSION = '0.4.4'
11
+ VERSION = '0.4.5'
12
12
 
13
13
  # CSIDL constants
14
14
  csidl = Hash[
@@ -93,7 +93,11 @@ class Dir
93
93
  end
94
94
  end
95
95
 
96
- Dir.const_set(key, path.encode(Encoding.default_external)) if path
96
+ begin
97
+ Dir.const_set(key, path.encode(Encoding.default_external)) if path
98
+ rescue Encoding::UndefinedConversionError
99
+ Dir.const_set(key, path.encode('UTF-8')) if path
100
+ end
97
101
  }
98
102
 
99
103
  # Set Dir::MYDOCUMENTS to the same as Dir::PERSONAL if undefined
@@ -108,8 +112,13 @@ class Dir
108
112
  # backslashes in path names.
109
113
  #
110
114
  def glob(glob_pattern, flags = 0, &block)
111
- glob_pattern = glob_pattern.tr("\\", "/")
112
- old_glob(glob_pattern, flags, &block)
115
+ if glob_pattern.is_a?(Array)
116
+ temp = glob_pattern.map!{ |pattern| pattern.tr("\\", "/") }
117
+ else
118
+ temp = glob_pattern.tr("\\", "/")
119
+ end
120
+
121
+ old_glob(temp, flags, &block)
113
122
  end
114
123
 
115
124
  alias old_ref []
@@ -117,9 +126,9 @@ class Dir
117
126
  # Same as the standard MRI Dir[] method except that it handles
118
127
  # backslashes in path names.
119
128
  #
120
- def [](glob_pattern)
121
- glob_pattern = glob_pattern.tr("\\", "/")
122
- old_ref(glob_pattern)
129
+ def [](*glob_patterns)
130
+ temp = glob_patterns.map!{ |pattern| pattern.tr("\\", "/") }
131
+ old_ref(*temp)
123
132
  end
124
133
 
125
134
  # JRuby normalizes the path by default.
@@ -160,8 +169,11 @@ class Dir
160
169
  if GetLongPathNameW(path2, path3, path3.size) == 0
161
170
  raise SystemCallError.new("GetLongPathNameW", FFI.errno)
162
171
  end
163
-
164
- path3.strip.encode(Encoding.default_external)
172
+ begin
173
+ path3.strip.encode(Encoding.default_external)
174
+ rescue Encoding::UndefinedConversionError
175
+ path3.strip.encode('UTF-8')
176
+ end
165
177
  end
166
178
 
167
179
  alias :pwd :getwd
@@ -347,7 +359,11 @@ class Dir
347
359
  jname = jname.bytes.to_a.pack('C*')
348
360
  jname = jname.force_encoding("UTF-16LE")
349
361
  raise "Junction name came back as #{jname}" unless jname[0..3] == "\\??\\".encode("UTF-16LE")
350
- File.expand_path(jname[4..-1].encode(Encoding.default_external))
362
+ begin
363
+ File.expand_path(jname[4..-1].encode(Encoding.default_external))
364
+ rescue Encoding::UndefinedConversionError
365
+ File.expand_path(jname[4..-1].encode('UTF-8'))
366
+ end
351
367
  end
352
368
 
353
369
  # Returns whether or not +path+ is empty. Returns false if +path+ is not
@@ -25,7 +25,7 @@ class TC_Win32_Dir < Test::Unit::TestCase
25
25
  end
26
26
 
27
27
  test "version number is set to expected value" do
28
- assert_equal('0.4.4', Dir::VERSION)
28
+ assert_equal('0.4.5', Dir::VERSION)
29
29
  end
30
30
 
31
31
  test 'glob handles backslashes' do
@@ -34,6 +34,13 @@ class TC_Win32_Dir < Test::Unit::TestCase
34
34
  assert_true(Dir.glob(pattern).size > 0)
35
35
  end
36
36
 
37
+ test 'glob handles multiple strings' do
38
+ pattern1 = "C:\\Program Files\\Common Files\\System\\*.dll"
39
+ pattern2 = "C:\\Windows\\*.exe"
40
+ assert_nothing_raised{ Dir.glob([pattern1, pattern2]) }
41
+ assert_true(Dir.glob([pattern1, pattern2]).size > 0)
42
+ end
43
+
37
44
  test 'glob still observes flags' do
38
45
  assert_nothing_raised{ Dir.glob('*', File::FNM_DOTMATCH ) }
39
46
  assert_true(Dir.glob('*', File::FNM_DOTMATCH).include?('.'))
@@ -51,6 +58,13 @@ class TC_Win32_Dir < Test::Unit::TestCase
51
58
  assert_true(Dir[pattern].size > 0)
52
59
  end
53
60
 
61
+ test 'ref handles multiple arguments' do
62
+ pattern1 = "C:\\Program Files\\Common Files\\System\\*.dll"
63
+ pattern2 = "C:\\Windows\\*.exe"
64
+ assert_nothing_raised{ Dir[pattern1, pattern2] }
65
+ assert_true(Dir[pattern1, pattern2].size > 0)
66
+ end
67
+
54
68
  test "create_junction basic functionality" do
55
69
  assert_respond_to(Dir, :create_junction)
56
70
  end
data/win32-dir.gemspec CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = 'win32-dir'
5
- spec.version = '0.4.4'
5
+ spec.version = '0.4.5'
6
6
  spec.authors = ['Daniel J. Berger', 'Park Heesob']
7
7
  spec.license = 'Artistic 2.0'
8
8
  spec.email = 'djberg96@gmail.com'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: win32-dir
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel J. Berger
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-09-22 00:00:00.000000000 Z
12
+ date: 2013-09-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ffi