Merge pull request #1312 from Arcovion/windows-specs

Fix specs on windows
This commit is contained in:
Eliott Appleford 2014-07-06 07:44:20 +01:00
commit 249c649760
10 changed files with 55 additions and 56 deletions

46
Gemfile
View file

@ -1,39 +1,35 @@
source 'https://rubygems.org' source 'https://rubygems.org'
# Build and doc tools # Build and doc tools
gem 'rake', '~> 10.3.2', require: false gem 'rake', '~> 10.3', require: false
gem 'yard', '~> 0.8.0', require: false gem 'yard', '~> 0.8', require: false
# Test tools # Test tools
gem 'cucumber', '~> 1.3.1' gem 'pry', '~> 0.10', group: :development
gem 'fivemat', '~> 1.2.1' gem 'aruba', '~> 0.6'
gem 'aruba', '~> 0.6.0' gem 'rspec', '~> 3.0'
gem 'rspec', '~> 2.12' gem 'fivemat', '~> 1.3'
gem 'simplecov' gem 'cucumber', '~> 1.3'
# Optional middleman dependencies, included for tests # Optional middleman dependencies, included for tests
gem 'sinatra', require: false gem 'less', '2.3.0', require: false
gem 'slim', require: false gem 'slim', '>= 2.0', require: false
gem 'liquid', require: false gem 'liquid', '>= 2.6', require: false
gem 'less', '~> 2.3.0', require: false gem 'stylus', '>= 1.0', require: false
gem 'stylus', require: false gem 'sinatra', '>= 1.4', require: false
gem 'asciidoctor', require: false gem 'redcarpet', '>= 3.1', require: false unless RUBY_ENGINE == 'jruby'
gem 'asciidoctor', '>= 0.1', require: false
platforms :ruby do # For less, note there is no compatible JS runtime for windows
gem 'therubyracer' gem 'therubyracer', '>= 0.12', platforms: :ruby
gem 'redcarpet', '~> 3.1' gem 'therubyrhino', '>= 2.0', platforms: :jruby
gem 'pry', require: false, group: :development
end
platforms :jruby do
gem 'therubyrhino'
end
# Code Quality # Code Quality
gem 'coveralls', require: false gem 'rubocop', '~> 0.24', require: false
gem 'rubocop', require: false gem 'simplecov', '0.7.1', require: false
gem 'coveralls', '~> 0.7', require: false
# Middleman itself # Middleman itself
gem 'middleman', path: 'middleman'
gem 'middleman-core', path: 'middleman-core' gem 'middleman-core', path: 'middleman-core'
gem 'middleman-sprockets', github: 'middleman/middleman-sprockets' gem 'middleman-sprockets', github: 'middleman/middleman-sprockets'
gem 'middleman', path: 'middleman'

View file

@ -19,6 +19,7 @@ Cucumber::Rake::Task.new do |t|
exempt_tags = ['--tags ~@wip'] exempt_tags = ['--tags ~@wip']
exempt_tags << '--tags ~@nojava' if RUBY_PLATFORM == 'java' exempt_tags << '--tags ~@nojava' if RUBY_PLATFORM == 'java'
exempt_tags << '--tags ~@encoding' unless Object.const_defined?(:Encoding) exempt_tags << '--tags ~@encoding' unless Object.const_defined?(:Encoding)
exempt_tags << '--tags ~@nowindows' if Gem.win_platform?
exempt_tags << '--tags ~@travishatesme' if ENV['TRAVIS'] == 'true' exempt_tags << '--tags ~@travishatesme' if ENV['TRAVIS'] == 'true'
t.cucumber_opts = "--color #{exempt_tags.join(' ')} --strict --format #{ENV['CUCUMBER_FORMAT'] || 'Fivemat'}" t.cucumber_opts = "--color #{exempt_tags.join(' ')} --strict --format #{ENV['CUCUMBER_FORMAT'] || 'Fivemat'}"
end end
@ -27,6 +28,7 @@ Cucumber::Rake::Task.new(:cucumber_wip) do |t|
exempt_tags = ['--tags @wip'] exempt_tags = ['--tags @wip']
exempt_tags << '--tags ~@nojava' if RUBY_PLATFORM == 'java' exempt_tags << '--tags ~@nojava' if RUBY_PLATFORM == 'java'
exempt_tags << '--tags ~@encoding' unless Object.const_defined?(:Encoding) exempt_tags << '--tags ~@encoding' unless Object.const_defined?(:Encoding)
exempt_tags << '--tags ~@nowindows' if Gem.win_platform?
t.cucumber_opts = "--color #{exempt_tags.join(' ')} --strict --format #{ENV['CUCUMBER_FORMAT'] || 'Fivemat'}" t.cucumber_opts = "--color #{exempt_tags.join(' ')} --strict --format #{ENV['CUCUMBER_FORMAT'] || 'Fivemat'}"
end end
@ -34,7 +36,7 @@ require 'rspec/core/rake_task'
desc 'Run RSpec' desc 'Run RSpec'
RSpec::Core::RakeTask.new do |spec| RSpec::Core::RakeTask.new do |spec|
spec.pattern = 'spec/**/*_spec.rb' spec.pattern = 'spec/**/*_spec.rb'
spec.rspec_opts = ['--color', '--format nested'] spec.rspec_opts = ['--color', '--format documentation']
end end
desc 'Run tests, both RSpec and Cucumber' desc 'Run tests, both RSpec and Cucumber'

View file

@ -9,8 +9,7 @@ Feature: GZIP assets during build
| build/javascripts/test.js.gz | | build/javascripts/test.js.gz |
| build/stylesheets/test.css | | build/stylesheets/test.css |
| build/stylesheets/test.css.gz | | build/stylesheets/test.css.gz |
When I run `file build/javascripts/test.js.gz` And the file "build/javascripts/test.js.gz" should be gzipped
Then the output should contain "gzip"
Scenario: Preview server doesn't change Scenario: Preview server doesn't change
Given the Server is running at "gzip-app" Given the Server is running at "gzip-app"

View file

@ -19,10 +19,7 @@ Feature: More default extensions
When I go to "/stylesheets/style2.css" When I go to "/stylesheets/style2.css"
Then I should see "section" Then I should see "section"
Then I should not see "I am in the layout" Then I should not see "I am in the layout"
When I go to "/stylesheets/style3.css"
Then I should see "color"
Then I should not see "I am in the layout"
Scenario: Default extensions build Scenario: Default extensions build
Given a fixture app "more-implied-extensions-app" Given a fixture app "more-implied-extensions-app"
And a successfully built app at "more-implied-extensions-app" And a successfully built app at "more-implied-extensions-app"
@ -35,7 +32,6 @@ Feature: More default extensions
| javascripts/app.js | | javascripts/app.js |
| stylesheets/style.css | | stylesheets/style.css |
| stylesheets/style2.css | | stylesheets/style2.css |
| stylesheets/style3.css |
And the file "test.html" should contain "Hello" And the file "test.html" should contain "Hello"
And the file "test2.html" should contain "World" And the file "test2.html" should contain "World"
And the file "test3.html" should contain "Howdy" And the file "test3.html" should contain "Howdy"
@ -46,5 +42,3 @@ Feature: More default extensions
And the file "stylesheets/style.css" should not contain "I am in the layout" And the file "stylesheets/style.css" should not contain "I am in the layout"
And the file "stylesheets/style2.css" should contain "section" And the file "stylesheets/style2.css" should contain "section"
And the file "stylesheets/style2.css" should not contain "I am in the layout" And the file "stylesheets/style2.css" should not contain "I am in the layout"
And the file "stylesheets/style3.css" should contain "color"
And the file "stylesheets/style3.css" should not contain "I am in the layout"

View file

@ -1,6 +1,6 @@
@nojava @nojava @nowindows
Feature: Compile a complicated Twitter bootstrap app Feature: Compile a complicated Twitter bootstrap app
Scenario: User drops Twitter Bootstrap source into an app Scenario: User drops Twitter Bootstrap source into an app
Given a successfully built app at "twitter-bootstrap-app" Given a successfully built app at "twitter-bootstrap-app"

View file

@ -1,4 +0,0 @@
@base: #f938ab;
.box {
color: @base;
}

View file

@ -1,13 +1,21 @@
MIDDLEMAN_ROOT_PATH = File.dirname(File.dirname(File.dirname(__FILE__)))
MIDDLEMAN_BIN_PATH = File.join(MIDDLEMAN_ROOT_PATH, 'bin')
ENV['PATH'] = "#{MIDDLEMAN_BIN_PATH}#{File::PATH_SEPARATOR}#{ENV['PATH']}"
require 'aruba/cucumber' require 'aruba/cucumber'
require 'aruba/jruby' require 'aruba/jruby'
require 'middleman-core/step_definitions/middleman_steps' require 'middleman-core/step_definitions/middleman_steps'
require 'middleman-core/step_definitions/builder_steps' require 'middleman-core/step_definitions/builder_steps'
require 'middleman-core/step_definitions/server_steps' require 'middleman-core/step_definitions/server_steps'
# Monkeypatch for windows support
module ArubaMonkeypatch
def detect_ruby(cmd)
if cmd.start_with?('middleman ') && Gem.win_platform?
"#{current_ruby} #{Dir.pwd}/bin/#{cmd}"
else
cmd.sub(/^ruby(?= )/, current_ruby)
end
end
end
World(ArubaMonkeypatch)
Before do Before do
@aruba_timeout_seconds = RUBY_PLATFORM == 'java' ? 120 : 60 @aruba_timeout_seconds = RUBY_PLATFORM == 'java' ? 120 : 60
end end

View file

@ -71,3 +71,7 @@ end
Then /^the file "([^"]*)" should contain '([^']*)'$/ do |file, partial_content| Then /^the file "([^"]*)" should contain '([^']*)'$/ do |file, partial_content|
check_file_content(file, partial_content, true) check_file_content(file, partial_content, true)
end end
And /the file "(.*)" should be gzipped/ do |file|
expect(File.binread(File.join(current_dir, file), 2)).to eq(['1F8B'].pack('H*'))
end

View file

@ -68,29 +68,29 @@ When /^I go to "([^\"]*)"$/ do |url|
end end
Then /^going to "([^\"]*)" should not raise an exception$/ do |url| Then /^going to "([^\"]*)" should not raise an exception$/ do |url|
lambda { @browser.get(URI.escape(url)) }.should_not raise_exception expect{ @browser.get(URI.escape(url)) }.to_not raise_exception
end end
Then /^the content type should be "([^\"]*)"$/ do |expected| Then /^the content type should be "([^\"]*)"$/ do |expected|
@browser.last_response.content_type.should start_with(expected) expect(@browser.last_response.content_type).to start_with(expected)
end end
Then /^I should see "([^\"]*)"$/ do |expected| Then /^I should see "([^\"]*)"$/ do |expected|
@browser.last_response.body.should include(expected) expect(@browser.last_response.body).to include(expected)
end end
Then /^I should see '([^\']*)'$/ do |expected| Then /^I should see '([^\']*)'$/ do |expected|
@browser.last_response.body.should include(expected) expect(@browser.last_response.body).to include(expected)
end end
Then /^I should see:$/ do |expected| Then /^I should see:$/ do |expected|
@browser.last_response.body.should include(expected) expect(@browser.last_response.body).to include(expected)
end end
Then /^I should not see "([^\"]*)"$/ do |expected| Then /^I should not see "([^\"]*)"$/ do |expected|
@browser.last_response.body.should_not include(expected) expect(@browser.last_response.body).to_not include(expected)
end end
Then /^I should see "([^\"]*)" lines$/ do |lines| Then /^I should see "([^\"]*)" lines$/ do |lines|
@browser.last_response.body.chomp.split($/).length.should == lines.to_i expect(@browser.last_response.body.chomp.split($/).length).to eq(lines.to_i)
end end

View file

@ -3,13 +3,13 @@ require 'middleman-core/util'
describe "Middleman::Util#binary?" do describe "Middleman::Util#binary?" do
%w(plain.txt unicode.txt unicode).each do |file| %w(plain.txt unicode.txt unicode).each do |file|
it "recognizes #{file} as not binary" do it "recognizes #{file} as not binary" do
expect(Middleman::Util.binary?(File.join(File.dirname(__FILE__), "binary_spec/#{file}"))).to be_false expect(Middleman::Util.binary?(File.join(File.dirname(__FILE__), "binary_spec/#{file}"))).to be false
end end
end end
%w(middleman.png middleman stars.svgz).each do |file| %w(middleman.png middleman stars.svgz).each do |file|
it "recognizes #{file} as binary" do it "recognizes #{file} as binary" do
expect(Middleman::Util.binary?(File.join(File.dirname(__FILE__), "binary_spec/#{file}"))).to be_true expect(Middleman::Util.binary?(File.join(File.dirname(__FILE__), "binary_spec/#{file}"))).to be true
end end
end end
end end