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 +5 -1
- data/Guardfile +23 -0
- data/bin/jasmine-headless-webkit +11 -4
- data/ext/jasmine-webkit-specrunner/specrunner.cpp +30 -4
- data/lib/jasmine/cli.rb +13 -0
- data/lib/jasmine-headless-webkit/version.rb +1 -1
- data/spec/bin/jasmine-headless-webkit_spec.rb +31 -3
- metadata +12 -5
    
        data/Gemfile
    CHANGED
    
    
    
        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
         | 
    
        data/bin/jasmine-headless-webkit
    CHANGED
    
    | @@ -2,7 +2,10 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            require 'rubygems'
         | 
| 4 4 |  | 
| 5 | 
            -
            gem_dir | 
| 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' | 
| 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  | 
| 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, " | 
| 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( | 
| 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,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 | 
            -
                  % | 
| 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 | 
            -
                  % | 
| 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 | 
            -
                  % | 
| 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. | 
| 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- | 
| 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 |  |