teaspoon 0.8.0 → 0.9.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.
Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/MIT.LICENSE +1 -1
  3. data/README.md +46 -377
  4. data/app/assets/javascripts/teaspoon-jasmine.js +200 -194
  5. data/app/assets/javascripts/teaspoon-mocha.js +183 -185
  6. data/app/assets/javascripts/teaspoon-qunit.js +201 -193
  7. data/app/assets/javascripts/teaspoon-teaspoon.js +10 -10
  8. data/app/assets/javascripts/teaspoon/base/fixture.coffee +0 -1
  9. data/app/assets/javascripts/teaspoon/base/hook.coffee +7 -6
  10. data/app/assets/javascripts/teaspoon/qunit.coffee +10 -0
  11. data/app/controllers/teaspoon/suite_controller.rb +3 -4
  12. data/app/views/teaspoon/suite/_boot.html.erb +1 -1
  13. data/app/views/teaspoon/suite/_boot_require_js.html.erb +1 -0
  14. data/bin/teaspoon +1 -1
  15. data/config/routes.rb +4 -14
  16. data/lib/generators/teaspoon/install/install_generator.rb +22 -11
  17. data/lib/generators/teaspoon/install/templates/jasmine/{env_comments.rb → env_comments.rb.tt} +10 -5
  18. data/lib/generators/teaspoon/install/templates/jasmine/spec_helper.coffee +5 -5
  19. data/lib/generators/teaspoon/install/templates/jasmine/spec_helper.js +5 -5
  20. data/lib/generators/teaspoon/install/templates/mocha/{env_comments.rb → env_comments.rb.tt} +10 -5
  21. data/lib/generators/teaspoon/install/templates/mocha/spec_helper.coffee +6 -5
  22. data/lib/generators/teaspoon/install/templates/mocha/spec_helper.js +6 -5
  23. data/lib/generators/teaspoon/install/templates/qunit/{env_comments.rb → env_comments.rb.tt} +10 -5
  24. data/lib/generators/teaspoon/install/templates/qunit/test_helper.coffee +5 -5
  25. data/lib/generators/teaspoon/install/templates/qunit/test_helper.js +5 -5
  26. data/lib/tasks/teaspoon.rake +1 -1
  27. data/lib/teaspoon/command_line.rb +37 -40
  28. data/lib/teaspoon/configuration.rb +27 -30
  29. data/lib/teaspoon/configuration.rb.orig +187 -0
  30. data/lib/teaspoon/console.rb +31 -17
  31. data/lib/teaspoon/coverage.rb +2 -3
  32. data/lib/teaspoon/deprecated.rb +13 -8
  33. data/lib/teaspoon/drivers/base.rb +2 -2
  34. data/lib/teaspoon/drivers/capybara_webkit_driver.rb +33 -0
  35. data/lib/teaspoon/drivers/phantomjs/runner.js +2 -2
  36. data/lib/teaspoon/drivers/phantomjs_driver.rb +13 -4
  37. data/lib/teaspoon/drivers/selenium_driver.rb +3 -5
  38. data/lib/teaspoon/engine.rb +33 -5
  39. data/lib/teaspoon/environment.rb +2 -4
  40. data/lib/teaspoon/exceptions.rb +8 -5
  41. data/lib/teaspoon/formatters/base.rb +39 -27
  42. data/lib/teaspoon/formatters/clean_formatter.rb +0 -1
  43. data/lib/teaspoon/formatters/description.rb +36 -0
  44. data/lib/teaspoon/formatters/documentation_formatter.rb +2 -2
  45. data/lib/teaspoon/formatters/json_formatter.rb +1 -2
  46. data/lib/teaspoon/formatters/junit_formatter.rb +20 -20
  47. data/lib/teaspoon/formatters/modules/report_module.rb +4 -4
  48. data/lib/teaspoon/formatters/pride_formatter.rb +0 -1
  49. data/lib/teaspoon/formatters/rspec_html_formatter.rb +463 -0
  50. data/lib/teaspoon/formatters/snowday_formatter.rb +0 -1
  51. data/lib/teaspoon/formatters/swayze_or_oprah_formatter.rb +5 -4
  52. data/lib/teaspoon/formatters/tap_formatter.rb +2 -3
  53. data/lib/teaspoon/formatters/tap_y_formatter.rb +20 -21
  54. data/lib/teaspoon/formatters/teamcity_formatter.rb +4 -5
  55. data/lib/teaspoon/instrumentation.rb +7 -7
  56. data/lib/teaspoon/result.rb +1 -3
  57. data/lib/teaspoon/runner.rb +1 -2
  58. data/lib/teaspoon/server.rb +2 -1
  59. data/lib/teaspoon/suite.rb +20 -17
  60. data/lib/teaspoon/utility.rb +1 -3
  61. data/lib/teaspoon/version.rb +1 -1
  62. data/spec/dummy/config/application.rb +14 -18
  63. data/spec/dummy/config/boot.rb +2 -6
  64. data/spec/dummy/config/environment.rb +3 -3
  65. data/spec/dummy/config/environments/development.rb +27 -13
  66. data/spec/dummy/config/environments/production.rb +79 -0
  67. data/spec/dummy/config/environments/test.rb +26 -13
  68. data/spec/dummy/config/routes.rb +1 -1
  69. data/spec/dummy/config/secrets.yml +22 -0
  70. data/spec/features/console_reporter_spec.rb +3 -8
  71. data/spec/features/hooks_spec.rb +17 -4
  72. data/spec/features/html_reporter_spec.rb +12 -1
  73. data/spec/features/install_generator_spec.rb +2 -3
  74. data/spec/features/instrumentation_spec.rb +11 -11
  75. data/spec/javascripts/teaspoon/base/teaspoon_spec.coffee +14 -1
  76. data/spec/spec_helper.rb +7 -4
  77. data/spec/teaspoon/command_line_spec.rb +19 -28
  78. data/spec/teaspoon/configuration_spec.rb +22 -14
  79. data/spec/teaspoon/console_spec.rb +79 -63
  80. data/spec/teaspoon/coverage_spec.rb +23 -23
  81. data/spec/teaspoon/drivers/capybara_webkit_driver_spec.rb +39 -0
  82. data/spec/teaspoon/drivers/phantomjs_driver_spec.rb +10 -5
  83. data/spec/teaspoon/drivers/selenium_driver_spec.rb +10 -10
  84. data/spec/teaspoon/environment_spec.rb +28 -20
  85. data/spec/teaspoon/exceptions_spec.rb +4 -4
  86. data/spec/teaspoon/exporter_spec.rb +28 -28
  87. data/spec/teaspoon/formatters/base_spec.rb +29 -29
  88. data/spec/teaspoon/formatters/clean_formatter_spec.rb +1 -1
  89. data/spec/teaspoon/formatters/documentation_formatter_spec.rb +1 -1
  90. data/spec/teaspoon/formatters/dot_formatter_spec.rb +1 -1
  91. data/spec/teaspoon/formatters/json_formatter_spec.rb +7 -7
  92. data/spec/teaspoon/formatters/junit_formatter_spec.rb +10 -10
  93. data/spec/teaspoon/formatters/pride_formatter_spec.rb +1 -1
  94. data/spec/teaspoon/formatters/rspec_html_formatter_spec.rb +107 -0
  95. data/spec/teaspoon/formatters/snowday_formatter_spec.rb +1 -1
  96. data/spec/teaspoon/formatters/tap_formatter_spec.rb +1 -1
  97. data/spec/teaspoon/formatters/tap_y_formatter_spec.rb +1 -1
  98. data/spec/teaspoon/formatters/teamcity_formatter_spec.rb +27 -27
  99. data/spec/teaspoon/instrumentation_spec.rb +35 -29
  100. data/spec/teaspoon/result_spec.rb +40 -36
  101. data/spec/teaspoon/runner_spec.rb +23 -20
  102. data/spec/teaspoon/server_spec.rb +19 -16
  103. data/spec/teaspoon/suite_spec.rb +23 -9
  104. data/spec/teaspoon_env.rb +7 -12
  105. data/test/javascripts/teaspoon/qunit/models_test.coffee +6 -2
  106. data/vendor/assets/javascripts/support/chai-1.10.0.js +4800 -0
  107. data/vendor/assets/javascripts/support/chai-jq-0.0.7.js +524 -0
  108. data/vendor/assets/javascripts/support/chai.js +4435 -4349
  109. metadata +57 -54
  110. data/app/assets/javascripts/teaspoon-angular.js +0 -1299
  111. data/app/assets/javascripts/teaspoon/angular.coffee +0 -55
  112. data/app/assets/javascripts/teaspoon/angular/reporters/console.coffee +0 -11
  113. data/app/assets/javascripts/teaspoon/angular/reporters/html.coffee +0 -21
  114. data/spec/javascripts/angular_helper.coffee +0 -5
  115. data/spec/javascripts/teaspoon/angular/models_aspec.coffee +0 -95
  116. data/spec/javascripts/teaspoon/angular/reporters/html_aspec.coffee +0 -9
  117. data/vendor/assets/javascripts/angular/1.0.5.js +0 -26195
  118. data/vendor/assets/javascripts/angular/MIT-LICENSE +0 -22
@@ -1,10 +1,10 @@
1
1
  (function() {
2
2
  var TeaspoonInterface,
3
- __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
3
+ bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
4
4
 
5
5
  TeaspoonInterface = (function() {
6
6
  function TeaspoonInterface() {
7
- this.filter = __bind(this.filter, this);
7
+ this.filter = bind(this.filter, this);
8
8
  this.files = $u("#teaspoon-suite-list .file a");
9
9
  this.input = $u("#teaspoon-filter-input")[0];
10
10
  this.input.value = "";
@@ -12,18 +12,18 @@
12
12
  }
13
13
 
14
14
  TeaspoonInterface.prototype.filter = function() {
15
- var file, _i, _len, _ref, _results;
16
- _ref = this.files;
17
- _results = [];
18
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
19
- file = _ref[_i];
15
+ var file, i, len, ref, results;
16
+ ref = this.files;
17
+ results = [];
18
+ for (i = 0, len = ref.length; i < len; i++) {
19
+ file = ref[i];
20
20
  if (LiquidMetal.score(file.innerHTML, this.input.value) > 0) {
21
- _results.push(file.parentNode.style.display = "block");
21
+ results.push(file.parentNode.style.display = "block");
22
22
  } else {
23
- _results.push(file.parentNode.style.display = "none");
23
+ results.push(file.parentNode.style.display = "none");
24
24
  }
25
25
  }
26
- return _results;
26
+ return results;
27
27
  };
28
28
 
29
29
  return TeaspoonInterface;
@@ -72,7 +72,6 @@ class Teaspoon.fixture
72
72
  Teaspoon.fixture.el.innerHTML += content
73
73
 
74
74
 
75
-
76
75
  create = =>
77
76
  Teaspoon.fixture.el = document.createElement("div")
78
77
  Teaspoon.fixture.$el = $(Teaspoon.fixture.el) if typeof(window.$) == 'function'
@@ -1,8 +1,8 @@
1
- Teaspoon.hook = (name, options = {}) ->
2
-
1
+ Teaspoon.hook = (name, payload = {}) ->
2
+ method = "POST"
3
3
  xhr = null
4
4
 
5
- xhrRequest = (url, options, callback) ->
5
+ xhrRequest = (url, payload, callback) ->
6
6
  if window.XMLHttpRequest # Mozilla, Safari, ...
7
7
  xhr = new XMLHttpRequest()
8
8
  else if window.ActiveXObject # IE
@@ -13,9 +13,10 @@ Teaspoon.hook = (name, options = {}) ->
13
13
  throw("Unable to make Ajax Request") unless xhr
14
14
 
15
15
  xhr.onreadystatechange = callback
16
- xhr.open(options['method'] || "GET", "#{Teaspoon.root}/#{url}", false)
17
- xhr.send(options['payload'])
16
+ xhr.open("POST", "#{Teaspoon.root}/#{url}", false)
17
+ xhr.setRequestHeader("Content-Type", "application/json")
18
+ xhr.send(JSON.stringify(args: payload))
18
19
 
19
- xhrRequest "#{Teaspoon.suites.active}/#{name}", options, ->
20
+ xhrRequest "#{Teaspoon.suites.active}/#{name}", payload, ->
20
21
  return unless xhr.readyState == 4
21
22
  throw("Unable to call hook \"#{url}\".") unless xhr.status == 200
@@ -33,6 +33,7 @@ class Teaspoon.Spec
33
33
  return [] unless @spec.failed
34
34
  for item in @spec.assertions
35
35
  continue if item.result
36
+ @provideFallbackMessage(item)
36
37
  {message: item.message, stack: item.source}
37
38
 
38
39
 
@@ -48,6 +49,15 @@ class Teaspoon.Spec
48
49
  skipped: false
49
50
 
50
51
 
52
+ provideFallbackMessage: (item) ->
53
+ return if item.message
54
+
55
+ if item.actual && item.expected
56
+ item.message ||= "Expected #{JSON.stringify(item.actual)} to equal #{JSON.stringify(item.expected)}"
57
+ else
58
+ item.message = 'failed'
59
+
60
+
51
61
 
52
62
  class Teaspoon.Suite
53
63
 
@@ -1,6 +1,4 @@
1
1
  class Teaspoon::SuiteController < ActionController::Base
2
- helper Teaspoon::SuiteHelper rescue nil
3
-
4
2
  before_filter :prepend_fixture_paths
5
3
 
6
4
  layout false
@@ -14,12 +12,13 @@ class Teaspoon::SuiteController < ActionController::Base
14
12
  end
15
13
 
16
14
  def hook
17
- Teaspoon::Suite.new(params).hooks[params[:hook].to_s].each { |hook| hook.call }
15
+ hooks = Teaspoon::Suite.new(params).hooks[params[:hook].to_s]
16
+ hooks.each { |hook| hook.call(params[:args]) }
18
17
  render nothing: true
19
18
  end
20
19
 
21
20
  def fixtures
22
- render "/#{params[:filename]}"
21
+ render template: "/#{params[:filename]}"
23
22
  end
24
23
 
25
24
  private
@@ -1,4 +1,4 @@
1
- <%= javascript_include_tag *@suite.spec_assets %>
1
+ <%= javascript_include_tag *@suite.spec_assets, debug: @suite.config.expand_assets %>
2
2
  <script type="text/javascript">
3
3
  Teaspoon.onWindowLoad(Teaspoon.execute);
4
4
  </script>
@@ -1,6 +1,7 @@
1
1
  <%
2
2
  rails_config = Rails.application.config
3
3
  require_options = {baseUrl: rails_config.assets.prefix}
4
+ require_options.merge!(urlArgs: "instrument=1", waitSeconds: 0) if Teaspoon.configuration.use_coverage
4
5
  require_options.merge!(rails_config.requirejs.user_config) if rails_config.respond_to?(:requirejs)
5
6
  specs = @suite.spec_assets(false).map{ |s| "#{s.gsub(/\.js.*$/, "")}" }
6
7
  %>
data/bin/teaspoon CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
- root = File.expand_path('../../lib', __FILE__)
2
+ root = File.expand_path("../../lib", __FILE__)
3
3
  $:.unshift(root) unless $:.include?(root)
4
4
 
5
5
  require "teaspoon/command_line"
data/config/routes.rb CHANGED
@@ -1,16 +1,6 @@
1
1
  Teaspoon::Engine.routes.draw do
2
-
3
- root to: "suite#index"
4
-
5
- match "/fixtures/*filename",
6
- to: "suite#fixtures", via: [:get]
7
-
8
- match "/:suite", as: "suite",
9
- to: "suite#show", via: [:get],
10
- defaults: { suite: "default" }
11
-
12
- match "/:suite/:hook", as: "suite_hook",
13
- to: "suite#hook", via: [:get, :post],
14
- defaults: { suite: "default", hook: "default" }
15
-
2
+ root to: "suite#index"
3
+ match "/fixtures/*filename", to: "suite#fixtures", via: :get
4
+ match "/:suite", as: "suite", to: "suite#show", via: :get, defaults: { suite: "default" }
5
+ match "/:suite/:hook", as: "suite_hook", to: "suite#hook", via: :post, defaults: { suite: "default", hook: "default" }
16
6
  end
@@ -1,40 +1,48 @@
1
1
  module Teaspoon
2
2
  module Generators
3
3
  class InstallGenerator < Rails::Generators::Base
4
-
5
4
  source_root File.expand_path("../", __FILE__)
6
5
 
7
6
  desc "Installs the Teaspoon initializer into your application."
8
7
 
9
- class_option :framework, type: :string,
8
+ class_option :framework,
9
+ type: :string,
10
10
  aliases: "-t",
11
11
  default: "jasmine",
12
12
  desc: "Specify which test framework to use (Available: jasmine, mocha, or qunit)"
13
13
 
14
- class_option :coffee, type: :boolean,
14
+ class_option :coffee,
15
+ type: :boolean,
15
16
  aliases: "-c",
16
17
  default: false,
17
18
  desc: "Generate a CoffeeScript spec helper instead of Javascript"
18
19
 
19
- class_option :no_comments, type: :boolean,
20
+ class_option :no_comments,
21
+ type: :boolean,
20
22
  aliases: "-q",
21
23
  default: false,
22
24
  desc: "Install the teaspoon_env.rb without comments"
23
25
 
24
- class_option :partials, type: :boolean,
26
+ class_option :partials,
27
+ type: :boolean,
25
28
  aliases: "-p",
26
29
  default: false,
27
30
  desc: "Copy the boot and body partials"
28
31
 
29
32
  def validate_framework
30
33
  return if frameworks.include?(options[:framework])
31
- puts "Unknown framework -- available #{frameworks.join(", ")}"
34
+ puts "Unknown framework -- available #{frameworks.join(', ')}"
32
35
  exit(1)
33
36
  end
34
37
 
35
38
  def copy_environment
36
- source = options[:no_comments] ? "env.rb" : "env_comments.rb"
37
- copy_file "templates/#{framework}/#{source}", "#{framework_type}/teaspoon_env.rb"
39
+ if options[:no_comments]
40
+ copy_file "templates/#{framework}/env.rb",
41
+ "#{framework_type}/teaspoon_env.rb"
42
+ else
43
+ template "templates/#{framework}/env_comments.rb.tt",
44
+ "#{framework_type}/teaspoon_env.rb"
45
+ end
38
46
  end
39
47
 
40
48
  def create_structure
@@ -43,13 +51,16 @@ module Teaspoon
43
51
  end
44
52
 
45
53
  def copy_spec_helper
46
- copy_file "templates/#{framework}/#{framework_type}_helper.#{helper_ext}", "#{framework_type}/javascripts/#{framework_type}_helper.#{helper_ext}"
54
+ copy_file "templates/#{framework}/#{framework_type}_helper.#{helper_ext}",
55
+ "#{framework_type}/javascripts/#{framework_type}_helper.#{helper_ext}"
47
56
  end
48
57
 
49
58
  def copy_partials
50
59
  return unless options[:partials]
51
- copy_file "templates/_boot.html.erb", "/#{framework_type}/javascripts/fixtures/_boot.html.erb"
52
- copy_file "templates/_body.html.erb", "/#{framework_type}/javascripts/fixtures/_body.html.erb"
60
+ copy_file "templates/_boot.html.erb",
61
+ "#{framework_type}/javascripts/fixtures/_boot.html.erb"
62
+ copy_file "templates/_body.html.erb",
63
+ "#{framework_type}/javascripts/fixtures/_body.html.erb"
53
64
  end
54
65
 
55
66
  def display_readme
@@ -41,7 +41,7 @@ Teaspoon.configure do |config|
41
41
  # directives.
42
42
  # Note: If no version is specified, the latest is assumed.
43
43
  #
44
- # Available: jasmine[1.3.1, 2.0.0], mocha[1.10.0, 1.17.1] qunit[1.12.0, 1.14.0]
44
+ # Available: jasmine[1.3.1], mocha[1.10.0, 1.17.1] qunit[1.12.0, 1.14.0]
45
45
  suite.use_framework :jasmine, "1.3.1"
46
46
 
47
47
  # Specify a file matcher as a regular expression and all matching files will be loaded when the suite is run. These
@@ -80,6 +80,11 @@ Teaspoon.configure do |config|
80
80
  # synchronous Ajax request to the server that will call all of the blocks you've defined for that hook name.
81
81
  #suite.hook :fixtures, proc{ }
82
82
 
83
+ # Determine whether specs loaded into the test harness should be embedded as individual script tags or concatenated
84
+ # into a single file. Similar to Rails' asset `debug: true` and `config.assets.debug = true` options. By default,
85
+ # Teaspoon expands all assets to provide more valuable stack traces that reference individual source files.
86
+ #suite.expand_assets = false
87
+
83
88
  end
84
89
 
85
90
  # Example suite. Since we're just filtering to files already within the root test/javascripts, these files will also
@@ -134,8 +139,8 @@ Teaspoon.configure do |config|
134
139
  # Specify the formatters to use when outputting the results.
135
140
  # Note: Output files can be specified by using `"junit>/path/to/output.xml"`.
136
141
  #
137
- # Available: dot, documentation, clean, json, junit, pride, snowday, swayze_or_oprah, tap, tap_y, teamcity
138
- #config.formatters = ["dot"]
142
+ # Available: <%= Teaspoon::Formatters.known_formatters.map(&:name).join ", " %>
143
+ #config.formatters = ["<%= Teaspoon::Formatters.known_formatters.select(&:default?).first.name %>"]
139
144
 
140
145
  # Specify if you want color output from the formatters.
141
146
  #config.color = true
@@ -161,14 +166,14 @@ Teaspoon.configure do |config|
161
166
 
162
167
  config.coverage do |coverage|
163
168
 
164
- # Which coverage reports Instanbul should generate. Correlates directly to what Istanbul supports.
169
+ # Which coverage reports Istanbul should generate. Correlates directly to what Istanbul supports.
165
170
  #
166
171
  # Available: text-summary, text, html, lcov, lcovonly, cobertura, teamcity
167
172
  #coverage.reports = ["text-summary", "html"]
168
173
 
169
174
  # The path that the coverage should be written to - when there's an artifact to write to disk.
170
175
  # Note: Relative to `config.root`.
171
- #coverage.output_dir = "coverage"
176
+ #coverage.output_path = "coverage"
172
177
 
173
178
  # Various thresholds requirements can be defined, and those thresholds will be checked at the end of a run. If any
174
179
  # aren't met the run will fail with a message. Thresholds can be defined as a percentage (0-100), or nil.
@@ -8,6 +8,10 @@
8
8
  # Use this polyfill to avoid the confusion.
9
9
  #= require support/bind-poly
10
10
  #
11
+ # You can require your own javascript files here. By default this will include everything in application, however you
12
+ # may get better load performance if you require the specific files that are being used in the spec that tests them.
13
+ #= require application
14
+ #
11
15
  # Deferring execution
12
16
  # If you're using CommonJS, RequireJS or some other asynchronous library you can defer execution. Call
13
17
  # Teaspoon.execute() after everything has been loaded. Simple example of a timeout:
@@ -18,14 +22,10 @@
18
22
  # Matching files
19
23
  # By default Teaspoon will look for files that match _spec.{js,js.coffee,.coffee}. Add a filename_spec.js file in your
20
24
  # spec path and it'll be included in the default suite automatically. If you want to customize suites, check out the
21
- # configuration in config/initializers/teaspoon.rb
25
+ # configuration in teaspoon_env.rb
22
26
  #
23
27
  # Manifest
24
28
  # If you'd rather require your spec files manually (to control order for instance) you can disable the suite matcher in
25
29
  # the configuration and use this file as a manifest.
26
30
  #
27
31
  # For more information: http://github.com/modeset/teaspoon
28
- #
29
- # You can require your own javascript files here. By default this will include everything in application, however you
30
- # may get better load performance if you require the specific files that are being used in the spec that tests them.
31
- #= require application
@@ -8,6 +8,10 @@
8
8
  // Use this polyfill to avoid the confusion.
9
9
  //= require support/bind-poly
10
10
  //
11
+ // You can require your own javascript files here. By default this will include everything in application, however you
12
+ // may get better load performance if you require the specific files that are being used in the spec that tests them.
13
+ //= require application
14
+ //
11
15
  // Deferring execution
12
16
  // If you're using CommonJS, RequireJS or some other asynchronous library you can defer execution. Call
13
17
  // Teaspoon.execute() after everything has been loaded. Simple example of a timeout:
@@ -18,14 +22,10 @@
18
22
  // Matching files
19
23
  // By default Teaspoon will look for files that match _spec.{js,js.coffee,.coffee}. Add a filename_spec.js file in your
20
24
  // spec path and it'll be included in the default suite automatically. If you want to customize suites, check out the
21
- // configuration in config/initializers/teaspoon.rb
25
+ // configuration in teaspoon_env.rb
22
26
  //
23
27
  // Manifest
24
28
  // If you'd rather require your spec files manually (to control order for instance) you can disable the suite matcher in
25
29
  // the configuration and use this file as a manifest.
26
30
  //
27
31
  // For more information: http://github.com/modeset/teaspoon
28
- //
29
- // You can require your own javascript files here. By default this will include everything in application, however you
30
- // may get better load performance if you require the specific files that are being used in the spec that tests them.
31
- //= require application
@@ -41,7 +41,7 @@ Teaspoon.configure do |config|
41
41
  # directives.
42
42
  # Note: If no version is specified, the latest is assumed.
43
43
  #
44
- # Available: jasmine[1.3.1, 2.0.0], mocha[1.10.0, 1.17.1] qunit[1.12.0, 1.14.0]
44
+ # Available: jasmine[1.3.1], mocha[1.10.0, 1.17.1] qunit[1.12.0, 1.14.0]
45
45
  suite.use_framework :mocha
46
46
 
47
47
  # Specify a file matcher as a regular expression and all matching files will be loaded when the suite is run. These
@@ -80,6 +80,11 @@ Teaspoon.configure do |config|
80
80
  # synchronous Ajax request to the server that will call all of the blocks you've defined for that hook name.
81
81
  #suite.hook :fixtures, proc{ }
82
82
 
83
+ # Determine whether specs loaded into the test harness should be embedded as individual script tags or concatenated
84
+ # into a single file. Similar to Rails' asset `debug: true` and `config.assets.debug = true` options. By default,
85
+ # Teaspoon expands all assets to provide more valuable stack traces that reference individual source files.
86
+ #suite.expand_assets = false
87
+
83
88
  end
84
89
 
85
90
  # Example suite. Since we're just filtering to files already within the root test/javascripts, these files will also
@@ -134,8 +139,8 @@ Teaspoon.configure do |config|
134
139
  # Specify the formatters to use when outputting the results.
135
140
  # Note: Output files can be specified by using `"junit>/path/to/output.xml"`.
136
141
  #
137
- # Available: dot, documentation, clean, json, junit, pride, snowday, swayze_or_oprah, tap, tap_y, teamcity
138
- #config.formatters = ["dot"]
142
+ # Available: <%= Teaspoon::Formatters.known_formatters.map(&:name).join ", " %>
143
+ #config.formatters = ["<%= Teaspoon::Formatters.known_formatters.select(&:default?).first.name %>"]
139
144
 
140
145
  # Specify if you want color output from the formatters.
141
146
  #config.color = true
@@ -161,14 +166,14 @@ Teaspoon.configure do |config|
161
166
 
162
167
  config.coverage do |coverage|
163
168
 
164
- # Which coverage reports Instanbul should generate. Correlates directly to what Istanbul supports.
169
+ # Which coverage reports Istanbul should generate. Correlates directly to what Istanbul supports.
165
170
  #
166
171
  # Available: text-summary, text, html, lcov, lcovonly, cobertura, teamcity
167
172
  #coverage.reports = ["text-summary", "html"]
168
173
 
169
174
  # The path that the coverage should be written to - when there's an artifact to write to disk.
170
175
  # Note: Relative to `config.root`.
171
- #coverage.output_dir = "coverage"
176
+ #coverage.output_path = "coverage"
172
177
 
173
178
  # Various thresholds requirements can be defined, and those thresholds will be checked at the end of a run. If any
174
179
  # aren't met the run will fail with a message. Thresholds can be defined as a percentage (0-100), or nil.
@@ -2,12 +2,17 @@
2
2
  # require support/expect
3
3
  # require support/sinon
4
4
  # require support/chai
5
+ # require support/chai-jq-0.0.7
5
6
  # require support/your-support-file
6
7
  #
7
8
  # PhantomJS (Teaspoons default driver) doesn't have support for Function.prototype.bind, which has caused confusion.
8
9
  # Use this polyfill to avoid the confusion.
9
10
  #= require support/bind-poly
10
11
  #
12
+ # You can require your own javascript files here. By default this will include everything in application, however you
13
+ # may get better load performance if you require the specific files that are being used in the spec that tests them.
14
+ #= require application
15
+ #
11
16
  # Deferring execution
12
17
  # If you're using CommonJS, RequireJS or some other asynchronous library you can defer execution. Call
13
18
  # Teaspoon.execute() after everything has been loaded. Simple example of a timeout:
@@ -18,7 +23,7 @@
18
23
  # Matching files
19
24
  # By default Teaspoon will look for files that match _spec.{js,js.coffee,.coffee}. Add a filename_spec.js file in your
20
25
  # spec path and it'll be included in the default suite automatically. If you want to customize suites, check out the
21
- # configuration in config/initializers/teaspoon.rb
26
+ # configuration in teaspoon_env.rb
22
27
  #
23
28
  # Manifest
24
29
  # If you'd rather require your spec files manually (to control order for instance) you can disable the suite matcher in
@@ -33,7 +38,3 @@
33
38
  # window.assert = chai.assert
34
39
  # window.expect = chai.expect
35
40
  # window.should = chai.should()
36
- #
37
- # You can require your own javascript files here. By default this will include everything in application, however you
38
- # may get better load performance if you require the specific files that are being used in the spec that tests them.
39
- #= require application
@@ -2,12 +2,17 @@
2
2
  // require support/expect
3
3
  // require support/sinon
4
4
  // require support/chai
5
+ // require support/chai-jq-0.0.7
5
6
  // require support/your-support-file
6
7
  //
7
8
  // PhantomJS (Teaspoons default driver) doesn't have support for Function.prototype.bind, which has caused confusion.
8
9
  // Use this polyfill to avoid the confusion.
9
10
  //= require support/bind-poly
10
11
  //
12
+ // You can require your own javascript files here. By default this will include everything in application, however you
13
+ // may get better load performance if you require the specific files that are being used in the spec that tests them.
14
+ //= require application
15
+ //
11
16
  // Deferring execution
12
17
  // If you're using CommonJS, RequireJS or some other asynchronous library you can defer execution. Call
13
18
  // Teaspoon.execute() after everything has been loaded. Simple example of a timeout:
@@ -18,7 +23,7 @@
18
23
  // Matching files
19
24
  // By default Teaspoon will look for files that match _spec.{js,js.coffee,.coffee}. Add a filename_spec.js file in your
20
25
  // spec path and it'll be included in the default suite automatically. If you want to customize suites, check out the
21
- // configuration in config/initializers/teaspoon.rb
26
+ // configuration in teaspoon_env.rb
22
27
  //
23
28
  // Manifest
24
29
  // If you'd rather require your spec files manually (to control order for instance) you can disable the suite matcher in
@@ -33,7 +38,3 @@
33
38
  // window.assert = chai.assert;
34
39
  // window.expect = chai.expect;
35
40
  // window.should = chai.should();
36
- //
37
- // You can require your own javascript files here. By default this will include everything in application, however you
38
- // may get better load performance if you require the specific files that are being used in the spec that tests them.
39
- //= require application