File: Rakefile

package info (click to toggle)
ruby-haml 4.0.7-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 880 kB
  • ctags: 724
  • sloc: ruby: 5,659; perl: 20; makefile: 17
file content (136 lines) | stat: -rw-r--r-- 3,563 bytes parent folder | download | duplicates (3)
1
2
3
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
require "rake/clean"
require "rake/testtask"
require "rubygems/package_task"

task :default => :test

CLEAN.replace %w(pkg doc coverage .yardoc test/haml vendor)

def silence_warnings
  the_real_stderr, $stderr = $stderr, StringIO.new
  yield
ensure
  $stderr = the_real_stderr
end

desc "Benchmark Haml against ERb. TIMES=n sets the number of runs, default is 1000."
task :benchmark do
  sh "ruby benchmark.rb #{ENV['TIMES']}"
end

Rake::TestTask.new do |t|
  t.libs << 'lib' << 'test'
  # haml-spec tests are explicitly added after other tests so they don't
  # interfere with the Haml loading process which can cause test failures
  files = Dir["test/*_test.rb"]
  files.concat(Dir['test/haml-spec/*_test.rb'])
  t.test_files = files
  t.verbose = true
end

task :set_coverage_env do
  ENV["COVERAGE"] = "true"
end

desc "Run Simplecov (only works on 1.9)"
task :coverage => [:set_coverage_env, :test]

gemspec = File.expand_path("../haml.gemspec", __FILE__)
if File.exist? gemspec
  Gem::PackageTask.new(eval(File.read(gemspec))) { |pkg| }
end

task :submodules do
  if File.exist?(File.dirname(__FILE__) + "/.git")
    sh %{git submodule sync}
    sh %{git submodule update --init --recursive}
  end
end

begin
  # While clever, 'silence_warnings' makes the Debian build fail.
  # We prefer having the warnings and having the build succeed.
  #silence_warnings do
    require 'yard'
  #end

  namespace :doc do
    desc "List all undocumented methods and classes."
    task :undocumented do
      command = 'yard --list --query '
      command << '"object.docstring.blank? && '
      command << '!(object.type == :method && object.is_alias?)"'
      sh command
    end
  end

  desc "Generate documentation"
  task(:doc) {sh "yard"}

  desc "Generate documentation incrementally"
  task(:redoc) {sh "yard -c"}

rescue LoadError
end

  desc <<END
Profile Haml.
  TIMES=n sets the number of runs. Defaults to 1000.
  FILE=str sets the file to profile. Defaults to 'standard'
  OUTPUT=str sets the ruby-prof output format.
    Can be Flat, CallInfo, or Graph. Defaults to Flat. Defaults to Flat.
END
task :profile do
  times  = (ENV['TIMES'] || '1000').to_i
  file   = ENV['FILE']

  require 'bundler/setup'
  require 'ruby-prof'
  require 'haml'

  file = File.read(File.expand_path("../test/templates/#{file || 'standard'}.haml", __FILE__))
  obj = Object.new
  Haml::Engine.new(file, :ugly => true).def_method(obj, :render)
  result = RubyProf.profile { times.times { obj.render } }

  RubyProf.const_get("#{(ENV['OUTPUT'] || 'Flat').capitalize}Printer").new(result).print
end

def gemfiles
  @gemfiles ||= begin
    Dir[File.dirname(__FILE__) + '/test/gemfiles/Gemfile.*'].
      reject {|f| f =~ /\.lock$/}.
      reject {|f| RUBY_VERSION < '1.9.3' && f =~ /Gemfile.rails-(\d+).\d+.x/ && $1.to_i > 3}
  end
end

def with_each_gemfile
  old_env = ENV['BUNDLE_GEMFILE']
  gemfiles.each do |gemfile|
    puts "Using gemfile: #{gemfile}"
    ENV['BUNDLE_GEMFILE'] = gemfile
    yield
  end
ensure
  ENV['BUNDLE_GEMFILE'] = old_env
end

namespace :test do
  namespace :bundles do
    desc "Install all dependencies necessary to test Haml."
    task :install do
      with_each_gemfile {sh "bundle"}
    end

    desc "Update all dependencies for testing Haml."
    task :update do
      with_each_gemfile {sh "bundle update"}
    end
  end

  desc "Test all supported versions of rails. This takes a while."
  task :rails_compatibility => 'test:bundles:install' do
    with_each_gemfile {sh "bundle exec rake test"}
  end
  task :rc => :rails_compatibility
end