jasmine 2.99.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7dca92f4ae805f2cc25a016c14ea264f01203015
4
- data.tar.gz: 94e7e8bf349a37d47ae0ebfe935831f710b4fc5f
3
+ metadata.gz: c18046172c97ada9097c6529f12e5f221e633f67
4
+ data.tar.gz: 1927874c49d3ecfcdec802f008852e972f2196d4
5
5
  SHA512:
6
- metadata.gz: 5858e72e685a34c81be4a7e24dc9744c05c587fd8027f47dbf8654f44eb322471e82c01e276c483b509804569a558bc5ba68e7bc22f715ff4d00f2d471b26f19
7
- data.tar.gz: cd60b36656f747677b4550a983adc23fa7e104950dca8f800a1d13d21e92965b7564941175b635374fe65b554db61596cd73665ccbd0b1177f88dc03bce880bd
6
+ metadata.gz: 2e2e1330b623fb13f52b1244147e238a05992b6df30924672c159de4ab7680b32f64de3d8d515714b40ecb54fa985a2d1dea5ab52ff5f2a01e331fd021ab1261
7
+ data.tar.gz: a02891ef5cfcdd7f06d287dcc85fa33b480aa0fb864cb67f6e4e46da03a5999937c9dbf70118d05f76585e12c56e09f1fc5dc0e790e51047ae024f7d42b009ff
@@ -0,0 +1,6 @@
1
+ [*]
2
+ charset = utf-8
3
+ end_of_line = lf
4
+ insert_final_newline = true
5
+ indent_style = space
6
+ indent_size = 2
@@ -1,12 +1,12 @@
1
1
  language: ruby
2
2
 
3
3
  rvm:
4
- - "1.9.3"
5
- - "2.0.0"
6
- - "2.3.1"
4
+ - "2.3.0"
5
+ - "2.3.6"
6
+ - "2.4.1"
7
+ - "2.5.0"
7
8
 
8
9
  env:
9
- - "RAILS_VERSION=rails3"
10
10
  - "RAILS_VERSION=rails4"
11
11
  - "RAILS_VERSION=pojs"
12
12
 
@@ -20,11 +20,11 @@ install:
20
20
  matrix:
21
21
  fast_finish: true
22
22
  include:
23
- - rvm: "2.3.1"
23
+ - rvm: "2.3.4"
24
24
  env:
25
25
  - "PERFORMANCE_SPECS=true"
26
26
  - "RAILS_VERSION=rails5"
27
- - rvm: "2.3.1"
27
+ - rvm: "2.3.4"
28
28
  env: "RAILS_VERSION=rails5"
29
29
  allow_failures:
30
30
  - rvm: "jruby-9.1.5.0"
@@ -33,4 +33,5 @@ matrix:
33
33
  - "JRUBY_OPTS=''"
34
34
 
35
35
  before_install:
36
+ - gem update --system
36
37
  - gem install bundler -v "= 1.15.4"
data/Gemfile CHANGED
@@ -3,25 +3,23 @@ source 'https://rubygems.org'
3
3
  gemspec
4
4
 
5
5
  gem 'anchorman', :platform => :mri
6
- gem 'octokit', '< 4.4', :platform => :mri
6
+
7
7
  # during development, do not release
8
8
  if ENV['TRAVIS']
9
- gem 'jasmine-core', :git => 'http://github.com/jasmine/jasmine.git'
9
+ gem 'jasmine-core', :git => 'http://github.com/jasmine/jasmine.git', :branch => '3.0-features'
10
10
  else
11
11
  gem 'jasmine-core', :path => '../jasmine'
12
12
  end
13
13
 
14
- if ENV['RAILS_VERSION'] == "rails3"
15
- gem 'rack', '1.4.5'
16
- elsif ENV['RAILS_VERSION'] == "rails4"
17
- gem 'rack', '1.5.2'
14
+ if ENV['RAILS_VERSION'] == "rails4"
15
+ gem 'rack', '~> 1.6.0'
18
16
  elsif ENV['RAILS_VERSION'] == "pojs"
19
17
  gem 'rack', '< 2.0'
20
18
  else
21
19
  gem 'rack', '>= 2.0'
22
20
  end
23
21
 
24
- gem 'mime-types', '< 3.0', platform: [:mri_19, :jruby]
22
+ gem 'mime-types', '< 3.0', platform: [:jruby]
25
23
 
26
24
  platform :rbx do
27
25
  gem 'json'
@@ -1,7 +1,7 @@
1
1
  To test changes to the jasmine-gem:
2
2
 
3
3
  * You need to have the [jasmine project](https://github.com/jasmine/jasmine) checked out in `../jasmine`
4
- * Export RAILS_VERSION as either "pojs" (Plain Old JavaScript -- IE, no rails bindings), or "rails3" to test environments other than Rails 4.
4
+ * Export RAILS_VERSION as either "pojs" (Plain Old JavaScript -- IE, no rails bindings), or "rails4" to test environments other than Rails 5.
5
5
  * Delete `Gemfile.lock`
6
6
  * Clear out your current gemset
7
7
  * exec a `bundle install`
@@ -7,6 +7,7 @@ Gem::Specification.new do |s|
7
7
  s.name = %q{jasmine}
8
8
  s.version = Jasmine::VERSION
9
9
  s.platform = Gem::Platform::RUBY
10
+ s.required_ruby_version = '>= 2.3'
10
11
 
11
12
  s.authors = ["Gregg Van Hove"]
12
13
  s.summary = %q{JavaScript BDD framework}
@@ -22,11 +23,9 @@ Gem::Specification.new do |s|
22
23
  s.rdoc_options = ["--charset=UTF-8"]
23
24
 
24
25
  case ENV['RAILS_VERSION']
25
- when 'rails3'
26
- s.add_development_dependency 'rails', '>= 3.0.0', '< 4.0.0'
27
26
  when 'pojs'
28
27
  when 'rails4'
29
- s.add_development_dependency 'rails', '>= 4', '< 5.0.0'
28
+ s.add_development_dependency 'rails', '>= 4.2', '< 5.0.0'
30
29
  else #default to rails 5
31
30
  s.add_development_dependency 'rails', '>= 5'
32
31
  end
@@ -34,14 +33,9 @@ Gem::Specification.new do |s|
34
33
  s.add_development_dependency 'rack-test'
35
34
  s.add_development_dependency 'multi_json'
36
35
  s.add_development_dependency 'rspec', '>= 2.5.0'
36
+ s.add_development_dependency 'nokogiri'
37
37
 
38
- if ruby_version_less_than([2,1,0])
39
- s.add_development_dependency 'nokogiri', '< 1.7.0'
40
- else
41
- s.add_development_dependency 'nokogiri'
42
- end
43
-
44
- s.add_dependency 'jasmine-core', '>= 2.99.0', '< 3.0.0'
38
+ s.add_dependency 'jasmine-core', '3.0.0'
45
39
  s.add_dependency 'rack', '>= 1.2.1'
46
40
  s.add_dependency 'rake'
47
41
  s.add_dependency 'phantomjs'
@@ -135,11 +135,11 @@ boot_files:
135
135
  # random
136
136
  #
137
137
  # Run specs in semi-random order.
138
- # Default: false
138
+ # Default: true
139
139
  #
140
140
  # EXAMPLE:
141
141
  #
142
- # random: true
142
+ # random: false
143
143
  #
144
144
  random:
145
145
 
@@ -13,29 +13,8 @@ module Jasmine
13
13
  UnsupportedRailsVersion = Class.new(StandardError)
14
14
 
15
15
  def asset_bundle
16
- return Rails3AssetBundle.new if Jasmine::Dependencies.rails3?
17
16
  return Rails4Or5AssetBundle.new if Jasmine::Dependencies.rails4? || Jasmine::Dependencies.rails5?
18
- raise UnsupportedRailsVersion, "Jasmine only supports the asset pipeline for Rails 3 - 5"
19
- end
20
-
21
- class Rails3AssetBundle
22
- def assets(pathname)
23
- context.asset_paths.asset_for(pathname, nil).to_a.map do |path|
24
- context.asset_path(path)
25
- end
26
- end
27
-
28
- private
29
-
30
- def context
31
- @context ||= get_asset_context
32
- end
33
-
34
- def get_asset_context
35
- context = ::Rails.application.assets.context_class
36
- context.extend(::Sprockets::Helpers::IsolatedHelper)
37
- context.extend(::Sprockets::Helpers::RailsHelper)
38
- end
17
+ raise UnsupportedRailsVersion, "Jasmine only supports the asset pipeline for Rails 4 - 5"
39
18
  end
40
19
 
41
20
  class Rails4Or5AssetBundle
@@ -16,7 +16,7 @@ module Jasmine
16
16
  exit_code_formatter = Jasmine::Formatters::ExitCode.new
17
17
  formatters << exit_code_formatter
18
18
 
19
- url = "#{config.host}:#{config.port(:ci)}/?throwFailures=#{config.stop_spec_on_expectation_failure}&random=#{@random}#{@seed}"
19
+ url = "#{config.host}:#{config.port(:ci)}/?throwFailures=#{config.stop_spec_on_expectation_failure}&failFast=#{config.stop_on_spec_failure}&random=#{@random}#{@seed}"
20
20
  runner = config.runner.call(Jasmine::Formatters::Multi.new(formatters), url)
21
21
 
22
22
  if runner.respond_to?(:boot_js)
@@ -60,10 +60,6 @@ module Jasmine
60
60
  # triggers run_load_hooks on action_view which, in turn, causes sprockets/railtie to load the Sprockets asset
61
61
  # helpers and set some configuration options.
62
62
  Rails.application.assets.context_class.instance_eval do
63
- if Jasmine::Dependencies.rails3?
64
- include ::Sprockets::Helpers::IsolatedHelper
65
- include ::Sprockets::Helpers::RailsHelper
66
- end
67
63
  if Jasmine::Dependencies.rails4?
68
64
  require 'action_view/base'
69
65
  Rails.application.assets.context_class.assets_prefix = Rails.application.config.assets.prefix
@@ -114,6 +110,7 @@ module Jasmine
114
110
 
115
111
  config.show_console_log = yaml_config.show_console_log
116
112
  config.stop_spec_on_expectation_failure = yaml_config.stop_spec_on_expectation_failure
113
+ config.stop_on_spec_failure = yaml_config.stop_on_spec_failure
117
114
  config.random = yaml_config.random
118
115
  config.phantom_config_script = yaml_config.phantom_config_script
119
116
  config.phantom_cli_options = yaml_config.phantom_cli_options
@@ -13,6 +13,7 @@ module Jasmine
13
13
  attr_accessor :prevent_phantom_js_auto_install
14
14
  attr_accessor :show_console_log
15
15
  attr_accessor :stop_spec_on_expectation_failure
16
+ attr_accessor :stop_on_spec_failure
16
17
  attr_accessor :random
17
18
  attr_accessor :phantom_config_script
18
19
  attr_accessor :phantom_cli_options
@@ -36,7 +37,8 @@ module Jasmine
36
37
  @rack_options = {}
37
38
  @show_console_log = false
38
39
  @stop_spec_on_expectation_failure = false
39
- @random = false
40
+ @stop_on_spec_failure = false
41
+ @random = true
40
42
  @phantom_config_script = nil
41
43
  @phantom_cli_options = {}
42
44
 
@@ -2,10 +2,6 @@ module Jasmine
2
2
  module Dependencies
3
3
 
4
4
  class << self
5
- def rails3?
6
- rails? && Rails.version.to_i == 3
7
- end
8
-
9
5
  def rails4?
10
6
  rails? && Rails.version.to_i == 4
11
7
  end
@@ -19,9 +15,8 @@ module Jasmine
19
15
  end
20
16
 
21
17
  def use_asset_pipeline?
22
- assets_pipeline_available = (rails3? || rails4? || rails5?) && Rails.respond_to?(:application) && Rails.application.respond_to?(:assets) && !Rails.application.assets.nil?
23
- rails3_assets_enabled = rails3? && assets_pipeline_available && Rails.application.config.assets.enabled != false
24
- assets_pipeline_available && (rails4? || rails5? || rails3_assets_enabled)
18
+ assets_pipeline_available = (rails4? || rails5?) && Rails.respond_to?(:application) && Rails.application.respond_to?(:assets) && !Rails.application.assets.nil?
19
+ assets_pipeline_available && (rails4? || rails5?)
25
20
  end
26
21
  end
27
22
  end
@@ -44,8 +44,13 @@ module Jasmine
44
44
 
45
45
  outputter.puts(summary)
46
46
 
47
+ if run_details['overallStatus'] == 'incomplete'
48
+ outputter.puts("Incomplete: #{run_details['incompleteReason']}")
49
+ end
50
+
47
51
  if run_details['order'] && run_details['order']['random']
48
- outputter.puts("Randomized with seed #{run_details['order']['seed']}")
52
+ seed = run_details['order']['seed']
53
+ outputter.puts("Randomized with seed #{seed} \(rake jasmine:ci\[true,#{seed}])")
49
54
  end
50
55
  end
51
56
 
@@ -67,12 +72,22 @@ module Jasmine
67
72
  def global_failure_details(run_details)
68
73
  result = Jasmine::Result.new(run_details.merge('fullName' => 'Error occurred in afterAll', 'description' => ''))
69
74
  if (result.failed_expectations.size > 0)
70
- outputter.puts(failure_message(result))
71
- outputter.puts
75
+ (loadFails, afterAllFails) = result.failed_expectations.partition {|e| e.globalErrorType == 'load' }
76
+ report_global_failures('Error during loading', loadFails)
77
+ report_global_failures('Error occurred in afterAll', afterAllFails)
72
78
  end
79
+
73
80
  result
74
81
  end
75
82
 
83
+ def report_global_failures(prefix, fails)
84
+ if fails.size > 0
85
+ fail_result = Jasmine::Result.new('fullName' => prefix, 'description' => '', 'failedExpectations' => fails)
86
+ outputter.puts(failure_message(fail_result))
87
+ outputter.puts
88
+ end
89
+ end
90
+
76
91
  def chars(results)
77
92
  results.map do |result|
78
93
  if result.succeeded?
@@ -100,19 +115,21 @@ module Jasmine
100
115
  end
101
116
 
102
117
  def failure_message(failure)
103
- template = <<-FM
104
- #{failure.full_name}\n
105
- FM
106
-
107
- template += failure.failed_expectations.map { |fe| expectation_message(fe) }.join("\n")
118
+ failure.full_name + "\n" + failure.failed_expectations.map { |fe| expectation_message(fe) }.join("\n")
108
119
  end
109
120
 
110
121
  def expectation_message(expectation)
111
122
  <<-FE
112
- #{expectation.message}
113
- #{expectation.stack}
123
+ Message:
124
+ \e[31m#{expectation.message}\e[0m
125
+ Stack:
126
+ #{stack(expectation.stack)}
114
127
  FE
115
128
  end
129
+
130
+ def stack(stack)
131
+ stack.split("\n").map(&:strip).join("\n ")
132
+ end
116
133
  end
117
134
  end
118
135
  end
@@ -2,20 +2,18 @@ module Jasmine
2
2
  module Formatters
3
3
  class ExitCode
4
4
  def initialize
5
- @results = []
6
- @global_failure = false
5
+ @result = nil
7
6
  end
8
7
 
9
8
  def format(results)
10
- @results += results
11
9
  end
12
10
 
13
- def done(details)
14
- @global_failure = details.fetch('failedExpectations', []).size > 0
11
+ def done(result)
12
+ @result = result
15
13
  end
16
14
 
17
15
  def succeeded?
18
- !@results.detect(&:failed?) && !@global_failure
16
+ @result && @result['overallStatus'] == 'passed'
19
17
  end
20
18
  end
21
19
  end
@@ -49,10 +49,10 @@ module Jasmine
49
49
  stack = "No stack trace present."
50
50
  end
51
51
 
52
- Failure.new(e["message"], stack)
52
+ Failure.new(e["message"], stack, e["globalErrorType"])
53
53
  end
54
54
  end
55
55
 
56
- class Failure < Struct.new(:message, :stack); end
56
+ class Failure < Struct.new(:message, :stack, :globalErrorType); end
57
57
  end
58
58
  end
@@ -1,3 +1,3 @@
1
1
  module Jasmine
2
- VERSION = "2.99.0"
2
+ VERSION = "3.0.0"
3
3
  end
@@ -67,8 +67,16 @@ module Jasmine
67
67
  loaded_yaml['stop_spec_on_expectation_failure'] || false
68
68
  end
69
69
 
70
+ def stop_on_spec_failure
71
+ loaded_yaml['stop_on_spec_failure'] || false
72
+ end
73
+
70
74
  def random
71
- loaded_yaml['random'] || false
75
+ if loaded_yaml['random'].nil?
76
+ true
77
+ else
78
+ loaded_yaml['random']
79
+ end
72
80
  end
73
81
 
74
82
  def phantom_config_script
@@ -0,0 +1,40 @@
1
+ # Jasmine Gem 3.0 Release Notes
2
+
3
+ ## Summary
4
+
5
+ Jasmine 3.0 is a major release of Jasmine, and as such includes some breaking changes in addition to various new features.
6
+
7
+ Please see the [release notes for Jasmine-Core](https://github.com/jasmine/jasmine/blob/master/release_notes/3.0.md)
8
+
9
+ There is also a 2.99 release of Jasmine that will present deprecation warnings for suites that will encounter different behavior in 3.0.
10
+
11
+
12
+ ## Changes
13
+
14
+ * Remove support for Rails 3. It is no longer supported
15
+
16
+ * Allow jasmine:ci task to tell the jasmine suite to fail fast
17
+
18
+ * More detailed reporting of suite level errors
19
+
20
+ * Drop support for Ruby less than 2.3
21
+
22
+ * Report how to re-run Jasmine with the current seed
23
+
24
+ * Run specs in random order by default
25
+
26
+ * Treat suites with focused specs as failures
27
+
28
+ * Distinguish between load errors and afterAll errors
29
+
30
+ * Removed gem version specs for Ruby versions less than 2.x
31
+
32
+ * Updated the list of Ruby versions that we test against
33
+
34
+ * Dropped all versions before 2.2.x as they have reached EOL
35
+ * Added the latest 2.2.x, 2.3.x, and 2.4.x
36
+
37
+
38
+ ------
39
+
40
+ _Release Notes generated with _[Anchorman](http://github.com/infews/anchorman)_
@@ -12,6 +12,7 @@ describe Jasmine::CiRunner do
12
12
  :port => '1234',
13
13
  :rack_options => 'rack options',
14
14
  :stop_spec_on_expectation_failure => false,
15
+ :stop_on_spec_failure => false,
15
16
  :random => false
16
17
  )
17
18
  end
@@ -43,6 +44,7 @@ describe Jasmine::CiRunner do
43
44
  expect(config).not_to have_received(:port).with(:server)
44
45
 
45
46
  expect(runner_factory).to have_received(:call).with(instance_of(Jasmine::Formatters::Multi), /\bthrowFailures=false\b/)
47
+ expect(runner_factory).to have_received(:call).with(instance_of(Jasmine::Formatters::Multi), /\bfailFast=false\b/)
46
48
  expect(runner_factory).to have_received(:call).with(instance_of(Jasmine::Formatters::Multi), /\brandom=false\b/)
47
49
 
48
50
  expect(application_factory).to have_received(:app).with(config)
@@ -97,6 +99,16 @@ describe Jasmine::CiRunner do
97
99
  expect(runner_factory).to have_received(:call).with(instance_of(Jasmine::Formatters::Multi), /\bthrowFailures=true\b/)
98
100
  end
99
101
 
102
+ it 'can tell the jasmine page to fail fast' do
103
+ allow(config).to receive(:stop_on_spec_failure) { true }
104
+
105
+ ci_runner = Jasmine::CiRunner.new(config, thread: fake_thread, application_factory: application_factory, server_factory: server_factory, outputter: outputter)
106
+
107
+ ci_runner.run
108
+
109
+ expect(runner_factory).to have_received(:call).with(instance_of(Jasmine::Formatters::Multi), /\bfailFast=true\b/)
110
+ end
111
+
100
112
  it 'can tell the jasmine page to randomize' do
101
113
  allow(config).to receive(:random) { true }
102
114
 
@@ -40,7 +40,7 @@ describe "POJS jasmine install" do
40
40
  it "should successfully run rake jasmine:ci" do
41
41
  output = `rake jasmine:ci`
42
42
  expect(output).to match (/[1-9]\d* specs, 0 failures/)
43
- expect(output).to_not match /Randomized with seed/
43
+ expect(output).to match /Randomized with seed/
44
44
  end
45
45
 
46
46
  it "should raise an error when jasmine.yml cannot be found" do
@@ -6,15 +6,9 @@ require 'jasmine/ruby_versions'
6
6
  if rails_available?
7
7
  describe 'A Rails app' do
8
8
  def bundle_install
9
- tries_remaining = 3
10
- while tries_remaining > 0
11
- puts `NOKOGIRI_USE_SYSTEM_LIBRARIES=true bundle install --path vendor;`
12
- if $?.success?
13
- tries_remaining = 0
14
- else
15
- tries_remaining -= 1
16
- puts "\n\nBundle failed, trying #{tries_remaining} more times\n\n"
17
- end
9
+ puts `NOKOGIRI_USE_SYSTEM_LIBRARIES=true bundle install --path vendor --retry 3;`
10
+ unless $?.success?
11
+ raise "Bundle failed to install."
18
12
  end
19
13
  end
20
14
 
@@ -32,21 +26,19 @@ if rails_available?
32
26
 
33
27
  open('Gemfile', 'a') { |f|
34
28
  f.puts "gem 'jasmine', :path => '#{base}'"
35
- f.puts "gem 'jasmine-core', :github => 'pivotal/jasmine'"
29
+ f.puts "gem 'jasmine-core', :git => 'http://github.com/jasmine/jasmine.git', :branch => '3.0-features'"
36
30
  if RUBY_PLATFORM != 'java' && ENV['RAILS_VERSION'] != 'rails5'
37
31
  f.puts "gem 'thin'"
38
32
  end
39
33
  f.puts "gem 'angularjs-rails'"
40
34
  f.puts "gem 'execjs', '2.0.2'"
41
- if ruby_version_less_than([2,0,0]) && ENV['RAILS_VERSION'] == 'rails3'
42
- f.puts "gem 'sass', '3.4.25'"
43
- end
44
35
  f.flush
45
36
  }
46
37
 
47
38
  Bundler.with_clean_env do
48
39
  bundle_install
49
40
  `bundle exec rails g jasmine:install`
41
+ expect($?).to eq 0
50
42
  expect(File.exists?('spec/javascripts/helpers/.gitkeep')).to eq true
51
43
  expect(File.exists?('spec/javascripts/support/jasmine.yml')).to eq true
52
44
  `bundle exec rails g jasmine:examples`
@@ -97,7 +89,7 @@ if rails_available?
97
89
  jasmine_config['spec_files'] << 'exception_test.js'
98
90
  end
99
91
  output = `bundle exec rake jasmine:ci JASMINE_CONFIG_PATH=#{exception_yaml}`
100
- expect($?).to be_success
92
+ expect($?).to_not be_success
101
93
  expect(output).to include('5 specs, 0 failures')
102
94
  end
103
95
  end
@@ -162,18 +162,63 @@ describe Jasmine::Formatters::Console do
162
162
  console.format(results)
163
163
  console.done({ 'order' => { 'random' => true, 'seed' => '4325' } })
164
164
 
165
- expect(outputter_output).to match(/Randomized with seed 4325/)
165
+ expect(outputter_output).to match(/Randomized with seed 4325 \(rake jasmine:ci\[true,4325\]\)/)
166
+ end
167
+ end
168
+
169
+ describe 'with loading errors' do
170
+ it 'should show the errors' do
171
+ console = Jasmine::Formatters::Console.new(outputter)
172
+ console.done({ 'failedExpectations' => [
173
+ {
174
+ 'globalErrorType' => 'load',
175
+ 'message' => 'Load Error',
176
+ 'stack' => 'more info'
177
+ },
178
+ {
179
+ 'globalErrorType' => 'load',
180
+ 'message' => 'Another Load Error',
181
+ 'stack' => 'even more info'
182
+ },
183
+ ] })
184
+
185
+ expect(outputter_output).to match(/Error during loading/)
186
+ expect(outputter_output).to match(/\e\[31mLoad Error\e\[0m\n\s*Stack:\n\s*more info/)
187
+ expect(outputter_output).to match(/\e\[31mAnother Load Error\e\[0m\n\s*Stack:\n\s*even more info/)
166
188
  end
167
189
  end
168
190
 
169
191
  describe 'with errors in a global afterAll' do
170
192
  it 'should show the errors' do
171
193
  console = Jasmine::Formatters::Console.new(outputter)
172
- console.done({ 'failedExpectations' => [{ 'message' => 'Global Failure', 'stack' => 'more info' }] })
194
+ console.done({ 'failedExpectations' => [
195
+ {
196
+ 'globalErrorType' => 'afterAll',
197
+ 'message' => 'Global Failure',
198
+ 'stack' => 'more info'
199
+ },
200
+ {
201
+ 'globalErrorType' => 'afterAll',
202
+ 'message' => 'Another Failure',
203
+ 'stack' => 'even more info'
204
+ },
205
+ ] })
173
206
 
174
207
  expect(outputter_output).to match(/Error occurred in afterAll/)
175
- expect(outputter_output).to match(/Global Failure/)
176
- expect(outputter_output).to match(/more info/)
208
+ expect(outputter_output).to match(/\e\[31mGlobal Failure\e\[0m\n\s*Stack:\n\s*more info/)
209
+ expect(outputter_output).to match(/\e\[31mAnother Failure\e\[0m\n\s*Stack:\n\s*even more info/)
210
+ end
211
+ end
212
+
213
+ describe 'when the overall status is incomplete' do
214
+ it 'shows the reason' do
215
+ console = Jasmine::Formatters::Console.new(outputter)
216
+ console.done({
217
+ 'overallStatus' => 'incomplete',
218
+ 'incompleteReason' => 'not all bars were frobnicated'
219
+ })
220
+
221
+ expect(outputter_output).to match(/Incomplete: not all bars were frobnicated/)
177
222
  end
178
223
  end
179
224
 
@@ -3,32 +3,17 @@ require 'spec_helper'
3
3
  describe Jasmine::Formatters::ExitCode do
4
4
  subject(:formatter) { Jasmine::Formatters::ExitCode.new }
5
5
 
6
- it 'is successful with no results' do
7
- formatter.done({})
6
+ it 'is successful with an overall status of "passed"' do
7
+ formatter.done({
8
+ 'overallStatus' => 'passed'
9
+ })
8
10
  expect(formatter).to be_succeeded
9
11
  end
10
12
 
11
- it 'is unsuccessful with a failure' do
12
- formatter.format([double(:result, failed?: true)])
13
- formatter.done({})
14
- expect(formatter).not_to be_succeeded
15
- end
16
-
17
- it 'finds a single failure to cause the error' do
18
- formatter.format([double(failed?: false), double(failed?: false), double(failed?: true), double(failed?: false)])
19
- formatter.done({})
20
- expect(formatter).not_to be_succeeded
21
- end
22
-
23
- it 'is unsuccessful with a failedExpectation in done' do
13
+ it 'is successful with any other overall status' do
24
14
  formatter.done({
25
- 'failedExpectations' => [{}]
15
+ 'overallStatus' => 'incomplete'
26
16
  })
27
17
  expect(formatter).not_to be_succeeded
28
18
  end
29
-
30
- it 'is still successful with empty failedExpectations in done' do
31
- formatter.done({ 'failedExpectations' => [] })
32
- expect(formatter).to be_succeeded
33
- end
34
19
  end
@@ -101,6 +101,26 @@ describe Jasmine::YamlConfigParser do
101
101
  expect(parser.spec_dir).to eq File.join('some_project_root', 'some_spec_dir')
102
102
  end
103
103
 
104
+ it "random returns random if set" do
105
+ yaml_loader = lambda do |path|
106
+ if path == "some_path"
107
+ {"random" => true}
108
+ end
109
+ end
110
+ parser = Jasmine::YamlConfigParser.new('some_path', 'some_project_root', nil, yaml_loader)
111
+ expect(parser.random).to eq true
112
+ end
113
+
114
+ it "random defaults to true" do
115
+ yaml_loader = lambda do |path|
116
+ if path == "some_path"
117
+ {"random" => nil}
118
+ end
119
+ end
120
+ parser = Jasmine::YamlConfigParser.new('some_path', 'some_project_root', nil, yaml_loader)
121
+ expect(parser.random).to eq true
122
+ end
123
+
104
124
  it "expands src_file paths" do
105
125
  expander = lambda do |dir, patterns|
106
126
  if (dir == File.join('some_project_root', 'some_src') && patterns == ['some_patterns'])
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jasmine
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.99.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gregg Van Hove
@@ -84,20 +84,14 @@ dependencies:
84
84
  name: jasmine-core
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: 2.99.0
90
- - - "<"
87
+ - - '='
91
88
  - !ruby/object:Gem::Version
92
89
  version: 3.0.0
93
90
  type: :runtime
94
91
  prerelease: false
95
92
  version_requirements: !ruby/object:Gem::Requirement
96
93
  requirements:
97
- - - ">="
98
- - !ruby/object:Gem::Version
99
- version: 2.99.0
100
- - - "<"
94
+ - - '='
101
95
  - !ruby/object:Gem::Version
102
96
  version: 3.0.0
103
97
  - !ruby/object:Gem::Dependency
@@ -150,6 +144,7 @@ executables:
150
144
  extensions: []
151
145
  extra_rdoc_files: []
152
146
  files:
147
+ - ".editorconfig"
153
148
  - ".gitignore"
154
149
  - ".rspec"
155
150
  - ".travis.yml"
@@ -205,6 +200,7 @@ files:
205
200
  - lib/rack/jasmine/cache_control.rb
206
201
  - lib/rack/jasmine/focused_suite.rb
207
202
  - lib/rack/jasmine/runner.rb
203
+ - release_notes/3.0.md
208
204
  - release_notes/v1.2.1.md
209
205
  - release_notes/v1.3.2.md
210
206
  - release_notes/v2.0.0.md
@@ -271,7 +267,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
271
267
  requirements:
272
268
  - - ">="
273
269
  - !ruby/object:Gem::Version
274
- version: '0'
270
+ version: '2.3'
275
271
  required_rubygems_version: !ruby/object:Gem::Requirement
276
272
  requirements:
277
273
  - - ">="
@@ -279,7 +275,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
279
275
  version: '0'
280
276
  requirements: []
281
277
  rubyforge_project:
282
- rubygems_version: 2.4.5.1
278
+ rubygems_version: 2.6.11
283
279
  signing_key:
284
280
  specification_version: 4
285
281
  summary: JavaScript BDD framework