Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-07-31 16:39:01 +0400
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-07-31 16:39:01 +0400
commitf82b9e48ec038a3718aeeeb248b0a01c9f88fa33 (patch)
tree09ce291c73eef9dfac631127c313d02d5b78d61b /spec/support/test_env.rb
parent833bc305933bbf7b8b06d5464ae5716ccbe82674 (diff)
Dont stub gitlab-shell calls. Make test environment closer to real one
Diffstat (limited to 'spec/support/test_env.rb')
-rw-r--r--spec/support/test_env.rb158
1 files changed, 22 insertions, 136 deletions
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