diff --git a/Rakefile b/Rakefile index 89a8ccb5..369c9966 100644 --- a/Rakefile +++ b/Rakefile @@ -1,170 +1,97 @@ require 'json' +require 'tilt' -def jasmine_sources - first_sources = JSON.parse(File.read('src/SourcesList.json')).collect {|f| "src/core/#{f}"} - - sources = first_sources - sources += Dir.glob('src/core/*.js').reject {|f| first_sources.include?(f)}.sort - sources +Dir["#{File.dirname(__FILE__)}/tasks/**/*.rb"].each do |file| + require file end -def jasmine_html_sources - ["src/html/TrivialReporter.js"] -end - -def jasmine_version - "#{version_hash['major']}.#{version_hash['minor']}.#{version_hash['build']}" -end - -def version_hash - require 'json' - @version ||= JSON.parse(File.new("src/core/version.json").read); -end - - -def substitute_jasmine_version(filename) - contents = File.read(filename) - contents = contents.gsub(/##JASMINE_VERSION##/, (jasmine_version)) - contents = contents.gsub(/[^\n]*REMOVE_THIS_LINE_FROM_BUILD[^\n]*/, '') - File.open(filename, 'w') { |f| f.write(contents) } +task :require_node do + raise "\nNode.js is required to develop code for Jasmine. Please visit http://nodejs.org to install.\n\n" unless node_installed? end task :default => :spec -desc "Run spec suite: Browser, Node, JSHint" -task :spec => ["jasmine:build", "spec:node", "spec:browser"] - -namespace :spec do - desc 'Run specs in Node.js' - task :node do - raise "Node is required to run all jasmine specs" unless system("node spec/node_suite.js") - end - - desc "Run specs in the default browser (MacOS only)" - task :browser do - system("open spec/runner.html") - end -end - -namespace :jasmine do - - desc 'Prepares for distribution' - task :dist => ['jasmine:build', - 'jasmine:doc', - 'jasmine:build_pages', - 'jasmine:build_example_project', - 'jasmine:fill_index_downloads'] - - desc 'Check jasmine sources for coding problems' - task :lint do - puts "Running JSHint via Node.js" - system("node jshint/run.js") || exit(1) - end - - desc "Alias to JSHint" - task :hint => :lint - - desc 'Builds lib/jasmine from source' - task :build => :lint do - puts 'Building Jasmine from source' - - sources = jasmine_sources - version = version_hash - - File.open("lib/jasmine.js", 'w') do |jasmine| - sources.each do |source_filename| - jasmine.puts(File.read(source_filename)) - end - - jasmine.puts %{ -jasmine.version_= { - "major": #{version['major'].to_json}, - "minor": #{version['minor'].to_json}, - "build": #{version['build'].to_json}, - "revision": #{Time.now.to_i} -}; -} - end - - File.open("lib/jasmine-html.js", 'w') do |jasmine_html| - jasmine_html_sources.each do |source_filename| - jasmine_html.puts(File.read(source_filename)) - end - end - - FileUtils.cp("src/html/jasmine.css", "lib/jasmine.css") - end - - downloads_file = 'pages/download.html' - task :need_pages_submodule do - unless File.exist?(downloads_file) - raise "Jasmine pages submodule isn't present. Run git submodule update --init" - end - end - - desc "Build the Github pages HTML" - task :build_pages => :need_pages_submodule do - Dir.chdir("pages") do - FileUtils.rm_r('pages_output') if File.exist?('pages_output') - Dir.chdir('pages_source') do - system("frank export ../pages_output") - end - puts "\nCopying Frank output to the root of the gh-pages branch\n\n" - system("cp -r pages_output/* .") - end - end - - desc "Build jasmine documentation" - task :doc => :need_pages_submodule do - puts 'Creating Jasmine Documentation' - require 'rubygems' - require 'jsdoc_helper' - - FileUtils.rm_r "pages/jsdoc", :force => true - - JsdocHelper::Rake::Task.new(:lambda_jsdoc) do |t| - t[:files] = jasmine_sources << jasmine_html_sources - t[:options] = "-a" - t[:out] = "pages/jsdoc" - # JsdocHelper bug: template must be relative to the JsdocHelper gem, ick - t[:template] = File.join("../".*(100), Dir::getwd, "jsdoc-template") - end - Rake::Task[:lambda_jsdoc].invoke - end - - desc "Build example project" - task :build_example_project => :need_pages_submodule do - require 'tmpdir' - - temp_dir = File.join(Dir.tmpdir, 'jasmine-standalone-project') - puts "Building Example Project in #{temp_dir}" - FileUtils.rm_r temp_dir if File.exist?(temp_dir) - Dir.mkdir(temp_dir) - - root = File.expand_path(File.dirname(__FILE__)) - FileUtils.cp_r File.join(root, 'example/.'), File.join(temp_dir) - substitute_jasmine_version(File.join(temp_dir, "SpecRunner.html")) - - lib_dir = File.join(temp_dir, "lib/jasmine-#{jasmine_version}") - FileUtils.mkdir_p(lib_dir) - { - "lib/jasmine.js" => "jasmine.js", - "lib/jasmine-html.js" => "jasmine-html.js", - "src/html/jasmine.css" => "jasmine.css", - "MIT.LICENSE" => "MIT.LICENSE" - }.each_pair do |src, dest| - FileUtils.cp(File.join(root, src), File.join(lib_dir, dest)) - end - - dist_dir = File.join(root, 'pages/downloads') - zip_file_name = File.join(dist_dir, "jasmine-standalone-#{jasmine_version}.zip") - puts "Zipping Example Project and moving to #{zip_file_name}" - FileUtils.mkdir(dist_dir) unless File.exist?(dist_dir) - if File.exist?(zip_file_name) - puts "WARNING!!! #{zip_file_name} already exists!" - FileUtils.rm(zip_file_name) - end - exec "cd #{temp_dir} && zip -r #{zip_file_name} . -x .[a-zA-Z0-9]*" - end - -end +#namespace :jasmine do +# +# desc 'Prepares for distribution' +# task :dist => ['jasmine:build', +# 'jasmine:doc', +# 'jasmine:build_pages', +# 'jasmine:build_example_project', +# 'jasmine:fill_index_downloads'] +# +# end +# +# downloads_file = 'pages/download.html' +# task :need_pages_submodule do +# unless File.exist?(downloads_file) +# raise "Jasmine pages submodule isn't present. Run git submodule update --init" +# end +# end +# +# desc "Build the Github pages HTML" +# task :build_pages => :need_pages_submodule do +# Dir.chdir("pages") do +# FileUtils.rm_r('pages_output') if File.exist?('pages_output') +# Dir.chdir('pages_source') do +# system("frank export ../pages_output") +# end +# puts "\nCopying Frank output to the root of the gh-pages branch\n\n" +# system("cp -r pages_output/* .") +# end +# end +# +# desc "Build jasmine documentation" +# task :doc => :need_pages_submodule do +# puts 'Creating Jasmine Documentation' +# require 'rubygems' +# require 'jsdoc_helper' +# +# FileUtils.rm_r "pages/jsdoc", :force => true +# +# JsdocHelper::Rake::Task.new(:lambda_jsdoc) do |t| +# t[:files] = jasmine_sources << jasmine_html_sources +# t[:options] = "-a" +# t[:out] = "pages/jsdoc" +# # JsdocHelper bug: template must be relative to the JsdocHelper gem, ick +# t[:template] = File.join("../".*(100), Dir::getwd, "jsdoc-template") +# end +# Rake::Task[:lambda_jsdoc].invoke +# end +# +# desc "Build example project" +# task :build_example_project => :need_pages_submodule do +# require 'tmpdir' +# +# temp_dir = File.join(Dir.tmpdir, 'jasmine-standalone-project') +# puts "Building Example Project in #{temp_dir}" +# FileUtils.rm_r temp_dir if File.exist?(temp_dir) +# Dir.mkdir(temp_dir) +# +# root = File.expand_path(File.dirname(__FILE__)) +# FileUtils.cp_r File.join(root, 'example/.'), File.join(temp_dir) +# substitute_jasmine_version(File.join(temp_dir, "SpecRunner.html")) +# +# lib_dir = File.join(temp_dir, "lib/jasmine-#{jasmine_version}") +# FileUtils.mkdir_p(lib_dir) +# { +# "lib/jasmine.js" => "jasmine.js", +# "lib/jasmine-html.js" => "jasmine-html.js", +# "src/html/jasmine.css" => "jasmine.css", +# "MIT.LICENSE" => "MIT.LICENSE" +# }.each_pair do |src, dest| +# FileUtils.cp(File.join(root, src), File.join(lib_dir, dest)) +# end +# +# dist_dir = File.join(root, 'pages/downloads') +# zip_file_name = File.join(dist_dir, "jasmine-standalone-#{jasmine_version}.zip") +# puts "Zipping Example Project and moving to #{zip_file_name}" +# FileUtils.mkdir(dist_dir) unless File.exist?(dist_dir) +# if File.exist?(zip_file_name) +# puts "WARNING!!! #{zip_file_name} already exists!" +# FileUtils.rm(zip_file_name) +# end +# exec "cd #{temp_dir} && zip -r #{zip_file_name} . -x .[a-zA-Z0-9]*" +# end +# +#end diff --git a/lib/jasmine.js b/lib/jasmine.js index 1710a6d6..f7355b1c 100644 --- a/lib/jasmine.js +++ b/lib/jasmine.js @@ -2463,10 +2463,9 @@ jasmine.getGlobal().clearInterval = function(timeoutKey) { } }; - jasmine.version_= { "major": 1, "minor": 1, "build": 0, - "revision": 1307546962 -}; + "revision": 1307672575 +} diff --git a/spec/templates/runner.html.erb b/spec/templates/runner.html.erb new file mode 100644 index 00000000..13a5bfba --- /dev/null +++ b/spec/templates/runner.html.erb @@ -0,0 +1,42 @@ + + +
+