Add regression tests to Cucumber.
This commit is contained in:
parent
0f4aed9ccf
commit
1c4b4ae271
|
@ -5,6 +5,13 @@ Feature: Rendering
|
|||
But I want to make it as simply as possible
|
||||
So render with Liquid and place in Layouts
|
||||
|
||||
Scenario: When receiving bad Liquid
|
||||
Given I have a "index.html" page with layout "simple" that contains "{% include invalid.html %}"
|
||||
And I have a simple layout that contains "{{ content }}"
|
||||
When I run jekyll build
|
||||
Then I should get a non-zero exit-status
|
||||
And I should see "Liquid Exception" in the build output
|
||||
|
||||
Scenario: Render Liquid and place in layout
|
||||
Given I have a "index.html" page with layout "simple" that contains "Hi there, Jekyll {{ jekyll.environment }}!"
|
||||
And I have a simple layout that contains "{{ content }}Ahoy, indeed!"
|
||||
|
|
|
@ -24,6 +24,7 @@ end
|
|||
After do
|
||||
FileUtils.rm_rf(TEST_DIR) if File.exist?(TEST_DIR)
|
||||
FileUtils.rm(JEKYLL_COMMAND_OUTPUT_FILE) if File.exist?(JEKYLL_COMMAND_OUTPUT_FILE)
|
||||
FileUtils.rm(JEKYLL_COMMAND_STATUS_FILE) if File.exist?(JEKYLL_COMMAND_STATUS_FILE)
|
||||
Dir.chdir(File.dirname(TEST_DIR))
|
||||
end
|
||||
|
||||
|
@ -227,3 +228,7 @@ end
|
|||
Then /^I should see "(.*)" in the build output$/ do |text|
|
||||
assert_match Regexp.new(text), jekyll_run_output
|
||||
end
|
||||
|
||||
Then /^I should get a non-zero exit(?:\-| )status$/ do
|
||||
assert jekyll_run_status > 0
|
||||
end
|
||||
|
|
|
@ -16,6 +16,7 @@ JEKYLL_SOURCE_DIR = File.dirname(File.dirname(File.dirname(__FILE__)))
|
|||
TEST_DIR = File.expand_path(File.join('..', '..', 'tmp', 'jekyll'), File.dirname(__FILE__))
|
||||
JEKYLL_PATH = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'bin', 'jekyll'))
|
||||
JEKYLL_COMMAND_OUTPUT_FILE = File.join(File.dirname(TEST_DIR), 'jekyll_output.txt')
|
||||
JEKYLL_COMMAND_STATUS_FILE = File.join(File.dirname(TEST_DIR), 'jekyll_status.txt')
|
||||
|
||||
def source_dir(*files)
|
||||
File.join(TEST_DIR, *files)
|
||||
|
@ -36,12 +37,20 @@ def jekyll_output_file
|
|||
JEKYLL_COMMAND_OUTPUT_FILE
|
||||
end
|
||||
|
||||
def jekyll_status_file
|
||||
JEKYLL_COMMAND_STATUS_FILE
|
||||
end
|
||||
|
||||
def jekyll_run_output
|
||||
File.read(jekyll_output_file) if File.file?(jekyll_output_file)
|
||||
end
|
||||
|
||||
def jekyll_run_status
|
||||
(File.read(jekyll_status_file) rescue 0).to_i
|
||||
end
|
||||
|
||||
def run_bundle(args)
|
||||
child = run_in_shell('bundle', *args.strip.split(' '))
|
||||
run_in_shell('bundle', *args.strip.split(' '))
|
||||
end
|
||||
|
||||
def run_jekyll(args)
|
||||
|
@ -49,8 +58,21 @@ def run_jekyll(args)
|
|||
child.status.exitstatus == 0
|
||||
end
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# XXX: POSIX::Spawn::Child does not write output when the exit status is > 0
|
||||
# for example when doing [:out, :err] => [file, "w"] it will skip
|
||||
# writing the file entirely, we sould switch to Open.
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
def run_in_shell(*args)
|
||||
POSIX::Spawn::Child.new *args, :out => [JEKYLL_COMMAND_OUTPUT_FILE, "w"]
|
||||
spawned = POSIX::Spawn::Child.new(*args)
|
||||
status = spawned.status.exitstatus
|
||||
File.write(JEKYLL_COMMAND_STATUS_FILE, status)
|
||||
File.open(JEKYLL_COMMAND_OUTPUT_FILE, "w+") do |file|
|
||||
status == 0 ? file.write(spawned.out) : file.write(spawned.err)
|
||||
end
|
||||
|
||||
spawned
|
||||
end
|
||||
|
||||
def slug(title)
|
||||
|
|
Loading…
Reference in New Issue