diff options
-rw-r--r-- | lib/raindrops/linux.rb | 9 | ||||
-rw-r--r-- | test/test_linux.rb | 20 |
2 files changed, 18 insertions, 11 deletions
diff --git a/lib/raindrops/linux.rb b/lib/raindrops/linux.rb index a198253..1752b8a 100644 --- a/lib/raindrops/linux.rb +++ b/lib/raindrops/linux.rb @@ -43,9 +43,14 @@ module Raindrops::Linux else paths = paths.map do |path| path = path.dup - path = Pathname.new(path).realpath.to_s path.force_encoding(Encoding::BINARY) if defined?(Encoding) - rv[path] + if File.symlink?(path) + link = path + path = Pathname.new(link).realpath.to_s + rv[link] = rv[path] # vivify ListenerStats + else + rv[path] # vivify ListenerStats + end Regexp.escape(path) end end diff --git a/test/test_linux.rb b/test/test_linux.rb index 81463c9..a84eecf 100644 --- a/test/test_linux.rb +++ b/test/test_linux.rb @@ -73,24 +73,26 @@ class TestLinux < Test::Unit::TestCase us = UNIXServer.new(tmp.path) # Create a symlink - destination = Tempfile.new("somethingelse") - destination.unlink # We need an available name, not an actual file - link = File.symlink(tmp, destination) + link = Tempfile.new("somethingelse") + File.unlink(link.path) # We need an available name, not an actual file + File.symlink(tmp.path, link.path) @to_close << UNIXSocket.new(tmp.path) stats = unix_listener_stats - assert_equal 0, stats[link.path].active - assert_equal 1, stats[link.path].queued + assert_equal 0, stats[tmp.path].active + assert_equal 1, stats[tmp.path].queued - @to_close << UNIXSocket.new(tmp.path) - stats = unix_listener_stats + @to_close << UNIXSocket.new(link.path) + stats = unix_listener_stats([link.path]) assert_equal 0, stats[link.path].active assert_equal 2, stats[link.path].queued + assert_equal stats[link.path].object_id, stats[tmp.path].object_id + @to_close << us.accept stats = unix_listener_stats - assert_equal 1, stats[link.path].active - assert_equal 1, stats[link.path].queued + assert_equal 1, stats[tmp.path].active + assert_equal 1, stats[tmp.path].queued end def test_tcp |