dtas-all
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] player/client_handler: support for dumping individual env


From: Eric Wong
Subject: [PATCH] player/client_handler: support for dumping individual env
Date: Sun, 1 Sep 2013 22:37:14 +0000

This allows users to display the current env value for introspection
---
 lib/dtas/player/client_handler.rb  |  8 ++++++++
 test/test_player_client_handler.rb | 12 ++++++++++++
 2 files changed, 20 insertions(+)

diff --git a/lib/dtas/player/client_handler.rb 
b/lib/dtas/player/client_handler.rb
index 16714f0..7f1c72e 100644
--- a/lib/dtas/player/client_handler.rb
+++ b/lib/dtas/player/client_handler.rb
@@ -416,6 +416,14 @@ module DTAS::Player::ClientHandler # :nodoc:
   end
 
   def env_handler(io, msg)
+    if msg.empty?
+      # this may fail for large envs due to SEQPACKET size restrictions
+      # do we care?
+      env = ENV.map do |k,v|
+        "#{Shellwords.escape(k)}=#{Shellwords.escape(v)}"
+      end.join(' ')
+      return io.emit(env)
+    end
     msg.each do |kv|
       case kv
       when %r{\A([^=]+)=(.*)\z}
diff --git a/test/test_player_client_handler.rb 
b/test/test_player_client_handler.rb
index 21d8489..edcb35d 100644
--- a/test/test_player_client_handler.rb
+++ b/test/test_player_client_handler.rb
@@ -82,4 +82,16 @@ class TestPlayerClientHandler < Minitest::Unit::TestCase
     sink_handler(@io, %W(ls))
     assert_equal expect, Shellwords.split(@io[0])
   end
+
+  def test_env
+    env_handler(@io, [])
+    res = @io[0]
+    result = {}
+    Shellwords.split(res).each do |kv|
+      k, v = kv.split(/=/, 2)
+      result[k] = v
+    end
+    expect = ENV.to_hash
+    assert_equal expect, result
+  end
 end
-- 
1.8.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]