summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-08-09 17:51:31 +0000
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-08-09 17:51:31 +0000
commite09ef2fc38adf76a8986ab3078fe92831bf56836 (patch)
tree10435d41c8dbc8798cb0e18b96372b063b75bebc
parentc0e1312567dc09aea0aecd72a3fa777c31b85b50 (diff)
parenta0755d2f051c5a9cd31721333adee22cb40b1008 (diff)
downloadgitlab-ce-e09ef2fc38adf76a8986ab3078fe92831bf56836.tar.gz
Merge branch 'improve-test-env' into 'master'
Improve test env * Replace big gitlabhq repo with small one (https://gitlab.com/gitlab-org/gitlab-test) * dont stub gitlab-shell calls Advantages: * test gitlab-shell install during tests * test integration with gitlab-shell features (fork, change default branch etc) * don't store archive with test repo inside gitlab * less stubs - easier to write/read tests During this refactoring __next issues are be fixed__: * satellite error if gitlab_shell path is relative * project rename repo -> 500 error * fixed wrong diff for MR `download plain diff` * fixed bug when gfm ignores `@ref` variable during link parsing Fixes #1451 See merge request !1005
-rw-r--r--app/helpers/gitlab_markdown_helper.rb6
-rw-r--r--app/models/project.rb1
-rw-r--r--app/models/repository.rb5
-rw-r--r--config/gitlab.yml.example6
-rw-r--r--db/fixtures/test/001_repo.rb36
-rw-r--r--features/project/commits/commits.feature4
-rw-r--r--features/project/commits/user_lookup.feature11
-rw-r--r--features/project/forked_merge_requests.feature1
-rw-r--r--features/project/merge_requests.feature14
-rw-r--r--features/project/network.feature24
-rw-r--r--features/project/source/browse_files.feature12
-rw-r--r--features/project/source/git_blame.feature2
-rw-r--r--features/project/source/markdown_render.feature24
-rw-r--r--features/project/source/multiselect_blob.feature2
-rw-r--r--features/project/source/search_code.feature6
-rw-r--r--features/steps/dashboard/dashboard.rb4
-rw-r--r--features/steps/explore/groups_feature.rb1
-rw-r--r--features/steps/project/browse_commits.rb36
-rw-r--r--features/steps/project/browse_commits_user_lookup.rb47
-rw-r--r--features/steps/project/browse_files.rb28
-rw-r--r--features/steps/project/browse_git_repo.rb8
-rw-r--r--features/steps/project/browse_tags.rb2
-rw-r--r--features/steps/project/fork.rb10
-rw-r--r--features/steps/project/forked_merge_requests.rb60
-rw-r--r--features/steps/project/markdown_render.rb32
-rw-r--r--features/steps/project/merge_requests.rb45
-rw-r--r--features/steps/project/multiselect_blob.rb4
-rw-r--r--features/steps/project/network_graph.rb40
-rw-r--r--features/steps/project/project.rb10
-rw-r--r--features/steps/project/search_code.rb11
-rw-r--r--features/steps/shared/diff_note.rb23
-rw-r--r--features/steps/shared/paths.rb13
-rw-r--r--features/steps/shared/project.rb6
-rw-r--r--features/support/env.rb5
-rw-r--r--lib/gitlab/satellite/merge_action.rb15
-rw-r--r--lib/tasks/gitlab/shell.rake3
-rw-r--r--spec/controllers/blob_controller_spec.rb4
-rw-r--r--spec/controllers/merge_requests_controller_spec.rb5
-rw-r--r--spec/controllers/tree_controller_spec.rb4
-rw-r--r--spec/factories.rb144
-rw-r--r--spec/factories/merge_requests.rb47
-rw-r--r--spec/factories/notes.rb40
-rw-r--r--spec/factories/projects.rb44
-rw-r--r--spec/features/notes_on_merge_requests_spec.rb290
-rw-r--r--spec/helpers/application_helper_spec.rb4
-rw-r--r--spec/helpers/gitlab_markdown_helper_spec.rb9
-rw-r--r--spec/lib/gitlab/satellite/merge_action_spec.rb93
-rw-r--r--spec/mailers/notify_spec.rb13
-rw-r--r--spec/models/commit_spec.rb11
-rw-r--r--spec/models/project_spec.rb25
-rw-r--r--spec/models/project_wiki_spec.rb65
-rw-r--r--spec/models/wiki_page_spec.rb43
-rw-r--r--spec/requests/api/branches_spec.rb48
-rw-r--r--spec/requests/api/files_spec.rb18
-rw-r--r--spec/requests/api/repositories_spec.rb21
-rw-r--r--spec/seed_project.tar.gzbin9769010 -> 0 bytes
-rw-r--r--spec/services/git_push_service_spec.rb6
-rw-r--r--spec/spec_helper.rb9
-rw-r--r--spec/support/big_commits.rb8
-rw-r--r--spec/support/repo_helpers.rb99
-rw-r--r--spec/support/test_env.rb168
-rw-r--r--spec/support/valid_commit.rb16
-rw-r--r--spec/support/valid_commit_with_alt_email.rb6
63 files changed, 825 insertions, 972 deletions
diff --git a/app/helpers/gitlab_markdown_helper.rb b/app/helpers/gitlab_markdown_helper.rb
index c112e98508c..e4aa90154fb 100644
--- a/app/helpers/gitlab_markdown_helper.rb
+++ b/app/helpers/gitlab_markdown_helper.rb
@@ -179,7 +179,11 @@ module GitlabMarkdownHelper
if @commit
@commit.id
elsif @repository && !@repository.empty?
- @repository.head_commit.sha
+ if @ref
+ @repository.commit(@ref).try(:sha)
+ else
+ @repository.head_commit.sha
+ end
end
end
diff --git a/app/models/project.rb b/app/models/project.rb
index 0e93e32162d..a24eae7d26b 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -494,6 +494,7 @@ class Project < ActiveRecord::Base
end
def rename_repo
+ path_was = previous_changes['path'].first
old_path_with_namespace = File.join(namespace_dir, path_was)
new_path_with_namespace = File.join(namespace_dir, path)
diff --git a/app/models/repository.rb b/app/models/repository.rb
index d9b0d1fbe22..e970c449a73 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -10,8 +10,11 @@ class Repository
nil
end
+ # Return absolute path to repository
def path_to_repo
- @path_to_repo ||= File.join(Gitlab.config.gitlab_shell.repos_path, path_with_namespace + ".git")
+ @path_to_repo ||= File.expand_path(
+ File.join(Gitlab.config.gitlab_shell.repos_path, path_with_namespace + ".git")
+ )
end
def exists?
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/db/fixtures/test/001_repo.rb b/db/fixtures/test/001_repo.rb
index 281e3476df1..e69de29bb2d 100644
--- a/db/fixtures/test/001_repo.rb
+++ b/db/fixtures/test/001_repo.rb
@@ -1,36 +0,0 @@
-require 'fileutils'
-
-print "Unpacking seed repository..."
-
-SEED_REPO = 'seed_project.tar.gz'
-REPO_PATH = Rails.root.join('tmp', 'repositories')
-
-# Make whatever directories we need to make
-FileUtils.mkdir_p(REPO_PATH)
-
-# Copy the archive to the repo path
-FileUtils.cp(Rails.root.join('spec', SEED_REPO), REPO_PATH)
-
-# chdir to the repo path
-FileUtils.cd(REPO_PATH) do
- # Extract the archive
- `tar -xf #{SEED_REPO}`
-
- # Remove the copy
- FileUtils.rm(SEED_REPO)
-end
-puts ' done.'
-print "Creating seed satellite..."
-
-SATELLITE_PATH = Rails.root.join('tmp', 'satellite')
-# Make directory
-FileUtils.mkdir_p(SATELLITE_PATH)
-# Clear any potential directory
-FileUtils.rm_rf("#{SATELLITE_PATH}/gitlabhq")
-# Chdir, clone from the seed
-FileUtils.cd(SATELLITE_PATH) do
- # Clone the satellite
-
- `git clone --quiet #{REPO_PATH}/gitlabhq #{SATELLITE_PATH}/gitlabhq`
-end
-puts ' done.'
diff --git a/features/project/commits/commits.feature b/features/project/commits/commits.feature
index cbe8b321507..7c6db3c465a 100644
--- a/features/project/commits/commits.feature
+++ b/features/project/commits/commits.feature
@@ -38,10 +38,6 @@ Feature: Project Browse commits
Given I visit big commit page
Then I see big commit warning
- Scenario: I browse huge commit
- Given I visit huge commit page
- Then I see huge commit message
-
Scenario: I browse a commit with an image
Given I visit a commit with an image that changed
Then The diff links to both the previous and current image
diff --git a/features/project/commits/user_lookup.feature b/features/project/commits/user_lookup.feature
index aa347e24fe4..7b194ab9206 100644
--- a/features/project/commits/user_lookup.feature
+++ b/features/project/commits/user_lookup.feature
@@ -2,13 +2,14 @@ Feature: Project Browse Commits User Lookup
Background:
Given I sign in as a user
And I own a project
- And I have the user that authored the commits
And I visit my project's commits page
Scenario: I browse commit from list
- Given I click on commit link
- Then I see commit info
+ Given I have user with primary email
+ When I click on commit link
+ Then I see author based on primary email
Scenario: I browse another commit from list
- Given I click on another commit link
- Then I see other commit info
+ Given I have user with secondary email
+ When I click on another commit link
+ Then I see author based on secondary email
diff --git a/features/project/forked_merge_requests.feature b/features/project/forked_merge_requests.feature
index 5832b729deb..7442145d87e 100644
--- a/features/project/forked_merge_requests.feature
+++ b/features/project/forked_merge_requests.feature
@@ -4,7 +4,6 @@ Feature: Project Forked Merge Requests
And I am a member of project "Shop"
And I have a project forked off of "Shop" called "Forked Shop"
- @javascript
Scenario: I submit new unassigned merge request to a forked project
Given I visit project "Forked Shop" merge requests page
And I click link "New Merge Request"
diff --git a/features/project/merge_requests.feature b/features/project/merge_requests.feature
index 6a2ba7e3b28..d4c71ba336e 100644
--- a/features/project/merge_requests.feature
+++ b/features/project/merge_requests.feature
@@ -52,27 +52,27 @@ Feature: Project Merge Requests
Given project "Shop" have "Bug NS-05" open merge request with diffs inside
And I visit merge request page "Bug NS-05"
And I switch to the diff tab
- And I leave a comment like "Line is wrong" on line 185 of the first file
+ And I leave a comment like "Line is wrong" on diff
And I switch to the merge request's comments tab
- Then I should see a discussion has started on line 185
+ Then I should see a discussion has started on diff
@javascript
Scenario: I comment on a line of a commit in merge request
Given project "Shop" have "Bug NS-05" open merge request with diffs inside
And I visit merge request page "Bug NS-05"
- And I click on the first commit in the merge request
- And I leave a comment like "Line is wrong" on line 185 of the first file in commit
+ And I click on the commit in the merge request
+ And I leave a comment like "Line is wrong" on diff in commit
And I switch to the merge request's comments tab
- Then I should see a discussion has started on commit b1e6a9dbf1:L185
+ Then I should see a discussion has started on commit diff
@javascript
Scenario: I comment on a commit in merge request
Given project "Shop" have "Bug NS-05" open merge request with diffs inside
And I visit merge request page "Bug NS-05"
- And I click on the first commit in the merge request
+ And I click on the commit in the merge request
And I leave a comment on the diff page in commit
And I switch to the merge request's comments tab
- Then I should see a discussion has started on commit b1e6a9dbf1
+ Then I should see a discussion has started on commit
@javascript
Scenario: I accept merge request with custom commit message
diff --git a/features/project/network.feature b/features/project/network.feature
index 22beb1c50bc..8beb6043aff 100644
--- a/features/project/network.feature
+++ b/features/project/network.feature
@@ -12,28 +12,28 @@ Feature: Project Network Graph
@javascript
Scenario: I should switch "branch" and "tag"
- When I switch ref to "stable"
- Then page should select "stable" in select box
- And page should have "stable" on graph
- When I switch ref to "v2.1.0"
- Then page should select "v2.1.0" in select box
- And page should have "v2.1.0" on graph
+ When I switch ref to "feature"
+ Then page should select "feature" in select box
+ And page should have "feature" on graph
+ When I switch ref to "v1.0.0"
+ Then page should select "v1.0.0" in select box
+ And page should have "v1.0.0" on graph
@javascript
Scenario: I should looking for a commit by SHA
- When I looking for a commit by SHA of "v2.1.0"
+ When I looking for a commit by SHA of "v1.0.0"
Then page should have network graph
And page should select "master" in select box
- And page should have "v2.1.0" on graph
+ And page should have "v1.0.0" on graph
@javascript
Scenario: I should filter selected tag
- When I switch ref to "v2.1.0"
- Then page should have content not containing "v2.1.0"
+ When I switch ref to "v1.0.0"
+ Then page should have content not containing "v1.0.0"
When click "Show only selected branch" checkbox
- Then page should not have content not containing "v2.1.0"
+ Then page should not have content not containing "v1.0.0"
When click "Show only selected branch" checkbox
- Then page should have content not containing "v2.1.0"
+ Then page should have content not containing "v1.0.0"
Scenario: I should fail to look for a commit
When I look for a commit by ";"
diff --git a/features/project/source/browse_files.feature b/features/project/source/browse_files.feature
index 4af2cc83581..f8934da8de5 100644
--- a/features/project/source/browse_files.feature
+++ b/features/project/source/browse_files.feature
@@ -8,11 +8,11 @@ Feature: Project Browse files
Then I should see files from repository
Scenario: I browse files for specific ref
- Given I visit project source page for "8470d70"
- Then I should see files from repository for "8470d70"
+ Given I visit project source page for "6d39438"
+ Then I should see files from repository for "6d39438"
Scenario: I browse file content
- Given I click on "Gemfile.lock" file in repo
+ Given I click on ".gitignore" file in repo
Then I should see it content
Scenario: I browse raw file
@@ -26,20 +26,20 @@ Feature: Project Browse files
@javascript
Scenario: I can edit file
- Given I click on "Gemfile.lock" file in repo
+ Given I click on ".gitignore" file in repo
And I click button "edit"
Then I can edit code
@javascript
Scenario: I can see editing preview
- Given I click on "Gemfile.lock" file in repo
+ Given I click on ".gitignore" file in repo
And I click button "edit"
And I edit code
And I click link "Diff"
Then I see diff
Scenario: I can browse directory with Browse Dir
- Given I click on app directory
+ Given I click on files directory
And I click on history link
Then I see Browse dir link
diff --git a/features/project/source/git_blame.feature b/features/project/source/git_blame.feature
index 3b20437a875..ae62c166c12 100644
--- a/features/project/source/git_blame.feature
+++ b/features/project/source/git_blame.feature
@@ -5,6 +5,6 @@ Feature: Project Browse git repo
Given I visit project source page
Scenario: I blame file
- Given I click on "Gemfile.lock" file in repo
+ Given I click on ".gitignore" file in repo
And I click blame button
Then I should see git file blame
diff --git a/features/project/source/markdown_render.feature b/features/project/source/markdown_render.feature
index 970a9e57864..fce351317c6 100644
--- a/features/project/source/markdown_render.feature
+++ b/features/project/source/markdown_render.feature
@@ -2,7 +2,7 @@ Feature: Project markdown render
Background:
Given I sign in as a user
And I own project "Delta"
- Given I visit project source page
+ And I visit markdown branch
# Tree README
@@ -11,26 +11,26 @@ Feature: Project markdown render
And I click on a relative link in README
Then I should see the correct markdown
- Scenario: I browse files from master branch
- Then I should see files from repository in master
+ Scenario: I browse files from markdown branch
+ Then I should see files from repository in markdown
And I should see rendered README which contains correct links
And I click on Gitlab API in README
Then I should see correct document rendered
- Scenario: I view README in master branch
- Then I should see files from repository in master
+ Scenario: I view README in markdown branch
+ Then I should see files from repository in markdown
And I should see rendered README which contains correct links
And I click on Rake tasks in README
Then I should see correct directory rendered
- Scenario: I view README in master branch to see reference links to directory
- Then I should see files from repository in master
+ Scenario: I view README in markdown branch to see reference links to directory
+ Then I should see files from repository in markdown
And I should see rendered README which contains correct links
And I click on GitLab API doc directory in README
Then I should see correct doc/api directory rendered
- Scenario: I view README in master branch to see reference links to file
- Then I should see files from repository in master
+ Scenario: I view README in markdown branch to see reference links to file
+ Then I should see files from repository in markdown
And I should see rendered README which contains correct links
And I click on Maintenance in README
Then I should see correct maintenance file rendered
@@ -41,19 +41,19 @@ Feature: Project markdown render
# Blob
- Scenario: I navigate to doc directory to view documentation in master
+ Scenario: I navigate to doc directory to view documentation in markdown
And I navigate to the doc/api/README
And I see correct file rendered
And I click on users in doc/api/README
Then I should see the correct document file
- Scenario: I navigate to doc directory to view user doc in master
+ Scenario: I navigate to doc directory to view user doc in markdown
And I navigate to the doc/api/README
And I see correct file rendered
And I click on raketasks in doc/api/README
Then I should see correct directory rendered
- Scenario: I navigate to doc directory to view user doc in master
+ Scenario: I navigate to doc directory to view user doc in markdown
And I navigate to the doc/api/README
And Header "GitLab API" should have correct id and link
diff --git a/features/project/source/multiselect_blob.feature b/features/project/source/multiselect_blob.feature
index 0fdfe7ce938..f60b646a8d9 100644
--- a/features/project/source/multiselect_blob.feature
+++ b/features/project/source/multiselect_blob.feature
@@ -2,7 +2,7 @@ Feature: Project Multiselect Blob
Background:
Given I sign in as a user
And I own project "Shop"
- And I visit "Gemfile.lock" file in repo
+ And I visit ".gitignore" file in repo
@javascript
Scenario: I click line 1 in file
diff --git a/features/project/source/search_code.feature b/features/project/source/search_code.feature
index 13f15cc922f..ad8a650d895 100644
--- a/features/project/source/search_code.feature
+++ b/features/project/source/search_code.feature
@@ -4,6 +4,6 @@ Feature: Project Search code
And I own project "Shop"
Given I visit project source page
- Scenario: Search for term "Welcome to GitLab"
- When I search for term "Welcome to GitLab"
- Then I should see files from repository containing "Welcome to GitLab"
+ Scenario: Search for term "coffee"
+ When I search for term "coffee"
+ Then I should see files from repository containing "coffee"
diff --git a/features/steps/dashboard/dashboard.rb b/features/steps/dashboard/dashboard.rb
index 706c9babcee..84a480bd7f8 100644
--- a/features/steps/dashboard/dashboard.rb
+++ b/features/steps/dashboard/dashboard.rb
@@ -12,7 +12,7 @@ class Dashboard < Spinach::FeatureSteps
end
Then 'I should see last push widget' do
- page.should have_content "You pushed to new_design"
+ page.should have_content "You pushed to fix"
page.should have_link "Create Merge Request"
end
@@ -23,7 +23,7 @@ class Dashboard < Spinach::FeatureSteps
Then 'I see prefilled new Merge Request page' do
current_path.should == new_project_merge_request_path(@project)
find("#merge_request_target_project_id").value.should == @project.id.to_s
- find("#merge_request_source_branch").value.should == "new_design"
+ find("#merge_request_source_branch").value.should == "fix"
find("#merge_request_target_branch").value.should == "master"
end
diff --git a/features/steps/explore/groups_feature.rb b/features/steps/explore/groups_feature.rb
index 48486a83424..b529c5f8455 100644
--- a/features/steps/explore/groups_feature.rb
+++ b/features/steps/explore/groups_feature.rb
@@ -90,4 +90,3 @@ class Spinach::Features::ExploreGroupsFeature < Spinach::FeatureSteps
)
end
end
-
diff --git a/features/steps/project/browse_commits.rb b/features/steps/project/browse_commits.rb
index fe47a731915..37207aafebe 100644
--- a/features/steps/project/browse_commits.rb
+++ b/features/steps/project/browse_commits.rb
@@ -2,11 +2,12 @@ class ProjectBrowseCommits < Spinach::FeatureSteps
include SharedAuthentication
include SharedProject
include SharedPaths
+ include RepoHelpers
Then 'I see project commits' do
commit = @project.repository.commit
page.should have_content(@project.name)
- page.should have_content(commit.message)
+ page.should have_content(commit.message[0..20])
page.should have_content(commit.id.to_s[0..5])
end
@@ -19,21 +20,21 @@ class ProjectBrowseCommits < Spinach::FeatureSteps
page.response_headers['Content-Type'].should have_content("application/atom+xml")
page.body.should have_selector("title", text: "Recent commits to #{@project.name}")
page.body.should have_selector("author email", text: commit.author_email)
- page.body.should have_selector("entry summary", text: commit.description)
+ page.body.should have_selector("entry summary", text: commit.description[0..10])
end
Given 'I click on commit link' do
- visit project_commit_path(@project, ValidCommit::ID)
+ visit project_commit_path(@project, sample_commit.id)
end
Then 'I see commit info' do
- page.should have_content ValidCommit::MESSAGE
- page.should have_content "Showing 1 changed file"
+ page.should have_content sample_commit.message
+ page.should have_content "Showing #{sample_commit.files_changed_count} changed files"
end
And 'I fill compare fields with refs' do
- fill_in "from", with: "8716fc78f3c65bbf7bcf7b574febd583bc5d2812"
- fill_in "to", with: "bcf03b5de6c33f3869ef70d68cf06e679d1d7f9a"
+ fill_in "from", with: sample_commit.parent_id
+ fill_in "to", with: sample_commit.id
click_button "Compare"
end
@@ -56,30 +57,24 @@ class ProjectBrowseCommits < Spinach::FeatureSteps
end
Given 'I visit big commit page' do
- visit project_commit_path(@project, BigCommits::BIG_COMMIT_ID)
+ Commit::DIFF_SAFE_FILES = 20
+ visit project_commit_path(@project, sample_big_commit.id)
end
Then 'I see big commit warning' do
- page.should have_content BigCommits::BIG_COMMIT_MESSAGE
+ page.should have_content sample_big_commit.message
page.should have_content "Too many changes"
- end
-
- Given 'I visit huge commit page' do
- visit project_commit_path(@project, BigCommits::HUGE_COMMIT_ID)
- end
-
- Then 'I see huge commit message' do
- page.should have_content BigCommits::HUGE_COMMIT_MESSAGE
+ Commit::DIFF_SAFE_FILES = 100
end
Given 'I visit a commit with an image that changed' do
- visit project_commit_path(@project, 'cc1ba255d6c5ffdce87a357ba7ccc397a4f4026b')
+ visit project_commit_path(@project, sample_image_commit.id)
end
Then 'The diff links to both the previous and current image' do
links = page.all('.two-up span div a')
- links[0]['href'].should =~ %r{blob/bc3735004cb45cec5e0e4fa92710897a910a5957}
- links[1]['href'].should =~ %r{blob/cc1ba255d6c5ffdce87a357ba7ccc397a4f4026b}
+ links[0]['href'].should =~ %r{blob/#{sample_image_commit.old_blob_id}}
+ links[1]['href'].should =~ %r{blob/#{sample_image_commit.new_blob_id}}
end
Given 'I click side-by-side diff button' do
@@ -93,5 +88,4 @@ class ProjectBrowseCommits < Spinach::FeatureSteps
Then 'I see inline diff button' do
page.should have_content "Inline Diff"
end
-
end
diff --git a/features/steps/project/browse_commits_user_lookup.rb b/features/steps/project/browse_commits_user_lookup.rb
index 328be373553..198ea29f28d 100644
--- a/features/steps/project/browse_commits_user_lookup.rb
+++ b/features/steps/project/browse_commits_user_lookup.rb
@@ -2,34 +2,47 @@ class ProjectBrowseCommitsUserLookup < Spinach::FeatureSteps
include SharedAuthentication
include SharedProject
include SharedPaths
-
- Given 'I have the user that authored the commits' do
- @user = create(:user, email: 'dmitriy.zaporozhets@gmail.com')
- create(:email, { user: @user, email: 'dzaporozhets@sphereconsultinginc.com' })
- end
Given 'I click on commit link' do
- visit project_commit_path(@project, ValidCommit::ID)
+ visit project_commit_path(@project, sample_commit.id)
end
Given 'I click on another commit link' do
- visit project_commit_path(@project, ValidCommitWithAltEmail::ID)
+ visit project_commit_path(@project, sample_commit.parent_id)
+ end
+
+ step 'I have user with primary email' do
+ user_primary
+ end
+
+ step 'I have user with secondary email' do
+ user_secondary
end
- Then 'I see commit info' do
- page.should have_content ValidCommit::MESSAGE
- check_author_link(ValidCommit::AUTHOR_EMAIL)
+ step 'I see author based on primary email' do
+ check_author_link(sample_commit.author_email, user_primary)
end
-
- Then 'I see other commit info' do
- page.should have_content ValidCommitWithAltEmail::MESSAGE
- check_author_link(ValidCommitWithAltEmail::AUTHOR_EMAIL)
+
+ step 'I see author based on secondary email' do
+ check_author_link(sample_commit.author_email, user_secondary)
end
- def check_author_link(email)
+ def check_author_link(email, user)
author_link = find('.commit-author-link')
- author_link['href'].should == user_path(@user)
+ author_link['href'].should == user_path(user)
author_link['data-original-title'].should == email
- find('.commit-author-name').text.should == @user.name
+ find('.commit-author-name').text.should == user.name
+ end
+
+ def user_primary
+ @user_primary ||= create(:user, email: 'dmitriy.zaporozhets@gmail.com')
+ end
+
+ def user_secondary
+ @user_secondary ||= begin
+ user = create(:user, email: 'dzaporozhets@example.com')
+ create(:email, { user: user, email: 'dmitriy.zaporozhets@gmail.com' })
+ user
+ end
end
end
diff --git a/features/steps/project/browse_files.rb b/features/steps/project/browse_files.rb
index 7134050da69..6fd0c2c2ded 100644
--- a/features/steps/project/browse_files.rb
+++ b/features/steps/project/browse_files.rb
@@ -2,26 +2,26 @@ class ProjectBrowseFiles < Spinach::FeatureSteps
include SharedAuthentication
include SharedProject
include SharedPaths
+ include RepoHelpers
step 'I should see files from repository' do
- page.should have_content "app"
- page.should have_content "history"
- page.should have_content "Gemfile"
+ page.should have_content "VERSION"
+ page.should have_content ".gitignore"
+ page.should have_content "LICENSE"
end
- step 'I should see files from repository for "8470d70"' do
- current_path.should == project_tree_path(@project, "8470d70")
- page.should have_content "app"
- page.should have_content "history"
- page.should have_content "Gemfile"
+ step 'I should see files from repository for "6d39438"' do
+ current_path.should == project_tree_path(@project, "6d39438")
+ page.should have_content ".gitignore"
+ page.should have_content "LICENSE"
end
- step 'I click on "Gemfile.lock" file in repo' do
- click_link "Gemfile.lock"
+ step 'I click on ".gitignore" file in repo' do
+ click_link ".gitignore"
end
step 'I should see it content' do
- page.should have_content "DEPENDENCIES"
+ page.should have_content "*.rbc"
end
step 'I click link "raw"' do
@@ -29,7 +29,7 @@ class ProjectBrowseFiles < Spinach::FeatureSteps
end
step 'I should see raw file content' do
- page.source.should == ValidCommit::BLOB_FILE
+ page.source.should == sample_blob.data
end
step 'I click button "edit"' do
@@ -63,8 +63,8 @@ class ProjectBrowseFiles < Spinach::FeatureSteps
page.should have_content "Commit message"
end
- step 'I click on app directory' do
- click_link 'app'
+ step 'I click on files directory' do
+ click_link 'files'
end
step 'I click on history link' do
diff --git a/features/steps/project/browse_git_repo.rb b/features/steps/project/browse_git_repo.rb
index cd9a60f49cb..2c3017dd4e2 100644
--- a/features/steps/project/browse_git_repo.rb
+++ b/features/steps/project/browse_git_repo.rb
@@ -3,8 +3,8 @@ class ProjectBrowseGitRepo < Spinach::FeatureSteps
include SharedProject
include SharedPaths
- Given 'I click on "Gemfile.lock" file in repo' do
- click_link "Gemfile.lock"
+ Given 'I click on ".gitignore" file in repo' do
+ click_link ".gitignore"
end
And 'I click blame button' do
@@ -12,8 +12,8 @@ class ProjectBrowseGitRepo < Spinach::FeatureSteps
end
Then 'I should see git file blame' do
- page.should have_content "DEPENDENCIES"
+ page.should have_content "*.rb"
page.should have_content "Dmitriy Zaporozhets"
- page.should have_content "Moving to rails 3.2"
+ page.should have_content "Initial commit"
end
end
diff --git a/features/steps/project/browse_tags.rb b/features/steps/project/browse_tags.rb
index 0cbfa0d80aa..7c679911e00 100644
--- a/features/steps/project/browse_tags.rb
+++ b/features/steps/project/browse_tags.rb
@@ -5,6 +5,6 @@ class ProjectBrowseTags < Spinach::FeatureSteps
Then 'I should see "Shop" all tags list' do
page.should have_content "Tags"
- page.should have_content "v1.2.1"
+ page.should have_content "v1.0.0"
end
end
diff --git a/features/steps/project/fork.rb b/features/steps/project/fork.rb
index c00d9014b1d..93ceaa0ebb1 100644
--- a/features/steps/project/fork.rb
+++ b/features/steps/project/fork.rb
@@ -6,31 +6,23 @@ class ForkProject < Spinach::FeatureSteps
step 'I click link "Fork"' do
page.should have_content "Shop"
page.should have_content "Fork"
- Gitlab::Shell.any_instance.stub(:fork_repository).and_return(true)
click_link "Fork"
end
step 'I am a member of project "Shop"' do
- @project = Project.find_by(name: "Shop")
- @project ||= create(:project, name: "Shop", group: create(:group))
+ @project = create(:project, name: "Shop")
@project.team << [@user, :reporter]
end
step 'I should see the forked project page' do
page.should have_content "Project was successfully forked."
- current_path.should include current_user.namespace.path
- @forked_project = Project.find_by(namespace_id: current_user.namespace.path)
end
step 'I already have a project named "Shop" in my namespace' do
- current_user.namespace ||= create(:namespace)
- current_user.namespace.should_not be_nil
- current_user.namespace.path.should_not be_nil
@my_project = create(:project, name: "Shop", namespace: current_user.namespace)
end
step 'I should see a "Name has already been taken" warning' do
page.should have_content "Name has already been taken"
end
-
end
diff --git a/features/steps/project/forked_merge_requests.rb b/features/steps/project/forked_merge_requests.rb
index 3c497638d9c..6ec527df13d 100644
--- a/features/steps/project/forked_merge_requests.rb
+++ b/features/steps/project/forked_merge_requests.rb
@@ -9,18 +9,11 @@ class ProjectForkedMergeRequests < Spinach::FeatureSteps
@project = Project.find_by(name: "Shop")
@project ||= create(:project, name: "Shop")
@project.team << [@user, :reporter]
+ @project.ensure_satellite_exists
end
step 'I have a project forked off of "Shop" called "Forked Shop"' do
- @forking_user = @user
- forked_project_link = build(:forked_project_link)
- @forked_project = Project.find_by(name: "Forked Shop")
- @forked_project ||= create(:project, name: "Forked Shop", forked_project_link: forked_project_link, creator_id: @forking_user.id , namespace: @forking_user.namespace)
-
- forked_project_link.forked_from_project = @project
- forked_project_link.forked_to_project = @forked_project
- @forked_project.team << [@forking_user , :master]
- forked_project_link.save!
+ @forked_project = Projects::ForkService.new(@project, @user).execute
end
step 'I click link "New Merge Request"' do
@@ -33,8 +26,8 @@ class ProjectForkedMergeRequests < Spinach::FeatureSteps
current_path.should == project_merge_request_path(@project, @merge_request)
@merge_request.title.should == "Merge Request On Forked Project"
@merge_request.source_project.should == @forked_project
- @merge_request.source_branch.should == "master"
- @merge_request.target_branch.should == "stable"
+ @merge_request.source_branch.should == "fix"
+ @merge_request.target_branch.should == "master"
page.should have_content @forked_project.path_with_namespace
page.should have_content @project.path_with_namespace
page.should have_content @merge_request.source_branch
@@ -42,17 +35,11 @@ class ProjectForkedMergeRequests < Spinach::FeatureSteps
end
step 'I fill out a "Merge Request On Forked Project" merge request' do
- select2 @forked_project.id, from: "#merge_request_source_project_id"
- select2 @project.id, from: "#merge_request_target_project_id"
-
- find(:select, "merge_request_source_project_id", {}).value.should == @forked_project.id.to_s
- find(:select, "merge_request_target_project_id", {}).value.should == @project.id.to_s
-
- select2 "master", from: "#merge_request_source_branch"
- select2 "stable", from: "#merge_request_target_branch"
+ select @forked_project.path_with_namespace, from: "merge_request_source_project_id"
+ select @project.path_with_namespace, from: "merge_request_target_project_id"
+ select "fix", from: "merge_request_source_branch"
+ select "master", from: "merge_request_target_branch"
- find(:select, "merge_request_source_branch", {}).value.should == 'master'
- find(:select, "merge_request_target_branch", {}).value.should == 'stable'
click_button "Compare branches"
fill_in "merge_request_title", with: "Merge Request On Forked Project"
@@ -101,8 +88,8 @@ class ProjectForkedMergeRequests < Spinach::FeatureSteps
@merge_request = @project.merge_requests.last
current_path.should == project_merge_request_path(@project, @merge_request)
@merge_request.source_project.should == @forked_project
- @merge_request.source_branch.should == "master"
- @merge_request.target_branch.should == "stable"
+ @merge_request.source_branch.should == "fix"
+ @merge_request.target_branch.should == "master"
page.should have_content @forked_project.path_with_namespace
page.should have_content @project.path_with_namespace
page.should have_content @merge_request.source_branch
@@ -114,33 +101,6 @@ class ProjectForkedMergeRequests < Spinach::FeatureSteps
page.should have_link "Create Merge Request"
end
- step 'project "Forked Shop" has push event' do
- @forked_project = Project.find_by(name: "Forked Shop")
-
- data = {
- before: "0000000000000000000000000000000000000000",
- after: "0220c11b9a3e6c69dc8fd35321254ca9a7b98f7e",
- ref: "refs/heads/new_design",
- user_id: @user.id,
- user_name: @user.name,
- repository: {
- name: @forked_project.name,
- url: "localhost/rubinius",
- description: "",
- homepage: "localhost/rubinius",
- private: true
- }
- }
-
- @event = Event.create(
- project: @forked_project,
- action: Event::PUSHED,
- data: data,
- author_id: @user.id
- )
- end
-
-
step 'I click link edit "Merge Request On Forked Project"' do
find("#edit_merge_request").click
end
diff --git a/features/steps/project/markdown_render.rb b/features/steps/project/markdown_render.rb
index c94de283069..1885649891e 100644
--- a/features/steps/project/markdown_render.rb
+++ b/features/steps/project/markdown_render.rb
@@ -12,11 +12,10 @@ class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps
@project.team << [@user, :master]
end
- Then 'I should see files from repository in master' do
- current_path.should == project_tree_path(@project, "master")
- page.should have_content "Gemfile"
- page.should have_content "app"
- page.should have_content "README"
+ Then 'I should see files from repository in markdown' do
+ current_path.should == project_tree_path(@project, "markdown")
+ page.should have_content "README.md"
+ page.should have_content "CHANGELOG"
end
And 'I should see rendered README which contains correct links' do
@@ -34,7 +33,7 @@ class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps
end
Then 'I should see correct document rendered' do
- current_path.should == project_blob_path(@project, "master/doc/api/README.md")
+ current_path.should == project_blob_path(@project, "markdown/doc/api/README.md")
page.should have_content "All API requests require authentication"
end
@@ -43,7 +42,7 @@ class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps
end
Then 'I should see correct directory rendered' do
- current_path.should == project_tree_path(@project, "master/doc/raketasks")
+ current_path.should == project_tree_path(@project, "markdown/doc/raketasks")
page.should have_content "backup_restore.md"
page.should have_content "maintenance.md"
end
@@ -53,7 +52,7 @@ class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps
end
Then 'I should see correct doc/api directory rendered' do
- current_path.should == project_tree_path(@project, "master/doc/api")
+ current_path.should == project_tree_path(@project, "markdown/doc/api")
page.should have_content "README.md"
page.should have_content "users.md"
end
@@ -63,7 +62,7 @@ class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps
end
Then 'I should see correct maintenance file rendered' do
- current_path.should == project_blob_path(@project, "master/doc/raketasks/maintenance.md")
+ current_path.should == project_blob_path(@project, "markdown/doc/raketasks/maintenance.md")
page.should have_content "bundle exec rake gitlab:env:info RAILS_ENV=production"
end
@@ -86,7 +85,7 @@ class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps
end
And 'I see correct file rendered' do
- current_path.should == project_blob_path(@project, "master/doc/api/README.md")
+ current_path.should == project_blob_path(@project, "markdown/doc/api/README.md")
page.should have_content "Contents"
page.should have_link "Users"
page.should have_link "Rake tasks"
@@ -97,7 +96,7 @@ class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps
end
Then 'I should see the correct document file' do
- current_path.should == project_blob_path(@project, "master/doc/api/users.md")
+ current_path.should == project_blob_path(@project, "markdown/doc/api/users.md")
page.should have_content "Get a list of users."
end
@@ -125,9 +124,8 @@ class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps
Then 'I should see files from repository in markdown branch' do
current_path.should == project_tree_path(@project, "markdown")
- page.should have_content "Gemfile"
- page.should have_content "app"
- page.should have_content "README"
+ page.should have_content "README.md"
+ page.should have_content "CHANGELOG"
end
And 'I see correct file rendered in markdown branch' do
@@ -256,8 +254,8 @@ class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps
end
Given 'I go directory which contains README file' do
- visit project_tree_path(@project, "master/doc/api")
- current_path.should == project_tree_path(@project, "master/doc/api")
+ visit project_tree_path(@project, "markdown/doc/api")
+ current_path.should == project_tree_path(@project, "markdown/doc/api")
end
And 'I click on a relative link in README' do
@@ -265,7 +263,7 @@ class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps
end
Then 'I should see the correct markdown' do
- current_path.should == project_blob_path(@project, "master/doc/api/users.md")
+ current_path.should == project_blob_path(@project, "markdown/doc/api/users.md")
page.should have_content "List users"
end
diff --git a/features/steps/project/merge_requests.rb b/features/steps/project/merge_requests.rb
index b0a6e530e8a..f0007a039e4 100644
--- a/features/steps/project/merge_requests.rb
+++ b/features/steps/project/merge_requests.rb
@@ -61,8 +61,8 @@ class ProjectMergeRequests < Spinach::FeatureSteps
end
step 'I submit new merge request "Wiki Feature"' do
- select "master", from: "merge_request_source_branch"
- select "notes_refactoring", from: "merge_request_target_branch"
+ select "fix", from: "merge_request_source_branch"
+ select "feature", from: "merge_request_target_branch"
click_button "Compare branches"
fill_in "merge_request_title", with: "Wiki Feature"
click_button "Submit merge request"
@@ -73,7 +73,7 @@ class ProjectMergeRequests < Spinach::FeatureSteps
title: "Bug NS-04",
source_project: project,
target_project: project,
- source_branch: 'stable',
+ source_branch: 'fix',
target_branch: 'master',
author: project.users.first,
description: "# Description header"
@@ -104,9 +104,9 @@ class ProjectMergeRequests < Spinach::FeatureSteps
visit project_merge_request_path(project, merge_request)
end
- step 'I click on the first commit in the merge request' do
- within '.first-commits' do
- click_link merge_request.commits.first.short_id(8)
+ step 'I click on the commit in the merge request' do
+ within '.mr-commits' do
+ click_link sample_commit.id[0..8]
end
end
@@ -116,36 +116,35 @@ class ProjectMergeRequests < Spinach::FeatureSteps
end
step 'I leave a comment on the diff page in commit' do
- find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_185_185"]').click
+ click_diff_line(sample_commit.line_code)
leave_comment "One comment to rule them all"
end
- step 'I leave a comment like "Line is wrong" on line 185 of the first file' do
+ step 'I leave a comment like "Line is wrong" on diff' do
init_diff_note
leave_comment "Line is wrong"
end
- step 'I leave a comment like "Line is wrong" on line 185 of the first file in commit' do
- find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_185_185"]').click
+ step 'I leave a comment like "Line is wrong" on diff in commit' do
+ click_diff_line(sample_commit.line_code)
leave_comment "Line is wrong"
end
- step 'I should see a discussion has started on line 185' do
+ step 'I should see a discussion has started on diff' do
page.should have_content "#{current_user.name} started a discussion"
- page.should have_content "app/assets/stylesheets/tree.scss"
+ page.should have_content sample_commit.line_code_path
page.should have_content "Line is wrong"
end
- step 'I should see a discussion has started on commit b1e6a9dbf1:L185' do
+ step 'I should see a discussion has started on commit diff' do
page.should have_content "#{current_user.name} started a discussion on commit"
- page.should have_content "app/assets/stylesheets/tree.scss"
+ page.should have_content sample_commit.line_code_path
page.should have_content "Line is wrong"
end
- step 'I should see a discussion has started on commit b1e6a9dbf1' do
+ step 'I should see a discussion has started on commit' do
page.should have_content "#{current_user.name} started a discussion on commit"
page.should have_content "One comment to rule them all"
- page.should have_content "app/assets/stylesheets/tree.scss"
end
step 'merge request is mergeable' do
@@ -162,6 +161,10 @@ class ProjectMergeRequests < Spinach::FeatureSteps
end
step 'I accept this merge request' do
+ Gitlab::Satellite::MergeAction.any_instance.stub(
+ merge!: true,
+ )
+
click_button "Accept Merge Request"
end
@@ -248,7 +251,7 @@ class ProjectMergeRequests < Spinach::FeatureSteps
end
def init_diff_note
- find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185"]').click
+ click_diff_line(sample_commit.line_code)
end
def leave_comment(message)
@@ -261,14 +264,18 @@ class ProjectMergeRequests < Spinach::FeatureSteps
end
def init_diff_note_first_file
- find('a[data-line-code="a5cc2925ca8258af241be7e5b0381edf30266302_12_12"]').click
+ click_diff_line(sample_compare.changes[0][:line_code])
end
def init_diff_note_second_file
- find('a[data-line-code="8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_28_39"]').click
+ click_diff_line(sample_compare.changes[1][:line_code])
end
def have_visible_content (text)
have_css("*", text: text, visible: true)
end
+
+ def click_diff_line(code)
+ find("a[data-line-code='#{code}']").click
+ end
end
diff --git a/features/steps/project/multiselect_blob.rb b/features/steps/project/multiselect_blob.rb
index 28df7bc9312..d4dc1186970 100644
--- a/features/steps/project/multiselect_blob.rb
+++ b/features/steps/project/multiselect_blob.rb
@@ -52,7 +52,7 @@ class ProjectMultiselectBlob < Spinach::FeatureSteps
page.evaluate_script("window.history.forward()")
end
- step 'I click on "Gemfile.lock" file in repo' do
- click_link "Gemfile.lock"
+ step 'I click on ".gitignore" file in repo' do
+ click_link ".gitignore"
end
end
diff --git a/features/steps/project/network_graph.rb b/features/steps/project/network_graph.rb
index 1c5cfcc6c68..9f5da288914 100644
--- a/features/steps/project/network_graph.rb
+++ b/features/steps/project/network_graph.rb
@@ -19,8 +19,8 @@ class ProjectNetworkGraph < Spinach::FeatureSteps
page.should have_selector '.select2-chosen', text: "master"
end
- And 'page should select "v2.1.0" in select box' do
- page.should have_selector '.select2-chosen', text: "v2.1.0"
+ And 'page should select "v1.0.0" in select box' do
+ page.should have_selector '.select2-chosen', text: "v1.0.0"
end
And 'page should have "master" on graph' do
@@ -29,13 +29,13 @@ class ProjectNetworkGraph < Spinach::FeatureSteps
end
end
- When 'I switch ref to "stable"' do
- page.select 'stable', from: 'ref'
+ When 'I switch ref to "feature"' do
+ page.select 'feature', from: 'ref'
sleep 2
end
- When 'I switch ref to "v2.1.0"' do
- page.select 'v2.1.0', from: 'ref'
+ When 'I switch ref to "v1.0.0"' do
+ page.select 'v1.0.0', from: 'ref'
sleep 2
end
@@ -44,43 +44,43 @@ class ProjectNetworkGraph < Spinach::FeatureSteps
sleep 2
end
- Then 'page should have content not containing "v2.1.0"' do
+ Then 'page should have content not containing "v1.0.0"' do
within '.network-graph' do
- page.should have_content 'cleaning'
+ page.should have_content 'Change some files'
end
end
- Then 'page should not have content not containing "v2.1.0"' do
+ Then 'page should not have content not containing "v1.0.0"' do
within '.network-graph' do
- page.should_not have_content 'cleaning'
+ page.should_not have_content 'Change some files'
end
end
- And 'page should select "stable" in select box' do
- page.should have_selector '.select2-chosen', text: "stable"
+ And 'page should select "feature" in select box' do
+ page.should have_selector '.select2-chosen', text: "feature"
end
- And 'page should select "v2.1.0" in select box' do
- page.should have_selector '.select2-chosen', text: "v2.1.0"
+ And 'page should select "v1.0.0" in select box' do
+ page.should have_selector '.select2-chosen', text: "v1.0.0"
end
- And 'page should have "stable" on graph' do
+ And 'page should have "feature" on graph' do
within '.network-graph' do
- page.should have_content 'stable'
+ page.should have_content 'feature'
end
end
- When 'I looking for a commit by SHA of "v2.1.0"' do
+ When 'I looking for a commit by SHA of "v1.0.0"' do
within ".network-form" do
- fill_in 'extended_sha1', with: '98d6492'
+ fill_in 'extended_sha1', with: '6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9'
find('button').click
end
sleep 2
end
- And 'page should have "v2.1.0" on graph' do
+ And 'page should have "v1.0.0" on graph' do
within '.network-graph' do
- page.should have_content 'v2.1.0'
+ page.should have_content 'v1.0.0'
end
end
diff --git a/features/steps/project/project.rb b/features/steps/project/project.rb
index b6968152aaf..2ffa1a62978 100644
--- a/features/steps/project/project.rb
+++ b/features/steps/project/project.rb
@@ -33,18 +33,16 @@ class ProjectFeature < Spinach::FeatureSteps
step 'I should see project "Shop" version' do
within '.project-side' do
- page.should have_content "Version: 2.2.0"
+ page.should have_content "Version: 6.7.0.pre"
end
end
step 'change project default branch' do
- select 'stable', from: 'project_default_branch'
+ select 'fix', from: 'project_default_branch'
+ click_button 'Save changes'
end
step 'I should see project default branch changed' do
- # TODO: Uncomment this when we can do real gitlab-shell calls
- # from spinach tests. Right now gitlab-shell calls are stubbed so this test
- # will not pass
- # find(:css, 'select#project_default_branch').value.should == 'stable'
+ find(:css, 'select#project_default_branch').value.should == 'fix'
end
end
diff --git a/features/steps/project/search_code.rb b/features/steps/project/search_code.rb
index d117b019a15..8d130a8ed0d 100644
--- a/features/steps/project/search_code.rb
+++ b/features/steps/project/search_code.rb
@@ -3,15 +3,14 @@ class ProjectSearchCode < Spinach::FeatureSteps
include SharedProject
include SharedPaths
- When 'I search for term "Welcome to GitLab"' do
- fill_in "search", with: "Welcome to GitLab"
+ When 'I search for term "coffee"' do
+ fill_in "search", with: "coffee"
click_button "Go"
click_link 'Repository Code'
end
- Then 'I should see files from repository containing "Welcome to GitLab"' do
- page.should have_content "Welcome to GitLab"
- page.should have_content "GitLab is a free project and repository management application"
+ Then 'I should see files from repository containing "coffee"' do
+ page.should have_content "coffee"
+ page.should have_content " CONTRIBUTING.md"
end
-
end
diff --git a/features/steps/shared/diff_note.rb b/features/steps/shared/diff_note.rb
index 201642a086e..b107b083220 100644
--- a/features/steps/shared/diff_note.rb
+++ b/features/steps/shared/diff_note.rb
@@ -1,5 +1,6 @@
module SharedDiffNote
include Spinach::DSL
+ include RepoHelpers
Given 'I cancel the diff comment' do
within(diff_file_selector) do
@@ -19,8 +20,8 @@ module SharedDiffNote
end
Given 'I leave a diff comment like "Typo, please fix"' do
- find('a[data-line-code="586fb7c4e1add2d4d24e27566ed7064680098646_29_14"]').click
- within("#{diff_file_selector} form[rel$='586fb7c4e1add2d4d24e27566ed7064680098646_29_14']") do
+ click_diff_line(sample_commit.line_code)
+ within("#{diff_file_selector} form[rel$='#{sample_commit.line_code}']") do
fill_in "note[note]", with: "Typo, please fix"
find(".js-comment-button").trigger("click")
sleep 0.05
@@ -28,28 +29,28 @@ module SharedDiffNote
end
Given 'I preview a diff comment text like "Should fix it :smile:"' do
- find('a[data-line-code="586fb7c4e1add2d4d24e27566ed7064680098646_29_14"]').click
- within("#{diff_file_selector} form[rel$='586fb7c4e1add2d4d24e27566ed7064680098646_29_14']") do
+ click_diff_line(sample_commit.line_code)
+ within("#{diff_file_selector} form[rel$='#{sample_commit.line_code}']") do
fill_in "note[note]", with: "Should fix it :smile:"
find(".js-note-preview-button").trigger("click")
end
end
Given 'I preview another diff comment text like "DRY this up"' do
- find('a[data-line-code="586fb7c4e1add2d4d24e27566ed7064680098646_57_41"]').click
+ click_diff_line(sample_commit.del_line_code)
- within("#{diff_file_selector} form[rel$='586fb7c4e1add2d4d24e27566ed7064680098646_57_41']") do
+ within("#{diff_file_selector} form[rel$='#{sample_commit.del_line_code}']") do
fill_in "note[note]", with: "DRY this up"
find(".js-note-preview-button").trigger("click")
end
end
Given 'I open a diff comment form' do
- find('a[data-line-code="586fb7c4e1add2d4d24e27566ed7064680098646_29_14"]').click
+ click_diff_line(sample_commit.line_code)
end
Given 'I open another diff comment form' do
- find('a[data-line-code="586fb7c4e1add2d4d24e27566ed7064680098646_57_41"]').click
+ click_diff_line(sample_commit.del_line_code)
end
Given 'I write a diff comment like ":-1: I don\'t like this"' do
@@ -155,6 +156,10 @@ module SharedDiffNote
end
def diff_file_selector
- ".diff-file"
+ ".diff-file:nth-of-type(1)"
+ end
+
+ def click_diff_line(code)
+ find("a[data-line-code='#{code}']").click
end
end
diff --git a/features/steps/shared/paths.rb b/features/steps/shared/paths.rb
index 21cc8da6d7c..4e97dba20b3 100644
--- a/features/steps/shared/paths.rb
+++ b/features/steps/shared/paths.rb
@@ -1,5 +1,6 @@
module SharedPaths
include Spinach::DSL
+ include RepoHelpers
step 'I visit new project page' do
visit new_project_path
@@ -257,15 +258,15 @@ module SharedPaths
end
step 'I visit blob file from repo' do
- visit project_blob_path(@project, File.join(ValidCommit::ID, ValidCommit::BLOB_FILE_PATH))
+ visit project_blob_path(@project, File.join(sample_commit.id, sample_blob.path))
end
- step 'I visit "Gemfile.lock" file in repo' do
- visit project_blob_path(@project, File.join(root_ref, 'Gemfile.lock'))
+ step 'I visit ".gitignore" file in repo' do
+ visit project_blob_path(@project, File.join(root_ref, '.gitignore'))
end
- step 'I visit project source page for "8470d70"' do
- visit project_tree_path(@project, "8470d70")
+ step 'I visit project source page for "6d39438"' do
+ visit project_tree_path(@project, "6d39438")
end
step 'I visit project tags page' do
@@ -273,7 +274,7 @@ module SharedPaths
end
step 'I visit project commit page' do
- visit project_commit_path(@project, ValidCommit::ID)
+ visit project_commit_path(@project, sample_commit.id)
end
step 'I visit project "Shop" issues page' do
diff --git a/features/steps/shared/project.rb b/features/steps/shared/project.rb
index e31d349a45f..655840f447d 100644
--- a/features/steps/shared/project.rb
+++ b/features/steps/shared/project.rb
@@ -26,8 +26,8 @@ module SharedProject
data = {
before: "0000000000000000000000000000000000000000",
- after: "0220c11b9a3e6c69dc8fd35321254ca9a7b98f7e",
- ref: "refs/heads/new_design",
+ after: "6d394385cf567f80a8fd85055db1ab4c5295806f",
+ ref: "refs/heads/fix",
user_id: @user.id,
user_name: @user.name,
repository: {
@@ -49,7 +49,7 @@ module SharedProject
Then 'I should see project "Shop" activity feed' do
project = Project.find_by(name: "Shop")
- page.should have_content "#{@user.name} pushed new branch new_design at #{project.name_with_namespace}"
+ page.should have_content "#{@user.name} pushed new branch fix at #{project.name_with_namespace}"
end
Then 'I should see project settings' do
diff --git a/features/support/env.rb b/features/support/env.rb
index 3ab2ce0a3e6..22f28987fe3 100644
--- a/features/support/env.rb
+++ b/features/support/env.rb
@@ -15,7 +15,7 @@ require 'spinach/capybara'
require 'sidekiq/testing/inline'
-%w(valid_commit valid_commit_with_alt_email big_commits select2_helper test_env).each do |f|
+%w(select2_helper test_env repo_helpers).each do |f|
require Rails.root.join('spec', 'support', f)
end
@@ -39,7 +39,6 @@ Capybara.ignore_hidden_elements = false
DatabaseCleaner.strategy = :truncation
Spinach.hooks.before_scenario do
- TestEnv.setup_stubs
DatabaseCleaner.start
end
@@ -48,7 +47,7 @@ Spinach.hooks.after_scenario do
end
Spinach.hooks.before_run do
- TestEnv.init(mailer: false, init_repos: true, repos: false)
+ TestEnv.init(mailer: false)
RSpec::Mocks::setup self
include FactoryGirl::Syntax::Methods
diff --git a/lib/gitlab/satellite/merge_action.rb b/lib/gitlab/satellite/merge_action.rb
index 6c32dfb3ad9..7c9b2294647 100644
--- a/lib/gitlab/satellite/merge_action.rb
+++ b/lib/gitlab/satellite/merge_action.rb
@@ -45,27 +45,30 @@ module Gitlab
handle_exception(ex)
end
- # Get a raw diff of the source to the target
def diff_in_satellite
in_locked_and_timed_satellite do |merge_repo|
prepare_satellite!(merge_repo)
update_satellite_source_and_target!(merge_repo)
- diff = merge_repo.git.native(:diff, default_options, "origin/#{merge_request.target_branch}", "source/#{merge_request.source_branch}")
+
+ # Only show what is new in the source branch compared to the target branch, not the other way around.
+ # The line below with merge_base is equivalent to diff with three dots (git diff branch1...branch2)
+ # From the git documentation: "git diff A...B" is equivalent to "git diff $(git-merge-base A B) B"
+ common_commit = merge_repo.git.native(:merge_base, default_options, ["origin/#{merge_request.target_branch}", "source/#{merge_request.source_branch}"]).strip
+ merge_repo.git.native(:diff, default_options, common_commit, "source/#{merge_request.source_branch}")
end
rescue Grit::Git::CommandFailed => ex
handle_exception(ex)
end
- # Only show what is new in the source branch compared to the target branch, not the other way around.
- # The line below with merge_base is equivalent to diff with three dots (git diff branch1...branch2)
- # From the git documentation: "git diff A...B" is equivalent to "git diff $(git-merge-base A B) B"
def diffs_between_satellite
in_locked_and_timed_satellite do |merge_repo|
prepare_satellite!(merge_repo)
update_satellite_source_and_target!(merge_repo)
if merge_request.for_fork?
+ # Only show what is new in the source branch compared to the target branch, not the other way around.
+ # The line below with merge_base is equivalent to diff with three dots (git diff branch1...branch2)
+ # From the git documentation: "git diff A...B" is equivalent to "git diff $(git-merge-base A B) B"
common_commit = merge_repo.git.native(:merge_base, default_options, ["origin/#{merge_request.target_branch}", "source/#{merge_request.source_branch}"]).strip
- #this method doesn't take default options
diffs = merge_repo.diff(common_commit, "source/#{merge_request.source_branch}")
else
raise "Attempt to determine diffs between for a non forked merge request in satellite MergeRequest.id:[#{merge_request.id}]"
diff --git a/lib/tasks/gitlab/shell.rake b/lib/tasks/gitlab/shell.rake
index dfc90bb3339..ff27e6a3066 100644
--- a/lib/tasks/gitlab/shell.rake
+++ b/lib/tasks/gitlab/shell.rake
@@ -4,7 +4,8 @@ namespace :gitlab do
task :install, [:tag, :repo] => :environment do |t, args|
warn_user_is_not_gitlab
- args.with_defaults(tag: "v1.9.3", repo: "https://gitlab.com/gitlab-org/gitlab-shell.git")
+ default_version = File.read(File.join(Rails.root, "GITLAB_SHELL_VERSION")).strip
+ args.with_defaults(tag: 'v' + default_version, repo: "https://gitlab.com/gitlab-org/gitlab-shell.git")
user = Settings.gitlab.user
home_dir = Settings.gitlab.user_home
diff --git a/spec/controllers/blob_controller_spec.rb b/spec/controllers/blob_controller_spec.rb
index 929f6d3b46d..11d748ca77f 100644
--- a/spec/controllers/blob_controller_spec.rb
+++ b/spec/controllers/blob_controller_spec.rb
@@ -44,8 +44,8 @@ describe Projects::BlobController do
end
context 'redirect to tree' do
- let(:id) { 'master/doc' }
- it { should redirect_to("/#{project.path_with_namespace}/tree/master/doc") }
+ let(:id) { 'markdown/doc' }
+ it { should redirect_to("/#{project.path_with_namespace}/tree/markdown/doc") }
end
end
end
diff --git a/spec/controllers/merge_requests_controller_spec.rb b/spec/controllers/merge_requests_controller_spec.rb
index 1502bded97f..300527e4ff2 100644
--- a/spec/controllers/merge_requests_controller_spec.rb
+++ b/spec/controllers/merge_requests_controller_spec.rb
@@ -3,12 +3,11 @@ require 'spec_helper'
describe Projects::MergeRequestsController do
let(:project) { create(:project) }
let(:user) { create(:user) }
- let(:merge_request) { create(:merge_request_with_diffs, target_project: project, source_project: project, target_branch: "stable", source_branch: "master") }
+ let(:merge_request) { create(:merge_request_with_diffs, target_project: project, source_project: project) }
before do
sign_in(user)
project.team << [user, :master]
- Projects::MergeRequestsController.any_instance.stub(validates_merge_request: true, )
end
describe "#show" do
@@ -61,7 +60,7 @@ describe Projects::MergeRequestsController do
it "should really be a git email patch with commit" do
get :show, project_id: project.to_param, id: merge_request.iid, format: format
- expect(response.body[0..100]).to start_with("From 6ea87c47f0f8a24ae031c3fff17bc913889ecd00")
+ expect(response.body[0..100]).to start_with("From #{merge_request.commits.last.id}")
end
it "should contain git diffs" do
diff --git a/spec/controllers/tree_controller_spec.rb b/spec/controllers/tree_controller_spec.rb
index b169c2a678f..8147fb0e6fb 100644
--- a/spec/controllers/tree_controller_spec.rb
+++ b/spec/controllers/tree_controller_spec.rb
@@ -26,7 +26,7 @@ describe Projects::TreeController do
end
context "valid branch, valid path" do
- let(:id) { 'master/app/' }
+ let(:id) { 'master/encoding/' }
it { should respond_with(:success) }
end
@@ -36,7 +36,7 @@ describe Projects::TreeController do
end
context "invalid branch, valid path" do
- let(:id) { 'invalid-branch/app/' }
+ let(:id) { 'invalid-branch/encoding/' }
it { should respond_with(:not_found) }
end
end
diff --git a/spec/factories.rb b/spec/factories.rb
index ad4c56986c3..03c87fcc6c5 100644
--- a/spec/factories.rb
+++ b/spec/factories.rb
@@ -27,51 +27,6 @@ FactoryGirl.define do
factory :admin, traits: [:admin]
end
- factory :empty_project, class: 'Project' do
- sequence(:name) { |n| "project#{n}" }
- path { name.downcase.gsub(/\s/, '_') }
- namespace
- creator
- snippets_enabled true
-
- trait :public do
- visibility_level Gitlab::VisibilityLevel::PUBLIC
- end
-
- trait :internal do
- visibility_level Gitlab::VisibilityLevel::INTERNAL
- end
-
- trait :private do
- visibility_level Gitlab::VisibilityLevel::PRIVATE
- end
- end
-
- # Generates a test repository from the repository stored under `spec/seed_project.tar.gz`.
- # Once you run `rake gitlab:setup`, you can see what the repository looks like under `tmp/repositories/gitlabhq`.
- # In order to modify files in the repository, you must untar the seed, modify and remake the tar.
- # Before recompressing, do not forget to `git checkout master`.
- # After recompressing, you need to run `RAILS_ENV=test bundle exec rake gitlab:setup` to regenerate the seeds under tmp.
- #
- # If you want to modify the repository only for an specific type of tests, e.g., markdown tests,
- # consider using a feature branch to reduce the chances of collision with other tests.
- # Create a new commit, and use the same commit message that you will use for the change in the main repo.
- # Changing the commig message and SHA of branch `master` may break tests.
- factory :project, parent: :empty_project 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)
- end
- end
-
- factory :redmine_project, parent: :project do
- issues_tracker { "redmine" }
- issues_tracker_id { "project_name_in_redmine" }
- end
-
factory :group do
sequence(:name) { |n| "group#{n}" }
path { name.downcase.gsub(/\s/, '_') }
@@ -107,105 +62,6 @@ FactoryGirl.define do
factory :reopened_issue, traits: [:reopened]
end
- factory :merge_request do
- title
- author
- source_project factory: :project
- target_project { source_project }
-
- # → git log stable..master --pretty=oneline
- # b1e6a9dbf1c85e6616497a5e7bad9143a4bd0828 tree css fixes
- # 8716fc78f3c65bbf7bcf7b574febd583bc5d2812 Added loading animation for notes
- # cd5c4bac5042c5469dcdf7e7b2f768d3c6fd7088 notes count for wall
- # 8470d70da67355c9c009e4401746b1d5410af2e3 notes controller refactored
- # 1e689bfba39525ead225eaf611948cfbe8ac34cf fixed notes logic
- # f0f14c8eaba69ebddd766498a9d0b0e79becd633 finished scss refactoring
- # 3a4b4fb4cde7809f033822a171b9feae19d41fff Moving ui styles to one scss file, Added ui class to body
- # 065c200c33f68c2bb781e35a43f9dc8138a893b5 removed unnecessary hr tags & titles
- # 1e8b111be85df0db6c8000ef9a710bc0221eae83 Merge branch 'master' of github.com:gitlabhq/gitlabhq
- # f403da73f5e62794a0447aca879360494b08f678 Fixed ajax loading image. Fixed wrong wording
- # e6ea73c77600d413d370249b8e392734f7d1dbee Merge pull request #468 from bencevans/patch-1
- # 4a3c05b69355deee25767a74d0512ec4b510d4ef Merge pull request #470 from bgondy/patch-1
- # 0347fe2412eb51d3efeccc35210e9268bc765ac5 Update app/views/projects/team.html.haml
- # 2b5c61bdece1f7eb2b901ceea7d364065cdf76ac Title for a link fixed
- # 460eeb13b7560b40104044973ff933b1a6dbbcaa Increased count of notes loaded when visit wall page
- # 21c141afb1c53a9180a99d2cca29ffa613eb7e3a Merge branch 'notes_refactoring'
- # 292a41cbe295f16f7148913b31eb0fb91f3251c3 Fixed comments for snippets. Tests fixed
- # d41d8ffb02fa74fd4571603548bd7e401ec99e0c Reply button, Comments for Merge Request diff
- # b1a36b552be2a7a6bc57fbed6c52dc6ed82111f8 Merge pull request #466 from skroutz/no-rbenv
- # db75dae913e8365453ca231f101b067314a7ea71 Merge pull request #465 from skroutz/branches_commit_link
- # 75f040fbfe4b5af23ff004ad3207c3976df097a8 Don't enforce rbenv version
- # e42fb4fda475370dcb0d8f8f1268bfdc7a0cc437 Fix broken commit link in branches page
- # 215a01f63ccdc085f75a48f6f7ab6f2b15b5852c move notes login to one controller
- # 81092c01984a481e312de10a28e3f1a6dda182a3 Status codes for errors, New error pages
- # 7d279f9302151e3c8f4c5df9c5200a72799409b9 better error handling for not found resource, gitolite error
- # 9e6d0710e927aa8ea834b8a9ae9f277be617ac7d Merge pull request #443 from CedricGatay/fix/incorrectLineNumberingInDiff
- # 6ea87c47f0f8a24ae031c3fff17bc913889ecd00 Incorrect line numbering in diff
- #
- # → git log master..stable --pretty=oneline
- # empty
-
- source_branch "master"
- target_branch "stable"
-
- trait :with_diffs do
- end
-
- trait :closed do
- state :closed
- end
-
- trait :reopened do
- state :reopened
- end
-
- trait :simple do
- source_branch "simple_merge_request"
- target_branch "master"
- end
-
- factory :closed_merge_request, traits: [:closed]
- factory :reopened_merge_request, traits: [:reopened]
- factory :merge_request_with_diffs, traits: [:with_diffs]
- end
-
- factory :note do
- project
- note "Note"
- author
-
- factory :note_on_commit, traits: [:on_commit]
- factory :note_on_commit_diff, traits: [:on_commit, :on_diff]
- factory :note_on_issue, traits: [:on_issue], aliases: [:votable_note]
- factory :note_on_merge_request, traits: [:on_merge_request]
- factory :note_on_merge_request_diff, traits: [:on_merge_request, :on_diff]
-
- trait :on_commit do
- project factory: :project
- commit_id "bcf03b5de6c33f3869ef70d68cf06e679d1d7f9a"
- noteable_type "Commit"
- end
-
- trait :on_diff do
- line_code "0_184_184"
- end
-
- trait :on_merge_request do
- project factory: :project
- noteable_id 1
- noteable_type "MergeRequest"
- end
-
- trait :on_issue do
- noteable_id 1
- noteable_type "Issue"
- end
-
- trait :with_attachment do
- attachment { fixture_file_upload(Rails.root + "spec/fixtures/dk.png", "`/png") }
- end
- end
-
factory :event do
factory :closed_issue_event do
project
diff --git a/spec/factories/merge_requests.rb b/spec/factories/merge_requests.rb
new file mode 100644
index 00000000000..3319262c015
--- /dev/null
+++ b/spec/factories/merge_requests.rb
@@ -0,0 +1,47 @@
+FactoryGirl.define do
+ factory :merge_request do
+ title
+ author
+ source_project factory: :project
+ target_project { source_project }
+
+ # → git log --pretty=oneline feature..master
+ # 5937ac0a7beb003549fc5fd26fc247adbce4a52e Add submodule from gitlab.com
+ # 570e7b2abdd848b95f2f578043fc23bd6f6fd24d Change some files
+ # 6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9 More submodules
+ # d14d6c0abdd253381df51a723d58691b2ee1ab08 Remove ds_store files
+ # c1acaa58bbcbc3eafe538cb8274ba387047b69f8 Ignore DS files
+ #
+ # See also RepoHelpers.sample_compare
+ #
+ source_branch "master"
+ target_branch "feature"
+
+ merge_status :can_be_merged
+
+ trait :with_diffs do
+ end
+
+ trait :conflict do
+ source_branch "feature_conflict"
+ target_branch "feature"
+ end
+
+ trait :closed do
+ state :closed
+ end
+
+ trait :reopened do
+ state :reopened
+ end
+
+ trait :simple do
+ source_branch "feature"
+ target_branch "master"
+ end
+
+ factory :closed_merge_request, traits: [:closed]
+ factory :reopened_merge_request, traits: [:reopened]
+ factory :merge_request_with_diffs, traits: [:with_diffs]
+ end
+end
diff --git a/spec/factories/notes.rb b/spec/factories/notes.rb
new file mode 100644
index 00000000000..a55ccf289dd
--- /dev/null
+++ b/spec/factories/notes.rb
@@ -0,0 +1,40 @@
+require_relative '../support/repo_helpers'
+
+FactoryGirl.define do
+ factory :note do
+ project
+ note "Note"
+ author
+
+ factory :note_on_commit, traits: [:on_commit]
+ factory :note_on_commit_diff, traits: [:on_commit, :on_diff]
+ factory :note_on_issue, traits: [:on_issue], aliases: [:votable_note]
+ factory :note_on_merge_request, traits: [:on_merge_request]
+ factory :note_on_merge_request_diff, traits: [:on_merge_request, :on_diff]
+
+ trait :on_commit do
+ project factory: :project
+ commit_id RepoHelpers.sample_commit.id
+ noteable_type "Commit"
+ end
+
+ trait :on_diff do
+ line_code "0_184_184"
+ end
+
+ trait :on_merge_request do
+ project factory: :project
+ noteable_id 1
+ noteable_type "MergeRequest"
+ end
+
+ trait :on_issue do
+ noteable_id 1
+ noteable_type "Issue"
+ end
+
+ trait :with_attachment do
+ attachment { fixture_file_upload(Rails.root + "spec/fixtures/dk.png", "`/png") }
+ end
+ end
+end
diff --git a/spec/factories/projects.rb b/spec/factories/projects.rb
new file mode 100644
index 00000000000..353d9d645ef
--- /dev/null
+++ b/spec/factories/projects.rb
@@ -0,0 +1,44 @@
+FactoryGirl.define do
+ factory :empty_project, class: 'Project' do
+ sequence(:name) { |n| "project#{n}" }
+ path { name.downcase.gsub(/\s/, '_') }
+ namespace
+ creator
+ snippets_enabled true
+
+ trait :public do
+ visibility_level Gitlab::VisibilityLevel::PUBLIC
+ end
+
+ trait :internal do
+ visibility_level Gitlab::VisibilityLevel::INTERNAL
+ end
+
+ trait :private do
+ visibility_level Gitlab::VisibilityLevel::PRIVATE
+ end
+ end
+
+ # Generates a test repository from the repository stored under `spec/seed_project.tar.gz`.
+ # Once you run `rake gitlab:setup`, you can see what the repository looks like under `tmp/repositories/gitlabhq`.
+ # In order to modify files in the repository, you must untar the seed, modify and remake the tar.
+ # Before recompressing, do not forget to `git checkout master`.
+ # After recompressing, you need to run `RAILS_ENV=test bundle exec rake gitlab:setup` to regenerate the seeds under tmp.
+ #
+ # If you want to modify the repository only for an specific type of tests, e.g., markdown tests,
+ # consider using a feature branch to reduce the chances of collision with other tests.
+ # Create a new commit, and use the same commit message that you will use for the change in the main repo.
+ # Changing the commig message and SHA of branch `master` may break tests.
+ factory :project, parent: :empty_project do
+ path { 'gitlabhq' }
+
+ after :create do |project|
+ TestEnv.copy_repo(project)
+ end
+ end
+
+ factory :redmine_project, parent: :project do
+ issues_tracker { "redmine" }
+ issues_tracker_id { "project_name_in_redmine" }
+ end
+end
diff --git a/spec/features/notes_on_merge_requests_spec.rb b/spec/features/notes_on_merge_requests_spec.rb
index 3fe11849660..47776ba7f3f 100644
--- a/spec/features/notes_on_merge_requests_spec.rb
+++ b/spec/features/notes_on_merge_requests_spec.rb
@@ -1,197 +1,209 @@
require 'spec_helper'
-describe "On a merge request", js: true, feature: true do
- let!(:merge_request) { create(:merge_request, :simple) }
- let!(:project) { merge_request.source_project }
- let!(:note) { create(:note_on_merge_request, :with_attachment, project: project) }
-
- before do
- login_as :admin
- visit project_merge_request_path(project, merge_request)
- end
+describe 'Comments' do
+ include RepoHelpers
- subject { page }
+ describe "On a merge request", js: true, feature: true do
+ let!(:merge_request) { create(:merge_request) }
+ let!(:project) { merge_request.source_project }
+ let!(:note) { create(:note_on_merge_request, :with_attachment, project: project) }
- describe "the note form" do
- it 'should be valid' do
- should have_css(".js-main-target-form", visible: true, count: 1)
- find(".js-main-target-form input[type=submit]").value.should == "Add Comment"
- within(".js-main-target-form") { should_not have_link("Cancel") }
- within(".js-main-target-form") { should have_css(".js-note-preview-button", visible: false) }
+ before do
+ login_as :admin
+ visit project_merge_request_path(project, merge_request)
end
- describe "with text" do
- before do
- within(".js-main-target-form") do
- fill_in "note[note]", with: "This is awesome"
- end
- end
+ subject { page }
- it 'should have enable submit button and preview button' do
- within(".js-main-target-form") { should_not have_css(".js-comment-button[disabled]") }
- within(".js-main-target-form") { should have_css(".js-note-preview-button", visible: true) }
+ describe "the note form" do
+ it 'should be valid' do
+ should have_css(".js-main-target-form", visible: true, count: 1)
+ find(".js-main-target-form input[type=submit]").value.should == "Add Comment"
+ within(".js-main-target-form") { should_not have_link("Cancel") }
+ within(".js-main-target-form") { should have_css(".js-note-preview-button", visible: false) }
end
- end
- end
- describe "when posting a note" do
- before do
- within(".js-main-target-form") do
- fill_in "note[note]", with: "This is awsome!"
- find(".js-note-preview-button").trigger("click")
- click_button "Add Comment"
+ describe "with text" do
+ before do
+ within(".js-main-target-form") do
+ fill_in "note[note]", with: "This is awesome"
+ end
+ end
+
+ it 'should have enable submit button and preview button' do
+ within(".js-main-target-form") { should_not have_css(".js-comment-button[disabled]") }
+ within(".js-main-target-form") { should have_css(".js-note-preview-button", visible: true) }
+ end
end
end
- it 'should be added and form reset' do
- should have_content("This is awsome!")
- within(".js-main-target-form") { should have_no_field("note[note]", with: "This is awesome!") }
- within(".js-main-target-form") { should have_css(".js-note-preview", visible: false) }
- within(".js-main-target-form") { should have_css(".js-note-text", visible: true) }
- end
- end
+ describe "when posting a note" do
+ before do
+ within(".js-main-target-form") do
+ fill_in "note[note]", with: "This is awsome!"
+ find(".js-note-preview-button").trigger("click")
+ click_button "Add Comment"
+ end
+ end
- describe "when editing a note", js: true do
- it "should contain the hidden edit form" do
- within("#note_#{note.id}") { should have_css(".note-edit-form", visible: false) }
+ it 'should be added and form reset' do
+ should have_content("This is awsome!")
+ within(".js-main-target-form") { should have_no_field("note[note]", with: "This is awesome!") }
+ within(".js-main-target-form") { should have_css(".js-note-preview", visible: false) }
+ within(".js-main-target-form") { should have_css(".js-note-text", visible: true) }
+ end
end
- describe "editing the note" do
- before do
- find('.note').hover
- find(".js-note-edit").click
+ describe "when editing a note", js: true do
+ it "should contain the hidden edit form" do
+ within("#note_#{note.id}") { should have_css(".note-edit-form", visible: false) }
end
- it "should show the note edit form and hide the note body" do
- within("#note_#{note.id}") do
- find(".note-edit-form", visible: true).should be_visible
- find(".note-text", visible: false).should_not be_visible
+ describe "editing the note" do
+ before do
+ find('.note').hover
+ find(".js-note-edit").click
end
- end
-
- it "should reset the edit note form textarea with the original content of the note if cancelled" do
- find('.note').hover
- find(".js-note-edit").click
- within(".note-edit-form") do
- fill_in "note[note]", with: "Some new content"
- find(".btn-cancel").click
- find(".js-note-text", visible: false).text.should == note.note
+ it "should show the note edit form and hide the note body" do
+ within("#note_#{note.id}") do
+ find(".note-edit-form", visible: true).should be_visible
+ find(".note-text", visible: false).should_not be_visible
+ end
end
- end
- it "appends the edited at time to the note" do
- find('.note').hover
- find(".js-note-edit").click
+ it "should reset the edit note form textarea with the original content of the note if cancelled" do
+ find('.note').hover
+ find(".js-note-edit").click
- within(".note-edit-form") do
- fill_in "note[note]", with: "Some new content"
- find(".btn-save").click
+ within(".note-edit-form") do
+ fill_in "note[note]", with: "Some new content"
+ find(".btn-cancel").click
+ find(".js-note-text", visible: false).text.should == note.note
+ end
end
- within("#note_#{note.id}") do
- should have_css(".note-last-update small")
- find(".note-last-update small").text.should match(/Edited less than a minute ago/)
+ it "appends the edited at time to the note" do
+ find('.note').hover
+ find(".js-note-edit").click
+
+ within(".note-edit-form") do
+ fill_in "note[note]", with: "Some new content"
+ find(".btn-save").click
+ end
+
+ within("#note_#{note.id}") do
+ should have_css(".note-last-update small")
+ find(".note-last-update small").text.should match(/Edited less than a minute ago/)
+ end
end
end
- end
- describe "deleting an attachment" do
- before do
- find('.note').hover
- find(".js-note-edit").click
- end
+ describe "deleting an attachment" do
+ before do
+ find('.note').hover
+ find(".js-note-edit").click
+ end
- it "shows the delete link" do
- within(".note-attachment") do
- should have_css(".js-note-attachment-delete")
+ it "shows the delete link" do
+ within(".note-attachment") do
+ should have_css(".js-note-attachment-delete")
+ end
end
- end
- it "removes the attachment div and resets the edit form" do
- find(".js-note-attachment-delete").click
- should_not have_css(".note-attachment")
- find(".note-edit-form", visible: false).should_not be_visible
+ it "removes the attachment div and resets the edit form" do
+ find(".js-note-attachment-delete").click
+ should_not have_css(".note-attachment")
+ find(".note-edit-form", visible: false).should_not be_visible
+ end
end
end
end
-end
-
-describe "On a merge request diff", js: true, feature: true do
- let(:merge_request) { create(:merge_request, :with_diffs, :simple) }
- let(:project) { merge_request.source_project }
-
- before do
- login_as :admin
- visit diffs_project_merge_request_path(project, merge_request)
- end
- subject { page }
+ describe "On a merge request diff", js: true, feature: true do
+ let(:merge_request) { create(:merge_request) }
+ let(:project) { merge_request.source_project }
- describe "when adding a note" do
before do
- find('a[data-line-code="8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7"]').click
- end
-
- describe "the notes holder" do
- it { should have_css(".js-temp-notes-holder") }
-
- it { within(".js-temp-notes-holder") { should have_css(".new_note") } }
+ login_as :admin
+ visit diffs_project_merge_request_path(project, merge_request)
end
- describe "the note form" do
- it "shouldn't add a second form for same row" do
- find('a[data-line-code="8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7"]').click
+ subject { page }
- should have_css("tr[id='8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7'] + .js-temp-notes-holder form", count: 1)
+ describe "when adding a note" do
+ before do
+ find("a[data-line-code=\"#{line_code}\"]").click
end
- it "should be removed when canceled" do
- within(".diff-file form[rel$='8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7']") do
- find(".js-close-discussion-note-form").trigger("click")
- end
+ describe "the notes holder" do
+ it { should have_css(".js-temp-notes-holder") }
- should have_no_css(".js-temp-notes-holder")
+ it { within(".js-temp-notes-holder") { should have_css(".new_note") } }
end
- end
- end
- describe "with muliple note forms" do
- before do
- find('a[data-line-code="8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7"]').click
- find('a[data-line-code="8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_10_10"]').click
- end
+ describe "the note form" do
+ it "shouldn't add a second form for same row" do
+ find("a[data-line-code=\"#{line_code}\"]").click
- it { should have_css(".js-temp-notes-holder", count: 2) }
-
- describe "previewing them separately" do
- before do
- # add two separate texts and trigger previews on both
- within("tr[id='8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7'] + .js-temp-notes-holder") do
- fill_in "note[note]", with: "One comment on line 7"
- find(".js-note-preview-button").trigger("click")
+ should have_css("tr[id='#{line_code}'] + .js-temp-notes-holder form", count: 1)
end
- within("tr[id='8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_10_10'] + .js-temp-notes-holder") do
- fill_in "note[note]", with: "Another comment on line 10"
- find(".js-note-preview-button").trigger("click")
+
+ it "should be removed when canceled" do
+ within(".diff-file form[rel$='#{line_code}']") do
+ find(".js-close-discussion-note-form").trigger("click")
+ end
+
+ should have_no_css(".js-temp-notes-holder")
end
end
end
- describe "posting a note" do
+ describe "with muliple note forms" do
before do
- within("tr[id='8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_10_10'] + .js-temp-notes-holder") do
- fill_in "note[note]", with: "Another comment on line 10"
- click_button("Add Comment")
+ find("a[data-line-code=\"#{line_code}\"]").click
+ find("a[data-line-code=\"#{line_code_2}\"]").click
+ end
+
+ it { should have_css(".js-temp-notes-holder", count: 2) }
+
+ describe "previewing them separately" do
+ before do
+ # add two separate texts and trigger previews on both
+ within("tr[id='#{line_code}'] + .js-temp-notes-holder") do
+ fill_in "note[note]", with: "One comment on line 7"
+ find(".js-note-preview-button").trigger("click")
+ end
+ within("tr[id='#{line_code_2}'] + .js-temp-notes-holder") do
+ fill_in "note[note]", with: "Another comment on line 10"
+ find(".js-note-preview-button").trigger("click")
+ end
end
end
- it 'should be added as discussion' do
- should have_content("Another comment on line 10")
- should have_css(".notes_holder")
- should have_css(".notes_holder .note", count: 1)
- should have_link("Reply")
+ describe "posting a note" do
+ before do
+ within("tr[id='#{line_code_2}'] + .js-temp-notes-holder") do
+ fill_in "note[note]", with: "Another comment on line 10"
+ click_button("Add Comment")
+ end
+ end
+
+ it 'should be added as discussion' do
+ should have_content("Another comment on line 10")
+ should have_css(".notes_holder")
+ should have_css(".notes_holder .note", count: 1)
+ should have_link("Reply")
+ end
end
end
end
+
+ def line_code
+ sample_compare.changes.first[:line_code]
+ end
+
+ def line_code_2
+ sample_compare.changes.last[:line_code]
+ end
end
diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb
index 053a1fe22f5..510b76fa9df 100644
--- a/spec/helpers/application_helper_spec.rb
+++ b/spec/helpers/application_helper_spec.rb
@@ -132,12 +132,12 @@ describe ApplicationHelper do
it "includes a list of branch names" do
options[0][0].should == 'Branches'
- options[0][1].should include('master', 'stable')
+ options[0][1].should include('master', 'feature')
end
it "includes a list of tag names" do
options[1][0].should == 'Tags'
- options[1][1].should include('v0.9.4','v1.2.0')
+ options[1][1].should include('v1.0.0','v1.1.0')
end
it "includes a specific commit ref if defined" do
diff --git a/spec/helpers/gitlab_markdown_helper_spec.rb b/spec/helpers/gitlab_markdown_helper_spec.rb
index f176a393415..ba6af6f8b45 100644
--- a/spec/helpers/gitlab_markdown_helper_spec.rb
+++ b/spec/helpers/gitlab_markdown_helper_spec.rb
@@ -17,6 +17,7 @@ describe GitlabMarkdownHelper do
before do
# Helper expects a @project instance variable
@project = project
+ @ref = 'markdown'
@repository = project.repository
end
@@ -472,13 +473,13 @@ describe GitlabMarkdownHelper do
it "should handle relative urls for a file in master" do
actual = "[GitLab API doc](doc/api/README.md)\n"
- expected = "<p><a href=\"/#{project.path_with_namespace}/blob/master/doc/api/README.md\">GitLab API doc</a></p>\n"
+ expected = "<p><a href=\"/#{project.path_with_namespace}/blob/#{@ref}/doc/api/README.md\">GitLab API doc</a></p>\n"
markdown(actual).should match(expected)
end
it "should handle relative urls for a directory in master" do
actual = "[GitLab API doc](doc/api)\n"
- expected = "<p><a href=\"/#{project.path_with_namespace}/tree/master/doc/api\">GitLab API doc</a></p>\n"
+ expected = "<p><a href=\"/#{project.path_with_namespace}/tree/#{@ref}/doc/api\">GitLab API doc</a></p>\n"
markdown(actual).should match(expected)
end
@@ -490,13 +491,13 @@ describe GitlabMarkdownHelper do
it "should handle relative urls in reference links for a file in master" do
actual = "[GitLab API doc][GitLab readme]\n [GitLab readme]: doc/api/README.md\n"
- expected = "<p><a href=\"/#{project.path_with_namespace}/blob/master/doc/api/README.md\">GitLab API doc</a></p>\n"
+ expected = "<p><a href=\"/#{project.path_with_namespace}/blob/#{@ref}/doc/api/README.md\">GitLab API doc</a></p>\n"
markdown(actual).should match(expected)
end
it "should handle relative urls in reference links for a directory in master" do
actual = "[GitLab API doc directory][GitLab readmes]\n [GitLab readmes]: doc/api/\n"
- expected = "<p><a href=\"/#{project.path_with_namespace}/tree/master/doc/api\">GitLab API doc directory</a></p>\n"
+ expected = "<p><a href=\"/#{project.path_with_namespace}/tree/#{@ref}/doc/api\">GitLab API doc directory</a></p>\n"
markdown(actual).should match(expected)
end
diff --git a/spec/lib/gitlab/satellite/merge_action_spec.rb b/spec/lib/gitlab/satellite/merge_action_spec.rb
index 41d3321b173..479a73a1081 100644
--- a/spec/lib/gitlab/satellite/merge_action_spec.rb
+++ b/spec/lib/gitlab/satellite/merge_action_spec.rb
@@ -1,22 +1,16 @@
require 'spec_helper'
describe 'Gitlab::Satellite::MergeAction' do
- before(:each) do
- @master = ['master', '69b34b7e9ad9f496f0ad10250be37d6265a03bba']
- @one_after_stable = ['stable', '6ea87c47f0f8a24ae031c3fff17bc913889ecd00'] #this commit sha is one after stable
- @wiki_branch = ['wiki', '635d3e09b72232b6e92a38de6cc184147e5bcb41'] #this is the commit sha where the wiki branch goes off from master
- @conflicting_metior = ['metior', '313d96e42b313a0af5ab50fa233bf43e27118b3f'] #this branch conflicts with the wiki branch
-
- # these commits are quite close together, itended to make string diffs/format patches small
- @close_commit1 = ['2_3_notes_fix', '8470d70da67355c9c009e4401746b1d5410af2e3']
- @close_commit2 = ['scss_refactoring', 'f0f14c8eaba69ebddd766498a9d0b0e79becd633']
- end
+ include RepoHelpers
let(:project) { create(:project, namespace: create(:group)) }
let(:fork_project) { create(:project, namespace: create(:group), forked_from_project: project) }
let(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
let(:merge_request_fork) { create(:merge_request, source_project: fork_project, target_project: project) }
+ let(:merge_request_with_conflict) { create(:merge_request, :conflict, source_project: project, target_project: project) }
+ let(:merge_request_fork_with_conflict) { create(:merge_request, :conflict, source_project: project, target_project: project) }
+
describe '#commits_between' do
def verify_commits(commits, first_commit_sha, last_commit_sha)
commits.each { |commit| commit.class.should == Gitlab::Git::Commit }
@@ -26,51 +20,27 @@ describe 'Gitlab::Satellite::MergeAction' do
context 'on fork' do
it 'should get proper commits between' do
- merge_request_fork.target_branch = @one_after_stable[0]
- merge_request_fork.source_branch = @master[0]
- commits = Gitlab::Satellite::MergeAction.new(merge_request_fork.author, merge_request_fork).commits_between
- verify_commits(commits, @one_after_stable[1], @master[1])
-
- merge_request_fork.target_branch = @wiki_branch[0]
- merge_request_fork.source_branch = @master[0]
commits = Gitlab::Satellite::MergeAction.new(merge_request_fork.author, merge_request_fork).commits_between
- verify_commits(commits, @wiki_branch[1], @master[1])
+ verify_commits(commits, sample_compare.commits.first, sample_compare.commits.last)
end
end
context 'between branches' do
it 'should raise exception -- not expected to be used by non forks' do
- merge_request.target_branch = @one_after_stable[0]
- merge_request.source_branch = @master[0]
- expect {Gitlab::Satellite::MergeAction.new(merge_request.author, merge_request).commits_between}.to raise_error
-
- merge_request.target_branch = @wiki_branch[0]
- merge_request.source_branch = @master[0]
- expect {Gitlab::Satellite::MergeAction.new(merge_request.author, merge_request).commits_between}.to raise_error
+ expect { Gitlab::Satellite::MergeAction.new(merge_request.author, merge_request).commits_between }.to raise_error
end
end
end
describe '#format_patch' do
- let(:target_commit) {['artiom-config-examples','9edbac5ac88ffa1ec9dad0097226b51e29ebc9ac']}
- let(:source_commit) {['metior', '313d96e42b313a0af5ab50fa233bf43e27118b3f']}
-
def verify_content(patch)
- (patch.include? source_commit[1]).should be_true
- (patch.include? '635d3e09b72232b6e92a38de6cc184147e5bcb41').should be_true
- (patch.include? '2bb2dee057327c81978ed0aa99904bd7ff5e6105').should be_true
- (patch.include? '2e83de1924ad3429b812d17498b009a8b924795d').should be_true
- (patch.include? 'ee45a49c57a362305431cbf004e4590b713c910e').should be_true
- (patch.include? 'a6870dd08f8f274d9a6b899f638c0c26fefaa690').should be_true
-
- (patch.include? 'e74fae147abc7d2ffbf93d363dbbe45b87751f6f').should be_false
- (patch.include? '86f76b11c670425bbab465087f25172378d76147').should be_false
+ sample_compare.commits.each do |commit|
+ patch.include?(commit).should be_true
+ end
end
context 'on fork' do
it 'should build a format patch' do
- merge_request_fork.target_branch = target_commit[0]
- merge_request_fork.source_branch = source_commit[0]
patch = Gitlab::Satellite::MergeAction.new(merge_request_fork.author, merge_request_fork).format_patch
verify_content(patch)
end
@@ -78,8 +48,6 @@ describe 'Gitlab::Satellite::MergeAction' do
context 'between branches' do
it 'should build a format patch' do
- merge_request.target_branch = target_commit[0]
- merge_request.source_branch = source_commit[0]
patch = Gitlab::Satellite::MergeAction.new(merge_request_fork.author, merge_request).format_patch
verify_content(patch)
end
@@ -87,7 +55,6 @@ describe 'Gitlab::Satellite::MergeAction' do
end
describe '#diffs_between_satellite tested against diff_in_satellite' do
-
def is_a_matching_diff(diff, diffs)
diff_count = diff.scan('diff --git').size
diff_count.should >= 1
@@ -100,50 +67,38 @@ describe 'Gitlab::Satellite::MergeAction' do
context 'on fork' do
it 'should get proper diffs' do
- merge_request_fork.target_branch = @close_commit1[0]
- merge_request_fork.source_branch = @master[0]
diffs = Gitlab::Satellite::MergeAction.new(merge_request_fork.author, merge_request_fork).diffs_between_satellite
-
- merge_request_fork.target_branch = @close_commit1[0]
- merge_request_fork.source_branch = @master[0]
diff = Gitlab::Satellite::MergeAction.new(merge_request.author, merge_request_fork).diff_in_satellite
-
is_a_matching_diff(diff, diffs)
end
end
context 'between branches' do
it 'should get proper diffs' do
- merge_request.target_branch = @close_commit1[0]
- merge_request.source_branch = @master[0]
- expect{Gitlab::Satellite::MergeAction.new(merge_request.author, merge_request).diffs_between_satellite}.to raise_error
+ expect{ Gitlab::Satellite::MergeAction.new(merge_request.author, merge_request).diffs_between_satellite }.to raise_error
end
end
end
describe '#can_be_merged?' do
context 'on fork' do
- it 'return true or false depending on if something is mergable' do
- merge_request_fork.target_branch = @one_after_stable[0]
- merge_request_fork.source_branch = @master[0]
- Gitlab::Satellite::MergeAction.new(merge_request_fork.author, merge_request_fork).can_be_merged?.should be_true
-
- merge_request_fork.target_branch = @conflicting_metior[0]
- merge_request_fork.source_branch = @wiki_branch[0]
- Gitlab::Satellite::MergeAction.new(merge_request_fork.author, merge_request_fork).can_be_merged?.should be_false
- end
+ it { Gitlab::Satellite::MergeAction.new(
+ merge_request_fork.author,
+ merge_request_fork).can_be_merged?.should be_true }
+
+ it { Gitlab::Satellite::MergeAction.new(
+ merge_request_fork_with_conflict.author,
+ merge_request_fork_with_conflict).can_be_merged?.should be_false }
end
context 'between branches' do
- it 'return true or false depending on if something is mergable' do
- merge_request.target_branch = @one_after_stable[0]
- merge_request.source_branch = @master[0]
- Gitlab::Satellite::MergeAction.new(merge_request.author, merge_request).can_be_merged?.should be_true
-
- merge_request.target_branch = @conflicting_metior[0]
- merge_request.source_branch = @wiki_branch[0]
- Gitlab::Satellite::MergeAction.new(merge_request.author, merge_request).can_be_merged?.should be_false
- end
+ it { Gitlab::Satellite::MergeAction.new(
+ merge_request.author,
+ merge_request).can_be_merged?.should be_true }
+
+ it { Gitlab::Satellite::MergeAction.new(
+ merge_request_with_conflict.author,
+ merge_request_with_conflict).can_be_merged?.should be_false }
end
end
end
diff --git a/spec/mailers/notify_spec.rb b/spec/mailers/notify_spec.rb
index 314b2691c40..a337408630b 100644
--- a/spec/mailers/notify_spec.rb
+++ b/spec/mailers/notify_spec.rb
@@ -3,6 +3,7 @@ require 'spec_helper'
describe Notify do
include EmailSpec::Helpers
include EmailSpec::Matchers
+ include RepoHelpers
let(:gitlab_sender) { Gitlab.config.gitlab.email_from }
let(:recipient) { create(:user, email: 'recipient@example.com') }
@@ -524,7 +525,7 @@ describe Notify do
describe 'email on push with multiple commits' do
let(:example_site_path) { root_path }
let(:user) { create(:user) }
- let(:compare) { Gitlab::Git::Compare.new(project.repository.raw_repository, 'cd5c4bac', 'b1e6a9db') }
+ let(:compare) { Gitlab::Git::Compare.new(project.repository.raw_repository, sample_image_commit.id, sample_commit.id) }
let(:commits) { Commit.decorate(compare.commits) }
let(:diff_path) { project_compare_path(project, from: commits.first, to: commits.last) }
@@ -545,11 +546,11 @@ describe Notify do
end
it 'includes commits list' do
- should have_body_text /tree css fixes/
+ should have_body_text /Change some files/
end
it 'includes diffs' do
- should have_body_text /Checkout wiki pages for installation information/
+ should have_body_text /def archive_formats_regex/
end
it 'contains a link to the diff' do
@@ -560,7 +561,7 @@ describe Notify do
describe 'email on push with a single commit' do
let(:example_site_path) { root_path }
let(:user) { create(:user) }
- let(:compare) { Gitlab::Git::Compare.new(project.repository.raw_repository, '8716fc78', 'b1e6a9db') }
+ let(:compare) { Gitlab::Git::Compare.new(project.repository.raw_repository, sample_commit.parent_id, sample_commit.id) }
let(:commits) { Commit.decorate(compare.commits) }
let(:diff_path) { project_commit_path(project, commits.first) }
@@ -581,11 +582,11 @@ describe Notify do
end
it 'includes commits list' do
- should have_body_text /tree css fixes/
+ should have_body_text /Change some files/
end
it 'includes diffs' do
- should have_body_text /Checkout wiki pages for installation information/
+ should have_body_text /def archive_formats_regex/
end
it 'contains a link to the diff' do
diff --git a/spec/models/commit_spec.rb b/spec/models/commit_spec.rb
index d8ab171d3ee..1673184cbe4 100644
--- a/spec/models/commit_spec.rb
+++ b/spec/models/commit_spec.rb
@@ -11,7 +11,7 @@ describe Commit do
end
it "truncates a message without a newline at 80 characters" do
- message = commit.safe_message * 10
+ message = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sodales id felis id blandit. Vivamus egestas lacinia lacus, sed rutrum mauris.'
commit.stub(:safe_message).and_return(message)
commit.title.should == "#{message[0..79]}&hellip;"
@@ -24,11 +24,14 @@ describe Commit do
commit.title.should == message
end
- it "truncates a message with a newline after 80 characters at 70 characters" do
- message = (commit.safe_message * 10) + "\n"
+ it "does not truncates a message with a newline after 80 but less 100 characters" do
+ message =<<eos
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sodales id felis id blandit.
+Vivamus egestas lacinia lacus, sed rutrum mauris.
+eos
commit.stub(:safe_message).and_return(message)
- commit.title.should == "#{message[0..79]}&hellip;"
+ commit.title.should == message.split("\n").first
end
end
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index bc537b7312b..82ab97cdd7a 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -124,24 +124,21 @@ describe Project do
describe :update_merge_requests do
let(:project) { create(:project) }
-
- before do
- @merge_request = create(:merge_request, source_project: project, target_project: project)
- @key = create(:key, user_id: project.owner.id)
- end
+ let(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
+ let(:key) { create(:key, user_id: project.owner.id) }
+ let(:prev_commit_id) { merge_request.commits.last.id }
+ let(:commit_id) { merge_request.commits.first.id }
it "should close merge request if last commit from source branch was pushed to target branch" do
- @merge_request.reload_code
- @merge_request.last_commit.id.should == "69b34b7e9ad9f496f0ad10250be37d6265a03bba"
- project.update_merge_requests("8716fc78f3c65bbf7bcf7b574febd583bc5d2812", "69b34b7e9ad9f496f0ad10250be37d6265a03bba", "refs/heads/stable", @key.user)
- @merge_request.reload
- @merge_request.merged?.should be_true
+ project.update_merge_requests(prev_commit_id, commit_id, "refs/heads/#{merge_request.target_branch}", key.user)
+ merge_request.reload
+ merge_request.merged?.should be_true
end
it "should update merge request commits with new one if pushed to source branch" do
- project.update_merge_requests("8716fc78f3c65bbf7bcf7b574febd583bc5d2812", "69b34b7e9ad9f496f0ad10250be37d6265a03bba", "refs/heads/master", @key.user)
- @merge_request.reload
- @merge_request.last_commit.id.should == "69b34b7e9ad9f496f0ad10250be37d6265a03bba"
+ project.update_merge_requests(prev_commit_id, commit_id, "refs/heads/#{merge_request.source_branch}", key.user)
+ merge_request.reload
+ merge_request.last_commit.id.should == commit_id
end
end
@@ -237,7 +234,7 @@ describe Project do
project.protected_branches.create(name: 'master')
end
- it { project.open_branches.map(&:name).should include('bootstrap') }
+ it { project.open_branches.map(&:name).should include('feature') }
it { project.open_branches.map(&:name).should_not include('master') }
end
diff --git a/spec/models/project_wiki_spec.rb b/spec/models/project_wiki_spec.rb
index f06a5cd4ecc..e4ee2fc5b13 100644
--- a/spec/models/project_wiki_spec.rb
+++ b/spec/models/project_wiki_spec.rb
@@ -1,33 +1,14 @@
require "spec_helper"
describe ProjectWiki do
-
- def remove_temp_repo(path)
- FileUtils.rm_rf path
- end
-
- def commit_details
- commit = {name: user.name, email: user.email, message: "test commit"}
- end
-
- def create_page(name, content)
- subject.wiki.write_page(name, :markdown, content, commit_details)
- end
-
- def destroy_page(page)
- subject.wiki.delete_page(page, commit_details)
- end
-
- let(:project) { create(:project) }
+ let(:project) { create(:empty_project) }
let(:repository) { project.repository }
let(:user) { project.owner }
let(:gitlab_shell) { Gitlab::Shell.new }
+ let(:project_wiki) { ProjectWiki.new(project, user) }
- subject { ProjectWiki.new(project, user) }
-
- before do
- create_temp_repo(subject.send(:path_to_repo))
- end
+ subject { project_wiki }
+ before { project_wiki.wiki }
describe "#path_with_namespace" do
it "returns the project path with namespace with the .wiki extension" do
@@ -60,23 +41,13 @@ describe ProjectWiki do
subject.wiki.should be_a Gollum::Wiki
end
- before do
- Gitlab::Shell.any_instance.stub(:add_repository) do
- create_temp_repo("#{Rails.root}/tmp/test-git-base-path/non-existant.wiki.git")
- end
- project.stub(:path_with_namespace).and_return("non-existant")
- end
-
it "creates a new wiki repo if one does not yet exist" do
- wiki = ProjectWiki.new(project, user)
- wiki.create_page("index", "test content").should_not == false
-
- FileUtils.rm_rf wiki.send(:path_to_repo)
+ project_wiki.create_page("index", "test content").should be_true
end
it "raises CouldNotCreateWikiError if it can't create the wiki repository" do
- ProjectWiki.any_instance.stub(:init_repo).and_return(false)
- expect { ProjectWiki.new(project, user).wiki }.to raise_exception(ProjectWiki::CouldNotCreateWikiError)
+ project_wiki.stub(:init_repo).and_return(false)
+ expect { project_wiki.send(:create_repo!) }.to raise_exception(ProjectWiki::CouldNotCreateWikiError)
end
end
@@ -242,4 +213,26 @@ describe ProjectWiki do
end
end
+ private
+
+ def create_temp_repo(path)
+ FileUtils.mkdir_p path
+ system(*%W(git init --quiet --bare -- #{path}))
+ end
+
+ def remove_temp_repo(path)
+ FileUtils.rm_rf path
+ end
+
+ def commit_details
+ commit = {name: user.name, email: user.email, message: "test commit"}
+ end
+
+ def create_page(name, content)
+ subject.wiki.write_page(name, :markdown, content, commit_details)
+ end
+
+ def destroy_page(page)
+ subject.wiki.delete_page(page, commit_details)
+ end
end
diff --git a/spec/models/wiki_page_spec.rb b/spec/models/wiki_page_spec.rb
index 005c513af3c..cb42822b9bb 100644
--- a/spec/models/wiki_page_spec.rb
+++ b/spec/models/wiki_page_spec.rb
@@ -1,35 +1,12 @@
require "spec_helper"
describe WikiPage do
-
- def remove_temp_repo(path)
- FileUtils.rm_rf path
- end
-
- def commit_details
- commit = {name: user.name, email: user.email, message: "test commit"}
- end
-
- def create_page(name, content)
- wiki.wiki.write_page(name, :markdown, content, commit_details)
- end
-
- def destroy_page(title)
- page = wiki.wiki.paged(title)
- wiki.wiki.delete_page(page, commit_details)
- end
-
- let(:project) { create(:project) }
- let(:repository) { project.repository }
+ let(:project) { create(:empty_project) }
let(:user) { project.owner }
let(:wiki) { ProjectWiki.new(project, user) }
subject { WikiPage.new(wiki) }
- before do
- create_temp_repo(wiki.send(:path_to_repo))
- end
-
describe "#initialize" do
context "when initialized with an existing gollum page" do
before do
@@ -171,4 +148,22 @@ describe WikiPage do
end
end
+ private
+
+ def remove_temp_repo(path)
+ FileUtils.rm_rf path
+ end
+
+ def commit_details
+ commit = {name: user.name, email: user.email, message: "test commit"}
+ end
+
+ def create_page(name, content)
+ wiki.wiki.write_page(name, :markdown, content, commit_details)
+ end
+
+ def destroy_page(title)
+ page = wiki.wiki.paged(title)
+ wiki.wiki.delete_page(page, commit_details)
+ end
end
diff --git a/spec/requests/api/branches_spec.rb b/spec/requests/api/branches_spec.rb
index b145e620122..f3d7ca2ed21 100644
--- a/spec/requests/api/branches_spec.rb
+++ b/spec/requests/api/branches_spec.rb
@@ -9,6 +9,8 @@ describe API::API, api: true do
let!(:project) { create(:project, creator_id: user.id) }
let!(:master) { create(:users_project, user: user, project: project, project_access: UsersProject::MASTER) }
let!(:guest) { create(:users_project, user: user2, project: project, project_access: UsersProject::GUEST) }
+ let!(:branch_name) { 'feature' }
+ let!(:branch_sha) { '0b4bc9a49b562e85de7cc9e834518ea6828729b9' }
describe "GET /projects/:id/repository/branches" do
it "should return an array of project branches" do
@@ -21,11 +23,11 @@ describe API::API, api: true do
describe "GET /projects/:id/repository/branches/:branch" do
it "should return the branch information for a single branch" do
- get api("/projects/#{project.id}/repository/branches/new_design", user)
+ get api("/projects/#{project.id}/repository/branches/#{branch_name}", user)
response.status.should == 200
- json_response['name'].should == 'new_design'
- json_response['commit']['id'].should == '621491c677087aa243f165eab467bfdfbee00be1'
+ json_response['name'].should == branch_name
+ json_response['commit']['id'].should == branch_sha
json_response['protected'].should == false
end
@@ -42,11 +44,11 @@ describe API::API, api: true do
describe "PUT /projects/:id/repository/branches/:branch/protect" do
it "should protect a single branch" do
- put api("/projects/#{project.id}/repository/branches/new_design/protect", user)
+ put api("/projects/#{project.id}/repository/branches/#{branch_name}/protect", user)
response.status.should == 200
- json_response['name'].should == 'new_design'
- json_response['commit']['id'].should == '621491c677087aa243f165eab467bfdfbee00be1'
+ json_response['name'].should == branch_name
+ json_response['commit']['id'].should == branch_sha
json_response['protected'].should == true
end
@@ -56,24 +58,24 @@ describe API::API, api: true do
end
it "should return a 403 error if guest" do
- put api("/projects/#{project.id}/repository/branches/new_design/protect", user2)
+ put api("/projects/#{project.id}/repository/branches/#{branch_name}/protect", user2)
response.status.should == 403
end
it "should return success when protect branch again" do
- put api("/projects/#{project.id}/repository/branches/new_design/protect", user)
- put api("/projects/#{project.id}/repository/branches/new_design/protect", user)
+ put api("/projects/#{project.id}/repository/branches/#{branch_name}/protect", user)
+ put api("/projects/#{project.id}/repository/branches/#{branch_name}/protect", user)
response.status.should == 200
end
end
describe "PUT /projects/:id/repository/branches/:branch/unprotect" do
it "should unprotect a single branch" do
- put api("/projects/#{project.id}/repository/branches/new_design/unprotect", user)
+ put api("/projects/#{project.id}/repository/branches/#{branch_name}/unprotect", user)
response.status.should == 200
- json_response['name'].should == 'new_design'
- json_response['commit']['id'].should == '621491c677087aa243f165eab467bfdfbee00be1'
+ json_response['name'].should == branch_name
+ json_response['commit']['id'].should == branch_sha
json_response['protected'].should == false
end
@@ -83,8 +85,8 @@ describe API::API, api: true do
end
it "should return success when unprotect branch again" do
- put api("/projects/#{project.id}/repository/branches/new_design/unprotect", user)
- put api("/projects/#{project.id}/repository/branches/new_design/unprotect", user)
+ put api("/projects/#{project.id}/repository/branches/#{branch_name}/unprotect", user)
+ put api("/projects/#{project.id}/repository/branches/#{branch_name}/unprotect", user)
response.status.should == 200
end
end
@@ -92,19 +94,19 @@ describe API::API, api: true do
describe "POST /projects/:id/repository/branches" do
it "should create a new branch" do
post api("/projects/#{project.id}/repository/branches", user),
- branch_name: 'new_design',
- ref: '621491c677087aa243f165eab467bfdfbee00be1'
+ branch_name: branch_name,
+ ref: branch_sha
response.status.should == 201
- json_response['name'].should == 'new_design'
- json_response['commit']['id'].should == '621491c677087aa243f165eab467bfdfbee00be1'
+ json_response['name'].should == branch_name
+ json_response['commit']['id'].should == branch_sha
end
it "should deny for user without push access" do
post api("/projects/#{project.id}/repository/branches", user2),
- branch_name: 'new_design',
- ref: '621491c677087aa243f165eab467bfdfbee00be1'
+ branch_name: branch_name,
+ ref: branch_sha
response.status.should == 403
end
@@ -114,13 +116,13 @@ describe API::API, api: true do
before { Repository.any_instance.stub(rm_branch: true) }
it "should remove branch" do
- delete api("/projects/#{project.id}/repository/branches/new_design", user)
+ delete api("/projects/#{project.id}/repository/branches/#{branch_name}", user)
response.status.should == 200
end
it "should remove protected branch" do
- project.protected_branches.create(name: 'new_design')
- delete api("/projects/#{project.id}/repository/branches/new_design", user)
+ project.protected_branches.create(name: branch_name)
+ delete api("/projects/#{project.id}/repository/branches/#{branch_name}", user)
response.status.should == 405
json_response['message'].should == 'Protected branch cant be removed'
end
diff --git a/spec/requests/api/files_spec.rb b/spec/requests/api/files_spec.rb
index e84122f2fbc..b43a202aec0 100644
--- a/spec/requests/api/files_spec.rb
+++ b/spec/requests/api/files_spec.rb
@@ -4,20 +4,22 @@ describe API::API, api: true do
include ApiHelpers
let(:user) { create(:user) }
let!(:project) { create(:project, namespace: user.namespace ) }
+ let(:file_path) { 'files/ruby/popen.rb' }
+
before { project.team << [user, :developer] }
describe "GET /projects/:id/repository/files" do
it "should return file info" do
params = {
- file_path: 'app/models/key.rb',
+ file_path: file_path,
ref: 'master',
}
get api("/projects/#{project.id}/repository/files", user), params
response.status.should == 200
- json_response['file_path'].should == 'app/models/key.rb'
- json_response['file_name'].should == 'key.rb'
- Base64.decode64(json_response['content']).lines.first.should == "class Key < ActiveRecord::Base\n"
+ json_response['file_path'].should == file_path
+ json_response['file_name'].should == 'popen.rb'
+ Base64.decode64(json_response['content']).lines.first.should == "require 'fileutils'\n"
end
it "should return a 400 bad request if no params given" do
@@ -74,7 +76,7 @@ describe API::API, api: true do
describe "PUT /projects/:id/repository/files" do
let(:valid_params) {
{
- file_path: 'spec/spec_helper.rb',
+ file_path: file_path,
branch_name: 'master',
content: 'puts 8',
commit_message: 'Changed file'
@@ -88,7 +90,7 @@ describe API::API, api: true do
put api("/projects/#{project.id}/repository/files", user), valid_params
response.status.should == 200
- json_response['file_path'].should == 'spec/spec_helper.rb'
+ json_response['file_path'].should == file_path
end
it "should return a 400 bad request if no params given" do
@@ -109,7 +111,7 @@ describe API::API, api: true do
describe "DELETE /projects/:id/repository/files" do
let(:valid_params) {
{
- file_path: 'spec/spec_helper.rb',
+ file_path: file_path,
branch_name: 'master',
commit_message: 'Changed file'
}
@@ -122,7 +124,7 @@ describe API::API, api: true do
delete api("/projects/#{project.id}/repository/files", user), valid_params
response.status.should == 200
- json_response['file_path'].should == 'spec/spec_helper.rb'
+ json_response['file_path'].should == file_path
end
it "should return a 400 bad request if no params given" do
diff --git a/spec/requests/api/repositories_spec.rb b/spec/requests/api/repositories_spec.rb
index a02231a5bba..f8603e11a04 100644
--- a/spec/requests/api/repositories_spec.rb
+++ b/spec/requests/api/repositories_spec.rb
@@ -3,6 +3,8 @@ require 'mime/types'
describe API::API, api: true do
include ApiHelpers
+ include RepoHelpers
+
let(:user) { create(:user) }
let(:user2) { create(:user) }
let!(:project) { create(:project, creator_id: user.id) }
@@ -29,6 +31,7 @@ describe API::API, api: true do
response.status.should == 201
json_response['name'].should == 'v1.0.0'
end
+
it 'should deny for user without push access' do
post api("/projects/#{project.id}/repository/tags", user2),
tag_name: 'v1.0.0',
@@ -47,7 +50,7 @@ describe API::API, api: true do
response.status.should == 200
json_response.should be_an Array
- json_response.first['name'].should == 'app'
+ json_response.first['name'].should == 'encoding'
json_response.first['type'].should == 'tree'
json_response.first['mode'].should == '040000'
end
@@ -92,7 +95,7 @@ describe API::API, api: true do
describe "GET /projects/:id/repository/raw_blobs/:sha" do
it "should get the raw file contents" do
- get api("/projects/#{project.id}/repository/raw_blobs/d1aff2896d99d7acc4d9780fbb716b113c45ecf7", user)
+ get api("/projects/#{project.id}/repository/raw_blobs/#{sample_blob.oid}", user)
response.status.should == 200
end
end
@@ -130,21 +133,21 @@ describe API::API, api: true do
describe 'GET /projects/:id/repository/compare' do
it "should compare branches" do
- get api("/projects/#{project.id}/repository/compare", user), from: 'master', to: 'simple_merge_request'
+ get api("/projects/#{project.id}/repository/compare", user), from: 'master', to: 'feature'
response.status.should == 200
json_response['commits'].should be_present
json_response['diffs'].should be_present
end
it "should compare tags" do
- get api("/projects/#{project.id}/repository/compare", user), from: 'v1.0.1', to: 'v1.0.2'
+ get api("/projects/#{project.id}/repository/compare", user), from: 'v1.0.0', to: 'v1.1.0'
response.status.should == 200
json_response['commits'].should be_present
json_response['diffs'].should be_present
end
it "should compare commits" do
- get api("/projects/#{project.id}/repository/compare", user), from: 'b1e6a9dbf1c85', to: '1e689bfba395'
+ get api("/projects/#{project.id}/repository/compare", user), from: sample_commit.id, to: sample_commit.parent_id
response.status.should == 200
json_response['commits'].should be_empty
json_response['diffs'].should be_empty
@@ -152,7 +155,7 @@ describe API::API, api: true do
end
it "should compare commits in reverse order" do
- get api("/projects/#{project.id}/repository/compare", user), from: '1e689bfba395', to: 'b1e6a9dbf1c85'
+ get api("/projects/#{project.id}/repository/compare", user), from: sample_commit.parent_id, to: sample_commit.id
response.status.should == 200
json_response['commits'].should be_present
json_response['diffs'].should be_present
@@ -175,9 +178,9 @@ describe API::API, api: true do
contributor = json_response.first
contributor['email'].should == 'dmitriy.zaporozhets@gmail.com'
contributor['name'].should == 'Dmitriy Zaporozhets'
- contributor['commits'].should == 185
- contributor['additions'].should == 66072
- contributor['deletions'].should == 63013
+ contributor['commits'].should == 13
+ contributor['additions'].should == 4081
+ contributor['deletions'].should == 29
end
end
end
diff --git a/spec/seed_project.tar.gz b/spec/seed_project.tar.gz
deleted file mode 100644
index 8d32a927da8..00000000000
--- a/spec/seed_project.tar.gz
+++ /dev/null
Binary files differ
diff --git a/spec/services/git_push_service_spec.rb b/spec/services/git_push_service_spec.rb
index 6b89f213bec..fa99acabc78 100644
--- a/spec/services/git_push_service_spec.rb
+++ b/spec/services/git_push_service_spec.rb
@@ -1,14 +1,16 @@
require 'spec_helper'
describe GitPushService do
+ include RepoHelpers
+
let (:user) { create :user }
let (:project) { create :project }
let (:service) { GitPushService.new }
before do
@blankrev = '0000000000000000000000000000000000000000'
- @oldrev = 'b98a310def241a6fd9c9a9a3e7934c48e498fe81'
- @newrev = 'b19a04f53caeebf4fe5ec2327cb83e9253dc91bb'
+ @oldrev = sample_commit.parent_id
+ @newrev = sample_commit.id
@ref = 'refs/heads/master'
end
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 2181238ae9f..6934cabadfa 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -38,14 +38,7 @@ RSpec.configure do |config|
config.include TestEnv
- # If you're not using ActiveRecord, or you'd prefer not to run each of your
- # examples within a transaction, remove the following line or assign false
- # instead of true.
-
config.before(:suite) do
- TestEnv.init(init_repos: true, repos: false)
- end
- config.before(:each) do
- TestEnv.setup_stubs
+ TestEnv.init
end
end
diff --git a/spec/support/big_commits.rb b/spec/support/big_commits.rb
deleted file mode 100644
index 69daa709dd9..00000000000
--- a/spec/support/big_commits.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-module BigCommits
- HUGE_COMMIT_ID = "7f92534f767fa20357a11c63f973ae3b79cc5b85"
- HUGE_COMMIT_MESSAGE = "pybments.rb version up. gitignore improved"
-
- BIG_COMMIT_ID = "d62200cad430565bd9f80befaf329297120330b5"
- BIG_COMMIT_MESSAGE = "clean-up code"
-end
-
diff --git a/spec/support/repo_helpers.rb b/spec/support/repo_helpers.rb
new file mode 100644
index 00000000000..4c4775da692
--- /dev/null
+++ b/spec/support/repo_helpers.rb
@@ -0,0 +1,99 @@
+module RepoHelpers
+ extend self
+
+ # Text file in repo
+ #
+ # Ex.
+ #
+ # # Get object
+ # blob = RepoHelpers.text_blob
+ #
+ # blob.path # => 'files/js/commit.js.coffee'
+ # blob.data # => 'class Commit...'
+ #
+ def sample_blob
+ OpenStruct.new(
+ oid: '5f53439ca4b009096571d3c8bc3d09d30e7431b3',
+ path: "files/js/commit.js.coffee",
+ data: <<eos
+class Commit
+ constructor: ->
+ $('.files .diff-file').each ->
+ new CommitFile(this)
+
+@Commit = Commit
+eos
+ )
+ end
+
+ def sample_commit
+ OpenStruct.new(
+ id: "570e7b2abdd848b95f2f578043fc23bd6f6fd24d",
+ parent_id: '6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9',
+ author_full_name: "Dmitriy Zaporozhets",
+ author_email: "dmitriy.zaporozhets@gmail.com",
+ files_changed_count: 2,
+ line_code: '2f6fcd96b88b36ce98c38da085c795a27d92a3dd_15_14',
+ line_code_path: 'files/ruby/popen.rb',
+ del_line_code: '2f6fcd96b88b36ce98c38da085c795a27d92a3dd_13_13',
+ message: <<eos
+Change some files
+Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
+eos
+ )
+ end
+
+ def sample_big_commit
+ OpenStruct.new(
+ id: "913c66a37b4a45b9769037c55c2d238bd0942d2e",
+ author_full_name: "Dmitriy Zaporozhets",
+ author_email: "dmitriy.zaporozhets@gmail.com",
+ message: <<eos
+Files, encoding and much more
+Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
+eos
+ )
+ end
+
+ def sample_image_commit
+ OpenStruct.new(
+ id: "2f63565e7aac07bcdadb654e253078b727143ec4",
+ author_full_name: "Dmitriy Zaporozhets",
+ author_email: "dmitriy.zaporozhets@gmail.com",
+ old_blob_id: '33f3729a45c02fc67d00adb1b8bca394b0e761d9',
+ new_blob_id: '2f63565e7aac07bcdadb654e253078b727143ec4',
+ message: <<eos
+Modified image
+Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
+eos
+ )
+ end
+
+ def sample_compare
+ changes = [
+ {
+ line_code: 'a5cc2925ca8258af241be7e5b0381edf30266302_20_20',
+ file_path: '.gitignore',
+ },
+ {
+ line_code: '7445606fbf8f3683cd42bdc54b05d7a0bc2dfc44_4_6',
+ file_path: '.gitmodules',
+ }
+ ]
+
+ commits = [
+ '5937ac0a7beb003549fc5fd26fc247adbce4a52e',
+ '570e7b2abdd848b95f2f578043fc23bd6f6fd24d',
+ '6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9',
+ 'd14d6c0abdd253381df51a723d58691b2ee1ab08',
+ 'c1acaa58bbcbc3eafe538cb8274ba387047b69f8',
+ ].reverse # last commit is recent one
+
+ OpenStruct.new(
+ source_branch: 'master',
+ target_branch: 'feature',
+ changes: changes,
+ commits: commits
+ )
+ end
+end
diff --git a/spec/support/test_env.rb b/spec/support/test_env.rb
index 85059dfa9e9..e67c29a6783 100644
--- a/spec/support/test_env.rb
+++ b/spec/support/test_env.rb
@@ -5,167 +5,63 @@ 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
- end
-
- def disable_mailer
- NotificationService.any_instance.stub(mailer: double.as_null_object)
- end
- def enable_mailer
- NotificationService.any_instance.unstub(:mailer)
- end
+ # Clean /tmp/tests
+ tmp_test_path = Rails.root.join('tmp', 'tests')
- 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"))
+ if File.directory?(tmp_test_path)
+ FileUtils.rm_r(tmp_test_path)
end
- Gitlab.config.gitlab_shell.stub(repos_path: repos_path)
+ FileUtils.mkdir_p(tmp_test_path)
- Gitlab.config.satellites.stub(path: satellite_path)
+ # Setup GitLab shell for test instance
+ setup_gitlab_shell
- 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")
+ # Create repository for FactoryGirl.create(:project)
+ setup_factory_repo
end
- 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)
- 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"
+ def disable_mailer
+ NotificationService.any_instance.stub(mailer: double.as_null_object)
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
+ def enable_mailer
+ NotificationService.any_instance.unstub(:mailer)
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)
+ def setup_gitlab_shell
+ unless File.directory?(Gitlab.config.gitlab_shell.path)
+ %x[rake gitlab:shell:install]
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 setup_factory_repo
+ repo_path = repos_path + "/root/testme.git"
+ clone_url = 'https://gitlab.com/gitlab-org/gitlab-test.git'
- 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
+ unless File.directory?(repo_path)
+ git_cmd = %W(git clone --bare #{clone_url} #{repo_path})
+ system(*git_cmd)
+ end
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 = File.expand_path(repos_path + "/root/testme.git")
+ 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 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
diff --git a/spec/support/valid_commit.rb b/spec/support/valid_commit.rb
deleted file mode 100644
index 98bc59b573f..00000000000
--- a/spec/support/valid_commit.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-module ValidCommit
- ID = "8470d70da67355c9c009e4401746b1d5410af2e3"
- MESSAGE = "notes controller refactored"
- AUTHOR_FULL_NAME = "Dmitriy Zaporozhets"
- AUTHOR_EMAIL = "dmitriy.zaporozhets@gmail.com"
-
- FILES = [".foreman", ".gitignore", ".rails_footnotes", ".rspec", ".travis.yml", "CHANGELOG", "Gemfile", "Gemfile.lock", "LICENSE", "Procfile", "Procfile.production", "README.md", "Rakefile", "VERSION", "app", "config.ru", "config", "db", "doc", "lib", "log", "public", "resque.sh", "script", "spec", "vendor"]
- FILES_COUNT = 26
-
- C_FILE_PATH = "app/models"
- C_FILES = [".gitkeep", "ability.rb", "commit.rb", "issue.rb", "key.rb", "mailer_observer.rb", "merge_request.rb", "note.rb", "project.rb", "protected_branch.rb", "repository.rb", "snippet.rb", "tree.rb", "user.rb", "users_project.rb", "web_hook.rb", "wiki.rb"]
-
- BLOB_FILE = %{%h3= @key.title\n%hr\n%pre= @key.key\n.actions\n = link_to 'Remove', @key, :confirm => 'Are you sure?', :method => :delete, :class => \"btn danger delete-key\"\n\n\n}
- BLOB_FILE_PATH = "app/views/keys/show.html.haml"
-end
-
diff --git a/spec/support/valid_commit_with_alt_email.rb b/spec/support/valid_commit_with_alt_email.rb
deleted file mode 100644
index 75854c63a59..00000000000
--- a/spec/support/valid_commit_with_alt_email.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-module ValidCommitWithAltEmail
- ID = "1e689bfba39525ead225eaf611948cfbe8ac34cf"
- MESSAGE = "fixed notes logic"
- AUTHOR_FULL_NAME = "Dmitriy Zaporozhets"
- AUTHOR_EMAIL = "dzaporozhets@sphereconsultinginc.com"
-end