Class: JasmineDev
- Inherits:
-
Thor
- Object
- Thor
- JasmineDev
- Includes:
- Thor::Actions
- Defined in:
- lib/jasmine/tasks/jasmine_dev/base.rb,
lib/jasmine/tasks/jasmine_dev/js_hint.rb,
lib/jasmine/tasks/jasmine_dev/release.rb,
lib/jasmine/tasks/jasmine_dev/sources.rb,
lib/jasmine/tasks/jasmine_dev/version.rb,
lib/jasmine/tasks/jasmine_dev/count_specs.rb,
lib/jasmine/tasks/jasmine_dev/execute_specs.rb,
lib/jasmine/tasks/jasmine_dev/build_distribution.rb,
lib/jasmine/tasks/jasmine_dev/build_github_pages.rb,
lib/jasmine/tasks/jasmine_dev/build_standalone_runner.rb,
lib/jasmine/tasks/jasmine_dev/build_standalone_distribution.rb
Constant Summary collapse
- JASMINE_SOURCES =
{ :core => [ "base.js", "util.js", "Env.js", "Reporter.js", "Block.js", "JsApiReporter.js", "Matchers.js", "mock-timeout.js", "MultiReporter.js", "NestedResults.js", "PrettyPrinter.js", "Queue.js", "Runner.js", "Spec.js", "Suite.js", "WaitsBlock.js", "WaitsForBlock.js" ], :html => [ "HtmlReporterHelpers.js", "HtmlReporter.js", "ReporterView.js", "SpecView.js", "SuiteView.js", "TrivialReporter.js" ] }
Class Method Summary collapse
Instance Method Summary collapse
- #build_distribution(directory = "./lib/jasmine-core") ⇒ Object
- #build_github_pages(pages_dir = File.expand_path(File.join('.', 'pages'))) ⇒ Object
- #build_standalone_distribution(download_dir = File.expand_path(File.join('.', 'pages', 'downloads'))) ⇒ Object
- #build_standalone_runner ⇒ Object
- #count_specs ⇒ Object
- #display_version ⇒ Object
- #execute_specs ⇒ Object
- #execute_specs_in_browser ⇒ Object
- #execute_specs_in_node ⇒ Object
- #js_hint ⇒ Object
- #release_prep ⇒ Object
- #write_version_files ⇒ Object
Class Method Details
.project_root ⇒ Object
15 16 17 |
# File 'lib/jasmine/tasks/jasmine_dev/base.rb', line 15 def self.project_root File.join(JasmineDev.source_root, '..', '..') end |
.source_paths ⇒ Object
8 9 10 11 12 13 |
# File 'lib/jasmine/tasks/jasmine_dev/base.rb', line 8 def self.source_paths [ File.join(JasmineDev.project_root, 'lib', 'jasmine-core'), JasmineDev.project_root ] end |
.source_root ⇒ Object
4 5 6 |
# File 'lib/jasmine/tasks/jasmine_dev/base.rb', line 4 def self.source_root File.dirname(__FILE__) end |
.spacer ⇒ Object
19 20 21 |
# File 'lib/jasmine/tasks/jasmine_dev/base.rb', line 19 def self.spacer "\n--------------------" end |
Instance Method Details
#build_distribution(directory = "./lib/jasmine-core") ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/jasmine/tasks/jasmine_dev/build_distribution.rb', line 4 def build_distribution(directory = "./lib/jasmine-core") invoke :js_hint say JasmineDev.spacer say "Building Jasmine distribution from source into #{directory}", :cyan say 'Building JavaScript...', :yellow inside directory do create_file "jasmine.js", concat_contents_of(jasmine_js_paths), :force => true create_file "jasmine-html.js", concat_contents_of(jasmine_html_js_paths), :force => true end say 'Building CSS...', :yellow run "compass compile", :capture => true copy_file File.join("#{JasmineDev.project_root}", 'src', 'html', 'jasmine.css'), File.join(directory, 'jasmine.css') end |
#build_github_pages(pages_dir = File.expand_path(File.join('.', 'pages'))) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/jasmine/tasks/jasmine_dev/build_github_pages.rb', line 4 def build_github_pages(pages_dir = File.(File.join('.', 'pages'))) say JasmineDev.spacer say "Building Github Pages...", :cyan return unless pages_submodule_installed? project_lib_dir = File.join(JasmineDev.project_root, 'lib', 'jasmine-core') pages_lib_dir = File.join(pages_dir, 'lib') FileUtils.rm_r(pages_lib_dir) if File.exist?(pages_lib_dir) ['jasmine.js', 'jasmine-html.js', 'jasmine.css'].each do |file| copy_file File.join(project_lib_dir, file), File.join(pages_lib_dir, file) end inside File.join(JasmineDev.project_root, 'pages', 'src') do run_with_output "bundle exec rocco -l js introduction.js -t layout.mustache -o #{pages_dir}" end inside pages_dir do copy_file File.join(pages_dir,'introduction.html'), File.join(pages_dir,'index.html') end end |
#build_standalone_distribution(download_dir = File.expand_path(File.join('.', 'pages', 'downloads'))) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/jasmine/tasks/jasmine_dev/build_standalone_distribution.rb', line 5 def build_standalone_distribution(download_dir = File.(File.join('.', 'pages', 'downloads'))) invoke :build_distribution say JasmineDev.spacer say "Building standalone distribution...", :cyan say "Staging files...", :yellow lib_files.each do |f| copy_file f, File.join(standalone_temp_dir, 'lib', "jasmine-#{version_string}", f) end ['src', 'spec'].each do |dir| directory File.join('lib', 'jasmine-core', 'example', dir), File.join(standalone_temp_dir, dir) end invoke :build_standalone_runner say "Zipping distribution...", :yellow inside standalone_temp_dir do run_with_output "zip -rq ../jasmine-standalone-#{version_string}.zip ." say "Copying Zip file to downloads directory", :yellow run "mkdir -p #{download_dir}" run "cp ../jasmine-standalone-#{version_string}.zip #{download_dir}/" end end |
#build_standalone_runner ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/jasmine/tasks/jasmine_dev/build_standalone_runner.rb', line 6 def build_standalone_runner say JasmineDev.spacer say "Building standalone runner HTML...", :cyan create_file File.join(standalone_temp_dir, 'SpecRunner.html') do template = Tilt.new(File.join('spec', 'templates','runner.html.erb')) scope = OpenStruct.new(:title => "Jasmine Spec Runner", :favicon => example_favicon, :jasmine_tags => , :source_tags => , :spec_file_tags => ) template.render(scope) end end |
#count_specs ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/jasmine/tasks/jasmine_dev/count_specs.rb', line 4 def count_specs say JasmineDev.spacer say "Counting specs...", :cyan core_spec_count = count_specs_in(File.join('spec', 'core')) console_spec_count = count_specs_in(File.join('spec', 'console')) html_spec_count = count_specs_in(File.join('spec', 'html')) say "#{(core_spec_count + console_spec_count).to_s} ", :yellow say "specs for Node.js runner (exclude DOM-related specs)" say "#{(core_spec_count + console_spec_count + html_spec_count).to_s} ", :yellow say "specs for Browser runner (all specs)" say "\n" say "Please verify that these numbers match the runner output." end |
#display_version ⇒ Object
30 31 32 33 34 35 36 37 38 39 |
# File 'lib/jasmine/tasks/jasmine_dev/version.rb', line 30 def display_version say "Current version information from src/version.json", :cyan say "Display version: " say "#{version_string}", :yellow say "Version object: " say "#{version_object_old}", :yellow end |
#execute_specs ⇒ Object
35 36 37 38 |
# File 'lib/jasmine/tasks/jasmine_dev/execute_specs.rb', line 35 def execute_specs invoke :execute_specs_in_node invoke :execute_specs_in_browser end |
#execute_specs_in_browser ⇒ Object
22 23 24 25 26 27 28 29 30 31 |
# File 'lib/jasmine/tasks/jasmine_dev/execute_specs.rb', line 22 def execute_specs_in_browser invoke :build_distribution invoke :count_specs say JasmineDev.spacer say "Running all appropriate specs via the default web browser...", :cyan open_specs_in_browser end |
#execute_specs_in_node ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/jasmine/tasks/jasmine_dev/execute_specs.rb', line 5 def execute_specs_in_node return unless node_installed? invoke :build_distribution invoke :count_specs say JasmineDev.spacer say "Running all appropriate specs via Node.js...", :cyan with_color_option = STDOUT.isatty ? "--color" : "--noColor" run_with_output "node spec/node_suite.js #{with_color_option}", :capture => true end |
#js_hint ⇒ Object
4 5 6 7 8 9 10 11 12 |
# File 'lib/jasmine/tasks/jasmine_dev/js_hint.rb', line 4 def js_hint say JasmineDev.spacer return unless node_installed? say "Running JSHint on Jasmine source and specs...", :cyan run_with_output "node jshint/run.js", :capture => true end |
#release_prep ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 |
# File 'lib/jasmine/tasks/jasmine_dev/release.rb', line 4 def release_prep say JasmineDev.spacer say "Building Release...", :cyan return unless pages_submodule_installed? invoke :write_version_files invoke :build_distribution invoke :build_standalone_distribution invoke :build_github_pages end |
#write_version_files ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/jasmine/tasks/jasmine_dev/version.rb', line 5 def write_version_files say JasmineDev.spacer say "Building version files", :cyan scope = OpenStruct.new(:major => version_object["major"], :minor => version_object["minor"], :build => version_object["build"], :release_candidate => version_object["release_candidate"], :revision => Time.now.to_i) js_template = Tilt.new(File.join(JasmineDev.project_root, 'src', 'templates', 'version.js.erb')) create_file File.join(JasmineDev.project_root, 'src', 'version.js'), :force => true do js_template.render(scope) end rb_template = Tilt.new(File.join(JasmineDev.project_root, 'src', 'templates', 'version.rb.erb')) create_file File.join(JasmineDev.project_root, 'lib', 'jasmine-core', 'version.rb'), :force => true do rb_template.render(scope) end end |