diff options
Diffstat (limited to 'spec/support/test_env.rb')
-rw-r--r-- | spec/support/test_env.rb | 122 |
1 files changed, 0 insertions, 122 deletions
diff --git a/spec/support/test_env.rb b/spec/support/test_env.rb deleted file mode 100644 index 44d70e741b2..00000000000 --- a/spec/support/test_env.rb +++ /dev/null @@ -1,122 +0,0 @@ -require 'rspec/mocks' - -module TestEnv - extend self - - # When developing the seed repository, comment out the branch you will modify. - BRANCH_SHA = { - 'flatten-dir' => 'e56497b', - 'feature' => '0b4bc9a', - 'feature_conflict' => 'bb5206f', - 'fix' => '12d65c8', - 'improve/awesome' => '5937ac0', - 'markdown' => '0ed8c6c', - 'master' => '5937ac0' - } - - # Test environment - # - # See gitlab.yml.example test section for paths - # - def init(opts = {}) - # Disable mailer for spinach tests - disable_mailer if opts[:mailer] == false - - clean_test_path - - FileUtils.mkdir_p(repos_path) - - # Setup GitLab shell for test instance - setup_gitlab_shell - - # Create repository for FactoryGirl.create(:project) - setup_factory_repo - end - - def disable_mailer - NotificationService.any_instance.stub(mailer: double.as_null_object) - end - - def enable_mailer - allow_any_instance_of(NotificationService).to receive(:mailer).and_call_original - end - - # Clean /tmp/tests - # - # Keeps gitlab-shell and gitlab-test - def clean_test_path - tmp_test_path = Rails.root.join('tmp', 'tests', '**') - - Dir[tmp_test_path].each do |entry| - unless File.basename(entry) =~ /\Agitlab-(shell|test)\z/ - FileUtils.rm_rf(entry) - end - end - end - - def setup_gitlab_shell - unless File.directory?(Rails.root.join(*%w(tmp tests gitlab-shell))) - `rake gitlab:shell:install` - end - end - - def setup_factory_repo - clone_url = "https://gitlab.com/gitlab-org/#{factory_repo_name}.git" - - unless File.directory?(factory_repo_path) - system(*%W(git clone -q #{clone_url} #{factory_repo_path})) - end - - Dir.chdir(factory_repo_path) do - BRANCH_SHA.each do |branch, sha| - # Try to reset without fetching to avoid using the network. - reset = %W(git update-ref refs/heads/#{branch} #{sha}) - unless system(*reset) - if system(*%w(git fetch origin)) - unless system(*reset) - raise 'The fetched test seed '\ - 'does not contain the required revision.' - end - else - raise 'Could not fetch test seed repository.' - end - end - end - end - - # We must copy bare repositories because we will push to them. - system(git_env, *%W(git clone -q --bare #{factory_repo_path} #{factory_repo_path_bare})) - end - - def copy_repo(project) - base_repo_path = File.expand_path(factory_repo_path_bare) - target_repo_path = File.expand_path(repos_path + "/#{project.namespace.path}/#{project.path}.git") - FileUtils.mkdir_p(target_repo_path) - FileUtils.cp_r("#{base_repo_path}/.", target_repo_path) - FileUtils.chmod_R 0755, target_repo_path - end - - def repos_path - Gitlab.config.gitlab_shell.repos_path - end - - private - - def factory_repo_path - @factory_repo_path ||= Rails.root.join('tmp', 'tests', factory_repo_name) - end - - def factory_repo_path_bare - "#{factory_repo_path}_bare" - end - - def factory_repo_name - 'gitlab-test' - end - - # Prevent developer git configurations from being persisted to test - # repositories - def git_env - {'GIT_TEMPLATE_DIR' => ''} - end -end |