From 6b2e45eab5fe201f417b7f36e563fba4516396d6 Mon Sep 17 00:00:00 2001 From: "Davis W. Frank" Date: Wed, 15 Jun 2011 09:15:40 -0700 Subject: [PATCH] Refactor of standalone build tasks; Better templating of the core runner.html and the example SpecRunner.html --- example/SpecRunner.html | 57 ++++++++---- lib/jasmine.js | 2 +- spec/runner.html | 24 ++++-- spec/templates/runner.html.erb | 25 ++++-- .../example_project_jasmine_tags.html.erb | 3 + src/version.js | 2 +- tasks/build_dist.rb | 1 - tasks/build_specs.rb | 40 ++++++--- tasks/helpers.rb | 10 +++ tasks/standalone.rb | 86 +++++++++++++++---- 10 files changed, 189 insertions(+), 61 deletions(-) create mode 100644 src/templates/example_project_jasmine_tags.html.erb diff --git a/example/SpecRunner.html b/example/SpecRunner.html index 2089f4ca..ed84ff6e 100644 --- a/example/SpecRunner.html +++ b/example/SpecRunner.html @@ -2,26 +2,53 @@ "http://www.w3.org/TR/html4/loose.dtd"> - Jasmine Test Runner - - - + Jasmine Spec Runner + + + + + + - - - - - - -

You must be trying to look at examples in the Jasmine source tree.

Please download a distribution version of Jasmine at http://pivotal.github.com/jasmine/.

- + + + + + + + + diff --git a/lib/jasmine.js b/lib/jasmine.js index ed30e9ad..19dcf75b 100644 --- a/lib/jasmine.js +++ b/lib/jasmine.js @@ -2467,5 +2467,5 @@ jasmine.version_= { "major": 1, "minor": 1, "build": 0, - "revision": 1308065344 + "revision": 1308154429 } diff --git a/spec/runner.html b/spec/runner.html index 901aba26..c406a56e 100644 --- a/spec/runner.html +++ b/spec/runner.html @@ -2,18 +2,23 @@ "http://www.w3.org/TR/html4/loose.dtd"> - Jasmine Test Runner + Jasmine Spec Runner: Jasmine Core + + + + - - + + + @@ -51,13 +56,22 @@ return trivialReporter.specFilter(spec); }; + var currentWindowOnload = window.onload; + window.onload = function() { - jasmineEnv.execute(); + if (currentWindowOnload) { + currentWindowOnload(); + } + execJasmine(); }; + + function execJasmine() { + jasmineEnv.execute(); + } + })(); - diff --git a/spec/templates/runner.html.erb b/spec/templates/runner.html.erb index 13a5bfba..964e1682 100644 --- a/spec/templates/runner.html.erb +++ b/spec/templates/runner.html.erb @@ -2,17 +2,15 @@ "http://www.w3.org/TR/html4/loose.dtd"> - Jasmine Test Runner + <%= title %> - - - + <%= favicon %> + <%= jasmine_tags %> + <%= source_tags %> + <%= spec_file_tags %> - diff --git a/src/templates/example_project_jasmine_tags.html.erb b/src/templates/example_project_jasmine_tags.html.erb new file mode 100644 index 00000000..0d423f22 --- /dev/null +++ b/src/templates/example_project_jasmine_tags.html.erb @@ -0,0 +1,3 @@ + + + diff --git a/src/version.js b/src/version.js index 246ab2a7..ae37abee 100644 --- a/src/version.js +++ b/src/version.js @@ -2,5 +2,5 @@ jasmine.version_= { "major": 1, "minor": 1, "build": 0, - "revision": 1308065344 + "revision": 1308154429 } diff --git a/tasks/build_dist.rb b/tasks/build_dist.rb index 76cedee1..92357ece 100644 --- a/tasks/build_dist.rb +++ b/tasks/build_dist.rb @@ -2,7 +2,6 @@ desc "Build core jasmine.js" task :build_dist => [:lint, :write_version_file] do puts 'Building Jasmine distribution from source' - require 'pp' concat_into('lib/jasmine.js') { core_sources + version_source_file } concat_into('lib/jasmine-html.js') { html_sources } diff --git a/tasks/build_specs.rb b/tasks/build_specs.rb index 2c76a695..ef208b3e 100644 --- a/tasks/build_specs.rb +++ b/tasks/build_specs.rb @@ -1,16 +1,43 @@ require 'ostruct' -desc "build the browser spec runner.html based on current tree" +desc "build the browser spec for Jasmine core based on current tree" task :build_runner_html do template = Tilt.new('spec/templates/runner.html.erb') File.open('spec/runner.html', 'w+') do |f| - scope = OpenStruct.new(:source_tags => other_source_file_tags, + scope = OpenStruct.new(:title => "Jasmine Spec Runner: Jasmine Core", + :favicon => favicon, + :jasmine_tags => core_jasmine_tags, + :source_tags => other_source_file_tags, :spec_file_tags => spec_file_tags) f << template.render(scope) end end +def favicon + < +HTML +end + +def core_jasmine_tags + tags = %Q{} + tags << "\n " + tags << script_tags_for("../lib/jasmine.js") + tags << "\n " + tags << undefined_catch + tags +end + +def undefined_catch + < + // yes, really keep this here to keep us honest, but only for jasmine's own runner! [xw] + undefined = "diz be undefined yo"; + +HTML +end + def other_source_file_tags other_files = html_sources + console_sources script_tags_for other_files.collect { |f| "../#{f}" } @@ -21,12 +48,3 @@ def spec_file_tags script_tags_for spec_files.collect { |f| "../#{f}" } end -def script_tags_for(files) - script_tag = Tilt::new('spec/templates/script_tag.html.erb') - - files.inject([]) do |tags, f| - scope = OpenStruct.new :file => f - tags << script_tag.render(scope) - tags - end.join("\n ") -end \ No newline at end of file diff --git a/tasks/helpers.rb b/tasks/helpers.rb index b306ade3..cf8fa6ee 100644 --- a/tasks/helpers.rb +++ b/tasks/helpers.rb @@ -34,4 +34,14 @@ end def version_hash @version ||= JSON.parse(File.new("src/version.json").read); +end + +def script_tags_for(files) + script_tag = Tilt::new('spec/templates/script_tag.html.erb') + + files.inject([]) do |tags, f| + scope = OpenStruct.new :file => f + tags << script_tag.render(scope) + tags + end.join("\n ") end \ No newline at end of file diff --git a/tasks/standalone.rb b/tasks/standalone.rb index 35835f07..ce79dc36 100644 --- a/tasks/standalone.rb +++ b/tasks/standalone.rb @@ -1,34 +1,84 @@ -desc "Build example project" -task :build_example_project => :need_pages_submodule do +require 'ostruct' + +desc "Build standalone distribution, block if zip of current version" +task :standalone_safe => [:require_pages_submodule, :protect_current_dist_zip, :build_spec_runner_html] + +desc "Build standalone distribution" +task :standalone => [:require_pages_submodule, :build_spec_runner_html] do require 'tmpdir' - temp_dir = File.join(Dir.tmpdir, 'jasmine-standalone-project') + zip_root = File.join(Dir.tmpdir, "zip_root") + temp_dir = File.join(zip_root, "jasmine-standalone-#{version_string}") puts "Building Example Project in #{temp_dir}" FileUtils.rm_r temp_dir if File.exist?(temp_dir) - Dir.mkdir(temp_dir) + FileUtils.mkdir_p(temp_dir) - root = File.expand_path(File.dirname(__FILE__)) + root = File.expand_path(File.join(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}") + lib_dir = File.join(temp_dir, "lib/jasmine-#{version_string}") 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" + "images/jasmine_favicon.png" => "jasmine_favicon.png", + "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") + zip_file_name = File.join(dist_dir, "jasmine-standalone-#{version_string}.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]*" + exec "cd #{zip_root} && zip #{zip_file_name} -r . -x .[a-zA-Z0-9]*" end + +desc "Build SpecRunner.html for standalone dist example project" +task :build_spec_runner_html do + template = Tilt.new('spec/templates/runner.html.erb') + + File.open('example/SpecRunner.html', 'w+') do |f| + scope = OpenStruct.new(:title => "Jasmine Spec Runner", + :favicon => example_favicon, + :jasmine_tags => example_jasmine_tags, + :source_tags => example_source_tags, + :spec_file_tags => example_spec_tags) + f << template.render(scope) + end +end + +def example_path + "lib/jasmine-#{version_string}" +end + +def example_favicon + < +HTML +end + +def example_jasmine_tags + tags = %Q{} + tags << "\n " + tags << script_tags_for(["#{example_path}/jasmine.js", "#{example_path}/jasmine-html.js"]) + tags +end + +def example_source_tags + script_tags_for ['spec/SpecHelper.js', 'spec/PlayerSpec.js'] +end + +def example_spec_tags + script_tags_for ['src/Player.js', 'src/Song.js'] +end + + +task :protect_current_dist_zip do + root = File.expand_path(File.join(File.dirname(__FILE__), '..')) + dist_dir = File.join(root, 'pages/downloads') + zip_file_name = File.join(dist_dir, "jasmine-standalone-#{version_string}.zip") + + raise "STOPPED: #{zip_file_name} already exists" if File.exist?(zip_file_name) +end \ No newline at end of file