visionmedia-jspec 2.10.0 → 2.11.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.
- data/History.rdoc +10 -0
- data/Manifest +7 -6
- data/README.rdoc +34 -0
- data/bin/jspec +72 -9
- data/jspec.gemspec +4 -4
- data/lib/jspec.js +3 -3
- data/lib/jspec.shell.js +36 -0
- data/spec/{modules.js → helpers.js} +29 -5
- data/spec/spec.dom.html +2 -2
- data/spec/spec.jquery.js +4 -1
- data/spec/spec.js +89 -50
- data/spec/spec.rhino.js +1 -1
- data/spec/spec.server.html +1 -1
- data/spec/spec.utils.js +4 -1
- metadata +11 -9
    
        data/History.rdoc
    CHANGED
    
    | @@ -1,4 +1,14 @@ | |
| 1 1 |  | 
| 2 | 
            +
            === 2.11.0 / 2009-09-04
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            * Added --symlink switch (links the current version of JSpec to ./spec/lib) [#4]
         | 
| 5 | 
            +
            * Added --freeze switch (copies the current version of JSpec to ./spec/lib) [#4]
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            === 2.10.1 / 2009-09-02
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            * Added `jspec shell` sub command (interactive Rhino shell through JSpec)
         | 
| 10 | 
            +
            * Added jspec.shell.js
         | 
| 11 | 
            +
             | 
| 2 12 | 
             
            === 2.10.0 / 2009-08-27
         | 
| 3 13 |  | 
| 4 14 | 
             
            * Added Async support via mock timers (lib/jspec.timers.js) [#19]
         | 
    
        data/Manifest
    CHANGED
    
    | @@ -1,5 +1,8 @@ | |
| 1 | 
            -
            bin/jspec
         | 
| 2 1 | 
             
            History.rdoc
         | 
| 2 | 
            +
            Manifest
         | 
| 3 | 
            +
            README.rdoc
         | 
| 4 | 
            +
            Rakefile
         | 
| 5 | 
            +
            bin/jspec
         | 
| 3 6 | 
             
            jspec.gemspec
         | 
| 4 7 | 
             
            lib/images/bg.png
         | 
| 5 8 | 
             
            lib/images/hr.png
         | 
| @@ -10,11 +13,9 @@ lib/images/vr.png | |
| 10 13 | 
             
            lib/jspec.css
         | 
| 11 14 | 
             
            lib/jspec.jquery.js
         | 
| 12 15 | 
             
            lib/jspec.js
         | 
| 16 | 
            +
            lib/jspec.shell.js
         | 
| 13 17 | 
             
            lib/jspec.timers.js
         | 
| 14 18 | 
             
            lib/jspec.xhr.js
         | 
| 15 | 
            -
            Manifest
         | 
| 16 | 
            -
            Rakefile
         | 
| 17 | 
            -
            README.rdoc
         | 
| 18 19 | 
             
            server/browsers.rb
         | 
| 19 20 | 
             
            server/helpers.rb
         | 
| 20 21 | 
             
            server/routes.rb
         | 
| @@ -24,7 +25,7 @@ spec/env.js | |
| 24 25 | 
             
            spec/fixtures/test.html
         | 
| 25 26 | 
             
            spec/fixtures/test.json
         | 
| 26 27 | 
             
            spec/fixtures/test.xml
         | 
| 27 | 
            -
            spec/ | 
| 28 | 
            +
            spec/helpers.js
         | 
| 28 29 | 
             
            spec/server.rb
         | 
| 29 30 | 
             
            spec/spec.dom.html
         | 
| 30 31 | 
             
            spec/spec.fixtures.js
         | 
| @@ -42,8 +43,8 @@ spec/spec.shared-behaviors.js | |
| 42 43 | 
             
            spec/spec.utils.js
         | 
| 43 44 | 
             
            spec/spec.xhr.js
         | 
| 44 45 | 
             
            templates/default/History.rdoc
         | 
| 45 | 
            -
            templates/default/lib/yourlib.core.js
         | 
| 46 46 | 
             
            templates/default/README.rdoc
         | 
| 47 | 
            +
            templates/default/lib/yourlib.core.js
         | 
| 47 48 | 
             
            templates/default/spec/server.rb
         | 
| 48 49 | 
             
            templates/default/spec/spec.core.js
         | 
| 49 50 | 
             
            templates/default/spec/spec.dom.html
         | 
    
        data/README.rdoc
    CHANGED
    
    | @@ -33,6 +33,7 @@ and much more. | |
| 33 33 | 
             
            * Method Stubbing
         | 
| 34 34 | 
             
            * Shared behaviors
         | 
| 35 35 | 
             
            * Profiling
         | 
| 36 | 
            +
            * Interactive Shell
         | 
| 36 37 | 
             
            * Ruby on Rails Integration
         | 
| 37 38 | 
             
            * Tiny (15 kb compressed, 1300-ish LOC)
         | 
| 38 39 |  | 
| @@ -49,6 +50,13 @@ provides the `jspec` executable. To install execute: | |
| 49 50 | 
             
            At which point you may:
         | 
| 50 51 | 
             
              $ jspec init myproject
         | 
| 51 52 |  | 
| 53 | 
            +
            By default, the command above will use absolute path for all JSpec library files.
         | 
| 54 | 
            +
            This behavior can be a problem when you're working across different computers or
         | 
| 55 | 
            +
            operating systems. You can freeze the library or symlink it.
         | 
| 56 | 
            +
             | 
| 57 | 
            +
              $ jspec init myproject --freeze
         | 
| 58 | 
            +
              $ jspec init myproject --symlink
         | 
| 59 | 
            +
             | 
| 52 60 | 
             
            JSpec scripts should NOT be referenced via the <script> tag, they should be
         | 
| 53 61 | 
             
            loaded using the exec method (unless you are using the grammar-less alternative).
         | 
| 54 62 | 
             
            Below is an example:
         | 
| @@ -700,6 +708,20 @@ to reply, where as $.get('/status/404', function(){}) will respond | |
| 700 708 | 
             
            with an 404 status code. Add additional Sinatra routes to the jspec.rb
         | 
| 701 709 | 
             
            file to add your own functionality.
         | 
| 702 710 |  | 
| 711 | 
            +
            == Interactive Shell
         | 
| 712 | 
            +
             | 
| 713 | 
            +
            JSpec provides an interactive shell through Rhino, utilize with:
         | 
| 714 | 
            +
             | 
| 715 | 
            +
            $ jspec shell
         | 
| 716 | 
            +
             | 
| 717 | 
            +
            Or to specify additional files to load:
         | 
| 718 | 
            +
             | 
| 719 | 
            +
            $ jspec shell lib/*.js
         | 
| 720 | 
            +
             | 
| 721 | 
            +
            Or view additional shell help
         | 
| 722 | 
            +
             | 
| 723 | 
            +
            $ jspec help shell
         | 
| 724 | 
            +
             | 
| 703 725 | 
             
            == Ruby on Rails
         | 
| 704 726 |  | 
| 705 727 | 
             
            No additional gems are required for JSpec to work with rails, although 
         | 
| @@ -722,6 +744,17 @@ Or run via the terminal using Rhino: | |
| 722 744 |  | 
| 723 745 | 
             
              $ jspec run --rhino
         | 
| 724 746 |  | 
| 747 | 
            +
            == Support Browsers
         | 
| 748 | 
            +
             | 
| 749 | 
            +
            Browsers below are supported and can be found in server/browsers.rb, however
         | 
| 750 | 
            +
            your spec/server.rb file may support additional browsers.
         | 
| 751 | 
            +
             | 
| 752 | 
            +
            * Safari
         | 
| 753 | 
            +
            * Chrome
         | 
| 754 | 
            +
            * Firefox
         | 
| 755 | 
            +
            * Opera
         | 
| 756 | 
            +
            * Internet Explorer
         | 
| 757 | 
            +
              
         | 
| 725 758 | 
             
            == Known Issues
         | 
| 726 759 |  | 
| 727 760 | 
             
            * Tabs may cause a parse error. To prevent this use 'soft tabs' (setting in your IDE/Editor)
         | 
| @@ -762,6 +795,7 @@ JSpec more enjoyable, and bug free ;) | |
| 762 795 | 
             
            * mpd@jesters-court.ne
         | 
| 763 796 | 
             
            * kevin.gisi@gmail.com
         | 
| 764 797 | 
             
            * enno84@gmx.net
         | 
| 798 | 
            +
            * fnando
         | 
| 765 799 |  | 
| 766 800 | 
             
            == License 
         | 
| 767 801 |  | 
    
        data/bin/jspec
    CHANGED
    
    | @@ -12,7 +12,7 @@ require 'server/server' | |
| 12 12 | 
             
            RHINO = 'java org.mozilla.javascript.tools.shell.Main'
         | 
| 13 13 |  | 
| 14 14 | 
             
            program :name, 'JSpec'
         | 
| 15 | 
            -
            program :version, '2. | 
| 15 | 
            +
            program :version, '2.11.0'
         | 
| 16 16 | 
             
            program :description, 'JavaScript BDD Testing Framework'
         | 
| 17 17 | 
             
            default_command :bind
         | 
| 18 18 |  | 
| @@ -21,17 +21,47 @@ command :init do |c| | |
| 21 21 | 
             
              c.summary = 'Initialize a JSpec project template'
         | 
| 22 22 | 
             
              c.description = 'Initialize a JSpec project template. Defaults to the current directory
         | 
| 23 23 | 
             
                when [dest] is not specified. The template includes several files for 
         | 
| 24 | 
            -
                running via Rhino, DOM, and the JSpec Rack server. | 
| 24 | 
            +
                running via Rhino, DOM, and the JSpec Rack server.
         | 
| 25 | 
            +
                
         | 
| 26 | 
            +
                Additional switches --freeze, and --symlink are available in order
         | 
| 27 | 
            +
                to preserve the version of JSpec at the time of initialization. Otherwise
         | 
| 28 | 
            +
                incompatibilities from later versions may prevent your suite from
         | 
| 29 | 
            +
                running properly.'
         | 
| 30 | 
            +
              c.option '-R', '--rails', 'Initialize rails template from rails root directory'
         | 
| 31 | 
            +
              c.option '-f', '--freeze', 'Copy the JSpec library'
         | 
| 32 | 
            +
              c.option '-s', '--symlink', 'Symlink the JSpec library instead of copying it'
         | 
| 25 33 | 
             
              c.example 'Create a directory foo, initialized with a jspec template', 'jspec init foo'
         | 
| 26 | 
            -
              c.option '-R', '--rails', 'Initialize rails template'
         | 
| 27 34 | 
             
              c.when_called do |args, options|
         | 
| 28 35 | 
             
                dest = args.shift || '.'
         | 
| 29 36 | 
             
                if options.rails
         | 
| 30 | 
            -
                  initialize_rails_at dest
         | 
| 37 | 
            +
                  initialize_rails_at dest, options
         | 
| 31 38 | 
             
                else
         | 
| 32 | 
            -
                  initialize_at dest
         | 
| 39 | 
            +
                  initialize_at dest, options
         | 
| 40 | 
            +
                end
         | 
| 41 | 
            +
                say "Template initialized at `#{dest}'"
         | 
| 42 | 
            +
              end
         | 
| 43 | 
            +
            end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
            command :shell do |c|
         | 
| 46 | 
            +
              c.syntax = 'jspec shell [path ...]'
         | 
| 47 | 
            +
              c.summary = 'JSpec interactive shell'
         | 
| 48 | 
            +
              c.description = 'Launch interactive shell with jspec.js, jspec.shell.js, 
         | 
| 49 | 
            +
                and any [path]s given. Simply type "quit" or "exit" to 
         | 
| 50 | 
            +
                terminate the shell.'
         | 
| 51 | 
            +
              c.example 'Run shell', 'jspec shell'
         | 
| 52 | 
            +
              c.example 'Run shell with glob of files', 'jspec shell lib/*.js'
         | 
| 53 | 
            +
              c.example 'Run shell with list of files', 'jspec shell lib/foo.js lib/bar.js'
         | 
| 54 | 
            +
              c.when_called do |args, options|
         | 
| 55 | 
            +
                paths = ['jspec.js', 'jspec.shell.js'] | args
         | 
| 56 | 
            +
                paths.map! do |path|
         | 
| 57 | 
            +
                  if path.include? 'jspec'
         | 
| 58 | 
            +
                    "-f #{JSPEC_ROOT}/lib/#{path}"
         | 
| 59 | 
            +
                  else
         | 
| 60 | 
            +
                    "-f #{path}"
         | 
| 61 | 
            +
                  end
         | 
| 33 62 | 
             
                end
         | 
| 34 | 
            -
                say " | 
| 63 | 
            +
                say "JSpec #{program(:version)}"
         | 
| 64 | 
            +
                `#{RHINO} #{paths.join(' ')} -f -`
         | 
| 35 65 | 
             
              end
         | 
| 36 66 | 
             
            end
         | 
| 37 67 |  | 
| @@ -126,22 +156,26 @@ alias_command :bind, :run, '--bind' | |
| 126 156 | 
             
            ##
         | 
| 127 157 | 
             
            # Initialize template at _dest_. 
         | 
| 128 158 |  | 
| 129 | 
            -
            def initialize_at dest
         | 
| 159 | 
            +
            def initialize_at dest, options
         | 
| 130 160 | 
             
              unless Dir[dest + '/*'].empty?
         | 
| 131 161 | 
             
                abort unless agree "'#{dest}' is not empty; continue? "
         | 
| 132 162 | 
             
              end
         | 
| 163 | 
            +
              
         | 
| 133 164 | 
             
              copy_template_to 'default', dest
         | 
| 165 | 
            +
              setup_lib_dir dest, options
         | 
| 134 166 | 
             
              replace_root_in dest, 'spec/spec.dom.html', 'spec/spec.rhino.js'
         | 
| 135 167 | 
             
            end
         | 
| 136 168 |  | 
| 137 169 | 
             
            ##
         | 
| 138 170 | 
             
            # Initialize rails template at _dest_.
         | 
| 139 171 |  | 
| 140 | 
            -
            def initialize_rails_at dest
         | 
| 172 | 
            +
            def initialize_rails_at dest, options
         | 
| 141 173 | 
             
              unless looks_like_rails_root?(dest)
         | 
| 142 174 | 
             
                abort unless agree "'#{dest}' does not look like root of a rails project; continue? "
         | 
| 143 175 | 
             
              end
         | 
| 176 | 
            +
              
         | 
| 144 177 | 
             
              copy_template_to 'rails', "#{dest}/jspec"
         | 
| 178 | 
            +
              setup_lib_dir "#{dest}/jspec", options
         | 
| 145 179 | 
             
              replace_root_in "#{dest}/jspec", 'spec.dom.html', 'spec.rhino.js'
         | 
| 146 180 | 
             
            end
         | 
| 147 181 |  | 
| @@ -214,9 +248,17 @@ end | |
| 214 248 | 
             
            # Replace JSPEC_ROOT placeholder in _paths_ relative to _dest_.
         | 
| 215 249 |  | 
| 216 250 | 
             
            def replace_root_in dest, *paths
         | 
| 251 | 
            +
              if rails? && File.exist?("#{dest}/jspec/lib")
         | 
| 252 | 
            +
                root = "."
         | 
| 253 | 
            +
              elsif File.exist?("#{dest}/spec/lib")
         | 
| 254 | 
            +
                root = "."
         | 
| 255 | 
            +
              else
         | 
| 256 | 
            +
                root = JSPEC_ROOT
         | 
| 257 | 
            +
              end
         | 
| 258 | 
            +
              
         | 
| 217 259 | 
             
              paths.each do |path|
         | 
| 218 260 | 
             
                path = File.join dest, path
         | 
| 219 | 
            -
                contents = File.read(path).gsub 'JSPEC_ROOT',  | 
| 261 | 
            +
                contents = File.read(path).gsub 'JSPEC_ROOT', root
         | 
| 220 262 | 
             
                File.open(path, 'w') { |file| file.write contents }
         | 
| 221 263 | 
             
              end
         | 
| 222 264 | 
             
            end
         | 
| @@ -240,3 +282,24 @@ end | |
| 240 282 | 
             
            def looks_like_rails_root? path = '.'
         | 
| 241 283 | 
             
              File.directory? "#{path}/vendor"
         | 
| 242 284 | 
             
            end
         | 
| 285 | 
            +
             | 
| 286 | 
            +
            ##
         | 
| 287 | 
            +
            # Copy or symlink library to the specified path.
         | 
| 288 | 
            +
             | 
| 289 | 
            +
            def setup_lib_dir dest, options
         | 
| 290 | 
            +
              return unless options.symlink || options.freeze
         | 
| 291 | 
            +
              
         | 
| 292 | 
            +
              if rails?
         | 
| 293 | 
            +
                dest = File.join dest, "lib"
         | 
| 294 | 
            +
              else
         | 
| 295 | 
            +
                dest = File.join dest, "spec", "lib"
         | 
| 296 | 
            +
              end
         | 
| 297 | 
            +
              
         | 
| 298 | 
            +
              from = File.join JSPEC_ROOT, "lib"
         | 
| 299 | 
            +
              
         | 
| 300 | 
            +
              if options.symlink
         | 
| 301 | 
            +
                FileUtils.symlink from, dest, :force => true
         | 
| 302 | 
            +
              else
         | 
| 303 | 
            +
                FileUtils.cp_r from, dest
         | 
| 304 | 
            +
              end
         | 
| 305 | 
            +
            end
         | 
    
        data/jspec.gemspec
    CHANGED
    
    | @@ -2,17 +2,17 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            Gem::Specification.new do |s|
         | 
| 4 4 | 
             
              s.name = %q{jspec}
         | 
| 5 | 
            -
              s.version = "2. | 
| 5 | 
            +
              s.version = "2.11.0"
         | 
| 6 6 |  | 
| 7 7 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
         | 
| 8 8 | 
             
              s.authors = ["TJ Holowaychuk"]
         | 
| 9 | 
            -
              s.date = %q{2009- | 
| 9 | 
            +
              s.date = %q{2009-09-04}
         | 
| 10 10 | 
             
              s.default_executable = %q{jspec}
         | 
| 11 11 | 
             
              s.description = %q{JavaScript BDD Testing Framework}
         | 
| 12 12 | 
             
              s.email = %q{tj@vision-media.ca}
         | 
| 13 13 | 
             
              s.executables = ["jspec"]
         | 
| 14 | 
            -
              s.extra_rdoc_files = ["bin/jspec", "lib/images/bg.png", "lib/images/hr.png", "lib/images/loading.gif", "lib/images/sprites.bg.png", "lib/images/sprites.png", "lib/images/vr.png", "lib/jspec.css", "lib/jspec.jquery.js", "lib/jspec.js", "lib/jspec. | 
| 15 | 
            -
              s.files = [" | 
| 14 | 
            +
              s.extra_rdoc_files = ["README.rdoc", "bin/jspec", "lib/images/bg.png", "lib/images/hr.png", "lib/images/loading.gif", "lib/images/sprites.bg.png", "lib/images/sprites.png", "lib/images/vr.png", "lib/jspec.css", "lib/jspec.jquery.js", "lib/jspec.js", "lib/jspec.shell.js", "lib/jspec.timers.js", "lib/jspec.xhr.js"]
         | 
| 15 | 
            +
              s.files = ["History.rdoc", "Manifest", "README.rdoc", "Rakefile", "bin/jspec", "jspec.gemspec", "lib/images/bg.png", "lib/images/hr.png", "lib/images/loading.gif", "lib/images/sprites.bg.png", "lib/images/sprites.png", "lib/images/vr.png", "lib/jspec.css", "lib/jspec.jquery.js", "lib/jspec.js", "lib/jspec.shell.js", "lib/jspec.timers.js", "lib/jspec.xhr.js", "server/browsers.rb", "server/helpers.rb", "server/routes.rb", "server/server.rb", "spec/async", "spec/env.js", "spec/fixtures/test.html", "spec/fixtures/test.json", "spec/fixtures/test.xml", "spec/helpers.js", "spec/server.rb", "spec/spec.dom.html", "spec/spec.fixtures.js", "spec/spec.grammar-less.js", "spec/spec.grammar.js", "spec/spec.jquery.js", "spec/spec.jquery.xhr.js", "spec/spec.js", "spec/spec.matchers.js", "spec/spec.modules.js", "spec/spec.node.js", "spec/spec.rhino.js", "spec/spec.server.html", "spec/spec.shared-behaviors.js", "spec/spec.utils.js", "spec/spec.xhr.js", "templates/default/History.rdoc", "templates/default/README.rdoc", "templates/default/lib/yourlib.core.js", "templates/default/spec/server.rb", "templates/default/spec/spec.core.js", "templates/default/spec/spec.dom.html", "templates/default/spec/spec.rhino.js", "templates/default/spec/spec.server.html", "templates/rails/server.rb", "templates/rails/spec.application.js", "templates/rails/spec.dom.html", "templates/rails/spec.rhino.js", "templates/rails/spec.server.html"]
         | 
| 16 16 | 
             
              s.homepage = %q{http://visionmedia.github.com/jspec}
         | 
| 17 17 | 
             
              s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Jspec", "--main", "README.rdoc"]
         | 
| 18 18 | 
             
              s.require_paths = ["lib"]
         | 
    
        data/lib/jspec.js
    CHANGED
    
    | @@ -5,7 +5,7 @@ | |
| 5 5 |  | 
| 6 6 | 
             
              JSpec = {
         | 
| 7 7 |  | 
| 8 | 
            -
                version   : '2. | 
| 8 | 
            +
                version   : '2.11.0',
         | 
| 9 9 | 
             
                cache     : {},
         | 
| 10 10 | 
             
                suites    : [],
         | 
| 11 11 | 
             
                modules   : [],
         | 
| @@ -501,14 +501,14 @@ | |
| 501 501 | 
             
                    // Add passing assertion
         | 
| 502 502 |  | 
| 503 503 | 
             
                    pass : function(message) {
         | 
| 504 | 
            -
                      this.assertions.push({ passed | 
| 504 | 
            +
                      this.assertions.push({ passed: true, message: message })
         | 
| 505 505 | 
             
                      ++JSpec.stats.passes
         | 
| 506 506 | 
             
                    },
         | 
| 507 507 |  | 
| 508 508 | 
             
                    // Add failing assertion
         | 
| 509 509 |  | 
| 510 510 | 
             
                    fail : function(message) {
         | 
| 511 | 
            -
                      this.assertions.push({ passed | 
| 511 | 
            +
                      this.assertions.push({ passed: false, message: message })
         | 
| 512 512 | 
             
                      ++JSpec.stats.failures
         | 
| 513 513 | 
             
                    },
         | 
| 514 514 |  | 
    
        data/lib/jspec.shell.js
    ADDED
    
    | @@ -0,0 +1,36 @@ | |
| 1 | 
            +
             | 
| 2 | 
            +
            // JSpec - Shell - Copyright TJ Holowaychuk <tj@vision-media.ca> (MIT Licensed)
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            ;(function(){
         | 
| 5 | 
            +
              
         | 
| 6 | 
            +
              var _quit = quit
         | 
| 7 | 
            +
              
         | 
| 8 | 
            +
              Shell = {
         | 
| 9 | 
            +
                
         | 
| 10 | 
            +
                // --- Global
         | 
| 11 | 
            +
                
         | 
| 12 | 
            +
                main: this,
         | 
| 13 | 
            +
                
         | 
| 14 | 
            +
                // --- Commands
         | 
| 15 | 
            +
                
         | 
| 16 | 
            +
                commands: {
         | 
| 17 | 
            +
                  quit: ['Terminate the shell', function(){ _quit() }],
         | 
| 18 | 
            +
                  exit: ['Terminate the shell', function(){ _quit() }]
         | 
| 19 | 
            +
                },
         | 
| 20 | 
            +
                
         | 
| 21 | 
            +
                /**
         | 
| 22 | 
            +
                 * Start the interactive shell.
         | 
| 23 | 
            +
                 *
         | 
| 24 | 
            +
                 * @api public
         | 
| 25 | 
            +
                 */
         | 
| 26 | 
            +
                
         | 
| 27 | 
            +
                start : function() {
         | 
| 28 | 
            +
                  for (var name in this.commands)
         | 
| 29 | 
            +
                    if (this.commands.hasOwnProperty(name))
         | 
| 30 | 
            +
                      this.main.__defineGetter__(name, this.commands[name][1])
         | 
| 31 | 
            +
                }
         | 
| 32 | 
            +
              }
         | 
| 33 | 
            +
              
         | 
| 34 | 
            +
              Shell.start()
         | 
| 35 | 
            +
              
         | 
| 36 | 
            +
            })()
         | 
| @@ -1,6 +1,32 @@ | |
| 1 1 |  | 
| 2 | 
            -
             | 
| 3 | 
            -
              name | 
| 2 | 
            +
            JSpec.include({
         | 
| 3 | 
            +
              name: 'Helpers',
         | 
| 4 | 
            +
              utilities : {
         | 
| 5 | 
            +
                mock_it : function(body) {
         | 
| 6 | 
            +
                  var spec = new JSpec.Spec('mock', body)
         | 
| 7 | 
            +
                  var prev = JSpec.currentSpec
         | 
| 8 | 
            +
                  JSpec.runSpec(spec)
         | 
| 9 | 
            +
                  JSpec.currentSpec = prev
         | 
| 10 | 
            +
                  return spec
         | 
| 11 | 
            +
                }
         | 
| 12 | 
            +
              },
         | 
| 13 | 
            +
              
         | 
| 14 | 
            +
              matchers : {
         | 
| 15 | 
            +
                have_failure_message : function(spec, expected) {
         | 
| 16 | 
            +
                  return JSpec.any(spec.assertions, function(assertion){
         | 
| 17 | 
            +
                    if (assertion.passed) return
         | 
| 18 | 
            +
                    switch (expected.constructor) {
         | 
| 19 | 
            +
                      case String: return assertion.message == expected
         | 
| 20 | 
            +
                      case RegExp: return expected.test(assertion.message)
         | 
| 21 | 
            +
                      default    : return false
         | 
| 22 | 
            +
                    }
         | 
| 23 | 
            +
                  })
         | 
| 24 | 
            +
                }
         | 
| 25 | 
            +
              }
         | 
| 26 | 
            +
            })
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            JSpec.include({
         | 
| 29 | 
            +
              name: 'ExampleModule',
         | 
| 4 30 | 
             
              utilities : {
         | 
| 5 31 | 
             
                doFoo : function(){ return 'foo' },
         | 
| 6 32 | 
             
                doBar : function(){ return 'bar' }
         | 
| @@ -33,9 +59,7 @@ ExampleModule = { | |
| 33 59 | 
             
                  }
         | 
| 34 60 | 
             
                }
         | 
| 35 61 | 
             
              }
         | 
| 36 | 
            -
            }
         | 
| 37 | 
            -
             | 
| 38 | 
            -
            JSpec.include(ExampleModule)
         | 
| 62 | 
            +
            })
         | 
| 39 63 |  | 
| 40 64 | 
             
            JSpec.include({
         | 
| 41 65 | 
             
              name : 'EmptyModule'
         | 
    
        data/spec/spec.dom.html
    CHANGED
    
    | @@ -6,7 +6,7 @@ | |
| 6 6 | 
             
            		<script src="../lib/jspec.jquery.js"></script>
         | 
| 7 7 | 
             
            		<script src="../lib/jspec.xhr.js"></script>
         | 
| 8 8 | 
             
            		<script src="../lib/jspec.timers.js"></script>
         | 
| 9 | 
            -
            		<script src=" | 
| 9 | 
            +
            		<script src="helpers.js"></script>
         | 
| 10 10 | 
             
            		<script src="spec.grammar-less.js"></script>
         | 
| 11 11 | 
             
            		<script>
         | 
| 12 12 | 
             
            			function runSuites() {
         | 
| @@ -21,7 +21,7 @@ | |
| 21 21 | 
             
                    .exec('spec.modules.js')
         | 
| 22 22 | 
             
                    .exec('spec.xhr.js')
         | 
| 23 23 | 
             
                    .exec('spec.jquery.xhr.js')
         | 
| 24 | 
            -
            				.run()
         | 
| 24 | 
            +
            				.run({ failuresOnly: true })
         | 
| 25 25 | 
             
            				.report()
         | 
| 26 26 | 
             
            			}
         | 
| 27 27 | 
             
            		</script>
         | 
    
        data/spec/spec.jquery.js
    CHANGED
    
    | @@ -49,7 +49,10 @@ describe 'jQuery' | |
| 49 49 | 
             
                end
         | 
| 50 50 |  | 
| 51 51 | 
             
                it 'should fail with pretty print of element'
         | 
| 52 | 
            -
                   | 
| 52 | 
            +
                  spec = mock_it(function() {
         | 
| 53 | 
            +
                    elem.should.not.have_tag 'label'
         | 
| 54 | 
            +
                  })
         | 
| 55 | 
            +
                  spec.should.have_failure_message(/<label>\s*<em>Save?/i)
         | 
| 53 56 | 
             
                end
         | 
| 54 57 |  | 
| 55 58 | 
             
                describe 'have_tag / have_one'
         | 
    
        data/spec/spec.js
    CHANGED
    
    | @@ -1,107 +1,146 @@ | |
| 1 1 |  | 
| 2 | 
            -
            describe ' | 
| 2 | 
            +
            describe 'Failing specs'
         | 
| 3 3 |  | 
| 4 4 | 
             
              it 'should fail'
         | 
| 5 | 
            -
                 | 
| 5 | 
            +
                spec = mock_it(function(){
         | 
| 6 | 
            +
                  'test'.should.not.eql 'test'
         | 
| 7 | 
            +
                })
         | 
| 8 | 
            +
                spec.should.have_failure_message("expected 'test' to not eql 'test'")
         | 
| 6 9 | 
             
              end
         | 
| 7 10 |  | 
| 8 11 | 
             
              it 'should fail with one faulty assertion'
         | 
| 9 | 
            -
                 | 
| 10 | 
            -
             | 
| 12 | 
            +
                spec = mock_it(function() {
         | 
| 13 | 
            +
                  'test'.should.equal 'test' 
         | 
| 14 | 
            +
                  'test'.should.equal 'foo'
         | 
| 15 | 
            +
                })
         | 
| 16 | 
            +
                spec.should.have_failure_message("expected 'test' to be 'foo'")
         | 
| 11 17 | 
             
              end
         | 
| 12 18 |  | 
| 13 19 | 
             
              it 'should fail and print array with square braces'
         | 
| 14 | 
            -
                 | 
| 20 | 
            +
                spec = mock_it(function() {
         | 
| 21 | 
            +
                  [1,2].should.equal [1,3]
         | 
| 22 | 
            +
                })
         | 
| 23 | 
            +
                spec.should.have_failure_message("expected [ 1, 2 ] to be [ 1, 3 ]")
         | 
| 15 24 | 
             
              end
         | 
| 16 25 |  | 
| 17 26 | 
             
              it 'should fail and print nested array'
         | 
| 18 | 
            -
                 | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 22 | 
            -
                elem = document.createElement('a')
         | 
| 23 | 
            -
                elem.setAttribute('href', 'http://vision-media.ca')
         | 
| 24 | 
            -
                elem.should.not.eql elem
         | 
| 27 | 
            +
                spec = mock_it(function() {
         | 
| 28 | 
            +
                  [1, ['foo']].should.equal [1, ['bar', ['whatever', 1.0, { foo : 'bar', bar : { 1 : 2 } }]]]
         | 
| 29 | 
            +
                })
         | 
| 30 | 
            +
                spec.should.have_failure_message(/^expected \[\s*1,\s*\[\s*'foo'/)
         | 
| 25 31 | 
             
              end
         | 
| 26 32 |  | 
| 27 33 | 
             
              it 'should fail with selector for jQuery objects'
         | 
| 28 | 
            -
                 | 
| 29 | 
            -
             | 
| 34 | 
            +
                spec = mock_it(function() {
         | 
| 35 | 
            +
                  elem = { jquery : '1.3.1', selector : '.foobar' } 
         | 
| 36 | 
            +
                  elem.should.eql 'foo'  
         | 
| 37 | 
            +
                })
         | 
| 38 | 
            +
                spec.should.have_failure_message("expected selector '.foobar' to eql 'foo'")
         | 
| 30 39 | 
             
              end
         | 
| 31 40 |  | 
| 32 | 
            -
              it 'should fail with  | 
| 33 | 
            -
                 | 
| 41 | 
            +
              it 'should fail with negated message'
         | 
| 42 | 
            +
                spec = mock_it(function(){
         | 
| 43 | 
            +
                  '1'.should.not.be_true
         | 
| 44 | 
            +
                })
         | 
| 45 | 
            +
                spec.should.have_failure_message(/expected '1' to not be true/)
         | 
| 34 46 | 
             
              end
         | 
| 35 47 |  | 
| 36 48 | 
             
              it 'should fail with positive message'
         | 
| 37 | 
            -
                 | 
| 38 | 
            -
             | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
                -{ throw 'foo' }.should.not.throw_error
         | 
| 49 | 
            +
                spec = mock_it(function() {
         | 
| 50 | 
            +
                  false.should.be_true
         | 
| 51 | 
            +
                })
         | 
| 52 | 
            +
                spec.should.have_failure_message(/expected false to be true/)
         | 
| 42 53 | 
             
              end
         | 
| 43 54 |  | 
| 44 55 | 
             
              it 'should fail saying which error has been thrown'
         | 
| 45 | 
            -
                 | 
| 56 | 
            +
                spec = mock_it(function() {
         | 
| 57 | 
            +
                  -{ throw 'foo' }.should.throw_error 'bar'
         | 
| 58 | 
            +
                })
         | 
| 59 | 
            +
                spec.should.have_failure_message("expected exception of 'bar' to be thrown, but got 'foo'")
         | 
| 46 60 | 
             
              end
         | 
| 47 61 |  | 
| 48 62 | 
             
              it 'should fail saying no error was thrown'
         | 
| 49 | 
            -
                 | 
| 63 | 
            +
                spec = mock_it(function() {
         | 
| 64 | 
            +
                  -{ }.should.throw_error 'foo'
         | 
| 65 | 
            +
                })
         | 
| 66 | 
            +
                spec.should.have_failure_message("expected exception of 'foo' to be thrown, but nothing was")
         | 
| 50 67 | 
             
              end
         | 
| 51 68 |  | 
| 52 69 | 
             
              it 'should fail saying no error matching was thrown'
         | 
| 53 | 
            -
                 | 
| 54 | 
            -
             | 
| 55 | 
            -
             | 
| 56 | 
            -
             | 
| 57 | 
            -
                -{ throw 'foo' }.should.not.throw_error(/foo/)
         | 
| 70 | 
            +
                spec = mock_it(function() {
         | 
| 71 | 
            +
                  -{ throw 'bar' }.should.throw_error(/foo/)
         | 
| 72 | 
            +
                })
         | 
| 73 | 
            +
                spec.should.have_failure_message("expected exception matching /foo/ to be thrown, but got 'bar'")
         | 
| 58 74 | 
             
              end
         | 
| 59 75 |  | 
| 60 76 | 
             
              it 'should fail saying constructors'
         | 
| 61 | 
            -
                 | 
| 77 | 
            +
                spec = mock_it(function() {
         | 
| 78 | 
            +
                  -{ throw new TypeError('oh no') }.should.throw_error(Error)
         | 
| 79 | 
            +
                })
         | 
| 80 | 
            +
                spec.should.have_failure_message("expected Error to be thrown, but got TypeError: oh no")
         | 
| 62 81 | 
             
              end
         | 
| 63 82 |  | 
| 64 83 | 
             
              it 'should fail saying multiple arg messages'
         | 
| 65 | 
            -
                 | 
| 84 | 
            +
                spec = mock_it(function() {
         | 
| 85 | 
            +
                  -{ throw new TypeError('oh no') }.should.throw_error(TypeError, /foo/)
         | 
| 86 | 
            +
                })
         | 
| 87 | 
            +
                spec.should.have_failure_message("expected TypeError and exception matching /foo/ to be thrown, but got TypeError: oh no")
         | 
| 66 88 | 
             
              end
         | 
| 67 89 |  | 
| 68 90 | 
             
              it 'should fail with constructor name'
         | 
| 69 | 
            -
                 | 
| 70 | 
            -
             | 
| 71 | 
            -
             | 
| 72 | 
            -
             | 
| 73 | 
            -
             | 
| 74 | 
            -
             | 
| 75 | 
            -
             | 
| 76 | 
            -
                -{ 'foo' }.should.not.include 'foo'
         | 
| 91 | 
            +
                spec = mock_it(function() {
         | 
| 92 | 
            +
                  function Foo(){}
         | 
| 93 | 
            +
                  function Bar(){}
         | 
| 94 | 
            +
                  Bar.prototype.toString = function(){ return 'Bar: oh no' }
         | 
| 95 | 
            +
                  -{ throw new Bar }.should.throw_error Foo
         | 
| 96 | 
            +
                })
         | 
| 97 | 
            +
                spec.should.have_failure_message("expected Foo to be thrown, but got Bar: oh no")
         | 
| 77 98 | 
             
              end
         | 
| 78 99 |  | 
| 79 100 | 
             
              it 'should fail with constructor name'
         | 
| 80 | 
            -
                 | 
| 81 | 
            -
             | 
| 82 | 
            -
             | 
| 101 | 
            +
                spec = mock_it(function() {
         | 
| 102 | 
            +
                  function Foo(){ this.toString = function(){ return '<Foo>' }}
         | 
| 103 | 
            +
                  foo = new Foo
         | 
| 104 | 
            +
                  foo.should.not.be_an_instance_of Foo
         | 
| 105 | 
            +
                })
         | 
| 106 | 
            +
                spec.should.have_failure_message("expected <Foo> to not be an instance of Foo")
         | 
| 83 107 | 
             
              end
         | 
| 84 108 |  | 
| 85 109 | 
             
              it 'should fail with message of first failure'
         | 
| 86 | 
            -
                 | 
| 87 | 
            -
             | 
| 88 | 
            -
             | 
| 110 | 
            +
                spec = mock_it(function() {
         | 
| 111 | 
            +
                  true.should.be_true
         | 
| 112 | 
            +
                  'bar'.should.match(/foo/gm)
         | 
| 113 | 
            +
                  'bar'.should.include 'foo'
         | 
| 114 | 
            +
                })
         | 
| 115 | 
            +
                spec.should.have_failure_message("expected 'bar' to match /foo/gm")
         | 
| 89 116 | 
             
              end
         | 
| 90 117 |  | 
| 91 118 | 
             
              it 'should fail with list'
         | 
| 92 | 
            -
                 | 
| 119 | 
            +
                spec = mock_it(function() {
         | 
| 120 | 
            +
                  ['foo', 'bar'].should.include 'foo', 'car'
         | 
| 121 | 
            +
                })
         | 
| 122 | 
            +
                spec.should.have_failure_message("expected [ 'foo', 'bar' ] to include 'foo', 'car'")
         | 
| 93 123 | 
             
              end
         | 
| 94 124 |  | 
| 95 125 | 
             
              it 'should catch exceptions throw within specs'
         | 
| 96 | 
            -
                 | 
| 126 | 
            +
                spec = mock_it(function() {
         | 
| 127 | 
            +
                  throw new Error('Oh noes!')
         | 
| 128 | 
            +
                })
         | 
| 129 | 
            +
                spec.should.have_failure_message(/Error: Oh noes!/)
         | 
| 97 130 | 
             
              end
         | 
| 98 131 |  | 
| 99 | 
            -
              it 'should catch  | 
| 100 | 
            -
                 | 
| 132 | 
            +
              it 'should catch exceptions without constructors'
         | 
| 133 | 
            +
                spec = mock_it(function() {
         | 
| 134 | 
            +
                  throw 'oh noes'
         | 
| 135 | 
            +
                })
         | 
| 136 | 
            +
                spec.should.have_failure_message(/oh noes/)
         | 
| 101 137 | 
             
              end
         | 
| 102 138 |  | 
| 103 | 
            -
              it 'should catch  | 
| 104 | 
            -
                 | 
| 139 | 
            +
              it 'should catch indirect exceptions'
         | 
| 140 | 
            +
                spec = mock_it(function() {
         | 
| 141 | 
            +
                  iDoNotExist.neitherDoI()
         | 
| 142 | 
            +
                })
         | 
| 143 | 
            +
                spec.should.have_failure_message(/iDoNotExist/)
         | 
| 105 144 | 
             
              end
         | 
| 106 145 |  | 
| 107 146 | 
             
            end
         | 
    
        data/spec/spec.rhino.js
    CHANGED
    
    
    
        data/spec/spec.server.html
    CHANGED
    
    | @@ -4,7 +4,7 @@ | |
| 4 4 | 
             
            		<script src="/jspec/jspec.js"></script>
         | 
| 5 5 | 
             
            		<script src="/jspec/jspec.jquery.js"></script>
         | 
| 6 6 | 
             
            		<script src="/jspec/jspec.xhr.js"></script>
         | 
| 7 | 
            -
            		<script src=" | 
| 7 | 
            +
            		<script src="helpers.js"></script>
         | 
| 8 8 | 
             
            		<script src="spec.grammar-less.js"></script>
         | 
| 9 9 | 
             
            		<script>
         | 
| 10 10 | 
             
            			function runSuites() {
         | 
    
        data/spec/spec.utils.js
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: visionmedia-jspec
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              version: 2. | 
| 4 | 
            +
              version: 2.11.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors: 
         | 
| 7 7 | 
             
            - TJ Holowaychuk
         | 
| @@ -9,7 +9,7 @@ autorequire: | |
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 11 |  | 
| 12 | 
            -
            date: 2009- | 
| 12 | 
            +
            date: 2009-09-04 00:00:00 -07:00
         | 
| 13 13 | 
             
            default_executable: jspec
         | 
| 14 14 | 
             
            dependencies: 
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| @@ -59,6 +59,7 @@ executables: | |
| 59 59 | 
             
            extensions: []
         | 
| 60 60 |  | 
| 61 61 | 
             
            extra_rdoc_files: 
         | 
| 62 | 
            +
            - README.rdoc
         | 
| 62 63 | 
             
            - bin/jspec
         | 
| 63 64 | 
             
            - lib/images/bg.png
         | 
| 64 65 | 
             
            - lib/images/hr.png
         | 
| @@ -69,12 +70,15 @@ extra_rdoc_files: | |
| 69 70 | 
             
            - lib/jspec.css
         | 
| 70 71 | 
             
            - lib/jspec.jquery.js
         | 
| 71 72 | 
             
            - lib/jspec.js
         | 
| 73 | 
            +
            - lib/jspec.shell.js
         | 
| 72 74 | 
             
            - lib/jspec.timers.js
         | 
| 73 75 | 
             
            - lib/jspec.xhr.js
         | 
| 74 | 
            -
            - README.rdoc
         | 
| 75 76 | 
             
            files: 
         | 
| 76 | 
            -
            - bin/jspec
         | 
| 77 77 | 
             
            - History.rdoc
         | 
| 78 | 
            +
            - Manifest
         | 
| 79 | 
            +
            - README.rdoc
         | 
| 80 | 
            +
            - Rakefile
         | 
| 81 | 
            +
            - bin/jspec
         | 
| 78 82 | 
             
            - jspec.gemspec
         | 
| 79 83 | 
             
            - lib/images/bg.png
         | 
| 80 84 | 
             
            - lib/images/hr.png
         | 
| @@ -85,11 +89,9 @@ files: | |
| 85 89 | 
             
            - lib/jspec.css
         | 
| 86 90 | 
             
            - lib/jspec.jquery.js
         | 
| 87 91 | 
             
            - lib/jspec.js
         | 
| 92 | 
            +
            - lib/jspec.shell.js
         | 
| 88 93 | 
             
            - lib/jspec.timers.js
         | 
| 89 94 | 
             
            - lib/jspec.xhr.js
         | 
| 90 | 
            -
            - Manifest
         | 
| 91 | 
            -
            - Rakefile
         | 
| 92 | 
            -
            - README.rdoc
         | 
| 93 95 | 
             
            - server/browsers.rb
         | 
| 94 96 | 
             
            - server/helpers.rb
         | 
| 95 97 | 
             
            - server/routes.rb
         | 
| @@ -99,7 +101,7 @@ files: | |
| 99 101 | 
             
            - spec/fixtures/test.html
         | 
| 100 102 | 
             
            - spec/fixtures/test.json
         | 
| 101 103 | 
             
            - spec/fixtures/test.xml
         | 
| 102 | 
            -
            - spec/ | 
| 104 | 
            +
            - spec/helpers.js
         | 
| 103 105 | 
             
            - spec/server.rb
         | 
| 104 106 | 
             
            - spec/spec.dom.html
         | 
| 105 107 | 
             
            - spec/spec.fixtures.js
         | 
| @@ -117,8 +119,8 @@ files: | |
| 117 119 | 
             
            - spec/spec.utils.js
         | 
| 118 120 | 
             
            - spec/spec.xhr.js
         | 
| 119 121 | 
             
            - templates/default/History.rdoc
         | 
| 120 | 
            -
            - templates/default/lib/yourlib.core.js
         | 
| 121 122 | 
             
            - templates/default/README.rdoc
         | 
| 123 | 
            +
            - templates/default/lib/yourlib.core.js
         | 
| 122 124 | 
             
            - templates/default/spec/server.rb
         | 
| 123 125 | 
             
            - templates/default/spec/spec.core.js
         | 
| 124 126 | 
             
            - templates/default/spec/spec.dom.html
         |