diff options
author | Eric Wong <normalperson@yhbt.net> | 2013-09-01 22:31:08 +0000 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2013-09-01 22:31:08 +0000 |
commit | 8c77e3311e28cc73ff9959b3477d7028081940f3 (patch) | |
tree | d604e36759e7f2df2c79beb30880487b6e135c0d | |
parent | a3fe4eabd4b3f1eaefb2589061e09787c000690d (diff) | |
download | dtas-8c77e3311e28cc73ff9959b3477d7028081940f3.tar.gz |
This allows users to display the current env value for introspection
-rw-r--r-- | lib/dtas/player/client_handler.rb | 8 | ||||
-rw-r--r-- | test/test_player_client_handler.rb | 12 |
2 files changed, 20 insertions, 0 deletions
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 |