konacha 2.7.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,5 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.8.7
4
3
  - 1.9.3
5
4
  - 2.0.0
6
5
  gemfile:
@@ -10,8 +9,5 @@ before_script:
10
9
  - sh -e /etc/init.d/xvfb start
11
10
  - export DISPLAY=:99.0
12
11
  matrix:
13
- exclude:
14
- - gemfile: Gemfile-rails4
15
- rvm: 1.8.7
16
12
  allow_failures:
17
13
  - { gemfile: Gemfile-rails4 }
data/Gemfile CHANGED
@@ -1,5 +1,2 @@
1
1
  source 'https://rubygems.org'
2
2
  gemspec
3
-
4
- # https://github.com/jonleighton/poltergeist/issues/320
5
- gem 'faye-websocket', '~> 0.4.4'
@@ -5,6 +5,3 @@ gem "railties", github: "rails/rails"
5
5
  gem "activemodel", github: "rails/rails"
6
6
  gem "journey", github: "rails/journey"
7
7
  gem "sprockets-rails", github: "rails/sprockets-rails"
8
-
9
- # https://github.com/jonleighton/poltergeist/issues/320
10
- gem 'faye-websocket', '~> 0.4.4'
data/History.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # master
2
2
 
3
+ # 3.0.0
4
+
5
+ * Update mocha (1.10.0)
6
+ * Fix reporting of errors in asynchronous tests (#136)
7
+ * Add a Konacha.config option to set formatters (#137)
8
+ * Test against latest version of Poltergeist
9
+ * Ruby 1.8.7 is no longer supported
10
+
3
11
  # 2.7.0
4
12
 
5
13
  * Fix semantics of pending event for RSpec reporters (#131, #132)
data/README.md CHANGED
@@ -255,42 +255,10 @@ describe("templating", function() {
255
255
  });
256
256
  ```
257
257
 
258
- ## Upgrading from Konacha 1.x
258
+ ## Upgrading from Konacha 2.x
259
259
 
260
- ### Iframe
261
-
262
- As of Konacha 2.0, each test file is run inside an isolated iframe. For
263
- compatibility with Konacha 1.x, the iframe's `<body>` element will have
264
- `id="konacha"` set on it.
265
-
266
- Previously, all test files would run in the same environment. Thus, if only
267
- one test file pulled in an external library, all tests would be able to use
268
- it. Now test files are run in isolation. If you encounter an undefined
269
- JavaScript module in your test, you may be missing an explicit `//= require`
270
- call somewhere.
271
-
272
- ### Options
273
-
274
- In Konacha 1.x you would set `Konacha.mochaOptions` in `konacha_config.js`:
275
-
276
- ```javascript
277
- // Old syntax
278
- Konacha.mochaOptions.ignoreLeaks = true;
279
- ```
280
-
281
- The `konacha_config.js` file is no longer used by Konacha 2.0. Instead, call
282
- Mocha's own methods in [`spec_helper.js`](#spec-helper):
283
-
284
- ```javascript
285
- // New syntax
286
- mocha.ignoreLeaks();
287
- ```
288
-
289
- ### Global `mocha`
290
-
291
- Konacha 2.0 ships with an upgraded Mocha. Some objects that were previously
292
- available on the global `mocha` object might now be located on `Mocha`. If you
293
- get an error message to this effect, adjust your code accordingly.
260
+ The only backward-incompatible change in Konacha 3.0 is that Ruby 1.8.7 is
261
+ no longer supported. Please upgrade to 1.9.3 or 2.0.
294
262
 
295
263
  ## Contributing
296
264
 
@@ -5,6 +5,13 @@ window.Konacha = {
5
5
  }
6
6
  };
7
7
 
8
+ // Push errors to parent iframe.
9
+ window.onerror = function() {
10
+ if (parent.onerror) {
11
+ return parent.onerror.apply(parent, arguments);
12
+ }
13
+ };
14
+
8
15
  window.Mocha = Object.create(parent.Mocha);
9
16
  window.mocha = Object.create(parent.mocha);
10
17
 
@@ -17,7 +17,7 @@ the asset pipeline and engines.}
17
17
  gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
18
  gem.name = "konacha"
19
19
  gem.require_paths = ["lib"]
20
- gem.version = "2.7.0"
20
+ gem.version = "3.0.0"
21
21
  gem.license = "MIT"
22
22
 
23
23
  gem.add_dependency "railties", ">= 3.1", "< 5"
@@ -32,5 +32,6 @@ the asset pipeline and engines.}
32
32
  gem.add_development_dependency "coffee-script"
33
33
  gem.add_development_dependency "ejs"
34
34
  gem.add_development_dependency "tzinfo"
35
- gem.add_development_dependency "poltergeist", "~> 1.0.2"
35
+ gem.add_development_dependency "selenium-webdriver"
36
+ gem.add_development_dependency "poltergeist", "~> 1.3.0"
36
37
  end
@@ -29,7 +29,7 @@ module Konacha
29
29
  yield config
30
30
  end
31
31
 
32
- delegate :port, :spec_dir, :spec_matcher, :application, :driver, :runner_port, :to => :config
32
+ delegate :port, :spec_dir, :spec_matcher, :application, :driver, :runner_port, :formatters, :to => :config
33
33
 
34
34
  def spec_root
35
35
  File.join(Rails.root, config.spec_dir)
@@ -20,6 +20,16 @@ module Konacha
20
20
  end
21
21
  end
22
22
 
23
+ def self.formatters
24
+ if ENV['FORMAT']
25
+ ENV['FORMAT'].split(',').map do |string|
26
+ eval(string).new(STDOUT)
27
+ end
28
+ else
29
+ [Konacha::Formatter.new(STDOUT)]
30
+ end
31
+ end
32
+
23
33
  initializer "konacha.environment" do |app|
24
34
  options = app.config.konacha
25
35
 
@@ -31,6 +41,7 @@ module Konacha
31
41
  options.stylesheets ||= %w(application)
32
42
  options.verbose ||= false
33
43
  options.runner_port ||= nil
44
+ options.formatters ||= self.class.formatters
34
45
 
35
46
  app.config.assets.paths << app.root.join(options.spec_dir).to_s
36
47
  end
@@ -11,7 +11,7 @@ module Konacha
11
11
 
12
12
  def initialize(session = nil)
13
13
  @session = session
14
- @reporter = Konacha::Reporter.new(*formatters)
14
+ @reporter = Konacha::Reporter.new(*Konacha.formatters)
15
15
  end
16
16
 
17
17
  def run(path = '/')
@@ -40,16 +40,5 @@ module Konacha
40
40
  def session
41
41
  @session ||= Capybara::Session.new(Konacha.driver, Konacha.application)
42
42
  end
43
-
44
- private
45
- def formatters
46
- if ENV['FORMAT']
47
- ENV['FORMAT'].split(',').map do |string|
48
- eval(string).new(STDOUT)
49
- end
50
- else
51
- [Konacha::Formatter.new(STDOUT)]
52
- end
53
- end
54
43
  end
55
44
  end
@@ -8,4 +8,13 @@ describe("failure", function(){
8
8
  // throwing real Error objects.
9
9
  throw new Error("this one errors out");
10
10
  });
11
+
12
+ it("errors asynchronously", function(done) {
13
+ setTimeout(function() {
14
+ (2 + 2).should.equal(5);
15
+ }, 0);
16
+ setTimeout(function() {
17
+ done();
18
+ }, 10);
19
+ });
11
20
  });
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ describe Konacha::Engine do
4
+ describe ".formatters" do
5
+ it "defaults to a Konacha::Formatter pointing to STDOUT" do
6
+ Konacha::Formatter.should_receive(:new).with(STDOUT) { :formatter }
7
+ Konacha::Engine.formatters.should == [:formatter]
8
+ end
9
+
10
+ context "with a FORMAT environment variable" do
11
+ before do
12
+ class TestFormatter
13
+ def initialize(io)
14
+ end
15
+ end
16
+ ENV['FORMAT'] = 'Konacha::Formatter,TestFormatter'
17
+ end
18
+
19
+ after do
20
+ Object.send(:remove_const, :TestFormatter)
21
+ ENV.delete('FORMAT')
22
+ end
23
+
24
+ it "creates the specified formatters" do
25
+ Konacha::Formatter.should_receive(:new).with(STDOUT) { :formatter }
26
+ TestFormatter.should_receive(:new).with(STDOUT) { :test_formatter }
27
+ Konacha::Engine.formatters.should == [:formatter, :test_formatter]
28
+ end
29
+ end
30
+ end
31
+ end
@@ -3,25 +3,12 @@ require 'spec_helper'
3
3
  describe Konacha::Runner do
4
4
  before do
5
5
  Konacha.mode = :runner
6
- STDOUT.stub(:puts)
7
6
  end
8
- describe ".new" do
9
-
10
- before do
11
- class TestFormatter
12
- def initialize(io)
13
- end
14
- end
15
- ENV['FORMAT'] = 'Konacha::Formatter,TestFormatter'
16
- end
17
-
18
- after do
19
- Object.send(:remove_const, :TestFormatter)
20
- ENV.delete('FORMAT')
21
- end
22
7
 
23
- it "initializes a reporter with formatters named by the FORMAT environment variable" do
24
- Konacha::Reporter.should_receive(:new).with(instance_of(Konacha::Formatter), instance_of(TestFormatter))
8
+ describe ".new" do
9
+ it 'creates a reporter with formatters returned by Konacha.formatters' do
10
+ Konacha.should_receive(:formatters) { :formatters }
11
+ Konacha::Reporter.should_receive(:new).with(:formatters)
25
12
  described_class.new
26
13
  end
27
14
 
@@ -43,6 +30,7 @@ describe Konacha::Runner do
43
30
  before do
44
31
  Konacha.configure do |config|
45
32
  config.driver = driver
33
+ config.formatters = [Konacha::Formatter.new(StringIO.new)]
46
34
  end
47
35
  end
48
36
 
@@ -101,6 +89,20 @@ describe Konacha::Runner do
101
89
  'error' => {'message' => 'this one errors out', 'name' => 'Error'}}}
102
90
  end
103
91
 
92
+ let(:error_async) do
93
+ {'event' => 'fail',
94
+ 'type' => 'test',
95
+ 'data' => {
96
+ 'title' => 'errors asynchronously',
97
+ 'fullTitle' => 'failure errors asynchronously',
98
+ 'parentFullTitle' => 'failure',
99
+ 'status' => 'failed',
100
+ 'path' => 'failing_spec.js',
101
+ # Accept anything for 'message' since async errors have URLs, which
102
+ # vary on every run, and line #, which may change in Chai releases.
103
+ 'error' => {'message' => anything(), 'name' => 'Error'}}}
104
+ end
105
+
104
106
  let(:pass) do
105
107
  {'event' => 'pass',
106
108
  'type' => 'test',
@@ -134,6 +136,7 @@ describe Konacha::Runner do
134
136
  subject.reporter.should_receive(:process_mocha_event).with(test)
135
137
  subject.reporter.should_receive(:process_mocha_event).with(failure)
136
138
  subject.reporter.should_receive(:process_mocha_event).with(error)
139
+ subject.reporter.should_receive(:process_mocha_event).with(error_async)
137
140
  subject.reporter.should_receive(:process_mocha_event).with(pass)
138
141
  subject.reporter.should_receive(:process_mocha_event).with(pending)
139
142
  subject.reporter.should_receive(:process_mocha_event).with(end_event)
@@ -21,6 +21,13 @@ Capybara.configure do |config|
21
21
  config.app = Konacha.application
22
22
  end
23
23
 
24
+ Capybara.register_driver :poltergeist do |app|
25
+ # Work around a bug in PhantomJS where `return true` from a
26
+ # window.onerror handler does not prevent an uncaught exception
27
+ # from being reported to Ruby.
28
+ Capybara::Poltergeist::Driver.new(app, :js_errors => false)
29
+ end
30
+
24
31
  module Konacha
25
32
  module FeatureSpec
26
33
  def app
@@ -1053,7 +1053,7 @@ var Suite = require('../suite')
1053
1053
  module.exports = function(suite){
1054
1054
  var suites = [suite];
1055
1055
 
1056
- suite.on('pre-require', function(context){
1056
+ suite.on('pre-require', function(context, file, mocha){
1057
1057
 
1058
1058
  /**
1059
1059
  * Execute before running tests.
@@ -1095,6 +1095,16 @@ module.exports = function(suite){
1095
1095
  if (suites.length > 1) suites.shift();
1096
1096
  var suite = Suite.create(suites[0], title);
1097
1097
  suites.unshift(suite);
1098
+ return suite;
1099
+ };
1100
+
1101
+ /**
1102
+ * Exclusive test-case.
1103
+ */
1104
+
1105
+ context.suite.only = function(title, fn){
1106
+ var suite = context.suite(title, fn);
1107
+ mocha.grep(suite.fullTitle());
1098
1108
  };
1099
1109
 
1100
1110
  /**
@@ -1104,7 +1114,26 @@ module.exports = function(suite){
1104
1114
  */
1105
1115
 
1106
1116
  context.test = function(title, fn){
1107
- suites[0].addTest(new Test(title, fn));
1117
+ var test = new Test(title, fn);
1118
+ suites[0].addTest(test);
1119
+ return test;
1120
+ };
1121
+
1122
+ /**
1123
+ * Exclusive test-case.
1124
+ */
1125
+
1126
+ context.test.only = function(title, fn){
1127
+ var test = context.test(title, fn);
1128
+ mocha.grep(test.fullTitle());
1129
+ };
1130
+
1131
+ /**
1132
+ * Pending test case.
1133
+ */
1134
+
1135
+ context.test.skip = function(title){
1136
+ context.test(title);
1108
1137
  };
1109
1138
  });
1110
1139
  };
@@ -1815,10 +1844,7 @@ exports.list = function(failures){
1815
1844
 
1816
1845
  // actual / expected diff
1817
1846
  if ('string' == typeof actual && 'string' == typeof expected) {
1818
- var len = Math.max(actual.length, expected.length);
1819
-
1820
- if (len < 20) msg = errorDiff(err, 'Chars', escape);
1821
- else msg = errorDiff(err, 'Words', escape);
1847
+ msg = errorDiff(err, 'Words', escape);
1822
1848
 
1823
1849
  // linenos
1824
1850
  var lines = msg.split('\n');
@@ -4583,6 +4609,8 @@ Runner.prototype.run = function(fn){
4583
4609
 
4584
4610
  function filterLeaks(ok, globals) {
4585
4611
  return filter(globals, function(key){
4612
+ // Firefox and Chrome exposes iframes as index inside the window object
4613
+ if (/^d+/.test(key)) return false;
4586
4614
  var matched = filter(ok, function(ok){
4587
4615
  if (~ok.indexOf('*')) return 0 == key.indexOf(ok.split('*')[0]);
4588
4616
  // Opera and IE expose global variables for HTML element IDs (issue #243)
@@ -5224,6 +5252,17 @@ exports.highlightTags = function(name) {
5224
5252
  };
5225
5253
 
5226
5254
  }); // module: utils.js
5255
+
5256
+ /**
5257
+ * Save timer references to avoid Sinon interfering (see GH-237).
5258
+ */
5259
+
5260
+ var Date = window.Date;
5261
+ var setTimeout = window.setTimeout;
5262
+ var setInterval = window.setInterval;
5263
+ var clearTimeout = window.clearTimeout;
5264
+ var clearInterval = window.clearInterval;
5265
+
5227
5266
  /**
5228
5267
  * Node shims.
5229
5268
  *
@@ -5233,7 +5272,7 @@ exports.highlightTags = function(name) {
5233
5272
  * the browser.
5234
5273
  */
5235
5274
 
5236
- process = {};
5275
+ var process = {};
5237
5276
  process.exit = function(status){};
5238
5277
  process.stdout = {};
5239
5278
  global = window;
@@ -5260,79 +5299,75 @@ process.on = function(e, fn){
5260
5299
  }
5261
5300
  };
5262
5301
 
5263
- // boot
5264
- ;(function(){
5265
-
5266
- /**
5267
- * Expose mocha.
5268
- */
5302
+ /**
5303
+ * Expose mocha.
5304
+ */
5269
5305
 
5270
- var Mocha = window.Mocha = require('mocha'),
5271
- mocha = window.mocha = new Mocha({ reporter: 'html' });
5306
+ var Mocha = window.Mocha = require('mocha'),
5307
+ mocha = window.mocha = new Mocha({ reporter: 'html' });
5272
5308
 
5273
- var immediateQueue = []
5274
- , immediateTimeout;
5309
+ var immediateQueue = []
5310
+ , immediateTimeout;
5275
5311
 
5276
- function timeslice() {
5277
- var immediateStart = new Date().getTime();
5278
- while (immediateQueue.length && (new Date().getTime() - immediateStart) < 100) {
5279
- immediateQueue.shift()();
5280
- }
5281
- if (immediateQueue.length) {
5282
- immediateTimeout = setTimeout(timeslice, 0);
5283
- } else {
5284
- immediateTimeout = null;
5285
- }
5312
+ function timeslice() {
5313
+ var immediateStart = new Date().getTime();
5314
+ while (immediateQueue.length && (new Date().getTime() - immediateStart) < 100) {
5315
+ immediateQueue.shift()();
5316
+ }
5317
+ if (immediateQueue.length) {
5318
+ immediateTimeout = setTimeout(timeslice, 0);
5319
+ } else {
5320
+ immediateTimeout = null;
5286
5321
  }
5322
+ }
5287
5323
 
5288
- /**
5289
- * High-performance override of Runner.immediately.
5290
- */
5324
+ /**
5325
+ * High-performance override of Runner.immediately.
5326
+ */
5291
5327
 
5292
- Mocha.Runner.immediately = function(callback) {
5293
- immediateQueue.push(callback);
5294
- if (!immediateTimeout) {
5295
- immediateTimeout = setTimeout(timeslice, 0);
5296
- }
5297
- };
5328
+ Mocha.Runner.immediately = function(callback) {
5329
+ immediateQueue.push(callback);
5330
+ if (!immediateTimeout) {
5331
+ immediateTimeout = setTimeout(timeslice, 0);
5332
+ }
5333
+ };
5298
5334
 
5299
- /**
5300
- * Override ui to ensure that the ui functions are initialized.
5301
- * Normally this would happen in Mocha.prototype.loadFiles.
5302
- */
5335
+ /**
5336
+ * Override ui to ensure that the ui functions are initialized.
5337
+ * Normally this would happen in Mocha.prototype.loadFiles.
5338
+ */
5303
5339
 
5304
- mocha.ui = function(ui){
5305
- Mocha.prototype.ui.call(this, ui);
5306
- this.suite.emit('pre-require', window, null, this);
5307
- return this;
5308
- };
5340
+ mocha.ui = function(ui){
5341
+ Mocha.prototype.ui.call(this, ui);
5342
+ this.suite.emit('pre-require', window, null, this);
5343
+ return this;
5344
+ };
5309
5345
 
5310
- /**
5311
- * Setup mocha with the given setting options.
5312
- */
5346
+ /**
5347
+ * Setup mocha with the given setting options.
5348
+ */
5313
5349
 
5314
- mocha.setup = function(opts){
5315
- if ('string' == typeof opts) opts = { ui: opts };
5316
- for (var opt in opts) this[opt](opts[opt]);
5317
- return this;
5318
- };
5350
+ mocha.setup = function(opts){
5351
+ if ('string' == typeof opts) opts = { ui: opts };
5352
+ for (var opt in opts) this[opt](opts[opt]);
5353
+ return this;
5354
+ };
5319
5355
 
5320
- /**
5321
- * Run mocha, returning the Runner.
5322
- */
5356
+ /**
5357
+ * Run mocha, returning the Runner.
5358
+ */
5323
5359
 
5324
- mocha.run = function(fn){
5325
- var options = mocha.options;
5326
- mocha.globals('location');
5360
+ mocha.run = function(fn){
5361
+ var options = mocha.options;
5362
+ mocha.globals('location');
5327
5363
 
5328
- var query = Mocha.utils.parseQuery(window.location.search || '');
5329
- if (query.grep) mocha.grep(query.grep);
5330
- if (query.invert) mocha.invert();
5364
+ var query = Mocha.utils.parseQuery(window.location.search || '');
5365
+ if (query.grep) mocha.grep(query.grep);
5366
+ if (query.invert) mocha.invert();
5331
5367
 
5332
- return Mocha.prototype.run.call(mocha, function(){
5333
- Mocha.utils.highlightTags('code');
5334
- if (fn) fn();
5335
- });
5336
- };
5337
- })();
5368
+ return Mocha.prototype.run.call(mocha, function(){
5369
+ Mocha.utils.highlightTags('code');
5370
+ if (fn) fn();
5371
+ });
5372
+ };
5338
5373
  })();
@@ -1,8 +1,12 @@
1
1
  @charset "utf-8";
2
2
 
3
3
  body {
4
+ margin:0;
5
+ }
6
+
7
+ #mocha {
4
8
  font: 20px/1.5 "Helvetica Neue", Helvetica, Arial, sans-serif;
5
- padding: 60px 50px;
9
+ margin: 60px 50px;
6
10
  }
7
11
 
8
12
  #mocha ul, #mocha li {
@@ -38,7 +42,7 @@ body {
38
42
  font-size: .8em;
39
43
  }
40
44
 
41
- .hidden {
45
+ #mocha .hidden {
42
46
  display: none;
43
47
  }
44
48
 
@@ -59,7 +63,7 @@ body {
59
63
 
60
64
  #mocha .test.pending:hover h2::after {
61
65
  content: '(pending)';
62
- font-family: arial;
66
+ font-family: arial, sans-serif;
63
67
  }
64
68
 
65
69
  #mocha .test.pass.medium .duration {
@@ -185,7 +189,7 @@ body {
185
189
 
186
190
  #mocha-error {
187
191
  color: #c00;
188
- font-size: 1.5 em;
192
+ font-size: 1.5em;
189
193
  font-weight: 100;
190
194
  letter-spacing: 1px;
191
195
  }
@@ -229,18 +233,18 @@ body {
229
233
  height: 40px;
230
234
  }
231
235
 
232
- code .comment { color: #ddd }
233
- code .init { color: #2F6FAD }
234
- code .string { color: #5890AD }
235
- code .keyword { color: #8A6343 }
236
- code .number { color: #2F6FAD }
236
+ #mocha code .comment { color: #ddd }
237
+ #mocha code .init { color: #2F6FAD }
238
+ #mocha code .string { color: #5890AD }
239
+ #mocha code .keyword { color: #8A6343 }
240
+ #mocha code .number { color: #2F6FAD }
237
241
 
238
242
  @media screen and (max-device-width: 480px) {
239
- body {
240
- padding: 60px 0px;
243
+ #mocha {
244
+ margin: 60px 0px;
241
245
  }
242
246
 
243
- #stats {
247
+ #mocha #stats {
244
248
  position: absolute;
245
249
  }
246
250
  }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: konacha
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.0
4
+ version: 3.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-06 00:00:00.000000000 Z
12
+ date: 2013-05-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: railties
@@ -199,6 +199,22 @@ dependencies:
199
199
  - - ! '>='
200
200
  - !ruby/object:Gem::Version
201
201
  version: '0'
202
+ - !ruby/object:Gem::Dependency
203
+ name: selenium-webdriver
204
+ requirement: !ruby/object:Gem::Requirement
205
+ none: false
206
+ requirements:
207
+ - - ! '>='
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
210
+ type: :development
211
+ prerelease: false
212
+ version_requirements: !ruby/object:Gem::Requirement
213
+ none: false
214
+ requirements:
215
+ - - ! '>='
216
+ - !ruby/object:Gem::Version
217
+ version: '0'
202
218
  - !ruby/object:Gem::Dependency
203
219
  name: poltergeist
204
220
  requirement: !ruby/object:Gem::Requirement
@@ -206,7 +222,7 @@ dependencies:
206
222
  requirements:
207
223
  - - ~>
208
224
  - !ruby/object:Gem::Version
209
- version: 1.0.2
225
+ version: 1.3.0
210
226
  type: :development
211
227
  prerelease: false
212
228
  version_requirements: !ruby/object:Gem::Requirement
@@ -214,7 +230,7 @@ dependencies:
214
230
  requirements:
215
231
  - - ~>
216
232
  - !ruby/object:Gem::Version
217
- version: 1.0.2
233
+ version: 1.3.0
218
234
  description: ! 'Konacha is a Rails engine that allows you to test your JavaScript
219
235
  with the
220
236
 
@@ -297,6 +313,7 @@ files:
297
313
  - spec/dummy/spec/javascripts/templates/hello.jst.ejs
298
314
  - spec/dummy/spec/javascripts/templating_spec.js
299
315
  - spec/dummy/spec/javascripts/ui_spec.js
316
+ - spec/engine_spec.rb
300
317
  - spec/error_handling_spec.rb
301
318
  - spec/formatter_spec.rb
302
319
  - spec/konacha_spec.rb
@@ -326,18 +343,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
326
343
  - - ! '>='
327
344
  - !ruby/object:Gem::Version
328
345
  version: '0'
329
- segments:
330
- - 0
331
- hash: 3177740356204652019
332
346
  required_rubygems_version: !ruby/object:Gem::Requirement
333
347
  none: false
334
348
  requirements:
335
349
  - - ! '>='
336
350
  - !ruby/object:Gem::Version
337
351
  version: '0'
338
- segments:
339
- - 0
340
- hash: 3177740356204652019
341
352
  requirements: []
342
353
  rubyforge_project:
343
354
  rubygems_version: 1.8.23
@@ -377,6 +388,7 @@ test_files:
377
388
  - spec/dummy/spec/javascripts/templates/hello.jst.ejs
378
389
  - spec/dummy/spec/javascripts/templating_spec.js
379
390
  - spec/dummy/spec/javascripts/ui_spec.js
391
+ - spec/engine_spec.rb
380
392
  - spec/error_handling_spec.rb
381
393
  - spec/formatter_spec.rb
382
394
  - spec/konacha_spec.rb