diff --git a/Gemfile.lock b/Gemfile.lock index ac3dadf8..134c4c4f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -312,7 +312,7 @@ GEM rspec-its (1.0.1) rspec-core (>= 2.99.0.beta1) rspec-expectations (>= 2.99.0.beta1) - rspec-mocks (2.99.2) + rspec-mocks (2.99.4) sentry-raven (0.15.3) faraday (>= 0.7.6) sidekiq (3.3.0) @@ -425,3 +425,6 @@ DEPENDENCIES travis-yaml! unicorn yard-sinatra! + +BUNDLED WITH + 1.12.4 diff --git a/spec/core/model/annotation_provider_spec.rb b/spec/core/model/annotation_provider_spec.rb index 31c3c607..4ada52ea 100644 --- a/spec/core/model/annotation_provider_spec.rb +++ b/spec/core/model/annotation_provider_spec.rb @@ -6,7 +6,7 @@ describe AnnotationProvider do let(:provider) { Factory(:annotation_provider) } - describe '.authenticate_provider' do + describe '.authenticate_provider', truncation: true do context 'given a valid username and key' do it 'authenticates the provider' do described_class.authenticate_provider(provider.api_username, provider.api_key).should eq(provider) diff --git a/spec/core/model/build/matrix_spec.rb b/spec/core/model/build/matrix_spec.rb index e212911f..55efab40 100644 --- a/spec/core/model/build/matrix_spec.rb +++ b/spec/core/model/build/matrix_spec.rb @@ -393,7 +393,7 @@ describe Build, 'matrix' do yml } - describe :expand_matrix do + describe :expand_matrix, truncation: true do it 'does not expand on :os' do build = Factory.create(:build, config: { rvm: ['1.9.3', '2.0.0'], os: ['osx', 'linux']}) build.matrix.map(&:config).should == [ diff --git a/spec/core/model/build/metrics_spec.rb b/spec/core/model/build/metrics_spec.rb index 76ad5a89..cc9b8769 100644 --- a/spec/core/model/build/metrics_spec.rb +++ b/spec/core/model/build/metrics_spec.rb @@ -2,7 +2,11 @@ require 'spec_helper_core' class BuildMetricsMock include do - attr_accessor :state + attr_accessor :state, :request + + def initialize(request) + @request = request + end def start(data = {}) self.state = :started @@ -12,16 +16,14 @@ class BuildMetricsMock Time.now end - def request - stub('request', created_at: Time.now - 60) - end end include Build::Metrics end describe Build::Metrics do - let(:build) { BuildMetricsMock.new } + let(:request) { stub('request', created_at: Time.now - 60) } + let(:build) { BuildMetricsMock.new(request) } let(:timer) { stub('meter', :update) } before :each do diff --git a/spec/core/model/build/update_branch_spec.rb b/spec/core/model/build/update_branch_spec.rb index 3c59967a..4a5c0a8e 100644 --- a/spec/core/model/build/update_branch_spec.rb +++ b/spec/core/model/build/update_branch_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper_core' -describe Build::UpdateBranch do +describe Build::UpdateBranch, truncation: true do include Support::ActiveRecord let(:request) { Factory.create(:request, event_type: event_type) } diff --git a/spec/core/model/build_spec.rb b/spec/core/model/build_spec.rb index edd2b476..e4827319 100644 --- a/spec/core/model/build_spec.rb +++ b/spec/core/model/build_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper_core' -describe Build do +describe Build, truncation: true do include Support::ActiveRecord let(:repository) { Factory(:repository) } diff --git a/spec/core/model/repository_spec.rb b/spec/core/model/repository_spec.rb index e27f7042..0ce140ab 100644 --- a/spec/core/model/repository_spec.rb +++ b/spec/core/model/repository_spec.rb @@ -1,10 +1,10 @@ require 'spec_helper_core' -describe Repository do +describe Repository, truncation: true do include Support::ActiveRecord describe '#last_completed_build' do - let(:repo) { Factory(:repository, name: 'foobarbaz', builds: [build1, build2]) } + let(:repo) { Factory(:repository, name: 'foobarbaz', builds: [build1, build2]) } let(:build1) { Factory(:build, finished_at: 1.hour.ago, state: :passed) } let(:build2) { Factory(:build, finished_at: Time.now, state: :failed) } diff --git a/spec/core/model/user_spec.rb b/spec/core/model/user_spec.rb index 0b943283..1375c28f 100644 --- a/spec/core/model/user_spec.rb +++ b/spec/core/model/user_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper_core' -describe User do +describe User, truncation: true do include Support::ActiveRecord let(:user) { Factory(:user, :github_oauth_token => 'token') } diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 52d713c0..c7e1dfc3 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -80,27 +80,6 @@ RSpec.configure do |c| endpoint.superclass.direct_subclasses.delete(endpoint) end end - #included do - #before :suite do - #DatabaseCleaner.clean_with(:truncation) - #end - - #before :each do - #DatabaseCleaner.strategy = :transaction - #end - - #before(:each, :truncation => true) do - #DatabaseCleaner.strategy = :truncation - #end - - #before :each do - #DatabaseCleaner.start - #end - - #after :each do - #DatabaseCleaner.clean - #end - #end end # this keeps Model.inspect from exploding which happens for diff --git a/spec/spec_helper_core.rb b/spec/spec_helper_core.rb new file mode 100644 index 00000000..9405df9d --- /dev/null +++ b/spec/spec_helper_core.rb @@ -0,0 +1,58 @@ +ENV['RAILS_ENV'] = ENV['ENV'] = 'test' + +require 'simplecov' unless RUBY_ENGINE == 'jruby' + +RSpec.configure do |c| + c.before(:each) { Time.now.utc.tap { | now| Time.stubs(:now).returns(now) } } +end + +require 'support' + +require 'travis' + +require 'travis/model' +require 'travis/states_cache' +require 'travis/testing' + +require 'travis/support' +require 'travis/testing/matchers' + +require 'gh' +require 'stringio' +require 'logger' +require 'patches/rspec_hash_diff' +require 'database_cleaner' + +Travis.logger = Logger.new(StringIO.new) +Travis.services = Travis::Services +ActionMailer::Base.delivery_method = :test + +RSpec.configure do |c| + c.mock_with :mocha + c.alias_example_to :fit, :focused => true + c.filter_run :focused => true + c.run_all_when_everything_filtered = true + # c.backtrace_clean_patterns.clear + + c.before :each do + DatabaseCleaner.strategy = :transaction + Travis.logger.level = Logger::INFO + Travis::Event.instance_variable_set(:@queues, nil) + Travis::Event.instance_variable_set(:@subscriptions, nil) + Travis::Event.stubs(:subscribers).returns [] + Travis.config.oauth2 ||= {} + Travis.config.oauth2.scope = 'public_repo,user' + Travis.config.repository.ssl_key.size = 1024 + Travis::Github.stubs(:scopes_for).returns(['public_repo', 'user']) + GH.reset + end +end + +# this keeps Model.inspect from exploding which happens for +# expected method calls in tests that do not use a db connection +require 'active_record' +ActiveRecord::Base.class_eval do + def self.inspect + super + end +end diff --git a/spec/support/active_record.rb b/spec/support/active_record.rb index 088a0816..b87add63 100644 --- a/spec/support/active_record.rb +++ b/spec/support/active_record.rb @@ -1,7 +1,6 @@ require 'active_record' require 'logger' require 'fileutils' -require 'database_cleaner' require 'travis/testing/factories' FileUtils.mkdir_p('log') @@ -16,19 +15,19 @@ ActiveRecord::Base.configurations = { 'test' => config } ActiveRecord::Base.establish_connection('test') DatabaseCleaner.clean_with :truncation -DatabaseCleaner.strategy = :transaction module Support module ActiveRecord extend ActiveSupport::Concern included do - before :all do - ::ActiveRecord::Base.establish_connection('test') + before :each, truncation: true do DatabaseCleaner.strategy = :truncation - DatabaseCleaner.start + end + + after :each do + DatabaseCleaner.clean end end - end end