Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: opal/opal
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: a65bfca4be18
Choose a base ref
...
head repository: opal/opal
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 6205c7c644ad
Choose a head ref
  • 13 commits
  • 257 files changed
  • 2 contributors

Commits on Nov 21, 2013

  1. Verified

    This commit was signed with the committer’s verified signature.
    makenowjust Hiroya Fujinami
    Copy the full SHA
    2c64a71 View commit details
  2. Cleanup rake tasks

    elia committed Nov 21, 2013
    Copy the full SHA
    fb40144 View commit details
  3. Move every spec inside the spec dir

    - {→ spec/opal}/rubyspec
    - {mri_spec → spec/cli}, spec/{* → opal/*}
    - spec/opal/{ospec → mspec/opal}
    elia committed Nov 21, 2013
    Copy the full SHA
    ac6d691 View commit details
  4. Enter mspec/opal/rake_task.rb

    elia committed Nov 21, 2013
    Copy the full SHA
    d9241ea View commit details
  5. Copy the full SHA
    af0718c View commit details
  6. Cleanup gitignore

    elia committed Nov 21, 2013
    Copy the full SHA
    c425042 View commit details
  7. Copy the full SHA
    1415296 View commit details
  8. Copy the full SHA
    efdb68d View commit details
  9. Quotes

    elia committed Nov 21, 2013
    Copy the full SHA
    86081e1 View commit details
  10. Copy the full SHA
    df0193c View commit details
  11. Don't rely on local static files

    I had a local build/specs.js that gave me false positives.
    elia committed Nov 21, 2013
    Copy the full SHA
    3e30534 View commit details
  12. Copy the full SHA
    2916024 View commit details
  13. Merge branch 'parser_tokens' of github.com:opal/opal into parser_tokens

    Conflicts:
    	spec/opal/rubyspec
    adambeynon committed Nov 21, 2013
    Copy the full SHA
    6205c7c View commit details
Showing with 326 additions and 244 deletions.
  1. +1 −2 .gitignore
  2. +2 −2 .gitmodules
  3. +13 −63 Rakefile
  4. +14 −0 bin/opal-build
  5. +14 −0 config.ru
  6. 0 {spec/ospec → lib/mspec/opal}/main.rb.erb
  7. 0 {spec/ospec → lib/mspec/opal}/mspec_fixes.rb
  8. +233 −0 lib/mspec/opal/rake_task.rb
  9. 0 {spec/ospec → lib/mspec/opal}/runner.rb
  10. 0 {spec/ospec → lib/mspec/opal}/sprockets.js
  11. +28 −0 lib/opal/builder.rb
  12. 0 {mri_spec → spec/cli}/cli_spec.rb
  13. 0 {mri_spec → spec/cli}/fixtures/opal_file.rb
  14. 0 {mri_spec → spec/cli}/spec_helper.rb
  15. +0 −17 spec/config.ru
  16. +0 −9 spec/index.html
  17. 0 spec/{corelib → opal/core}/array/select_spec.rb
  18. 0 spec/{corelib → opal/core}/enumerable/all_break_spec.rb
  19. 0 spec/{corelib → opal/core}/enumerable/any_break_spec.rb
  20. 0 spec/{corelib → opal/core}/enumerable/collect_break_spec.rb
  21. 0 spec/{corelib → opal/core}/enumerable/count_break_spec.rb
  22. 0 spec/{corelib → opal/core}/enumerable/detect_break_spec.rb
  23. 0 spec/{corelib → opal/core}/enumerable/drop_while_break_spec.rb
  24. 0 spec/{corelib → opal/core}/enumerable/each_slice_break.rb
  25. 0 spec/{corelib → opal/core}/enumerable/each_with_index_break_spec.rb
  26. 0 spec/{corelib → opal/core}/enumerable/each_with_object_break_spec.rb
  27. 0 spec/{corelib → opal/core}/enumerable/find_all_break_spec.rb
  28. 0 spec/{corelib → opal/core}/enumerable/find_index_break_spec.rb
  29. 0 spec/{corelib → opal/core}/enumerable/grep_break_spec.rb
  30. 0 spec/{corelib → opal/core}/enumerable/max_break_spec.rb
  31. 0 spec/{corelib → opal/core}/enumerable/max_by_break_spec.rb
  32. 0 spec/{corelib → opal/core}/enumerable/min_break_spec.rb
  33. 0 spec/{corelib → opal/core}/enumerable/min_by_break_spec.rb
  34. 0 spec/{corelib → opal/core}/enumerable/none_break_spec.rb
  35. 0 spec/{corelib → opal/core}/enumerable/one_break_spec.rb
  36. 0 spec/{corelib → opal/core}/enumerable/reduce_break_spec.rb
  37. 0 spec/{corelib → opal/core}/enumerable/take_while_break_spec.rb
  38. 0 spec/{corelib → opal/core}/fixtures/class.rb
  39. 0 spec/{corelib → opal/core}/fixtures/class_variables.rb
  40. 0 spec/{corelib → opal/core}/fixtures/constants.rb
  41. 0 spec/{corelib → opal/core}/kernel/Array_spec.rb
  42. 0 spec/{corelib → opal/core}/kernel/block_given_spec.rb
  43. 0 spec/{corelib → opal/core}/kernel/class_spec.rb
  44. 0 spec/{corelib → opal/core}/kernel/define_singleton_method_spec.rb
  45. 0 spec/{corelib → opal/core}/kernel/equal_value_spec.rb
  46. 0 spec/{corelib → opal/core}/kernel/extend_spec.rb
  47. 0 spec/{corelib → opal/core}/kernel/format_spec.rb
  48. 0 spec/{corelib → opal/core}/kernel/freeze_spec.rb
  49. 0 spec/{corelib → opal/core}/kernel/instance_eval_spec.rb
  50. 0 spec/{corelib → opal/core}/kernel/instance_variable_defined_spec.rb
  51. 0 spec/{corelib → opal/core}/kernel/instance_variable_get_spec.rb
  52. 0 spec/{corelib → opal/core}/kernel/instance_variable_set_spec.rb
  53. 0 spec/{corelib → opal/core}/kernel/loop_spec.rb
  54. 0 spec/{corelib → opal/core}/kernel/match_spec.rb
  55. 0 spec/{corelib → opal/core}/kernel/method_spec.rb
  56. 0 spec/{corelib → opal/core}/kernel/methods_spec.rb
  57. 0 spec/{corelib → opal/core}/kernel/nil_spec.rb
  58. 0 spec/{corelib → opal/core}/kernel/p_spec.rb
  59. 0 spec/{corelib → opal/core}/kernel/printf_spec.rb
  60. 0 spec/{corelib → opal/core}/kernel/proc_spec.rb
  61. 0 spec/{corelib → opal/core}/kernel/rand_spec.rb
  62. 0 spec/{corelib → opal/core}/kernel/respond_to_spec.rb
  63. 0 spec/{corelib → opal/core}/kernel/send_spec.rb
  64. 0 spec/{corelib → opal/core}/kernel/sprintf_spec.rb
  65. 0 spec/{corelib → opal/core}/kernel/warn_spec.rb
  66. 0 spec/{corelib → opal/core}/language/block_spec.rb
  67. 0 spec/{corelib → opal/core}/language/fixtures/array.rb
  68. 0 spec/{corelib → opal/core}/language/fixtures/block.rb
  69. 0 spec/{corelib → opal/core}/language/fixtures/break.rb
  70. 0 spec/{corelib → opal/core}/language/fixtures/ensure.rb
  71. 0 spec/{corelib → opal/core}/language/fixtures/literal_lambda.rb
  72. 0 spec/{corelib → opal/core}/language/fixtures/metaclass.rb
  73. 0 spec/{corelib → opal/core}/language/fixtures/module.rb
  74. 0 spec/{corelib → opal/core}/language/fixtures/next.rb
  75. 0 spec/{corelib → opal/core}/language/fixtures/return.rb
  76. 0 spec/{corelib → opal/core}/language/fixtures/send.rb
  77. 0 spec/{corelib → opal/core}/language/fixtures/send_1.9.rb
  78. 0 spec/{corelib → opal/core}/language/fixtures/super.rb
  79. 0 spec/{corelib → opal/core}/language/fixtures/variables.rb
  80. 0 spec/{corelib → opal/core}/language/fixtures/yield.rb
  81. 0 spec/{corelib → opal/core}/language/numbers_spec.rb
  82. 0 spec/{corelib → opal/core}/language/predefined_spec.rb
  83. 0 spec/{corelib → opal/core}/language/proc_spec.rb
  84. 0 spec/{corelib → opal/core}/language/regexp_spec.rb
  85. 0 spec/{corelib → opal/core}/language/send_spec.rb
  86. 0 spec/{corelib → opal/core}/language/string_spec.rb
  87. 0 spec/{corelib → opal/core}/language/symbol_spec.rb
  88. 0 spec/{corelib → opal/core}/language/variables_spec.rb
  89. 0 spec/{corelib → opal/core}/language/versions/array_1.9.rb
  90. 0 spec/{corelib → opal/core}/language/versions/block_1.9.rb
  91. 0 spec/{corelib → opal/core}/language/versions/break_1.9.rb
  92. 0 spec/{corelib → opal/core}/language/versions/case_1.9.rb
  93. 0 spec/{corelib → opal/core}/language/versions/hash_1.9.rb
  94. 0 spec/{corelib → opal/core}/language/versions/literal_lambda_1.9.rb
  95. 0 spec/{corelib → opal/core}/language/versions/not_1.9.rb
  96. 0 spec/{corelib → opal/core}/language/versions/send_1.9.rb
  97. 0 spec/{corelib → opal/core}/language/versions/symbol_1.9.rb
  98. 0 spec/{corelib → opal/core}/language/versions/variables_1.9.rb
  99. 0 spec/{corelib → opal/core}/module/alias_method_spec.rb
  100. 0 spec/{corelib → opal/core}/module/ancestors_spec.rb
  101. 0 spec/{corelib → opal/core}/module/append_features_spec.rb
  102. 0 spec/{corelib → opal/core}/module/attr_accessor_spec.rb
  103. 0 spec/{corelib → opal/core}/module/const_defined_spec.rb
  104. 0 spec/{corelib → opal/core}/module/const_get_spec.rb
  105. 0 spec/{corelib → opal/core}/module/const_missing_spec.rb
  106. 0 spec/{corelib → opal/core}/module/const_set_spec.rb
  107. 0 spec/{corelib → opal/core}/module/constants_spec.rb
  108. 0 spec/{corelib → opal/core}/module/fixtures/classes.rb
  109. 0 spec/{corelib → opal/core}/module/method_defined_spec.rb
  110. 0 spec/{corelib → opal/core}/module/module_function_spec.rb
  111. 0 spec/{corelib → opal/core}/module/name_spec.rb
  112. 0 spec/{corelib → opal/core}/module/public_method_defined_spec.rb
  113. 0 spec/{corelib → opal/core}/module/remove_const_spec.rb
  114. 0 spec/{corelib → opal/core}/module/undef_method_spec.rb
  115. 0 spec/{corelib → opal/core}/numeric/abs_spec.rb
  116. 0 spec/{corelib → opal/core}/numeric/bit_and_spec.rb
  117. 0 spec/{corelib → opal/core}/numeric/bit_or_spec.rb
  118. 0 spec/{corelib → opal/core}/numeric/bit_xor_spec.rb
  119. 0 spec/{corelib → opal/core}/numeric/ceil_spec.rb
  120. 0 spec/{corelib → opal/core}/numeric/chr_spec.rb
  121. 0 spec/{corelib → opal/core}/numeric/comparison_spec.rb
  122. 0 spec/{corelib → opal/core}/numeric/complement_spec.rb
  123. 0 spec/{corelib → opal/core}/numeric/divide_spec.rb
  124. 0 spec/{corelib → opal/core}/numeric/downto_spec.rb
  125. 0 spec/{corelib → opal/core}/numeric/eql_spec.rb
  126. 0 spec/{corelib → opal/core}/numeric/equal_value_spec.rb
  127. 0 spec/{corelib → opal/core}/numeric/even_spec.rb
  128. 0 spec/{corelib → opal/core}/numeric/exponent_spec.rb
  129. 0 spec/{corelib → opal/core}/numeric/floor_spec.rb
  130. 0 spec/{corelib → opal/core}/numeric/gt_spec.rb
  131. 0 spec/{corelib → opal/core}/numeric/gte_spec.rb
  132. 0 spec/{corelib → opal/core}/numeric/integer_spec.rb
  133. 0 spec/{corelib → opal/core}/numeric/left_shift_spec.rb
  134. 0 spec/{corelib → opal/core}/numeric/lt_spec.rb
  135. 0 spec/{corelib → opal/core}/numeric/lte_spec.rb
  136. 0 spec/{corelib → opal/core}/numeric/magnitude_spec.rb
  137. 0 spec/{corelib → opal/core}/numeric/minus_spec.rb
  138. 0 spec/{corelib → opal/core}/numeric/modulo_spec.rb
  139. 0 spec/{corelib → opal/core}/numeric/multiply_spec.rb
  140. 0 spec/{corelib → opal/core}/numeric/next_spec.rb
  141. 0 spec/{corelib → opal/core}/numeric/odd_spec.rb
  142. 0 spec/{corelib → opal/core}/numeric/ord_spec.rb
  143. 0 spec/{corelib → opal/core}/numeric/plus_spec.rb
  144. 0 spec/{corelib → opal/core}/numeric/pred_spec.rb
  145. 0 spec/{corelib → opal/core}/numeric/right_shift_spec.rb
  146. 0 spec/{corelib → opal/core}/numeric/step_spec.rb
  147. 0 spec/{corelib → opal/core}/numeric/succ_spec.rb
  148. 0 spec/{corelib → opal/core}/numeric/times_spec.rb
  149. 0 spec/{corelib → opal/core}/numeric/to_f_spec.rb
  150. 0 spec/{corelib → opal/core}/numeric/to_i_spec.rb
  151. 0 spec/{corelib → opal/core}/numeric/to_json_spec.rb
  152. 0 spec/{corelib → opal/core}/numeric/to_s_spec.rb
  153. 0 spec/{corelib → opal/core}/numeric/uminus_spec.rb
  154. 0 spec/{corelib → opal/core}/numeric/upto_spec.rb
  155. 0 spec/{corelib → opal/core}/numeric/zero_spec.rb
  156. 0 spec/{corelib → opal/core}/proc/call_spec.rb
  157. 0 spec/{corelib → opal/core}/proc/element_reference_spec.rb
  158. 0 spec/{corelib → opal/core}/proc/proc_tricks_spec.rb
  159. 0 spec/{corelib → opal/core}/runtime/begin_spec.rb
  160. 0 spec/{corelib → opal/core}/runtime/block_send_spec.rb
  161. 0 spec/{corelib → opal/core}/runtime/block_spec.rb
  162. 0 spec/{corelib → opal/core}/runtime/bridged_classes_spec.rb
  163. 0 spec/{corelib → opal/core}/runtime/constants_spec.rb
  164. 0 spec/{corelib → opal/core}/runtime/eval_spec.rb
  165. 0 spec/{corelib → opal/core}/runtime/main_methods_spec.rb
  166. 0 spec/{corelib → opal/core}/runtime/method_missing_spec.rb
  167. 0 spec/{corelib → opal/core}/runtime/method_spec.rb
  168. 0 spec/{corelib → opal/core}/runtime/paren_spec.rb
  169. 0 spec/{corelib → opal/core}/runtime/rescue_spec.rb
  170. 0 spec/{corelib → opal/core}/runtime/return_spec.rb
  171. 0 spec/{corelib → opal/core}/runtime/send_spec.rb
  172. 0 spec/{corelib → opal/core}/runtime/singleton_class_spec.rb
  173. 0 spec/{corelib → opal/core}/runtime/super_spec.rb
  174. 0 spec/{corelib → opal/core}/runtime/variables_spec.rb
  175. 0 spec/{corelib → opal/core}/source_map_spec.rb
  176. 0 spec/{corelib → opal/core}/string/chop_spec.rb
  177. 0 spec/{corelib → opal/core}/string/chr_spec.rb
  178. 0 spec/{corelib → opal/core}/string/clone_spec.rb
  179. 0 spec/{corelib → opal/core}/string/comparison_spec.rb
  180. 0 spec/{corelib → opal/core}/string/dup_spec.rb
  181. 0 spec/{corelib → opal/core}/string/element_reference_spec.rb
  182. 0 spec/{corelib → opal/core}/string/fixtures/classes.rb
  183. 0 spec/{corelib → opal/core}/string/format_spec.rb
  184. 0 spec/{corelib → opal/core}/string/freeze_spec.rb
  185. 0 spec/{corelib → opal/core}/string/gsub_spec.rb
  186. 0 spec/{corelib → opal/core}/string/lines_spec.rb
  187. 0 spec/{corelib → opal/core}/string/ljust_spec.rb
  188. 0 spec/{corelib → opal/core}/string/lstrip_spec.rb
  189. 0 spec/{corelib → opal/core}/string/match_spec.rb
  190. 0 spec/{corelib → opal/core}/string/next_spec.rb
  191. 0 spec/{corelib → opal/core}/string/ord_spec.rb
  192. 0 spec/{corelib → opal/core}/string/partition_spec.rb
  193. 0 spec/{corelib → opal/core}/string/rindex_spec.rb
  194. 0 spec/{corelib → opal/core}/string/rjust_spec.rb
  195. 0 spec/{corelib → opal/core}/string/rstrip_spec.rb
  196. 0 spec/{corelib → opal/core}/string/scan_spec.rb
  197. 0 spec/{corelib → opal/core}/string/slice_spec.rb
  198. 0 spec/{corelib → opal/core}/string/split_spec.rb
  199. 0 spec/{corelib → opal/core}/string/strip_spec.rb
  200. 0 spec/{corelib → opal/core}/string/sub_spec.rb
  201. 0 spec/{corelib → opal/core}/string/succ_spec.rb
  202. 0 spec/{corelib → opal/core}/string/sum_spec.rb
  203. 0 spec/{corelib → opal/core}/string/to_f_spec.rb
  204. 0 spec/{corelib → opal/core}/string/to_i_spec.rb
  205. 0 spec/{corelib → opal/core}/string/tr_s_spec.rb
  206. 0 spec/{corelib → opal/core}/string/tr_spec.rb
  207. 0 spec/{ → opal}/filters/bugs/array.rb
  208. 0 spec/{ → opal}/filters/bugs/basic_object.rb
  209. 0 spec/{ → opal}/filters/bugs/class.rb
  210. 0 spec/{ → opal}/filters/bugs/enumerable.rb
  211. 0 spec/{ → opal}/filters/bugs/hash.rb
  212. 0 spec/{ → opal}/filters/bugs/kernel.rb
  213. 0 spec/{ → opal}/filters/bugs/language.rb
  214. 0 spec/{ → opal}/filters/bugs/module.rb
  215. 0 spec/{ → opal}/filters/bugs/parser.rb
  216. 0 spec/{ → opal}/filters/bugs/regexp.rb
  217. 0 spec/{ → opal}/filters/bugs/set.rb
  218. 0 spec/{ → opal}/filters/bugs/singleton.rb
  219. 0 spec/{ → opal}/filters/bugs/string.rb
  220. 0 spec/{ → opal}/filters/bugs/stringscanner.rb
  221. 0 spec/{ → opal}/filters/bugs/struct.rb
  222. 0 spec/{ → opal}/filters/bugs/symbol.rb
  223. 0 spec/{ → opal}/filters/bugs/time.rb
  224. 0 spec/{ → opal}/filters/bugs/unknown.rb
  225. 0 spec/{ → opal}/filters/unsupported/encoding.rb
  226. 0 spec/{ → opal}/filters/unsupported/enumerator.rb
  227. 0 spec/{ → opal}/filters/unsupported/float.rb
  228. 0 spec/{ → opal}/filters/unsupported/frozen.rb
  229. 0 spec/{ → opal}/filters/unsupported/hash_compare_by_identity.rb
  230. 0 spec/{ → opal}/filters/unsupported/immutable_strings.rb
  231. 0 spec/{ → opal}/filters/unsupported/mutable_strings.rb
  232. 0 spec/{ → opal}/filters/unsupported/private_methods.rb
  233. 0 spec/{ → opal}/filters/unsupported/ruby_exe.rb
  234. 0 spec/{ → opal}/filters/unsupported/string_subclasses.rb
  235. 0 spec/{ → opal}/filters/unsupported/tainted.rb
  236. 0 spec/{ → opal}/filters/unsupported/time.rb
  237. 0 spec/{ → opal}/filters/unsupported/trusted.rb
  238. 0 { → spec/opal}/rubyspec
  239. 0 spec/{ → opal}/rubyspecs
  240. +2 −2 spec/{ → opal}/spec_helper.rb
  241. 0 spec/{ → opal}/stdlib/erb/erb_spec.rb
  242. 0 spec/{ → opal}/stdlib/erb/inline_block.opalerb
  243. 0 spec/{ → opal}/stdlib/erb/quoted.opalerb
  244. 0 spec/{ → opal}/stdlib/erb/simple.opalerb
  245. 0 spec/{ → opal}/stdlib/json/ext_spec.rb
  246. 0 spec/{ → opal}/stdlib/json/parse_spec.rb
  247. 0 spec/{ → opal}/stdlib/native/alias_native_spec.rb
  248. 0 spec/{ → opal}/stdlib/native/each_spec.rb
  249. 0 spec/{ → opal}/stdlib/native/element_reference_spec.rb
  250. 0 spec/{ → opal}/stdlib/native/exposure_spec.rb
  251. 0 spec/{ → opal}/stdlib/native/ext_spec.rb
  252. 0 spec/{ → opal}/stdlib/native/initialize_spec.rb
  253. 0 spec/{ → opal}/stdlib/native/method_missing_spec.rb
  254. 0 spec/{ → opal}/stdlib/native/new_spec.rb
  255. 0 spec/{ → opal}/stdlib/template/paths_spec.rb
  256. +19 −0 tasks/github.rake
  257. +0 −149 tasks/mspec.rake
3 changes: 1 addition & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -3,6 +3,5 @@
.yardoc
.bundle
Gemfile.lock
/mspec
/build
build/
/.github_access_token
4 changes: 2 additions & 2 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
[submodule "rubyspec"]
path = rubyspec
[submodule "spec/opal/rubyspec"]
path = spec/opal/rubyspec
url = git://github.com/rubyspec/rubyspec.git
76 changes: 13 additions & 63 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -2,51 +2,20 @@ require 'bundler'
Bundler.require
Bundler::GemHelper.install_tasks

import 'tasks/mspec.rake'

namespace :github do
desc "Upload assets to github"
task :upload_assets do
require 'octokit'
# https://github.com/octokit/octokit.rb#oauth-access-tokens
token_path = '.github_access_token'
File.exist?(token_path) or raise ArgumentError, "Please create a personal access token (https://github.com/settings/tokens/new) and paste it inside #{token_path.inspect}"
token = File.read(token_path).strip
client = Octokit::Client.new :access_token => token
tag_name = ENV['TAG'] || raise(ArgumentError, 'missing the TAG env variable (e.g. TAG=v0.4.4)')
release = client.releases('opal/opal').find{|r| p(r.id); p(r).tag_name == tag_name}
release_url = "https://api.github.com/repos/opal/opal/releases/#{release.id}"
%w[opal opal-parser].each do |name|
client.upload_asset release_url, "build/#{name}.js", :content_type => 'application/x-javascript'
client.upload_asset release_url, "build/#{name}.min.js", :content_type => 'application/x-javascript'
client.upload_asset release_url, "build/#{name}.min.js.gz", :content_type => 'application/octet-stream'
end
end
end
import 'tasks/github.rake'

require 'rspec/core/rake_task'
RSpec::Core::RakeTask.new(:mri_spec) do |t|
t.pattern = 'mri_spec/**/*_spec.rb'
RSpec::Core::RakeTask.new(:rspec) do |t|
t.pattern = 'spec/cli/**/*_spec.rb'
end

desc "Run tests through mspec"
task :mspec do
RunSpec.new
end
require 'mspec/opal/rake_task'
MSpec::Opal::RakeTask.new(:mspec)

task :default => [:mri_spec, :mspec] do
end
task :default => [:rspec, :mspec]

desc "Build specs to build/specs.js and build/specs.min.js"
task :build_specs do
Opal::Processor.arity_check_enabled = true
ENV['OPAL_SPEC'] = ["#{Dir.pwd}/spec/"].join(',')

env = SpecEnvironment.new
env.build
end

desc "Build opal.js and opal-parser.js to build/"
desc 'Build opal.js and opal-parser.js to build/'
task :dist do
Opal::Processor.arity_check_enabled = false
Opal::Processor.const_missing_enabled = false
@@ -62,8 +31,8 @@ task :dist do
$stdout.flush

src = env[lib].to_s
min = uglify src
gzp = gzip min
min = Opal::Builder::Util.uglify src
gzp = Opal::Builder::Util.gzip min

File.open("build/#{lib}.js", 'w+') { |f| f << src }
File.open("build/#{lib}.min.js", 'w+') { |f| f << min } if min
@@ -77,31 +46,12 @@ task :dist do
end
end

desc "Rebuild grammar.rb for opal parser"
desc 'Rebuild grammar.rb for opal parser'
task :racc do
%x(racc -l lib/opal/parser/grammar.y -o lib/opal/parser/grammar.rb)
end

# Used for uglifying source to minify
def uglify(str)
IO.popen('uglifyjs 2> /dev/null', 'r+') do |i|
i.puts str
i.close_write
return i.read
end
rescue Errno::ENOENT
$stderr.puts '"uglifyjs" command not found (install with: "npm install -g uglify-js")'
nil
end

# Gzip code to check file size
def gzip(str)
IO.popen('gzip -f 2> /dev/null', 'r+') do |i|
i.puts str
i.close_write
return i.read
end
rescue Errno::ENOENT
$stderr.puts '"gzip" command not found, it is required to produce the .gz version'
nil
desc 'Remove any generated file.'
task :clobber do
rm_r './build'
end
14 changes: 14 additions & 0 deletions bin/opal-build
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/usr/bin/env ruby

require 'opal'

if ARGV.first == '--gem'
gem_name = ARGV[1]

require 'rubygems'
Opal.use_gem gem_name
end

require_file = ARGV[1..-1].last || gem_name.dup.untaint.gsub('-','/')
puts Opal::Builder.build require_file

14 changes: 14 additions & 0 deletions config.ru
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
require 'bundler'
Bundler.require

require 'mspec/opal/rake_task'

::Opal::Processor.arity_check_enabled = true
::Opal::Processor.dynamic_require_severity = :raise

use Rack::ShowExceptions
use Rack::ShowStatus
use MSpec::Opal::Index
run MSpec::Opal::Environment.new


File renamed without changes.
File renamed without changes.
233 changes: 233 additions & 0 deletions lib/mspec/opal/rake_task.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,233 @@
require 'opal/nodes'
class Opal::Nodes::CallNode
# Rubyspec uses this call to load in language specific features at runtime.
# We can't do this at runtime, so handle it during compilation
add_special :language_version do
if meth == :language_version and scope.top?
lang_type = arglist[2][1]
target = "rubyspec/language/versions/#{lang_type}_1.9"

if File.exist?(target)
compiler.requires << target
end

return fragment("nil")
end

nil
end
end


require 'rack'
require 'webrick'
require 'opal-sprockets'
module MSpec
module Opal
DEFAULT_PATTERN = 'spec/opal/{parser,core,compiler,stdlib}/**/*_spec.rb'
DEFAULT_BASEDIR = 'spec/opal'

require 'rake'
require 'rake/tasklib'
class RakeTask < ::Rake::TaskLib
include ::Rake::DSL if defined?(::Rake::DSL)

def initialize(name, &task_block)
namespace name do
desc 'Run MSpec::Opal code examples' unless ::Rake.application.last_comment
task :default do
puts 'Starting MSpec Runner...'
runner = Runner.new(&task_block)
runner.run
end

desc 'Build specs to build/specs.js and build/specs.min.js'
task :build do
path = './build/specs.js'
min_path = './build/specs.min.js'
Environment.new.build_specs(path)
min = ::Opal::Builder::Util.uglify File.read(path)
File.open(min_path, 'w') { |f| f << min_path }
end
end

task name => "#{name}:default"
end
end

class Runner
def initialize &block
@app = RackApp.new(&block).to_app
@port = 9999
end

attr_reader :app, :server_pid
attr_accessor :port

def passed?
@passed
end

def run
start_server
start_phantomjs

exit 1 unless passed?
rescue => e
puts e.message
ensure
stop_server if server_pid
end

def stop_server
Process.kill(:SIGINT, server_pid)
Process.wait
end

def start_phantomjs
require 'shellwords'
runner = File.expand_path('../sprockets.js', __FILE__).shellescape
url = "http://localhost:#{port}/".shellescape
command = %Q{phantomjs #{runner} #{url}}

@passed = system command
end

def start_server
@server_pid = fork do
Rack::Server.start(:app => app, :Port => port, :AccessLog => [],
:Logger => WEBrick::Log.new("/dev/null"))
end
end
end

class Environment < ::Opal::Environment
attr_reader :basedir, :pattern

def initialize(basedir = nil, pattern = nil)
::Opal::Processor.arity_check_enabled = true
::Opal::Processor.dynamic_require_severity = :ignore
super()
@pattern = pattern || DEFAULT_PATTERN
@basedir = basedir = File.expand_path(basedir || DEFAULT_BASEDIR)
append_path basedir
append_path "#{basedir}/rubyspec"
use_gem 'mspec'

stubs.each do |asset|
::Opal::Processor.stub_file asset
end

ENV['OPAL_SPEC'] = files_to_run(pattern).join(',')
end

def stubs
# missing stdlib
stubs = %w[fileutils iconv yaml]

# use x-strings which generate bad javascript
stubs << "mspec/helpers/tmp"
stubs << "mspec/helpers/environment"
stubs << "mspec/guards/block_device"
stubs << "mspec/guards/endian"

stubs
end

def specs
@specs ||= self['mspec/opal/main'] || raise("Cannot find mspec/opal/main inside #{paths.inspect}")
end

def build_min file = "#{basedir}/build/specs.min.js"
build ::Opal::Builder::Util.uglify(specs.to_s), file
end

def files
@files ||= []
end

def add_files specs
files.concat specs.flatten
end

def paths_from_glob pattern
Dir.glob(File.expand_path(pattern)).map do |s|
s.sub(/^#{basedir}\//, '').sub(/\.rb$/, '')
end
end

def rubyspec_paths
File.read("#{basedir}/rubyspecs").split("\n").reject do |line|
line.empty? || line.start_with?('#')
end
end

def files_to_run(pattern=nil)
# add any filters in spec/filters of specs we dont want to run
add_files paths_from_glob("#{basedir}/filters/**/*.rb")

# add custom opal specs from spec/
add_files paths_from_glob(pattern) if pattern

# add any rubyspecs we want to run (defined in spec/rubyspecs)
add_files rubyspec_paths
end

def build_specs file = "#{basedir}/build/specs.js"
code = specs.to_s
FileUtils.mkdir_p File.dirname(file)
puts "Building #{file}..."
File.open(file, 'w+') { |o| o << code }
end
end

class RackApp < Rack::Builder
attr_accessor :pattern, :basedir

def initialize
self.pattern = DEFAULT_PATTERN
self.basedir = DEFAULT_BASEDIR

yield(self) if block_given?
super()

use Rack::ShowExceptions
use Rack::ShowStatus
use Index
run environment
end

def environment
@environment ||= Environment.new(basedir, pattern)
end
end

class Index
HTML = <<-HTML
<!DOCTYPE html>
<html>
<head>
<title>Opal Specs</title>
</head>
<body>
<script src="/mspec/opal/main.js"></script>
</body>
</html>
HTML

def initialize(app)
@app = app
end

def call(env)
if %w[/ /index.html].include? env['PATH_INFO']
[200, { 'Content-Type' => 'text/html' }, [HTML]]
else
@app.call env
end
end
end

end
end

File renamed without changes.
File renamed without changes.
Loading