Before do if File.directory?(TEST_DIR) FileUtils.rm_rf(TEST_DIR) end FileUtils.mkdir(TEST_DIR) Dir.chdir(TEST_DIR) end After do Dir.chdir(TEST_DIR) FileUtils.rm_rf(TEST_DIR) end Given /^I have a blank site in "(.*)"$/ do |path| FileUtils.mkdir(path) end # Like "I have a foo file" but gives a yaml front matter so jekyll actually processes it Given /^I have an? "(.*)" page(?: with (.*) "(.*)")? that contains "(.*)"$/ do |file, key, value, text| File.open(file, 'w') do |f| f.write < 1 parsed_date = DateTime.strptime(post['date'], '%Y-%m-%d %H:%M %z') post['date'] = parsed_date.to_s parsed_date.strftime('%Y-%m-%d') else parsed_date = Date.strptime(post['date'], '%m/%d/%Y') # WHY WOULD YOU EVER DO THIS post['date'] = parsed_date.to_s parsed_date.strftime('%Y-%m-%d') end path = File.join(before || '.', '_posts', after || '.', "#{date}-#{title}.#{ext}") end matter_hash = {} %w(title layout tag tags category categories published author path).each do |key| matter_hash[key] = post[key] if post[key] end if "post" == status matter_hash["date"] = post["date"] if post["date"] end matter = matter_hash.map { |k, v| "#{k}: #{v}\n" }.join.chomp content = post['content'] if post['input'] && post['filter'] content = "{{ #{post['input']} | #{post['filter']} }}" end File.open(path, 'w') do |f| f.write < true) end When /^I debug jekyll$/ do run_jekyll(:debug => true) end When /^I change "(.*)" to contain "(.*)"$/ do |file, text| File.open(file, 'a') do |f| f.write(text) end end Then /^the (.*) directory should exist$/ do |dir| assert File.directory?(dir), "The directory \"#{dir}\" does not exist" end Then /^I should see "(.*)" in "(.*)"$/ do |text, file| assert Regexp.new(text).match(File.open(file).readlines.join) end Then /^I should see escaped "(.*)" in "(.*)"$/ do |text, file| assert Regexp.new(Regexp.escape(text)).match(File.open(file).readlines.join) end Then /^the "(.*)" file should exist$/ do |file| assert File.file?(file) end Then /^the "(.*)" file should not exist$/ do |file| assert !File.exists?(file) end Then /^I should see today's time in "(.*)"$/ do |file| assert_match Regexp.new(Regexp.escape(Time.now.to_s)), File.open(file).readlines.join end Then /^I should see today's date in "(.*)"$/ do |file| assert_match Regexp.new(Date.today.to_s), File.open(file).readlines.join end