Resolve "Precompiled assets with digest strings are ignored in CI"
This commit is contained in:
parent
18fee3060c
commit
7b262c4356
12 changed files with 35 additions and 16 deletions
|
@ -16,7 +16,7 @@ Rails.application.configure do
|
|||
config.cache_classes = ENV['CACHE_CLASSES'] == 'true'
|
||||
|
||||
# Configure static asset server for tests with Cache-Control for performance
|
||||
config.assets.digest = false
|
||||
config.assets.compile = false if ENV['CI']
|
||||
config.serve_static_files = true
|
||||
config.static_cache_control = "public, max-age=3600"
|
||||
|
||||
|
|
|
@ -216,7 +216,7 @@ describe Projects::JobsController do
|
|||
expect(json_response['text']).to eq status.text
|
||||
expect(json_response['label']).to eq status.label
|
||||
expect(json_response['icon']).to eq status.icon
|
||||
expect(json_response['favicon']).to eq "/assets/ci_favicons/#{status.favicon}.ico"
|
||||
expect(json_response['favicon']).to match_asset_path "/assets/ci_favicons/#{status.favicon}.ico"
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -658,7 +658,7 @@ describe Projects::MergeRequestsController do
|
|||
expect(json_response['text']).to eq status.text
|
||||
expect(json_response['label']).to eq status.label
|
||||
expect(json_response['icon']).to eq status.icon
|
||||
expect(json_response['favicon']).to eq "/assets/ci_favicons/#{status.favicon}.ico"
|
||||
expect(json_response['favicon']).to match_asset_path "/assets/ci_favicons/#{status.favicon}.ico"
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -142,7 +142,7 @@ describe Projects::PipelinesController do
|
|||
expect(json_response['text']).to eq status.text
|
||||
expect(json_response['label']).to eq status.label
|
||||
expect(json_response['icon']).to eq status.icon
|
||||
expect(json_response['favicon']).to eq "/assets/ci_favicons/#{status.favicon}.ico"
|
||||
expect(json_response['favicon']).to match_asset_path("/assets/ci_favicons/#{status.favicon}.ico")
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ describe GroupsHelper do
|
|||
it 'gives default avatar_icon when no avatar is present' do
|
||||
group = create(:group)
|
||||
group.save!
|
||||
expect(group_icon(group.path)).to match('group_avatar.png')
|
||||
expect(group_icon(group.path)).to match_asset_path('group_avatar.png')
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ describe PageLayoutHelper do
|
|||
|
||||
describe 'page_image' do
|
||||
it 'defaults to the GitLab logo' do
|
||||
expect(helper.page_image).to end_with 'assets/gitlab_logo.png'
|
||||
expect(helper.page_image).to match_asset_path 'assets/gitlab_logo.png'
|
||||
end
|
||||
|
||||
%w(project user group).each do |type|
|
||||
|
@ -70,13 +70,13 @@ describe PageLayoutHelper do
|
|||
object = double(avatar_url: nil)
|
||||
assign(type, object)
|
||||
|
||||
expect(helper.page_image).to end_with 'assets/gitlab_logo.png'
|
||||
expect(helper.page_image).to match_asset_path 'assets/gitlab_logo.png'
|
||||
end
|
||||
end
|
||||
|
||||
context "with no assignments" do
|
||||
it 'falls back to the default' do
|
||||
expect(helper.page_image).to end_with 'assets/gitlab_logo.png'
|
||||
expect(helper.page_image).to match_asset_path 'assets/gitlab_logo.png'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -84,9 +84,9 @@ describe Gitlab::PathRegex do
|
|||
let(:top_level_words) do
|
||||
words = routes_not_starting_in_wildcard.map do |route|
|
||||
route.split('/')[1]
|
||||
end.compact.uniq
|
||||
end.compact
|
||||
|
||||
words + ee_top_level_words + files_in_public + Array(API::API.prefix.to_s)
|
||||
(words + ee_top_level_words + files_in_public + Array(API::API.prefix.to_s)).uniq
|
||||
end
|
||||
|
||||
let(:ee_top_level_words) do
|
||||
|
@ -95,10 +95,11 @@ describe Gitlab::PathRegex do
|
|||
|
||||
let(:files_in_public) do
|
||||
git = Gitlab.config.git.bin_path
|
||||
`cd #{Rails.root} && #{git} ls-files public`
|
||||
tracked = `cd #{Rails.root} && #{git} ls-files public`
|
||||
.split("\n")
|
||||
.map { |entry| entry.gsub('public/', '') }
|
||||
.uniq
|
||||
tracked + %w(assets uploads)
|
||||
end
|
||||
|
||||
# All routes that start with a namespaced path, that have 1 or more
|
||||
|
|
|
@ -14,7 +14,7 @@ describe 'Gitlab::Popen' do
|
|||
end
|
||||
|
||||
it { expect(@status).to be_zero }
|
||||
it { expect(@output).to include('cache') }
|
||||
it { expect(@output).to include('tests') }
|
||||
end
|
||||
|
||||
context 'non-zero status' do
|
||||
|
|
|
@ -38,7 +38,7 @@ describe BuildSerializer do
|
|||
expect(subject[:text]).to eq(status.text)
|
||||
expect(subject[:label]).to eq(status.label)
|
||||
expect(subject[:icon]).to eq(status.icon)
|
||||
expect(subject[:favicon]).to eq("/assets/ci_favicons/#{status.favicon}.ico")
|
||||
expect(subject[:favicon]).to match_asset_path("/assets/ci_favicons/#{status.favicon}.ico")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -168,7 +168,7 @@ describe PipelineSerializer do
|
|||
expect(subject[:text]).to eq(status.text)
|
||||
expect(subject[:label]).to eq(status.label)
|
||||
expect(subject[:icon]).to eq(status.icon)
|
||||
expect(subject[:favicon]).to eq("/assets/ci_favicons/#{status.favicon}.ico")
|
||||
expect(subject[:favicon]).to match_asset_path("/assets/ci_favicons/#{status.favicon}.ico")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -18,12 +18,12 @@ describe StatusEntity do
|
|||
it 'contains status details' do
|
||||
expect(subject).to include :text, :icon, :favicon, :label, :group
|
||||
expect(subject).to include :has_details, :details_path
|
||||
expect(subject[:favicon]).to eq('/assets/ci_favicons/favicon_status_success.ico')
|
||||
expect(subject[:favicon]).to match_asset_path('/assets/ci_favicons/favicon_status_success.ico')
|
||||
end
|
||||
|
||||
it 'contains a dev namespaced favicon if dev env' do
|
||||
allow(Rails.env).to receive(:development?) { true }
|
||||
expect(entity.as_json[:favicon]).to eq('/assets/ci_favicons/dev/favicon_status_success.ico')
|
||||
expect(entity.as_json[:favicon]).to match_asset_path('/assets/ci_favicons/dev/favicon_status_success.ico')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -169,6 +169,24 @@ RSpec.configure do |config|
|
|||
end
|
||||
end
|
||||
|
||||
# add simpler way to match asset paths containing digest strings
|
||||
RSpec::Matchers.define :match_asset_path do |expected|
|
||||
match do |actual|
|
||||
path = Regexp.escape(expected)
|
||||
extname = Regexp.escape(File.extname(expected))
|
||||
digest_regex = Regexp.new(path.sub(extname, "(?:-\\h+)?#{extname}") << '$')
|
||||
digest_regex =~ actual
|
||||
end
|
||||
|
||||
failure_message do |actual|
|
||||
"expected that #{actual} would include an asset path for #{expected}"
|
||||
end
|
||||
|
||||
failure_message_when_negated do |actual|
|
||||
"expected that #{actual} would not include an asset path for #{expected}"
|
||||
end
|
||||
end
|
||||
|
||||
FactoryGirl::SyntaxRunner.class_eval do
|
||||
include RSpec::Mocks::ExampleMethods
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue