jasmine 2.99.0 → 3.0.0

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: 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