9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
# File 'lib/opal/connect/plugins/rspec.rb', line 9
def run_rspec
read, write = IO.pipe
pid = fork do
read.close
rspec_requires = []
options = Opal::Connect.options[:rspec]
Opal.append_path "./#{options[:folder]}"
$:.unshift "./#{options[:folder]}"
require 'rspec'
require 'opal-rspec'
Dir.glob("./#{options[:folder]}/**/*_spec.rb").each do |file|
rspec_requires << "require '#{file.sub('./', '')}'"
end
Opal::Connect.write_file :rspec, %{
require 'opal/connect/puts'
require 'opal/rspec'
}, "#{::RSpec::Version::STRING}#{Opal::RSpec::VERSION}"
File.write "#{Dir.pwd}/.connect/rspec_tests.js", build(%{
#{rspec_requires.join(';')}
RSpec::Core::Runner.autorun
})
Dir["#{options[:folder]}/**/*_spec.rb"].each { |file| load file }
Opal::Connect.setup
Opal::Connect.write_entry_file(self)
string = html! {
html do
head { meta charset: 'utf-8' }
body Class.new {
include Opal::Connect
}.instance_exec(&options[:code])
end
}
Marshal.dump(string, write)
exit!(0)
end
write.close
result = read.read
Process.wait(pid)
raise "child failed" if result.empty?
Marshal.load(result)
end
|