jasmine-headless-webkit 0.2.1 → 0.2.2

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.
data/Gemfile CHANGED
@@ -4,5 +4,9 @@ source "http://rubygems.org"
4
4
  gemspec
5
5
 
6
6
  gem 'rspec'
7
- gem 'autotest'
8
7
  gem 'fakefs', :require => nil
8
+ gem 'guard'
9
+ gem 'guard-rspec'
10
+ gem 'guard-shell'
11
+ gem 'growl'
12
+ gem 'rake', '0.8.7'
data/Guardfile ADDED
@@ -0,0 +1,23 @@
1
+
2
+ # Add files and commands to this file, like the example:
3
+ # watch('file/path') { `command(s)` }
4
+ #
5
+
6
+ guard 'shell' do
7
+ watch(%r{ext/jasmine-webkit-specrunner/specrunner.cpp}) { compile }
8
+ end
9
+ # A sample Guardfile
10
+ # More info at https://github.com/guard/guard#readme
11
+
12
+ guard 'rspec', :version => 2 do
13
+ watch(%r{^spec/.+_spec\.rb})
14
+ watch(%r{^lib/(.+)\.rb}) { |m| "spec/lib/#{m[1]}_spec.rb" }
15
+ watch(%r{^bin/(.+)}) { |m| "spec/bin/#{m[1]}_spec.rb" }
16
+ watch('spec/spec_helper.rb') { "spec" }
17
+ end
18
+
19
+ def compile
20
+ system %{cd ext/jasmine-webkit-specrunner && ruby extconf.rb}
21
+ end
22
+
23
+ compile
@@ -2,7 +2,10 @@
2
2
 
3
3
  require 'rubygems'
4
4
 
5
- gem_dir = File.expand_path('../..', __FILE__)
5
+ def gem_dir
6
+ File.expand_path('../..', __FILE__)
7
+ end
8
+
6
9
  $:.unshift(File.join(gem_dir, 'lib'))
7
10
 
8
11
  require 'yaml'
@@ -25,13 +28,15 @@ opts = GetoptLong.new(
25
28
  [ '--colors', '-c', GetoptLong::NO_ARGUMENT ],
26
29
  [ '--no-colors', GetoptLong::NO_ARGUMENT ],
27
30
  [ '--keep', GetoptLong::NO_ARGUMENT ],
31
+ [ '--report', GetoptLong::REQUIRED_ARGUMENT ],
28
32
  [ '--jasmine-config', '-j', GetoptLong::REQUIRED_ARGUMENT ]
29
33
  )
30
34
 
31
35
  options = {
32
36
  :colors => false,
33
37
  :remove_html_file => true,
34
- :jasmine_config => 'spec/javascripts/support/jasmine.yml'
38
+ :jasmine_config => 'spec/javascripts/support/jasmine.yml',
39
+ :report => false
35
40
  }
36
41
 
37
42
  @process_options = lambda { |*args|
@@ -42,8 +47,10 @@ options = {
42
47
  options[:colors] = true
43
48
  when '--no-colors', '-nc'
44
49
  options[:colors] = false
45
- when '--keep', '-k'
50
+ when '--keep'
46
51
  options[:remove_html_file] = false
52
+ when '--report'
53
+ options[:report] = arg
47
54
  when '--jasmine-config', '-j'
48
55
  options[:jasmine_config] = arg
49
56
  end
@@ -97,7 +104,7 @@ files = files.collect { |file|
97
104
  output = jasmine_html_template(files)
98
105
 
99
106
  File.open(target = "specrunner.#{$$}.html", 'w') { |fh| fh.print output }
100
- system %{#{File.join(gem_dir, RUNNER)} #{options[:colors] ? '-c' : ''} #{target}}
107
+ system jasmine_command(options, target)
101
108
  status = $?.exitstatus
102
109
  FileUtils.rm_f target if options[:remove_html_file] || (status == 0)
103
110
 
@@ -23,6 +23,8 @@
23
23
 
24
24
  #include <QtGui>
25
25
  #include <QtWebKit>
26
+ #include <QFile>
27
+ #include <QTextStream>
26
28
  #include <iostream>
27
29
 
28
30
  #if QT_VERSION < QT_VERSION_CHECK(4, 7, 0)
@@ -64,6 +66,7 @@ public:
64
66
  HeadlessSpecRunner();
65
67
  void load(const QString &spec);
66
68
  void setColors(bool colors);
69
+ void reportFile(const QString &file);
67
70
  public slots:
68
71
  void log(const QString &msg);
69
72
  void specPassed();
@@ -88,6 +91,7 @@ private:
88
91
  bool isFinished;
89
92
  bool didFail;
90
93
  bool consoleNotUsedThisRun;
94
+ QString reportFilename;
91
95
 
92
96
  void red();
93
97
  void green();
@@ -142,6 +146,11 @@ void HeadlessSpecRunner::setColors(bool colors)
142
146
  showColors = colors;
143
147
  }
144
148
 
149
+ void HeadlessSpecRunner::reportFile(const QString &file)
150
+ {
151
+ reportFilename = file;
152
+ }
153
+
145
154
  void HeadlessSpecRunner::red()
146
155
  {
147
156
  if (showColors) std::cout << "\033[0;31m";
@@ -246,6 +255,18 @@ void HeadlessSpecRunner::finishSuite(const QString &duration, const QString &tot
246
255
  clear();
247
256
  std::cout << std::endl;
248
257
 
258
+ if (!reportFilename.isEmpty()) {
259
+ QFile reportFH(reportFilename);
260
+
261
+ if (reportFH.open(QFile::WriteOnly)) {
262
+ QTextStream report(&reportFH);
263
+ report << qPrintable(total) << "/" << qPrintable(failed) << "/";
264
+ report << (usedConsole ? "T" : "F");
265
+ report << "/" << qPrintable(duration) << "\n";
266
+ reportFH.close();
267
+ }
268
+ }
269
+
249
270
  isFinished = true;
250
271
  }
251
272
 
@@ -284,16 +305,20 @@ void HeadlessSpecRunner::timerEvent(QTimerEvent *event)
284
305
 
285
306
  int main(int argc, char** argv)
286
307
  {
287
- bool showColors = false;
288
308
  char *filename = NULL;
309
+ char *reporter = NULL;
310
+ char showColors = false;
289
311
 
290
312
  int c, index;
291
313
 
292
- while ((c = getopt(argc, argv, "c")) != -1) {
314
+ while ((c = getopt(argc, argv, "cr:")) != -1) {
293
315
  switch(c) {
294
316
  case 'c':
295
317
  showColors = true;
296
318
  break;
319
+ case 'r':
320
+ reporter = optarg;
321
+ break;
297
322
  }
298
323
  }
299
324
 
@@ -311,10 +336,11 @@ int main(int argc, char** argv)
311
336
  }
312
337
 
313
338
  QApplication app(argc, argv);
314
-
315
339
  HeadlessSpecRunner runner;
316
- runner.setColors(showColors);
340
+ runner.setColors(true);
341
+ runner.reportFile(reporter);
317
342
  runner.load(QString::fromLocal8Bit(filename));
318
343
  return app.exec();
319
344
  }
320
345
 
346
+
data/lib/jasmine/cli.rb CHANGED
@@ -52,6 +52,19 @@ module Jasmine
52
52
  HTML
53
53
  end
54
54
 
55
+ def runner_path
56
+ @runner_path ||= File.join(gem_dir, RUNNER)
57
+ end
58
+
59
+ def jasmine_command(options, target)
60
+ [
61
+ runner_path,
62
+ options[:colors] ? '-c' : nil,
63
+ options[:report] ? "-r #{options[:report]}" : nil,
64
+ target
65
+ ].join(" ")
66
+ end
67
+
55
68
  private
56
69
  def read_config_file(file)
57
70
 
@@ -1,7 +1,7 @@
1
1
  module Jasmine
2
2
  module Headless
3
3
  module Webkit
4
- VERSION = "0.2.1"
4
+ VERSION = "0.2.2"
5
5
  end
6
6
  end
7
7
  end
@@ -1,24 +1,52 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe "jasmine-headless-webkit" do
4
+ let(:report) { 'spec/report.txt' }
5
+
6
+ before do
7
+ FileUtils.rm_f report
8
+ end
9
+
10
+ after do
11
+ FileUtils.rm_f report
12
+ end
13
+
4
14
  describe 'success' do
5
15
  it "should succeed with error code 0" do
6
- %x{bin/jasmine-headless-webkit -j spec/jasmine/success/success.yml}
16
+ system %{bin/jasmine-headless-webkit -j spec/jasmine/success/success.yml --report #{report}}
7
17
  $?.exitstatus.should == 0
18
+
19
+ parts = File.read(report).strip.split('/')
20
+ parts.length.should == 4
21
+ parts[0].should == "1"
22
+ parts[1].should == "0"
23
+ parts[2].should == "F"
8
24
  end
9
25
  end
10
26
 
11
27
  describe 'failure' do
12
28
  it "should fail with an error code of 1" do
13
- %x{bin/jasmine-headless-webkit -j spec/jasmine/failure/failure.yml}
29
+ system %{bin/jasmine-headless-webkit -j spec/jasmine/failure/failure.yml --report #{report}}
14
30
  $?.exitstatus.should == 1
31
+
32
+ parts = File.read(report).strip.split('/')
33
+ parts.length.should == 4
34
+ parts[0].should == "1"
35
+ parts[1].should == "1"
36
+ parts[2].should == "F"
15
37
  end
16
38
  end
17
39
 
18
40
  describe 'with console.log' do
19
41
  it "should succeed, but has a console.log so an error code of 2" do
20
- %x{bin/jasmine-headless-webkit -j spec/jasmine/console_log/console_log.yml}
42
+ system %{bin/jasmine-headless-webkit -j spec/jasmine/console_log/console_log.yml --report #{report}}
21
43
  $?.exitstatus.should == 2
44
+
45
+ parts = File.read(report).strip.split('/')
46
+ parts.length.should == 4
47
+ parts[0].should == "1"
48
+ parts[1].should == "0"
49
+ parts[2].should == "T"
22
50
  end
23
51
  end
24
52
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: jasmine-headless-webkit
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.2.1
5
+ version: 0.2.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - John Bintz
@@ -12,12 +12,11 @@ autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
14
 
15
- date: 2011-05-19 00:00:00 -04:00
15
+ date: 2011-05-29 00:00:00 -04:00
16
16
  default_executable:
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: jasmine
20
- prerelease: false
21
20
  requirement: &id001 !ruby/object:Gem::Requirement
22
21
  none: false
23
22
  requirements:
@@ -25,10 +24,10 @@ dependencies:
25
24
  - !ruby/object:Gem::Version
26
25
  version: "0"
27
26
  type: :runtime
27
+ prerelease: false
28
28
  version_requirements: *id001
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: coffee-script
31
- prerelease: false
32
31
  requirement: &id002 !ruby/object:Gem::Requirement
33
32
  none: false
34
33
  requirements:
@@ -36,10 +35,10 @@ dependencies:
36
35
  - !ruby/object:Gem::Version
37
36
  version: "0"
38
37
  type: :runtime
38
+ prerelease: false
39
39
  version_requirements: *id002
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: rainbow
42
- prerelease: false
43
42
  requirement: &id003 !ruby/object:Gem::Requirement
44
43
  none: false
45
44
  requirements:
@@ -47,6 +46,7 @@ dependencies:
47
46
  - !ruby/object:Gem::Version
48
47
  version: "0"
49
48
  type: :runtime
49
+ prerelease: false
50
50
  version_requirements: *id003
51
51
  description: Run Jasmine specs headlessly
52
52
  email:
@@ -63,6 +63,7 @@ files:
63
63
  - .rspec
64
64
  - CHANGELOG.md
65
65
  - Gemfile
66
+ - Guardfile
66
67
  - README.md
67
68
  - Rakefile
68
69
  - bin/jasmine-headless-webkit
@@ -109,12 +110,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
109
110
  requirements:
110
111
  - - ">="
111
112
  - !ruby/object:Gem::Version
113
+ hash: -221398851887146257
114
+ segments:
115
+ - 0
112
116
  version: "0"
113
117
  required_rubygems_version: !ruby/object:Gem::Requirement
114
118
  none: false
115
119
  requirements:
116
120
  - - ">="
117
121
  - !ruby/object:Gem::Version
122
+ hash: -221398851887146257
123
+ segments:
124
+ - 0
118
125
  version: "0"
119
126
  requirements: []
120
127