Skip to content

Commit 58d10ea

Browse files
committedNov 28, 2013
Auto build rspec.js
This enable using opal-rspec as a git dependency through bundler.
1 parent 4d57cb6 commit 58d10ea

File tree

5 files changed

+57
-31
lines changed

5 files changed

+57
-31
lines changed
 

‎Gemfile

-6
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,3 @@ gem 'opal', :github => 'opal/opal'
55
gem 'opal-sprockets', :github => 'opal/opal-sprockets'
66

77
gem 'rake'
8-
9-
gem 'rspec', '3.0.0.beta1'
10-
gem 'rspec-support', '3.0.0.beta1'
11-
gem 'rspec-core', '3.0.0.beta1'
12-
gem 'rspec-mocks', '3.0.0.beta1'
13-
gem 'rspec-expectations', '3.0.0.beta1'

‎Rakefile

+3-23
Original file line numberDiff line numberDiff line change
@@ -6,37 +6,17 @@ Opal::RSpec::RakeTask.new(:default)
66

77
desc "Build opal/opal/rspec/rspec.js"
88
task :build do
9-
File.open('opal/opal/rspec/rspec.js', 'w+') do |out|
10-
out << build_rspec
11-
end
9+
Opal::RSpec.build_rspec_js true
1210
end
1311

14-
desc "Show dev/min sizes"
12+
desc 'Show dev/min sizes'
1513
task :sizes do
16-
code = build_rspec
14+
code = Opal::RSpec.build_rspec
1715
min = uglify code
1816

1917
puts "\ndevelopment: #{code.size}, minified: #{min.size}"
2018
end
2119

22-
def build_rspec
23-
Opal::Processor.dynamic_require_severity = :warning
24-
Opal.append_path 'app'
25-
26-
Opal.use_gem 'rspec'
27-
Opal.use_gem 'rspec-expectations'
28-
29-
%w[time fileutils test/unit/assertions coderay optparse shellwords socket uri
30-
drb/drb diff/lcs diff/lcs/hunk].each do |asset|
31-
Opal::Processor.stub_file asset
32-
end
33-
34-
# bug in rspec? this autoload doesnt exist so we must stub it
35-
Opal::Processor.stub_file 'rspec/matchers/built_in/have'
36-
37-
Opal.process('rspec-builder')
38-
end
39-
4020
def uglify(str)
4121
IO.popen('uglifyjs', 'r+') do |i|
4222
i.puts str

‎lib/opal/rspec.rb

+39-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,44 @@
11
require 'opal'
22
require 'opal/rspec/version'
33

4+
module Opal
5+
module RSpec
6+
extend self
7+
8+
def base_dir
9+
File.expand_path('../../..', __FILE__)
10+
end
11+
12+
def build_rspec_js force = false
13+
path = File.expand_path('../../../opal/opal/rspec/rspec.js', __FILE__)
14+
puts "Building: #{path}..."
15+
return if File.exist? path and not(force)
16+
File.open(path, 'w+') { |out| out << rspec_js_code }
17+
end
18+
19+
def rspec_js_code
20+
previous_severity = Opal::Processor.dynamic_require_severity
21+
Opal::Processor.dynamic_require_severity = :warning
22+
Opal.append_path File.join(base_dir, 'app')
23+
24+
Opal.use_gem 'rspec'
25+
Opal.use_gem 'rspec-expectations'
26+
27+
%w[time fileutils test/unit/assertions coderay optparse shellwords socket uri
28+
drb/drb diff/lcs diff/lcs/hunk].each do |asset|
29+
Opal::Processor.stub_file asset
30+
end
31+
32+
# bug in rspec? this autoload doesnt exist so we must stub it
33+
Opal::Processor.stub_file 'rspec/matchers/built_in/have'
34+
35+
Opal.process('rspec-builder').tap do
36+
Opal::Processor.dynamic_require_severity = previous_severity
37+
end
38+
end
39+
end
40+
end
41+
442
# Just register our opal code path with opal build tools
5-
Opal.append_path File.expand_path('../../../opal', __FILE__)
43+
Opal.append_path File.join(Opal::RSpec.base_dir, 'opal')
644

‎lib/opal/rspec/rake_task.rb

+9-1
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,10 @@ class RakeTask
1111
URL = "http://localhost:9999/"
1212

1313
def initialize(name = 'opal:rspec', &block)
14+
Opal::RSpec.build_rspec_js
15+
1416
desc "Run opal specs in phantomjs"
15-
task name do
17+
task name => 'opal:rspec:build' do
1618
require 'rack'
1719
require 'webrick'
1820

@@ -37,6 +39,12 @@ def initialize(name = 'opal:rspec', &block)
3739

3840
exit 1 unless success
3941
end
42+
43+
desc 'Build opal/opal/rspec/rspec.js'
44+
task 'opal:rspec:build' do
45+
Opal::RSpec.build_rspec_js
46+
end
47+
4048
end
4149
end
4250
end

‎opal-rspec.gemspec

+6
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ Gem::Specification.new do |s|
1818
s.add_dependency 'opal', '~> 0.6.0'
1919
s.add_dependency 'opal-sprockets', '~> 0.4.0'
2020

21+
s.add_dependency 'rspec', '3.0.0.beta1'
22+
s.add_dependency 'rspec-support', '3.0.0.beta1'
23+
s.add_dependency 'rspec-core', '3.0.0.beta1'
24+
s.add_dependency 'rspec-mocks', '3.0.0.beta1'
25+
s.add_dependency 'rspec-expectations', '3.0.0.beta1'
26+
2127
s.add_development_dependency 'rake'
2228
end
2329

0 commit comments

Comments
 (0)
Please sign in to comment.