jscmd 0.0.2
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/COPYING +56 -0
- data/GPL +340 -0
- data/History.txt +7 -0
- data/Manifest.txt +16 -0
- data/README.txt +6 -0
- data/Rakefile +89 -0
- data/bin/jscmd +44 -0
- data/lib/jscmd.rb +1 -0
- data/lib/jscmd/agent.js +253 -0
- data/lib/jscmd/asynchttpproxy.rb +140 -0
- data/lib/jscmd/jscommander.rb +339 -0
- data/lib/jscmd/version.rb +9 -0
- data/scripts/txt2html +67 -0
- data/setup.rb +1585 -0
- data/test/test_helper.rb +2 -0
- data/test/test_jscmd.rb +94 -0
- metadata +62 -0
data/test/test_helper.rb
ADDED
data/test/test_jscmd.rb
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
$port = 19000
|
2
|
+
|
3
|
+
$proxy_stdin, $proxy_stdin_writer = IO.pipe
|
4
|
+
$proxy_stdout_reader, $proxy_stdout = IO.pipe
|
5
|
+
|
6
|
+
$shell_pid = fork do
|
7
|
+
at_exit {} # prevent TestRunner from running
|
8
|
+
$stdin.reopen($proxy_stdin)
|
9
|
+
$stdout.reopen($proxy_stdout)
|
10
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
11
|
+
server = JSCommander::Broker.new(:Port => $port, :AccessLog => [])
|
12
|
+
server.start
|
13
|
+
end
|
14
|
+
|
15
|
+
require "net/http"
|
16
|
+
require "open-uri"
|
17
|
+
require "test/unit"
|
18
|
+
require "zlib"
|
19
|
+
|
20
|
+
# wait until the server starts up
|
21
|
+
60.times do
|
22
|
+
begin
|
23
|
+
Net::HTTP.get("localhost", "/", $port)
|
24
|
+
break
|
25
|
+
rescue Exception => e
|
26
|
+
end
|
27
|
+
puts "waiting..."
|
28
|
+
sleep 0.5
|
29
|
+
end
|
30
|
+
|
31
|
+
class TestJscmd < Test::Unit::TestCase
|
32
|
+
def test_proxy
|
33
|
+
open("http://www.google.co.jp/", :proxy => "http://localhost:#{$port}/") do |f|
|
34
|
+
assert_match %r{/_remote_js_proxy/agent.js}, f.read
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_proxy_with_gzip_compression
|
39
|
+
body = Net::HTTP.start("www.google.co.jp", 80, "localhost", $port) do |h|
|
40
|
+
res = h.get("/",
|
41
|
+
"Accept-Encoding" => "gzip",
|
42
|
+
"User-Agent" => "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; ja-JP-mac; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3")
|
43
|
+
assert_equal "gzip", res["content-encoding"]
|
44
|
+
assert_match %r{/_remote_js_proxy/agent.js},
|
45
|
+
Zlib::GzipReader.new(StringIO.new(res.body)).read
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_get_script
|
50
|
+
open("http://www.google.com/_remote_js_proxy/agent.js", :proxy => "http://localhost:#{$port}/") do |f|
|
51
|
+
assert_equal File.read("lib/jscmd/agent.js"), f.read
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_poll_and_get_command
|
56
|
+
$proxy_stdin_writer.puts "window"
|
57
|
+
# assert_equal "> window\n", $proxy_stdout_reader.readline
|
58
|
+
open("http://www.google.com/_remote_js_proxy/poll", :proxy => "http://localhost:#{$port}/") do |f|
|
59
|
+
assert_equal "Ewindow", f.read
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_poll_and_post_value
|
64
|
+
begin
|
65
|
+
body = nil
|
66
|
+
t = Thread.start do
|
67
|
+
# browser thread
|
68
|
+
begin
|
69
|
+
Net::HTTP.start("www.google.com", 80, "localhost", $port) do |h|
|
70
|
+
# (1) send value from browser to shell
|
71
|
+
body = h.post("/_remote_js_proxy/poll", "Vabc",
|
72
|
+
"Content-Type" => "application/x-www-form-urlencoded").body
|
73
|
+
# (4) received another command and long-poll terminates
|
74
|
+
end
|
75
|
+
rescue Exception => e
|
76
|
+
p e
|
77
|
+
end
|
78
|
+
end
|
79
|
+
assert_match(/(sleep|run)/, t.status)
|
80
|
+
# (2) read value sent from browser
|
81
|
+
assert_equal "abc\n", $proxy_stdout_reader.readline
|
82
|
+
assert_match(/(sleep|run)/, t.status)
|
83
|
+
ensure
|
84
|
+
# (3) send another command to finish long-poll in browser
|
85
|
+
$proxy_stdin_writer.puts "window"
|
86
|
+
t.join
|
87
|
+
assert_equal "Ewindow", body
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
END { Process.kill "TERM", $shell_pid; Process.waitall }
|
93
|
+
|
94
|
+
exit Test::Unit::AutoRunner.run
|
metadata
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
rubygems_version: 0.9.2
|
3
|
+
specification_version: 1
|
4
|
+
name: jscmd
|
5
|
+
version: !ruby/object:Gem::Version
|
6
|
+
version: 0.0.2
|
7
|
+
date: 2007-05-08 00:00:00 +09:00
|
8
|
+
summary: JavaScript console for any browser
|
9
|
+
require_paths:
|
10
|
+
- lib
|
11
|
+
email: kasatani@gmail.com
|
12
|
+
homepage: http://jscmd.rubyforge.org
|
13
|
+
rubyforge_project: jscmd
|
14
|
+
description: JavaScript console for any browser
|
15
|
+
autorequire:
|
16
|
+
default_executable:
|
17
|
+
bindir: bin
|
18
|
+
has_rdoc: true
|
19
|
+
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.0.0
|
24
|
+
version:
|
25
|
+
platform: ruby
|
26
|
+
signing_key:
|
27
|
+
cert_chain:
|
28
|
+
post_install_message:
|
29
|
+
authors:
|
30
|
+
- Shinya Kasatani
|
31
|
+
files:
|
32
|
+
- COPYING
|
33
|
+
- GPL
|
34
|
+
- History.txt
|
35
|
+
- Manifest.txt
|
36
|
+
- README.txt
|
37
|
+
- Rakefile
|
38
|
+
- bin/jscmd
|
39
|
+
- lib/jscmd.rb
|
40
|
+
- lib/jscmd/version.rb
|
41
|
+
- lib/jscmd/jscommander.rb
|
42
|
+
- lib/jscmd/asynchttpproxy.rb
|
43
|
+
- lib/jscmd/agent.js
|
44
|
+
- scripts/txt2html
|
45
|
+
- setup.rb
|
46
|
+
- test/test_helper.rb
|
47
|
+
- test/test_jscmd.rb
|
48
|
+
test_files:
|
49
|
+
- test/test_helper.rb
|
50
|
+
- test/test_jscmd.rb
|
51
|
+
rdoc_options: []
|
52
|
+
|
53
|
+
extra_rdoc_files: []
|
54
|
+
|
55
|
+
executables:
|
56
|
+
- jscmd
|
57
|
+
extensions: []
|
58
|
+
|
59
|
+
requirements: []
|
60
|
+
|
61
|
+
dependencies: []
|
62
|
+
|