boojs 0.0.19 → 0.0.20
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/boojs.gemspec +1 -0
- data/lib/boojs/version.rb +1 -1
- data/spec/helpers.rb +103 -0
- data/spec/sample_spec.rb +21 -11
- data/spec/samples/jquery_ajax.js +1 -1
- metadata +17 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a6986660e9db31fd0c1344f0db02d96326090a5e
|
4
|
+
data.tar.gz: eaae81bfccf3a5bd904fd412dbfa4f92927c91a3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7ee8a3a28e6cec16dfc73e67fb1c6a0a7422993d5ae7c577e7acebddef4b20b52c442021fb015b455d32169b59946e4416ecf60c92b0c84088722a1093309e58
|
7
|
+
data.tar.gz: 56dfee67ae455e719aef13dd9cb43e110cf3c38dd3affc52876b7ce0ee426f060024ec7d60c935c3eb3d1fc458e59187ba7fbd1c9b8fbf01c68654c9f5125d75
|
data/boojs.gemspec
CHANGED
@@ -22,6 +22,7 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.add_development_dependency "pry", "~> 0.1"
|
23
23
|
spec.add_development_dependency "rake", "~> 10.3"
|
24
24
|
spec.add_development_dependency "rspec", "~> 3.2"
|
25
|
+
spec.add_development_dependency 'webrick', '~> 1.3'
|
25
26
|
spec.add_runtime_dependency "phantomjs", "~> 1.9"
|
26
27
|
spec.add_runtime_dependency "greenletters", "~> 0.3"
|
27
28
|
spec.executables << 'boojs'
|
data/lib/boojs/version.rb
CHANGED
data/spec/helpers.rb
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
require 'securerandom'
|
2
|
+
require 'json'
|
3
|
+
require 'webrick'
|
4
|
+
|
5
|
+
#Duplex pipe
|
6
|
+
###################################################################################################################
|
7
|
+
class IO
|
8
|
+
def self.duplex_pipe
|
9
|
+
return DuplexPipe.new
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class DuplexPipe
|
14
|
+
def initialize
|
15
|
+
@r0, @w0 = IO.pipe
|
16
|
+
@r1, @w1 = IO.pipe
|
17
|
+
end
|
18
|
+
|
19
|
+
#Choose arbitrary side, just different ones for forked processes
|
20
|
+
def claim_low
|
21
|
+
@r = @r0
|
22
|
+
@w = @w1
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
def claim_high
|
28
|
+
@r = @r1
|
29
|
+
@w = @w0
|
30
|
+
end
|
31
|
+
|
32
|
+
def write msg
|
33
|
+
@w.write msg
|
34
|
+
end
|
35
|
+
|
36
|
+
def puts msg
|
37
|
+
@w.puts msg
|
38
|
+
end
|
39
|
+
|
40
|
+
def readline
|
41
|
+
@r.readline
|
42
|
+
end
|
43
|
+
end
|
44
|
+
###################################################################################################################
|
45
|
+
|
46
|
+
#RESTful mock
|
47
|
+
###################################################################################################################
|
48
|
+
module Webbing
|
49
|
+
def self.get path, port=nil, &block
|
50
|
+
Webbing.new "GET", path, port, &block
|
51
|
+
end
|
52
|
+
|
53
|
+
class Webbing
|
54
|
+
attr_accessor :pid
|
55
|
+
attr_accessor :port
|
56
|
+
|
57
|
+
def kill
|
58
|
+
Process.kill("KILL", @pid)
|
59
|
+
end
|
60
|
+
|
61
|
+
def initialize verb, path, port=nil, &block
|
62
|
+
@verb = verb
|
63
|
+
@path = path
|
64
|
+
@block = block
|
65
|
+
@port = port || rand(30000)+3000
|
66
|
+
|
67
|
+
@pipe = IO.duplex_pipe
|
68
|
+
@pid = fork do
|
69
|
+
@pipe.claim_high
|
70
|
+
@server = ::WEBrick::HTTPServer.new :Port => @port, :DocumentRoot => ".", :StartCallback => Proc.new {
|
71
|
+
@pipe.puts("ready")
|
72
|
+
}
|
73
|
+
@server.mount_proc '/' do |req, res|
|
74
|
+
@pipe.puts req.query.to_json
|
75
|
+
res.body = @pipe.readline
|
76
|
+
res.header["Access-Control-Allow-Origin"] = "*"
|
77
|
+
res.header["Content-Type"] = "json/text"
|
78
|
+
end
|
79
|
+
@server.mount_proc '/404' do |req, res|
|
80
|
+
res.header["Access-Control-Allow-Origin"] = "*"
|
81
|
+
|
82
|
+
raise WEBrick::HTTPStatus::NotFound
|
83
|
+
end
|
84
|
+
@server.start
|
85
|
+
end
|
86
|
+
|
87
|
+
@pipe.claim_low
|
88
|
+
@pipe.readline #Wait for 'ready'
|
89
|
+
Thread.new do
|
90
|
+
begin
|
91
|
+
loop do
|
92
|
+
params = JSON.parse(@pipe.readline)
|
93
|
+
res = @block.call(params)
|
94
|
+
@pipe.puts res.to_json
|
95
|
+
end
|
96
|
+
rescue => e
|
97
|
+
$stderr.puts "Exception: #{e.inspect}"
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
###################################################################################################################
|
data/spec/sample_spec.rb
CHANGED
@@ -1,20 +1,30 @@
|
|
1
|
+
require './spec/helpers'
|
2
|
+
|
1
3
|
Dir.chdir File.join(File.dirname(__FILE__), '../')
|
2
4
|
#Files that are reported as bugged end up here for testing.
|
3
5
|
RSpec.describe "Live Culture" do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
6
|
+
it "Can run jquery_ajax.js and output success" do
|
7
|
+
begin
|
8
|
+
@web = Webbing.get("/", 4545) do |info|
|
9
|
+
{"hello" => "world"}
|
10
|
+
end
|
11
|
+
|
12
|
+
begin
|
13
|
+
Timeout.timeout(8) do
|
14
|
+
IO.popen "ruby -Ilib ./bin/boojs ./spec/samples/jquery_ajax.js", "r" do |p|
|
15
|
+
begin
|
16
|
+
@res = p.readline.strip
|
17
|
+
ensure
|
18
|
+
Process.kill 9, p.pid
|
19
|
+
end
|
12
20
|
end
|
13
21
|
end
|
22
|
+
rescue
|
14
23
|
end
|
15
|
-
rescue
|
16
|
-
end
|
17
24
|
|
18
|
-
|
25
|
+
expect(@res).to eq("success")
|
26
|
+
ensure
|
27
|
+
Process.kill(:KILL, @web.pid)
|
28
|
+
end
|
19
29
|
end
|
20
30
|
end
|
data/spec/samples/jquery_ajax.js
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: boojs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.20
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- seo
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '3.2'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: webrick
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.3'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.3'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: phantomjs
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -115,6 +129,7 @@ files:
|
|
115
129
|
- lib/boojs/version.rb
|
116
130
|
- logo.png
|
117
131
|
- spec/cli_spec.rb
|
132
|
+
- spec/helpers.rb
|
118
133
|
- spec/sample_spec.rb
|
119
134
|
- spec/samples/jquery_ajax.js
|
120
135
|
- usage.gif
|
@@ -144,5 +159,6 @@ specification_version: 4
|
|
144
159
|
summary: A boring javascript application framework
|
145
160
|
test_files:
|
146
161
|
- spec/cli_spec.rb
|
162
|
+
- spec/helpers.rb
|
147
163
|
- spec/sample_spec.rb
|
148
164
|
- spec/samples/jquery_ajax.js
|