gems.compass-1.0.3.Rakefile Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sass-maven-plugin Show documentation
Show all versions of sass-maven-plugin Show documentation
A Maven Plugin that compiles Sass files.
sh "git checkout lib/compass/generated_version.rb"
require 'rubygems'
require 'rubygems/package_task'
require 'rake/testtask'
require 'fileutils'
if ENV["PKG"]
$: << File.expand_path(File.dirname(__FILE__))+"/lib"
else
require 'bundler/setup'
end
unless ENV['CI']
require 'colorize'
require 'fileutils'
end
begin
require 'rake/dsl_definition'
rescue LoadError
# pass
end
# ----- Default: Testing ------
task :default => [:test, :features]
begin
require 'cucumber'
require 'cucumber/rake/task'
Cucumber::Rake::Task.new(:features) do |t|
#t.cucumber_opts = %w{--format progress}
end
rescue LoadError
$stderr.puts "cannot load cucumber"
end
Rake::TestTask.new :test do |t|
t.libs << 'lib'
t.libs << 'test'
test_files = FileList['test/**/*_test.rb']
test_files.exclude('test/rails/*', 'test/haml/*')
t.test_files = test_files
t.verbose = true
end
Rake::TestTask.new :units do |t|
t.libs << 'lib'
t.libs << 'test'
test_files = FileList['test/units/**/*_test.rb']
test_files.exclude('test/rails/*', 'test/haml/*')
t.test_files = test_files
t.verbose = true
end
Rake::TestTask.new :integrations do |t|
t.libs << 'lib'
t.libs << 'test'
test_files = FileList['test/integrations/**/*_test.rb']
test_files.exclude('test/rails/*', 'test/haml/*')
t.test_files = test_files
t.verbose = true
end
namespace :git do
task :clean do
sh "git", "clean", "-fdx"
end
end
begin
require 'cucumber/rake/task'
require 'rcov/rcovtask'
namespace :rcov do
Cucumber::Rake::Task.new(:cucumber) do |t|
t.rcov = true
t.rcov_opts = %w{--exclude osx\/objc,gems\/,spec\/,features\/ --aggregate coverage.data}
t.rcov_opts << %[-o "coverage"]
end
Rcov::RcovTask.new(:units) do |rcov|
rcov.libs << 'lib'
test_files = FileList['test/**/*_test.rb']
test_files.exclude('test/rails/*', 'test/haml/*')
rcov.pattern = test_files
rcov.output_dir = 'coverage'
rcov.verbose = true
rcov.rcov_opts = %w{--exclude osx\/objc,gems\/,spec\/,features\/ --aggregate coverage.data}
rcov.rcov_opts << %[-o "coverage" --sort coverage]
end
desc "Run both specs and features to generate aggregated coverage"
task :all do |t|
rm "coverage.data" if File.exist?("coverage.data")
Rake::Task["rcov:units"].invoke
Rake::Task["rcov:cucumber"].invoke
end
end
rescue LoadError => e
puts "WARNING: #{e}"
end
namespace :test do
debug = false
desc "update test expectations if needed"
task :update do
Rake::Task['test:update:fixtures'].invoke
end
task :debug do
debug = true
Rake::Task['test:update:fixtures'].invoke
end
namespace :update do
EXPECTED = 'css'
TMP = 'tmp'
#desc "update fixture expectations for test cases if needed"
task :fixtures do
fixtures = File.join('test/fixtures/stylesheets/compass'.split('/'))
# remove any existing temporary files
FileUtils.rm_rf(File.join(File.dirname(__FILE__), fixtures, TMP, '.'))
# compile the fixtures
puts "checking test cases..."
CHECKMARK = "\u2713 "
filter = debug ? '--trace' : "| grep 'error.*#{fixtures}'"
errors = %x[compass compile #{fixtures} #{filter}]
# check for compilation errors
if not errors.empty?
puts "Please fix the following errors before proceeding:".colorize(:red) if not debug
puts errors
else
# check to see what's changed
diff = %x[diff -r #{File.join(fixtures, EXPECTED, '')} #{File.join(fixtures, TMP, '')}]
# ignore non-CSS files in css/
diff.gsub!(/^Only in .*\/css\/(.*)\:.*[^.]/, '')
if diff.empty?
puts "#{CHECKMARK}Cool! Looks like all the tests are up to date".colorize(:green)
else
puts "The following changes were found:"
puts "===================================="
# check for new or removed expectations
diff.scan(/^Only in .*\/(#{EXPECTED}|#{TMP})\/(.*)\: (.*).css/).each do |match|
config = (match[0] == TMP) ? [:green, '>', 'NEW TEST'] : [:red, '<', 'DELETED']
puts "[#{File.join(match[1], match[2])}] #{config[2].colorize(config[0])}".colorize(:cyan)
new_file = File.join(File.dirname(__FILE__), fixtures, match[0], match[1], match[2]) + '.css'
puts File.read(new_file).gsub(/^(.*)/, config[1] + ' \1').colorize(config[0])
end
diff = diff.gsub(/^diff\s\-r\s.*\/tmp\/(.*).css/, '[\1]'.colorize(:cyan))
diff = diff.gsub(/^Only in .*\n?/, '')
diff = diff.gsub(/^(\<.*)/, '\1'.colorize(:red))
diff = diff.gsub(/^(\>.*)/, '\1'.colorize(:green))
diff = diff.gsub(/^(\d+.*)/, '\1'.colorize(:cyan))
puts diff
puts "===================================="
puts "Are all of these changes expected? [y/n]".colorize(:yellow)
if (($stdin.gets.chomp)[0] == 'y')
FileUtils.rm_rf(File.join(File.dirname(__FILE__), fixtures, EXPECTED, '.'))
FileUtils.cp_r(File.join(File.dirname(__FILE__), fixtures, TMP, '.'), File.join(File.dirname(__FILE__), fixtures, EXPECTED))
puts "#{CHECKMARK}Thanks! The test expectations have been updated".colorize(:green)
else
puts "Please manually update the test cases and expectations".colorize(:red)
end
end
end
end
end
end
# Release tasks
gemspec_file = FileList['compass.gemspec'].first
spec = eval(File.read(gemspec_file), binding, gemspec_file)
spec.files.delete("VERSION")
spec.files.delete("VERSION_NAME")
def spec.bump!
segments = version.to_s.split(".")
segments[-1] = segments.last.succ
self.version = Gem::Version.new(segments.join("."))
end
# Set SAME_VERSION when moving to a new major version and you want to specify the new version
# explicitly instead of bumping the current version.
# E.g. rake build SAME_VERSION=true
spec.bump! unless ENV["SAME_VERSION"]
desc "Run tests and build compass-#{spec.version}.gem"
task :build => [:default, :gem]
task :gem => :release_version
task :release_version do
open("lib/compass/generated_version.rb", "w") do |f|
f.write(< [:record_version, :push_gem, :tag]
desc "Build & Publish version #{spec.version}"
task :release => [:build, :publish]
Gem::PackageTask.new(spec) do |pkg|
pkg.need_zip = true
pkg.need_tar = true
end
desc "Record the new version in version control for posterity"
task :record_version do
unless ENV["SAME_VERSION"]
open(FileList["VERSION"].first, "w") do |f|
f.write(spec.version.to_s)
end
sh "git add VERSION"
sh "git checkout lib/compass/generated_version.rb"
sh %Q{git commit -m "Bump version to #{spec.version}."}
end
end
desc "Tag the repo as #{spec.version} and push the code and tag."
task :tag do
sh "git tag -a -m 'Version #{spec.version}' #{spec.version}"
sh "git push --tags origin #{`git rev-parse --abbrev-ref HEAD`}"
end
desc "Push compass-#{spec.version}.gem to the rubygems server"
task :push_gem do
sh "gem push pkg/compass-#{spec.version}.gem"
end
© 2015 - 2025 Weber Informatics LLC | Privacy Policy