summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/gitlab.yml.example6
-rw-r--r--features/support/env.rb1
-rw-r--r--spec/factories.rb4
-rw-r--r--spec/support/test_env.rb158
4 files changed, 29 insertions, 140 deletions
diff --git a/config/gitlab.yml.example b/config/gitlab.yml.example
index dff709b66b8..7f31fb113c9 100644
--- a/config/gitlab.yml.example
+++ b/config/gitlab.yml.example
@@ -259,6 +259,12 @@ test:
gitlab:
host: localhost
port: 80
+ satellites:
+ path: tmp/tests/gitlab-satellites/
+ gitlab_shell:
+ path: tmp/tests/gitlab-shell/
+ repos_path: tmp/tests/repositories/
+ hooks_path: tmp/tests/gitlab-shell/hooks/
issues_tracker:
redmine:
title: "Redmine"
diff --git a/features/support/env.rb b/features/support/env.rb
index 3ab2ce0a3e6..5b3e78cbec3 100644
--- a/features/support/env.rb
+++ b/features/support/env.rb
@@ -39,7 +39,6 @@ Capybara.ignore_hidden_elements = false
DatabaseCleaner.strategy = :truncation
Spinach.hooks.before_scenario do
- TestEnv.setup_stubs
DatabaseCleaner.start
end
diff --git a/spec/factories.rb b/spec/factories.rb
index ad4c56986c3..5ad410ac5de 100644
--- a/spec/factories.rb
+++ b/spec/factories.rb
@@ -61,9 +61,7 @@ FactoryGirl.define do
path { 'gitlabhq' }
after :create do |project|
- TestEnv.clear_repo_dir(project.namespace, project.path)
- TestEnv.reset_satellite_dir
- TestEnv.create_repo(project.namespace, project.path)
+ TestEnv.copy_repo(project)
end
end
diff --git a/spec/support/test_env.rb b/spec/support/test_env.rb
index 85059dfa9e9..fc1a920822e 100644
--- a/spec/support/test_env.rb
+++ b/spec/support/test_env.rb
@@ -5,24 +5,19 @@ module TestEnv
# 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
+ # See gitlab.yml.example test section for paths
#
def init(opts = {})
RSpec::Mocks::setup(self)
# Disable mailer for spinach tests
disable_mailer if opts[:mailer] == false
- setup_stubs
- clear_test_repo_dir if opts[:init_repos] == true
- setup_test_repos(opts) if opts[:repos] == true
+ # Setup GitLab shell for test instance
+ setup_gitlab_shell
+
+ # Create repository for FactoryGirl.create(:project)
+ setup_factory_repo
end
def disable_mailer
@@ -33,139 +28,30 @@ module TestEnv
NotificationService.any_instance.unstub(:mailer)
end
- def setup_stubs()
- # Use tmp dir for FS manipulations
- repos_path = testing_path()
- ProjectWiki.any_instance.stub(:init_repo) do |path|
- create_temp_repo(File.join(repos_path, "#{path}.git"))
+ def setup_gitlab_shell
+ unless File.directory?(Gitlab.config.gitlab_shell.path)
+ %x[rake gitlab:shell:install]
end
-
- Gitlab.config.gitlab_shell.stub(repos_path: repos_path)
-
- Gitlab.config.satellites.stub(path: satellite_path)
-
- Gitlab::Git::Repository.stub(repos_path: repos_path)
-
- Gitlab::Shell.any_instance.stub(
- add_repository: true,
- mv_repository: true,
- remove_repository: true,
- update_repository_head: true,
- add_key: true,
- remove_key: true,
- version: '6.3.0'
- )
-
- Gitlab::Satellite::MergeAction.any_instance.stub(
- merge!: true,
- )
-
- Gitlab::Satellite::Satellite.any_instance.stub(
- exists?: true,
- destroy: true,
- create: true,
- lock_files_dir: repos_path
- )
-
- MergeRequest.any_instance.stub(
- check_if_can_be_merged: true
- )
- Repository.any_instance.stub(
- size: 12.45
- )
end
- def clear_repo_dir(namespace, name)
- setup_stubs
- # Clean any .wiki.git that may have been created
- FileUtils.rm_rf File.join(testing_path(), "#{name}.wiki.git")
- end
+ def setup_factory_repo
+ repo_path = repos_path + "/root/testme.git"
+ clone_url = 'https://gitlab.com/gitlab-org/testme.git'
- def reset_satellite_dir
- setup_stubs
- [
- %W(git reset --hard --quiet),
- %W(git clean -fx --quiet),
- %W(git checkout --quiet origin/master)
- ].each do |git_cmd|
- system(*git_cmd, chdir: seed_satellite_path)
+ unless File.directory?(repo_path)
+ git_cmd = %W(git clone --bare #{clone_url} #{repo_path})
+ puts git_cmd.inspect
+ system(*git_cmd)
end
end
- # Create a repo and it's satellite
- def create_repo(namespace, name)
- setup_stubs
- repo = repo(namespace, name)
-
- # Symlink tmp/repositories/gitlabhq to tmp/test-git-base-path/gitlabhq
- FileUtils.ln_sf(seed_repo_path, repo)
- create_satellite(repo, namespace, name)
- end
-
- private
-
- def testing_path
- Rails.root.join('tmp', 'test-git-base-path')
- end
-
- def seed_repo_path
- Rails.root.join('tmp', 'repositories', 'gitlabhq')
- end
-
- def seed_satellite_path
- Rails.root.join('tmp', 'satellite', 'gitlabhq')
- end
-
- def satellite_path
- "#{testing_path()}/satellite"
- end
-
- def repo(namespace, name)
- unless (namespace.nil? || namespace.path.nil? || namespace.path.strip.empty?)
- repo = File.join(testing_path(), "#{namespace.path}/#{name}.git")
- else
- repo = File.join(testing_path(), "#{name}.git")
- end
- end
-
- def satellite(namespace, name)
- unless (namespace.nil? || namespace.path.nil? || namespace.path.strip.empty?)
- satellite_repo = File.join(satellite_path, namespace.path, name)
- else
- satellite_repo = File.join(satellite_path, name)
- end
- end
-
- def setup_test_repos(opts ={})
- create_repo(nil, 'gitlabhq') #unless opts[:repo].nil? || !opts[:repo].include?('')
- create_repo(nil, 'source_gitlabhq') #unless opts[:repo].nil? || !opts[:repo].include?('source_')
- create_repo(nil, 'target_gitlabhq') #unless opts[:repo].nil? || !opts[:repo].include?('target_')
- end
-
- def clear_test_repo_dir
- setup_stubs
-
- # 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
-
- # Since much more is happening in satellites
- FileUtils.mkdir_p Gitlab.config.satellites.path
- end
-
- # Create a testing satellite, and clone the source repo into it
- def create_satellite(source_repo, namespace, satellite_name)
- satellite_repo = satellite(namespace, satellite_name)
- # Symlink tmp/satellite/gitlabhq to tmp/test-git-base-path/satellite/gitlabhq, create the directory if it doesn't exist already
- satellite_dir = File.dirname(satellite_repo)
- FileUtils.mkdir_p(satellite_dir) unless File.exists?(satellite_dir)
- FileUtils.ln_sf(seed_satellite_path, satellite_repo)
+ def copy_repo(project)
+ base_repo_path = repos_path + "/root/testme.git"
+ target_repo_path = repos_path + "/#{project.namespace.path}/#{project.path}.git"
+ FileUtils.cp_r(base_repo_path, target_repo_path)
end
- def create_temp_repo(path)
- FileUtils.mkdir_p path
- system(*%W(git init --quiet --bare -- #{path}))
+ def repos_path
+ Gitlab.config.gitlab_shell.repos_path
end
end