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 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
|
def jruby?
defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
end
if ENV["CI"]
require "codeclimate-test-reporter"
CodeClimate::TestReporter.start
else
require File.expand_path("../simplecov_custom_profile", __FILE__)
SimpleCov.start "gem" do
add_filter "/vendor/gem"
add_filter "/vendor/bundle"
add_filter ".bundle"
end
end
require "nokogiri"
require 'rubygems'
require 'ostruct'
require 'minitest/autorun'
require 'minitest/reporters'
require 'rspec/mocks'
require "jekyll"
Jekyll.logger = Logger.new(StringIO.new)
unless jruby?
require 'rdiscount'
require 'redcarpet'
end
require 'kramdown'
require 'shoulda'
include Jekyll
# Report with color.
Minitest::Reporters.use! [
Minitest::Reporters::DefaultReporter.new(
:color => true
)
]
module Minitest::Assertions
def assert_exist(filename, msg = nil)
msg = message(msg) {
"Expected '#{filename}' to exist"
}
assert File.exist?(filename), msg
end
def refute_exist(filename, msg = nil)
msg = message(msg) {
"Expected '#{filename}' not to exist"
}
refute File.exist?(filename), msg
end
end
module DirectoryHelpers
def dest_dir(*subdirs)
test_dir('dest', *subdirs)
end
def source_dir(*subdirs)
test_dir('source', *subdirs)
end
def test_dir(*subdirs)
File.join(File.dirname(__FILE__), *subdirs)
end
end
class JekyllUnitTest < Minitest::Test
include ::RSpec::Mocks::ExampleMethods
include DirectoryHelpers
extend DirectoryHelpers
def mu_pp obj
s = obj.is_a?(Hash) ? JSON.pretty_generate(obj) : obj.inspect
s = s.encode Encoding.default_external if defined? Encoding
s
end
def mocks_expect(*args)
RSpec::Mocks::ExampleMethods::ExpectHost.instance_method(:expect).\
bind(self).call(*args)
end
def before_setup
RSpec::Mocks.setup
super
end
def after_teardown
super
RSpec::Mocks.verify
ensure
RSpec::Mocks.teardown
end
def fixture_site(overrides = {})
Jekyll::Site.new(site_configuration(overrides))
end
def default_configuration
Marshal.load(Marshal.dump(Jekyll::Configuration::DEFAULTS))
end
def build_configs(overrides, base_hash = default_configuration)
Utils.deep_merge_hashes(base_hash, overrides)
end
def site_configuration(overrides = {})
full_overrides = build_configs(overrides, build_configs({
"destination" => dest_dir,
"incremental" => false
}))
build_configs({
"source" => source_dir
}, full_overrides).
fix_common_issues.
backwards_compatibilize.
add_default_collections
end
def clear_dest
FileUtils.rm_rf(dest_dir)
FileUtils.rm_rf(source_dir('.jekyll-metadata'))
end
def directory_with_contents(path)
FileUtils.rm_rf(path)
FileUtils.mkdir(path)
File.open("#{path}/index.html", "w"){ |f| f.write("I was previously generated.") }
end
def with_env(key, value)
old_value = ENV[key]
ENV[key] = value
yield
ENV[key] = old_value
end
def capture_output
stderr = StringIO.new
Jekyll.logger = Logger.new stderr
yield
stderr.rewind
return stderr.string.to_s
end
alias_method :capture_stdout, :capture_output
alias_method :capture_stderr, :capture_output
def nokogiri_fragment(str)
Nokogiri::HTML.fragment(
str
)
end
end
|