forked from asciidoctor/asciidoctor
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Rakefile
143 lines (128 loc) · 4.12 KB
/
Rakefile
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
137
138
139
140
141
142
143
require File.expand_path '../lib/asciidoctor/version', __FILE__
def prepare_test_env
# rather than hardcoding gc settings in test task,
# could use https://gist.github.com/benders/788695
ENV['RUBY_GC_MALLOC_LIMIT'] = 128_000_000.to_s
ENV['RUBY_GC_OLDMALLOC_LIMIT'] = 128_000_000.to_s
if RUBY_VERSION >= '2.1'
ENV['RUBY_GC_HEAP_INIT_SLOTS'] = 800_000.to_s
ENV['RUBY_GC_HEAP_FREE_SLOTS'] = 800_000.to_s
ENV['RUBY_GC_HEAP_GROWTH_MAX_SLOTS'] = 250_000.to_s
ENV['RUBY_GC_HEAP_GROWTH_FACTOR'] = 1.25.to_s
else
ENV['RUBY_FREE_MIN'] = 800_000.to_s
end
end
begin
require 'rake/testtask'
Rake::TestTask.new(:test) do |test|
prepare_test_env
puts %(LANG: #{ENV['LANG']}) if ENV.key? 'TRAVIS_BUILD_ID'
test.libs << 'test'
test.pattern = 'test/**/*_test.rb'
test.verbose = true
test.warning = true
end
task :default => :test
rescue LoadError
end
=begin
# Run tests with Encoding.default_external set to US-ASCII
begin
Rake::TestTask.new(:test_us_ascii) do |test|
prepare_test_env
puts "LANG: #{ENV['LANG']}"
test.libs << 'test'
test.pattern = 'test/**/*_test.rb'
test.ruby_opts << '-EUS-ASCII' if RUBY_VERSION >= '1.9'
test.verbose = true
test.warning = true
end
rescue LoadError
end
=end
begin
require 'cucumber/rake/task'
Cucumber::Rake::Task.new(:features) do |t|
end
rescue LoadError
end
def ci_setup_tasks
tasks = []
begin
require 'ci/reporter/rake/minitest'
tasks << 'ci:setup:minitest'
# FIXME reporter for Cucumber tests not activating
#require 'ci/reporter/rake/cucumber'
#tasks << 'ci:setup:cucumber'
rescue LoadError
end if ENV['SHIPPABLE'] && RUBY_VERSION >= '1.9.3'
tasks
end
desc 'Activates coverage and JUnit-style XML reports for tests'
task :coverage => ci_setup_tasks do
# exclude coverage run for Ruby 1.8.7 or (disabled) if running on Travis CI
ENV['COVERAGE'] = 'true' if RUBY_VERSION >= '1.9.3' # && (ENV['SHIPPABLE'] || !ENV['TRAVIS_BUILD_ID'])
ENV['CI_REPORTS'] = 'shippable/testresults'
ENV['COVERAGE_REPORTS'] = 'shippable/codecoverage'
end
namespace :test do
desc 'Run unit and feature tests'
task :all => [:test,:features]
end
=begin
begin
require 'rdoc/task'
RDoc::Task.new do |rdoc|
rdoc.rdoc_dir = 'rdoc'
rdoc.title = "Asciidoctor #{Asciidoctor::VERSION}"
rdoc.markup = 'tomdoc' if rdoc.respond_to?(:markup)
rdoc.rdoc_files.include('LICENSE.adoc', 'lib/**/*.rb')
end
rescue LoadError
end
=end
begin
require 'yard'
require 'yard-tomdoc'
require './lib/asciidoctor'
# Prevent YARD from breaking command statements in literal paragraphs
class CommandBlockPostprocessor < Asciidoctor::Extensions::Postprocessor
def process document, output
output.gsub(/<pre>\$ (.+?)<\/pre>/m, '<pre class="command code"><span class="const">$</span> \1</pre>')
end
end
Asciidoctor::Extensions.register do
postprocessor CommandBlockPostprocessor
end
# register .adoc extension for AsciiDoc markup helper
YARD::Templates::Helpers::MarkupHelper::MARKUP_EXTENSIONS[:asciidoc] = %w(adoc)
YARD::Rake::YardocTask.new do |yard|
yard.files = %w(
lib/**/*.rb
-
CHANGELOG.adoc
LICENSE.adoc
)
# --no-highlight enabled to prevent verbatim blocks in AsciiDoc that begin with $ from being dropped
# need to patch htmlify method to not attempt to syntax highlight blocks (or fix what's wrong)
yard.options = (IO.readlines '.yardopts').map {|l| l.chomp.delete('"').split ' ', 2 }.flatten if ::File.file? '.yardopts'
end
rescue LoadError
end
begin
require 'bundler/gem_tasks'
# Enhance the release task to create an explicit commit for the release
#Rake::Task[:release].enhance [:commit_release]
# NOTE you don't need to push after updating version and committing locally
# WARNING no longer works; it's now necessary to get master in a state ready for tagging
task :commit_release do
Bundler::GemHelper.new.send(:guard_clean)
sh "git commit --allow-empty -a -m 'Release #{Asciidoctor::VERSION}'"
end
rescue LoadError
end
desc 'Open an irb session preloaded with this library'
task :console do
sh 'bundle console', :verbose => false
end