diff --git a/.gitignore b/.gitignore
index ba72ec6c..9f11b755 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1 @@
.idea/
-.idea/inspectionProfiles/
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
deleted file mode 100644
index a6c0eca4..00000000
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
deleted file mode 100644
index e8b980bc..00000000
--- a/.idea/inspectionProfiles/profiles_settings.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Rakefile b/Rakefile
index 1ef40683..1531441e 100644
--- a/Rakefile
+++ b/Rakefile
@@ -10,16 +10,86 @@ namespace :test do
end
desc 'Builds lib/jasmine from source'
-task :build do
-
- # these files must be better
- sources = ["src/base.js", "src/util.js", "src/Env.js", "src/ActionCollection.js", "src/Reporter.js"]
-
- sources += Dir.glob('src/*.js').reject{|f| sources.include?(f)}
-
- jasmine = File.new('lib/jasmine.js', 'w')
- sources.each do |source_filename|
- jasmine.puts(File.read(source_filename))
+namespace :build do
+ task :jasmine => 'build:doc' do
+ require 'json'
+ sources = jasmine_sources
+ version = version_hash
+ old_jasmine_files = Dir.glob('lib/jasmine*.js')
+ old_jasmine_files.each do |file|
+ File.delete(file)
+ end
+ jasmine = File.new("lib/#{jasmine_filename version}", 'w')
+ jasmine.puts(File.read(sources.shift))
+ jasmine.puts %{
+jasmine.version_= {
+ "major": #{version['major']},
+ "minor": #{version['minor']},
+ "build": #{version['build']},
+ "revision": #{Time.now.to_i}
+ };
+}
+ sources.each do |source_filename|
+ jasmine.puts(File.read(source_filename))
+ end
end
+
+ desc "Build jasmine documentation"
+ task :doc do
+ require 'rubygems'
+ #sudo gem install ragaskar-jsdoc_helper
+ require 'jsdoc_helper'
+
+
+ JsdocHelper::Rake::Task.new(:lambda_jsdoc)
+ Rake::Task[:lambda_jsdoc].invoke
+ end
+
end
+def jasmine_sources
+ sources = ["src/base.js", "src/util.js", "src/Env.js", "src/Reporter.js", "src/Block.js"]
+
+ sources += Dir.glob('src/*.js').reject{|f| f == 'src/base.js' || sources.include?(f)}.sort
+end
+
+def jasmine_filename(version)
+ "jasmine-#{version['major']}.#{version['minor']}.#{version['build']}.js"
+end
+
+def version_hash
+ JSON.parse(File.new("src/version.json").read);
+end
+
+namespace :test do
+ desc "Run continuous integration tests"
+ task :ci => 'build:jasmine' do
+ require "spec"
+ require 'spec/rake/spectask'
+ Spec::Rake::SpecTask.new(:lambda_ci) do |t|
+ t.spec_opts = ["--color", "--format", "specdoc"]
+ t.spec_files = ["spec/jasmine_spec.rb"]
+ end
+ Rake::Task[:lambda_ci].invoke
+ end
+
+end
+
+desc "Run jasmine tests via server"
+task :jasmine_server do
+ require File.expand_path(File.join(File.dirname(__FILE__), "contrib/ruby/jasmine_spec_builder"))
+
+ includes = jasmine_sources + ['lib/TrivialReporter.js']
+ spec_files = Dir.glob("spec/**/*.js")
+
+ dir_mappings = {
+ "/spec" => "spec",
+ "/lib" => "lib",
+ "/src" => 'src'
+ }
+
+ puts "your tests are here:"
+ puts " http://localhost:8888/run.html"
+
+ Jasmine::SimpleServer.start(8888, includes + spec_files, dir_mappings)
+end
\ No newline at end of file
diff --git a/contrib/ruby/jasmine_runner.rb b/contrib/ruby/jasmine_runner.rb
index d3810f36..201abe71 100644
--- a/contrib/ruby/jasmine_runner.rb
+++ b/contrib/ruby/jasmine_runner.rb
@@ -1,5 +1,6 @@
require 'socket'
require 'erb'
+require 'json'
module Jasmine
# this seemingly-over-complex method is necessary to get an open port on at least some of our Macs
@@ -73,16 +74,31 @@ module Jasmine
end
end
+ class Redirect
+ def initialize(url)
+ @url = url
+ end
+
+ def call(env)
+ [
+ 302,
+ { 'Location' => @url },
+ []
+ ]
+ end
+ end
+
class SimpleServer
def self.start(port, spec_files_or_proc, mappings)
require 'thin'
config = {
+ '/' => Jasmine::Redirect.new('/run.html'),
'/run.html' => Jasmine::RunAdapter.new(spec_files_or_proc)
}
mappings.each do |from, to|
config[from] = Rack::File.new(to)
- end
+ end
app = Rack::URLMap.new(config)
@@ -128,7 +144,7 @@ module Jasmine
def eval_js(script)
escaped_script = "'" + script.gsub(/(['\\])/) { '\\' + $1 } + "'"
- result = @driver.get_eval("window.eval(#{escaped_script})")
+ result = @driver.get_eval("eval(#{escaped_script}, window)")
JSON.parse("[#{result}]")[0]
end
end
diff --git a/contrib/ruby/jasmine_spec_builder.rb b/contrib/ruby/jasmine_spec_builder.rb
index 591cd102..6e03801e 100644
--- a/contrib/ruby/jasmine_spec_builder.rb
+++ b/contrib/ruby/jasmine_spec_builder.rb
@@ -114,13 +114,15 @@ module Jasmine
puts message["text"]
puts "\n"
else
- STDERR << message["message"]
- STDERR << "\n"
+ unless message["message"] =~ /^Passed.$/
+ STDERR << message["message"]
+ STDERR << "\n"
- out << message["message"]
- out << "\n"
+ out << message["message"]
+ out << "\n"
+ end
- unless message["passed"]
+ unless message["passed_"]
stack_trace = message["trace"]["stack"].gsub(/
/, "\n").gsub(/<\/?b>/, " ")
STDERR << stack_trace.gsub(/\(.*\)@http:\/\/localhost:[0-9]+\/specs\//, "/spec/")
STDERR << "\n"
@@ -129,7 +131,7 @@ module Jasmine
end
fail out unless spec_results['result'] == 'passed'
- puts out
+ puts out unless out.empty?
end
private
diff --git a/contrib/ruby/run.html b/contrib/ruby/run.html
index 0f3035d3..9b307c74 100644
--- a/contrib/ruby/run.html
+++ b/contrib/ruby/run.html
@@ -3,12 +3,10 @@
Jasmine suite
-
-
-
-
-
-
+
+ <% spec_files.each do |spec_file| %>
+
+ <% end %>
- <% spec_files.each do |spec_file| %>
-
- <% end %>
+
diff --git a/contrib/ruby/jasmine_runner_spec.rb b/contrib/ruby/spec/jasmine_runner_spec.rb
similarity index 96%
rename from contrib/ruby/jasmine_runner_spec.rb
rename to contrib/ruby/spec/jasmine_runner_spec.rb
index 83999de4..4339db76 100644
--- a/contrib/ruby/jasmine_runner_spec.rb
+++ b/contrib/ruby/spec/jasmine_runner_spec.rb
@@ -1,6 +1,6 @@
require 'spec'
require 'open-uri'
-require File.dirname(__FILE__) + '/jasmine_runner'
+require File.dirname(__FILE__) + '/../jasmine_runner'
describe Jasmine::SimpleServer do
before do
diff --git a/doc/files.html b/doc/files.html
index b997fffd..4ce1733c 100644
--- a/doc/files.html
+++ b/doc/files.html
@@ -188,16 +188,16 @@ ul.inheritsList
jasmine
- jasmine.ActionCollection
+ jasmine.Block
jasmine.Env
+ jasmine.JsApiReporter
+
jasmine.MultiReporter
jasmine.NestedResults
- jasmine.QueuedFunction
-
jasmine.Reporter
jasmine.Runner
@@ -219,7 +219,31 @@ ul.inheritsList
+
+
+
+
+
+
+
@@ -234,7 +258,7 @@ ul.inheritsList
- Documentation generated by
JsDoc Toolkit 2.3.0 on Thu Jul 09 2009 21:42:19 GMT-0700 (PDT)
+ Documentation generated by
JsDoc Toolkit 2.1.0 on Wed Sep 02 2009 07:41:14 GMT-0700 (PDT)