opal-rspec 0.5.0.beta1 → 0.5.0.beta2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dbd011de53ddb59b6953bb90ecddf3082402cc8d
4
- data.tar.gz: cfb1bcebd79e37b25dda19aaa9b57e173c446154
3
+ metadata.gz: c317905daac139b9a3b70651c7c9305a7279078f
4
+ data.tar.gz: 00b344281961f64460a8b667c2ac849c8de70b3d
5
5
  SHA512:
6
- metadata.gz: dea4bff6ec1be0af8b3d3f205407cdbeff969307fd5ae8817653762c5099428c359756ec9ea55630e38350a9b302b41e8dcc091a05c7f8429ca927ba207170ab
7
- data.tar.gz: a0ba39d3e3851bf95ad496da0635dd9b0bd2db21aa8875a77da7fa4c3f5a9984f65cd8421fcde54dcc5434ecc5fc85fccd25e639af1c69880a2054a9e3064128
6
+ metadata.gz: 2c916613b1f125e6ee5f17cf56cee9c8e5f41bda97741c4deedc825f43c0d780533147c72c77d42d6a320d1ad51a54f62920b9dee84cfb8fa80ab8269285ec7c
7
+ data.tar.gz: de0c3fcf3536cc6f59bfc8c404f7f9d4e6c299e445fbaa2e240c970570493e6bc4bf03df40d8a441d67ffae5e445247fc2b833e42d4864ee5be6aec3a2195f98
data/.travis.yml CHANGED
@@ -9,5 +9,9 @@ rvm:
9
9
  before_install:
10
10
  - git submodule update --init
11
11
 
12
+ before_script:
13
+ - "export DISPLAY=:99.0"
14
+ - "sh -e /etc/init.d/xvfb start"
15
+
12
16
  notifications:
13
17
  irc: "irc.freenode.org#opal"
data/Gemfile CHANGED
@@ -7,3 +7,6 @@ end
7
7
 
8
8
  # Opal 0.9 still in development
9
9
  # gem 'opal', git: 'https://github.com/opal/opal.git'
10
+ gem 'rspec'
11
+ gem 'capybara-webkit'
12
+ gem 'selenium-webdriver'
data/Rakefile CHANGED
@@ -1,10 +1,11 @@
1
1
  require 'bundler'
2
+ require 'rspec/core/rake_task'
2
3
  Bundler.require
3
4
 
4
5
  Bundler::GemHelper.install_tasks
5
6
 
6
7
  require 'opal/rspec/rake_task'
7
- Opal::RSpec::RakeTask.new(:specs_untested)
8
+ Opal::RSpec::RakeTask.new(:specs_via_rake)
8
9
 
9
10
  desc 'Generates an RSpec requires file free of dynamic requires'
10
11
  task :generate_requires do
@@ -12,8 +13,15 @@ task :generate_requires do
12
13
  sh 'ruby -Irspec/lib -Irspec-core/lib/rspec -Irspec-support/lib/rspec util/create_requires.rb'
13
14
  end
14
15
 
15
- task :default do
16
- test_output = `rake specs_untested`
16
+ RSpec::Core::RakeTask.new :browser_specs do |t|
17
+ t.pattern = 'spec_mri/**/*_spec.rb'
18
+ end
19
+
20
+ task :default => [:verify_rake_specs, :browser_specs]
21
+
22
+ desc 'Will run a spec suite (rake specs_via_rake) and check for expected combination of failures and successes'
23
+ task :verify_rake_specs do
24
+ test_output = `rake specs_via_rake`
17
25
  raise "Expected test runner to fail due to failed tests, but got return code of #{$?.exitstatus}" if $?.success?
18
26
  count_match = /(\d+) examples, (\d+) failures, (\d+) pending/.match(test_output)
19
27
  raise 'Expected a finished count of test failures/success/etc. but did not see it' unless count_match
@@ -1,5 +1,5 @@
1
1
  module Opal
2
2
  module RSpec
3
- VERSION = '0.5.0.beta1'
3
+ VERSION = '0.5.0.beta2'
4
4
  end
5
5
  end
@@ -13,22 +13,35 @@ module Kernel
13
13
  stack = `err.stack`
14
14
  caller_lines = stack.split("\n")[4..-1]
15
15
  caller_lines.reject! {|l| l.strip.empty? }
16
+
17
+ result_formatter = lambda do |filename, line, method=nil|
18
+ "#{filename}:#{line} in `(#{method ? method : 'unknown method'})'"
19
+ end
20
+
16
21
  caller_lines.map do |raw_line|
17
22
  if match = /\s*at (.*) \((\S+):(\d+):\d+/.match(raw_line)
18
23
  method, filename, line = match.captures
19
- "#{filename}:#{line} in `#{method}'"
24
+ result_formatter[filename, line, method]
20
25
  elsif match = /\s*at (\S+):(\d+):\d+/.match(raw_line)
21
26
  filename, line = match.captures
22
- "#{filename}:#{line} in `(unknown method)'"
27
+ result_formatter[filename, line]
23
28
  # catch phantom/no 2nd line/col #
24
29
  elsif match = /\s*at (.*) \((\S+):(\d+)/.match(raw_line)
25
30
  method, filename, line = match.captures
26
- "#{filename}:#{line} in `#{method}'"
31
+ result_formatter[filename, line, method]
27
32
  elsif match = /\s*at (.*):(\d+)/.match(raw_line)
28
33
  filename, line = match.captures
29
- "#{filename}:#{line} in `(unknown method)'"
34
+ result_formatter[filename, line]
35
+ # Firefox - Opal.modules["rspec/core/metadata"]/</</</</def.$populate@http://192.168.59.103:9292/assets/rspec/core/metadata.self.js?body=1:102:13
36
+ elsif match = /(.*?)@(\S+):(\d+):\d+/.match(raw_line)
37
+ method, filename, line = match.captures
38
+ result_formatter[filename, line, method]
39
+ # webkit - http://192.168.59.103:9292/assets/opal/rspec/sprockets_runner.js:45117:314
40
+ elsif match = /(\S+):(\d+):\d+/.match(raw_line)
41
+ filename,line = match.captures
42
+ result_formatter[filename, line]
30
43
  else
31
- raise "Don't know how to parse #{raw_line}!"
44
+ "#{filename}:-1 in `(can't parse this stack trace)`"
32
45
  end
33
46
  end
34
47
  end
@@ -0,0 +1,37 @@
1
+ require 'rspec'
2
+ require 'capybara/rspec'
3
+ require 'capybara-webkit'
4
+
5
+ # Use Rack config exactly as shipped in the GEM
6
+ Capybara.app = Rack::Builder.new_from_string(File.read('config.ru'))
7
+
8
+ describe 'browser formatter', type: :feature, js: true do
9
+ RSpec.shared_examples :browser do
10
+ before do
11
+ visit '/'
12
+ # Specs should run in 12 seconds but in case Travis takes longer, provide some cushion
13
+ Capybara.default_wait_time = 40
14
+ end
15
+
16
+ it 'matches test results' do
17
+ expect(page).to have_content '182 examples, 65 failures, 22 pending'
18
+ end
19
+ end
20
+
21
+ context 'Webkit' do
22
+ before do
23
+ Capybara.javascript_driver = :webkit
24
+ end
25
+
26
+ include_examples :browser
27
+ end
28
+
29
+ # TODO: This passes in my local tests (Firefox 40.0.2), but something in the Travis environment causes it to fail
30
+ xcontext 'Firefox' do
31
+ before do
32
+ Capybara.javascript_driver = :selenium
33
+ end
34
+
35
+ include_examples :browser
36
+ end
37
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opal-rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0.beta1
4
+ version: 0.5.0.beta2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Beynon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-13 00:00:00.000000000 Z
11
+ date: 2015-08-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opal
@@ -532,6 +532,7 @@ files:
532
532
  - spec/should_syntax_spec.rb
533
533
  - spec/skip_pending_spec.rb
534
534
  - spec/subject_spec.rb
535
+ - spec_mri/integration/browser_spec.rb
535
536
  - util/create_requires.rb
536
537
  - vendor/spec_runner.js
537
538
  homepage: http://opalrb.org