Skip to content
Snippets Groups Projects
Commit 22817398 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets
Browse files

define TestEnv and keep all global stubs in one place

parent 7bb71bb0
No related branches found
No related tags found
No related merge requests found
Loading
@@ -14,7 +14,7 @@ require 'spinach/capybara'
Loading
@@ -14,7 +14,7 @@ require 'spinach/capybara'
require 'sidekiq/testing/inline' require 'sidekiq/testing/inline'
   
   
%w(stubbed_repository valid_commit select2_helper).each do |f| %w(valid_commit select2_helper test_env).each do |f|
require Rails.root.join('spec', 'support', f) require Rails.root.join('spec', 'support', f)
end end
   
Loading
@@ -35,13 +35,8 @@ Capybara.default_wait_time = 10
Loading
@@ -35,13 +35,8 @@ Capybara.default_wait_time = 10
DatabaseCleaner.strategy = :truncation DatabaseCleaner.strategy = :truncation
   
Spinach.hooks.before_scenario do Spinach.hooks.before_scenario do
# Use tmp dir for FS manipulations TestEnv.init
Gitlab.config.gitlab_shell.stub(repos_path: Rails.root.join('tmp', 'test-git-base-path'))
Gitlab::Shell.any_instance.stub(:add_repository) do |path|
create_temp_repo("#{Rails.root}/tmp/test-git-base-path/#{path}.git")
end
FileUtils.rm_rf Gitlab.config.gitlab_shell.repos_path
FileUtils.mkdir_p Gitlab.config.gitlab_shell.repos_path
DatabaseCleaner.start DatabaseCleaner.start
end end
   
Loading
@@ -54,9 +49,3 @@ Spinach.hooks.before_run do
Loading
@@ -54,9 +49,3 @@ Spinach.hooks.before_run do
   
include FactoryGirl::Syntax::Methods include FactoryGirl::Syntax::Methods
end end
def create_temp_repo(path)
FileUtils.mkdir_p path
command = "git init --quiet --bare #{path};"
system(command)
end
Loading
@@ -34,7 +34,11 @@ module Gitlab
Loading
@@ -34,7 +34,11 @@ module Gitlab
end end
   
def path_to_repo def path_to_repo
@path_to_repo ||= File.join(Gitlab.config.gitlab_shell.repos_path, "#{path_with_namespace}.git") @path_to_repo ||= File.join(repos_path, "#{path_with_namespace}.git")
end
def repos_path
Gitlab.config.gitlab_shell.repos_path
end end
   
def repo def repo
Loading
Loading
Loading
@@ -25,7 +25,7 @@ FactoryGirl.define do
Loading
@@ -25,7 +25,7 @@ FactoryGirl.define do
   
factory :project do factory :project do
sequence(:name) { |n| "project#{n}" } sequence(:name) { |n| "project#{n}" }
path { name.downcase.gsub(/\s/, '_') } path { 'gitlabhq' }
creator creator
end end
   
Loading
Loading
require "gitlab/git/repository"
require "project"
require "merge_request"
require "shell"
# Stubs out all Git repository access done by models so that specs can run
# against fake repositories without Grit complaining that they don't exist.
class Project
def repository
if path == "empty" || !path
nil
else
GitLabTestRepo.new(Rails.root.join('tmp', 'repositories', 'gitlabhq'), 'master')
end
end
def satellite
FakeSatellite.new
end
class FakeSatellite
def exists?
true
end
def destroy
true
end
def create
true
end
end
end
class MergeRequest
def check_if_can_be_merged
true
end
end
class GitLabTestRepo < Repository
# patch repo size (in mb)
def size
12.45
end
end
module Gitlab
class Shell
def add_repository name
true
end
def mv_repository name, new_name
true
end
def remove_repository name
true
end
def add_key id, key
true
end
def remove_key id, key
true
end
end
end
module TestEnv
extend self
# Test environment
#
# all repositories and namespaces stored at
# RAILS_APP/tmp/test-git-base-path
#
# Next shell methods are stubbed and return true
# - mv_repository
# - remove_repository
# - add_key
# - remove_key
#
def init
# Use tmp dir for FS manipulations
repos_path = Rails.root.join('tmp', 'test-git-base-path')
Gitlab.config.gitlab_shell.stub(repos_path: repos_path)
Gitlab::Shell.any_instance.stub(
add_repository: ->(path) { create_temp_repo(File.join(repos_path, "#{path}.git")) },
mv_repository: true,
remove_repository: true,
add_key: true,
remove_key: true
)
fake_satellite = double(
exists?: true,
destroy: true,
create: true
)
Project.any_instance.stub(
satellite: fake_satellite
)
MergeRequest.any_instance.stub(
check_if_can_be_merged: true
)
Repository.any_instance.stub(
size: 12.45
)
# Remove tmp/test-git-base-path
FileUtils.rm_rf Gitlab.config.gitlab_shell.repos_path
# Recreate tmp/test-git-base-path
FileUtils.mkdir_p Gitlab.config.gitlab_shell.repos_path
# Symlink tmp/repositories/gitlabhq to tmp/test-git-base-path/gitlabhq
seed_repo = Rails.root.join('tmp', 'repositories', 'gitlabhq')
target_repo = File.join(repos_path, 'gitlabhq.git')
system("ln -s #{seed_repo} #{target_repo}")
end
def create_temp_repo(path)
FileUtils.mkdir_p path
command = "git init --quiet --bare #{path};"
system(command)
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment