Commit c7d8de4b authored by GitLab Bot's avatar GitLab Bot

Merge remote-tracking branch 'upstream/master' into ce-to-ee-2018-04-23

# Conflicts:
#	CHANGELOG.md
#	app/models/concerns/routable.rb
#	spec/factories/namespaces.rb

[ci skip]
parents fc02fb3a 54b97f9c
...@@ -12,17 +12,30 @@ entry. ...@@ -12,17 +12,30 @@ entry.
- Fix specifying a non-default ref when requesting an archive using the legacy URL. !18468 - Fix specifying a non-default ref when requesting an archive using the legacy URL. !18468
- Respect visibility options and description when importing project from template. !18473 - Respect visibility options and description when importing project from template. !18473
- Removes 'No Job log' message from build trace. !18523 - Removes 'No Job log' message from build trace. !18523
<<<<<<< HEAD
=======
- Align action icons in pipeline graph.
>>>>>>> upstream/master
- Fix direct_upload when records with null file_store are used. - Fix direct_upload when records with null file_store are used.
- Removed alert box in IDE when redirecting to new merge request. - Removed alert box in IDE when redirecting to new merge request.
- Fixed IDE not loading for sub groups. - Fixed IDE not loading for sub groups.
- Fixed IDE not showing loading state when tree is loading. - Fixed IDE not showing loading state when tree is loading.
<<<<<<< HEAD
- Align action icons in pipeline graph. - Align action icons in pipeline graph.
### Performance (3 changes) ### Performance (3 changes)
=======
### Performance (4 changes)
>>>>>>> upstream/master
- Validate project path prior to hitting the database. !18322 - Validate project path prior to hitting the database. !18322
- Add index to file_store on ci_job_artifacts. !18444 - Add index to file_store on ci_job_artifacts. !18444
- Fix N+1 queries when loading participants for a commit note. - Fix N+1 queries when loading participants for a commit note.
<<<<<<< HEAD
=======
- Support Markdown rendering using multiple projects.
>>>>>>> upstream/master
### Added (1 change) ### Added (1 change)
......
...@@ -186,7 +186,7 @@ GEM ...@@ -186,7 +186,7 @@ GEM
docile (1.1.5) docile (1.1.5)
domain_name (0.5.20170404) domain_name (0.5.20170404)
unf (>= 0.0.5, < 1.0.0) unf (>= 0.0.5, < 1.0.0)
doorkeeper (4.3.1) doorkeeper (4.3.2)
railties (>= 4.2) railties (>= 4.2)
doorkeeper-openid_connect (1.3.0) doorkeeper-openid_connect (1.3.0)
doorkeeper (~> 4.3) doorkeeper (~> 4.3)
......
10.7.0-pre 10.8.0-pre
...@@ -31,12 +31,13 @@ module Avatarable ...@@ -31,12 +31,13 @@ module Avatarable
asset_host = ActionController::Base.asset_host asset_host = ActionController::Base.asset_host
use_asset_host = asset_host.present? use_asset_host = asset_host.present?
use_authentication = respond_to?(:public?) && !public?
# Avatars for private and internal groups and projects require authentication to be viewed, # Avatars for private and internal groups and projects require authentication to be viewed,
# which means they can only be served by Rails, on the regular GitLab host. # which means they can only be served by Rails, on the regular GitLab host.
# If an asset host is configured, we need to return the fully qualified URL # If an asset host is configured, we need to return the fully qualified URL
# instead of only the avatar path, so that Rails doesn't prefix it with the asset host. # instead of only the avatar path, so that Rails doesn't prefix it with the asset host.
if use_asset_host && respond_to?(:public?) && !public? if use_asset_host && use_authentication
use_asset_host = false use_asset_host = false
only_path = false only_path = false
end end
...@@ -49,6 +50,6 @@ module Avatarable ...@@ -49,6 +50,6 @@ module Avatarable
url_base << gitlab_config.relative_url_root url_base << gitlab_config.relative_url_root
end end
url_base + avatar.url url_base + avatar.local_url
end end
end end
...@@ -102,7 +102,11 @@ module Routable ...@@ -102,7 +102,11 @@ module Routable
# the route. Caching this per request ensures that even if we have multiple instances, # the route. Caching this per request ensures that even if we have multiple instances,
# we will not have to duplicate work, avoiding N+1 queries in some cases. # we will not have to duplicate work, avoiding N+1 queries in some cases.
def full_path def full_path
<<<<<<< HEAD
return uncached_full_path unless RequestStore.active? && id return uncached_full_path unless RequestStore.active? && id
=======
return uncached_full_path unless RequestStore.active? && persisted?
>>>>>>> upstream/master
RequestStore[full_path_key] ||= uncached_full_path RequestStore[full_path_key] ||= uncached_full_path
end end
......
...@@ -65,6 +65,10 @@ class GitlabUploader < CarrierWave::Uploader::Base ...@@ -65,6 +65,10 @@ class GitlabUploader < CarrierWave::Uploader::Base
!!model !!model
end end
def local_url
File.join('/', self.class.base_dir, dynamic_segment, filename)
end
private private
# Designed to be overridden by child uploaders that have a dynamic path # Designed to be overridden by child uploaders that have a dynamic path
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
.help-block .help-block
Manage repository storage paths. Learn more in the Manage repository storage paths. Learn more in the
= succeed "." do = succeed "." do
= link_to "repository storages documentation", help_page_path("administration/repository_storages") = link_to "repository storages documentation", help_page_path("administration/repository_storage_paths")
.sub-section .sub-section
%h4 Circuit breaker %h4 Circuit breaker
.form-group .form-group
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
- unless @repository.gitlab_ci_yml - unless @repository.gitlab_ci_yml
= link_to 'Get started with Pipelines', help_page_path('ci/quick_start/README'), class: 'btn btn-info' = link_to 'Get started with Pipelines', help_page_path('ci/quick_start/README'), class: 'btn btn-info'
= link_to ci_lint_path, class: 'btn btn-default' do = link_to project_ci_lint_path(@project), class: 'btn btn-default' do
%span CI lint %span CI lint
.content-list.builds-content-list .content-list.builds-content-list
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
%ul %ul
- pipeline.yaml_errors.split(",").each do |error| - pipeline.yaml_errors.split(",").each do |error|
%li= error %li= error
You can also test your .gitlab-ci.yml in the #{link_to "Lint", ci_lint_path} You can also test your .gitlab-ci.yml in the #{link_to "Lint", project_ci_lint_path(@project)}
- if pipeline.project.builds_enabled? && !pipeline.ci_yaml_file - if pipeline.project.builds_enabled? && !pipeline.ci_yaml_file
.bs-callout.bs-callout-warning .bs-callout.bs-callout-warning
......
---
title: Fixed wrong avatar URL when the avatar is on object storage.
merge_request: 18092
author:
type: fixed
---
title: Update links to /ci/lint with ones to project ci/lint
merge_request: 18539
author: Takuya Noguchi
type: fixed
---
title: Update doorkeeper to 4.3.2 to fix GitLab OAuth authentication
merge_request: 18543
author:
type: fixed
...@@ -63,6 +63,8 @@ writing one](testing_levels.md#consider-not-writing-a-system-test)! ...@@ -63,6 +63,8 @@ writing one](testing_levels.md#consider-not-writing-a-system-test)!
Sometimes you may need to debug Capybara tests by observing browser behavior. Sometimes you may need to debug Capybara tests by observing browser behavior.
#### Live debug
You can pause Capybara and view the website on the browser by using the You can pause Capybara and view the website on the browser by using the
`live_debug` method in your spec. The current page will be automatically opened `live_debug` method in your spec. The current page will be automatically opened
in your default browser. in your default browser.
...@@ -90,6 +92,35 @@ Finished in 34.51 seconds (files took 0.76702 seconds to load) ...@@ -90,6 +92,35 @@ Finished in 34.51 seconds (files took 0.76702 seconds to load)
Note: `live_debug` only works on javascript enabled specs. Note: `live_debug` only works on javascript enabled specs.
#### Run `:js` spec in a visible browser
Run the spec with `CHROME_HEADLESS=0`, e.g.:
```
CHROME_HEADLESS=0 bundle exec rspec some_spec.rb
```
The test will go by quickly, but this will give you an idea of what's happening.
You can also add `byebug` or `binding.pry` to pause execution and step through
the test.
#### Screenshots
We use the `capybara-screenshot` gem to automatically take a screenshot on
failure. In CI you can download these files as job artifacts.
Also, you can manually take screenshots at any point in a test by adding the
methods below. Be sure to remove them when they are no longer needed! See
https://github.com/mattheworiordan/capybara-screenshot#manual-screenshots for
more.
Add `screenshot_and_save_page` in a `:js` spec to screenshot what Capybara
"sees", and save the page source.
Add `screenshot_and_open_image` in a `:js` spec to screenshot what Capybara
"sees", and automatically open the image.
### Fast unit tests ### Fast unit tests
Some classes are well-isolated from Rails and you should be able to test them Some classes are well-isolated from Rails and you should be able to test them
......
...@@ -14,6 +14,14 @@ FactoryBot.define do ...@@ -14,6 +14,14 @@ FactoryBot.define do
end end
end end
after(:create) do |group|
if group.owner
# We could remove this after we have proper constraint:
# https://gitlab.com/gitlab-org/gitlab-ce/issues/43292
raise "Don't set owner for groups, use `group.add_owner(user)` instead"
end
end
trait :public do trait :public do
visibility_level Gitlab::VisibilityLevel::PUBLIC visibility_level Gitlab::VisibilityLevel::PUBLIC
end end
......
...@@ -19,6 +19,7 @@ FactoryBot.define do ...@@ -19,6 +19,7 @@ FactoryBot.define do
owner.namespace = namespace owner.namespace = namespace
end end
end end
<<<<<<< HEAD
trait :with_build_minutes do trait :with_build_minutes do
namespace_statistics factory: :namespace_statistics, shared_runners_seconds: 400.minutes.to_i namespace_statistics factory: :namespace_statistics, shared_runners_seconds: 400.minutes.to_i
...@@ -48,5 +49,7 @@ FactoryBot.define do ...@@ -48,5 +49,7 @@ FactoryBot.define do
namespace.plan = create(evaluator.plan) namespace.plan = create(evaluator.plan)
end end
end end
=======
>>>>>>> upstream/master
end end
end end
...@@ -26,7 +26,7 @@ describe 'User browses jobs' do ...@@ -26,7 +26,7 @@ describe 'User browses jobs' do
page.within('.nav-controls') do page.within('.nav-controls') do
ci_lint_tool_link = page.find_link('CI lint') ci_lint_tool_link = page.find_link('CI lint')
expect(ci_lint_tool_link[:href]).to end_with(ci_lint_path) expect(ci_lint_tool_link[:href]).to end_with(project_ci_lint_path(project))
end end
end end
......
require 'spec_helper' require 'spec_helper'
describe Avatarable do describe Avatarable do
set(:project) { create(:project, avatar: fixture_file_upload(File.join(Rails.root, 'spec/fixtures/dk.png'))) } let(:project) { create(:project, :with_avatar) }
let(:gitlab_host) { "https://gitlab.example.com" } let(:gitlab_host) { "https://gitlab.example.com" }
let(:relative_url_root) { "/gitlab" } let(:relative_url_root) { "/gitlab" }
...@@ -37,11 +37,23 @@ describe Avatarable do ...@@ -37,11 +37,23 @@ describe Avatarable do
project.visibility_level = visibility_level project.visibility_level = visibility_level
end end
let(:avatar_path) { (avatar_path_prefix + [project.avatar.url]).join } let(:avatar_path) { (avatar_path_prefix + [project.avatar.local_url]).join }
it 'returns the expected avatar path' do it 'returns the expected avatar path' do
expect(project.avatar_path(only_path: only_path)).to eq(avatar_path) expect(project.avatar_path(only_path: only_path)).to eq(avatar_path)
end end
context "when avatar is stored remotely" do
before do
stub_uploads_object_storage(AvatarUploader)
project.avatar.migrate!(ObjectStorage::Store::REMOTE)
end
it 'returns the expected avatar path' do
expect(project.avatar_url(only_path: only_path)).to eq(avatar_path)
end
end
end end
end end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment