Commit 0f31acd0ec9b8a6ccfe9c6b0038736ad724814c0

Authored by Dmitriy Zaporozhets
2 parents 1942b97d 490ab228

Merge pull request #6753 from jvanbaarsen/split_tests

Proposal for split testing
@@ -4,10 +4,12 @@ env: @@ -4,10 +4,12 @@ env:
4 - TRAVIS=true 4 - TRAVIS=true
5 matrix: 5 matrix:
6 - TASK=spinach DB=mysql 6 - TASK=spinach DB=mysql
7 - - TASK=spec DB=mysql 7 + - TASK=spec:api DB=mysql
  8 + - TASK=spec:other DB=mysql
8 - TASK=jasmine:ci DB=mysql 9 - TASK=jasmine:ci DB=mysql
9 - TASK=spinach DB=postgresql 10 - TASK=spinach DB=postgresql
10 - - TASK=spec DB=postgresql 11 + - TASK=spec:api DB=mysql
  12 + - TASK=spec:other DB=postgresql
11 - TASK=jasmine:ci DB=postgresql 13 - TASK=jasmine:ci DB=postgresql
12 before_install: 14 before_install:
13 - sudo apt-get install libicu-dev -y 15 - sudo apt-get install libicu-dev -y
lib/tasks/spec.rake
1 Rake::Task["spec"].clear if Rake::Task.task_defined?('spec') 1 Rake::Task["spec"].clear if Rake::Task.task_defined?('spec')
2 2
  3 +namespace :spec do
  4 + desc 'GITLAB | Run feature specs'
  5 + task :api do
  6 + cmds = [
  7 + %W(rake gitlab:setup),
  8 + %W(rspec spec --tag @api)
  9 + ]
  10 + run_commands(cmds)
  11 + end
  12 +
  13 + desc 'GITLAB | Run other specs'
  14 + task :other do
  15 + cmds = [
  16 + %W(rake gitlab:setup),
  17 + %W(rspec spec --tag ~@api)
  18 + ]
  19 + run_commands(cmds)
  20 + end
  21 +end
  22 +
3 desc "GITLAB | Run specs" 23 desc "GITLAB | Run specs"
4 task :spec do 24 task :spec do
5 cmds = [ 25 cmds = [
6 %W(rake gitlab:setup), 26 %W(rake gitlab:setup),
7 %W(rspec spec), 27 %W(rspec spec),
8 ] 28 ]
  29 + run_commands(cmds)
  30 +end
9 31
  32 +def run_commands(cmds)
10 cmds.each do |cmd| 33 cmds.each do |cmd|
11 system({'RAILS_ENV' => 'test', 'force' => 'yes'}, *cmd) 34 system({'RAILS_ENV' => 'test', 'force' => 'yes'}, *cmd)
12 raise "#{cmd} failed!" unless $?.exitstatus.zero? 35 raise "#{cmd} failed!" unless $?.exitstatus.zero?
spec/features/gitlab_flavored_markdown_spec.rb
1 require 'spec_helper' 1 require 'spec_helper'
2 2
3 -describe "GitLab Flavored Markdown" do 3 +describe "GitLab Flavored Markdown", features: true do
4 let(:project) { create(:project) } 4 let(:project) { create(:project) }
5 let(:issue) { create(:issue, project: project) } 5 let(:issue) { create(:issue, project: project) }
6 let(:merge_request) { create(:merge_request, source_project: project, target_project: project) } 6 let(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
spec/models/assembla_service_spec.rb
@@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
19 19
20 require 'spec_helper' 20 require 'spec_helper'
21 21
22 -describe AssemblaService do 22 +describe AssemblaService, models: true do
23 describe "Associations" do 23 describe "Associations" do
24 it { should belong_to :project } 24 it { should belong_to :project }
25 it { should have_one :service_hook } 25 it { should have_one :service_hook }
spec/requests/api/api_helpers_spec.rb
1 require 'spec_helper' 1 require 'spec_helper'
2 2
3 -describe API do 3 +describe API, api: true do
4 include API::APIHelpers 4 include API::APIHelpers
5 include ApiHelpers 5 include ApiHelpers
6 let(:user) { create(:user) } 6 let(:user) { create(:user) }
@@ -158,4 +158,4 @@ describe API do @@ -158,4 +158,4 @@ describe API do
158 sudo_identifier.should == ' 123' 158 sudo_identifier.should == ' 123'
159 end 159 end
160 end 160 end
161 -end  
162 \ No newline at end of file 161 \ No newline at end of file
  162 +end
spec/requests/api/branches_spec.rb
1 require 'spec_helper' 1 require 'spec_helper'
2 require 'mime/types' 2 require 'mime/types'
3 3
4 -describe API::API do 4 +describe API::API, api: true do
5 include ApiHelpers 5 include ApiHelpers
6 before(:each) { enable_observers } 6 before(:each) { enable_observers }
7 after(:each) {disable_observers} 7 after(:each) {disable_observers}
spec/requests/api/commits_spec.rb
1 require 'spec_helper' 1 require 'spec_helper'
2 require 'mime/types' 2 require 'mime/types'
3 3
4 -describe API::API do 4 +describe API::API, api: true do
5 include ApiHelpers 5 include ApiHelpers
6 before(:each) { enable_observers } 6 before(:each) { enable_observers }
7 after(:each) {disable_observers} 7 after(:each) {disable_observers}
spec/requests/api/files_spec.rb
1 require 'spec_helper' 1 require 'spec_helper'
2 2
3 -describe API::API do 3 +describe API::API, api: true do
4 include ApiHelpers 4 include ApiHelpers
5 before(:each) { ActiveRecord::Base.observers.enable(:user_observer) } 5 before(:each) { ActiveRecord::Base.observers.enable(:user_observer) }
6 after(:each) { ActiveRecord::Base.observers.disable(:user_observer) } 6 after(:each) { ActiveRecord::Base.observers.disable(:user_observer) }
spec/requests/api/groups_spec.rb
1 require 'spec_helper' 1 require 'spec_helper'
2 2
3 -describe API::API do 3 +describe API::API, api: true do
4 include ApiHelpers 4 include ApiHelpers
5 5
6 let(:user1) { create(:user) } 6 let(:user1) { create(:user) }
spec/requests/api/internal_spec.rb
1 require 'spec_helper' 1 require 'spec_helper'
2 2
3 -describe API::API do 3 +describe API::API, api: true do
4 include ApiHelpers 4 include ApiHelpers
5 before(:each) { ActiveRecord::Base.observers.enable(:user_observer) } 5 before(:each) { ActiveRecord::Base.observers.enable(:user_observer) }
6 after(:each) { ActiveRecord::Base.observers.disable(:user_observer) } 6 after(:each) { ActiveRecord::Base.observers.disable(:user_observer) }
spec/requests/api/issues_spec.rb
1 require 'spec_helper' 1 require 'spec_helper'
2 2
3 -describe API::API do 3 +describe API::API, api: true do
4 include ApiHelpers 4 include ApiHelpers
5 before(:each) { ActiveRecord::Base.observers.enable(:user_observer) } 5 before(:each) { ActiveRecord::Base.observers.enable(:user_observer) }
6 after(:each) { ActiveRecord::Base.observers.disable(:user_observer) } 6 after(:each) { ActiveRecord::Base.observers.disable(:user_observer) }
spec/requests/api/merge_requests_spec.rb
1 require "spec_helper" 1 require "spec_helper"
2 2
3 -describe API::API do 3 +describe API::API, api: true do
4 include ApiHelpers 4 include ApiHelpers
5 before(:each) { ActiveRecord::Base.observers.enable(:user_observer) } 5 before(:each) { ActiveRecord::Base.observers.enable(:user_observer) }
6 after(:each) { ActiveRecord::Base.observers.disable(:user_observer) } 6 after(:each) { ActiveRecord::Base.observers.disable(:user_observer) }
spec/requests/api/milestones_spec.rb
1 require 'spec_helper' 1 require 'spec_helper'
2 2
3 -describe API::API do 3 +describe API::API, api: true do
4 include ApiHelpers 4 include ApiHelpers
5 before(:each) { enable_observers } 5 before(:each) { enable_observers }
6 after(:each) {disable_observers} 6 after(:each) {disable_observers}
spec/requests/api/namespaces_spec.rb
1 require 'spec_helper' 1 require 'spec_helper'
2 2
3 -describe API::API do 3 +describe API::API, api: true do
4 include ApiHelpers 4 include ApiHelpers
5 before(:each) { ActiveRecord::Base.observers.enable(:user_observer) } 5 before(:each) { ActiveRecord::Base.observers.enable(:user_observer) }
6 after(:each) { ActiveRecord::Base.observers.disable(:user_observer) } 6 after(:each) { ActiveRecord::Base.observers.disable(:user_observer) }
spec/requests/api/notes_spec.rb
1 require 'spec_helper' 1 require 'spec_helper'
2 2
3 -describe API::API do 3 +describe API::API, api: true do
4 include ApiHelpers 4 include ApiHelpers
5 before(:each) { ActiveRecord::Base.observers.enable(:user_observer) } 5 before(:each) { ActiveRecord::Base.observers.enable(:user_observer) }
6 after(:each) { ActiveRecord::Base.observers.disable(:user_observer) } 6 after(:each) { ActiveRecord::Base.observers.disable(:user_observer) }
spec/requests/api/project_hooks_spec.rb
1 require 'spec_helper' 1 require 'spec_helper'
2 2
3 -describe API::API, 'ProjectHooks' do 3 +describe API::API, 'ProjectHooks', api: true do
4 include ApiHelpers 4 include ApiHelpers
5 before(:each) { enable_observers } 5 before(:each) { enable_observers }
6 after(:each) { disable_observers } 6 after(:each) { disable_observers }
spec/requests/api/project_members_spec.rb
1 require 'spec_helper' 1 require 'spec_helper'
2 2
3 -describe API::API do 3 +describe API::API, api: true do
4 include ApiHelpers 4 include ApiHelpers
5 before(:each) { enable_observers } 5 before(:each) { enable_observers }
6 after(:each) { disable_observers } 6 after(:each) { disable_observers }
spec/requests/api/projects_spec.rb
1 require 'spec_helper' 1 require 'spec_helper'
2 2
3 -describe API::API do 3 +describe API::API, api: true do
4 include ApiHelpers 4 include ApiHelpers
5 before(:each) { enable_observers } 5 before(:each) { enable_observers }
6 after(:each) { disable_observers } 6 after(:each) { disable_observers }
spec/requests/api/repositories_spec.rb
1 require 'spec_helper' 1 require 'spec_helper'
2 require 'mime/types' 2 require 'mime/types'
3 3
4 -describe API::API do 4 +describe API::API, api: true do
5 include ApiHelpers 5 include ApiHelpers
6 before(:each) { enable_observers } 6 before(:each) { enable_observers }
7 after(:each) {disable_observers} 7 after(:each) {disable_observers}
spec/requests/api/services_spec.rb
1 require "spec_helper" 1 require "spec_helper"
2 2
3 -describe API::API do 3 +describe API::API, api: true do
4 include ApiHelpers 4 include ApiHelpers
5 before(:each) { ActiveRecord::Base.observers.enable(:user_observer) } 5 before(:each) { ActiveRecord::Base.observers.enable(:user_observer) }
6 after(:each) { ActiveRecord::Base.observers.disable(:user_observer) } 6 after(:each) { ActiveRecord::Base.observers.disable(:user_observer) }
spec/requests/api/session_spec.rb
1 require 'spec_helper' 1 require 'spec_helper'
2 2
3 -describe API::API do 3 +describe API::API, api: true do
4 include ApiHelpers 4 include ApiHelpers
5 5
6 let(:user) { create(:user) } 6 let(:user) { create(:user) }
spec/requests/api/system_hooks_spec.rb
1 require 'spec_helper' 1 require 'spec_helper'
2 2
3 -describe API::API do 3 +describe API::API, api: true do
4 include ApiHelpers 4 include ApiHelpers
5 5
6 let(:user) { create(:user) } 6 let(:user) { create(:user) }
spec/requests/api/users_spec.rb
1 require 'spec_helper' 1 require 'spec_helper'
2 2
3 -describe API::API do 3 +describe API::API, api: true do
4 include ApiHelpers 4 include ApiHelpers
5 5
6 let(:user) { create(:user) } 6 let(:user) { create(:user) }