Commit 3cf40548 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge branch 'split-up-builds' into 'master'

Split up 20min+ `spec:other` and `spinach:project` builds to increase parallelization



See merge request !2036
parents d910424c 37199719
......@@ -24,6 +24,27 @@ spec:api:
- ruby
- mysql
spec:models:
script:
- RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:models
tags:
- ruby
- mysql
spec:lib:
script:
- RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:lib
tags:
- ruby
- mysql
spec:services:
script:
- RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:services
tags:
- ruby
- mysql
spec:benchmark:
script:
- RAILS_ENV=test bundle exec rake spec:benchmark
......@@ -39,9 +60,16 @@ spec:other:
- ruby
- mysql
spinach:project:
spinach:project:half:
script:
- RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach:project:half
tags:
- ruby
- mysql
spinach:project:rest:
script:
- RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach:project
- RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach:project:rest
tags:
- ruby
- mysql
......
@project_commits
Feature: Project Commits Branches
Background:
Given I sign in as a user
......
@project_commits
Feature: Project Commits Comments
Background:
Given I sign in as a user
......
@project_commits
Feature: Project Commits
Background:
Given I sign in as a user
......
@project_commits
Feature: Project Commits Diff Comments
Background:
Given I sign in as a user
......
@project_commits
Feature: Project Commits Tags
Background:
Given I sign in as a user
......
@project_commits
Feature: Project Commits User Lookup
Background:
Given I sign in as a user
......
@project_issues
Feature: Award Emoji
Background:
Given I sign in as a user
......
@project_issues
Feature: Project Issues Filter Labels
Background:
Given I sign in as a user
......
@project_issues
Feature: Project Issues
Background:
Given I sign in as a user
......@@ -196,4 +197,3 @@ Feature: Project Issues
And I should not see labels field
And I submit new issue "500 error on profile"
Then I should see issue "500 error on profile"
@project_issues
Feature: Project Issues Labels
Background:
Given I sign in as a user
......
@project_issues
Feature: Project Issues Milestones
Background:
Given I sign in as a user
......
@project_merge_requests
Feature: Project Merge Requests
Background:
Given I sign in as a user
......
@project_merge_requests
Feature: Project Merge Requests Acceptance
Background:
Given There is an open Merge Request
......
......@@ -19,6 +19,33 @@ namespace :spec do
run_commands(cmds)
end
desc 'GitLab | Rspec | Run model specs'
task :models do
cmds = [
%W(rake gitlab:setup),
%W(rspec spec --tag @models)
]
run_commands(cmds)
end
desc 'GitLab | Rspec | Run service specs'
task :services do
cmds = [
%W(rake gitlab:setup),
%W(rspec spec --tag @services)
]
run_commands(cmds)
end
desc 'GitLab | Rspec | Run lib specs'
task :lib do
cmds = [
%W(rake gitlab:setup),
%W(rspec spec --tag @lib)
]
run_commands(cmds)
end
desc 'GitLab | Rspec | Run benchmark specs'
task :benchmark do
cmds = [
......@@ -32,7 +59,7 @@ namespace :spec do
task :other do
cmds = [
%W(rake gitlab:setup),
%W(rspec spec --tag ~@api --tag ~@feature --tag ~@benchmark)
%W(rspec spec --tag ~@api --tag ~@feature --tag ~@models --tag ~@lib --tag ~@services --tag ~@benchmark)
]
run_commands(cmds)
end
......
Rake::Task["spinach"].clear if Rake::Task.task_defined?('spinach')
namespace :spinach do
namespace :project do
desc "GitLab | Spinach | Run project commits, issues and merge requests spinach features"
task :half do
cmds = [
%W(rake gitlab:setup),
%W(spinach --tags @project_commits,@project_issues,@project_merge_requests),
]
run_commands(cmds)
end
desc "GitLab | Spinach | Run remaining project spinach features"
task :rest do
cmds = [
%W(rake gitlab:setup),
%W(spinach --tags ~@admin,~@dashboard,~@profile,~@public,~@snippets,~@project_commits,~@project_issues,~@project_merge_requests),
]
run_commands(cmds)
end
end
desc "GitLab | Spinach | Run project spinach features"
task :project do
cmds = [
%W(rake gitlab:setup),
%W(spinach --tags ~@admin,~@dashboard,~@profile,~@public,~@snippets,~@commits),
%W(spinach --tags ~@admin,~@dashboard,~@profile,~@public,~@snippets),
]
run_commands(cmds)
end
......@@ -14,7 +34,7 @@ namespace :spinach do
task :other do
cmds = [
%W(rake gitlab:setup),
%W(spinach --tags @admin,@dashboard,@profile,@public,@snippets,@commits),
%W(spinach --tags @admin,@dashboard,@profile,@public,@snippets),
]
run_commands(cmds)
end
......
require 'spec_helper'
describe Ci::Ansi2html do
describe Ci::Ansi2html, lib: true do
subject { Ci::Ansi2html }
it "prints non-ansi as-is" do
......
require 'spec_helper'
describe "Charts" do
describe Ci::Charts, lib: true do
context "build_times" do
before do
......
require 'spec_helper'
module Ci
describe GitlabCiYamlProcessor do
describe GitlabCiYamlProcessor, lib: true do
let(:path) { 'path' }
describe "#builds_for_ref" do
......
require 'spec_helper'
describe DisableEmailInterceptor do
describe DisableEmailInterceptor, lib: true do
before do
ActionMailer::Base.register_interceptor(DisableEmailInterceptor)
end
......
require 'spec_helper'
describe ExtractsPath do
describe ExtractsPath, lib: true do
include ExtractsPath
include RepoHelpers
include Gitlab::Application.routes.url_helpers
......
require 'spec_helper'
describe 'Gitlab::FileSizeValidatorSpec' do
describe FileSizeValidator, lib: true do
let(:validator) { FileSizeValidator.new(options) }
let(:attachment) { AttachmentUploader.new }
let(:note) { create(:note) }
......
require 'spec_helper'
describe Gitlab::GitRefValidator do
describe Gitlab::GitRefValidator, lib: true do
it { expect(Gitlab::GitRefValidator.validate('feature/new')).to be_truthy }
it { expect(Gitlab::GitRefValidator.validate('implement_@all')).to be_truthy }
it { expect(Gitlab::GitRefValidator.validate('my_new_feature')).to be_truthy }
......
......@@ -2,7 +2,7 @@ require 'spec_helper'
require 'nokogiri'
module Gitlab
describe Asciidoc do
describe Asciidoc, lib: true do
let(:input) { '<b>ascii</b>' }
let(:context) { {} }
......
require 'spec_helper'
describe Gitlab::Auth do
describe Gitlab::Auth, lib: true do
let(:gl_auth) { Gitlab::Auth.new }
describe :find do
......
require "spec_helper"
describe Grack::Auth do
describe Grack::Auth, lib: true do
let(:user) { create(:user) }
let(:project) { create(:project) }
......
require 'spec_helper'
describe Gitlab::Shell do
describe Gitlab::Shell, lib: true do
let(:project) { double('Project', id: 7, path: 'diaspora') }
let(:gitlab_shell) { Gitlab::Shell.new }
......@@ -16,7 +16,7 @@ describe Gitlab::Shell do
it { expect(gitlab_shell.url_to_repo('diaspora')).to eq(Gitlab.config.gitlab_shell.ssh_path_prefix + "diaspora.git") }
describe Gitlab::Shell::KeyAdder do
describe Gitlab::Shell::KeyAdder, lib: true do
describe '#add_key' do
it 'normalizes space characters in the key' do
io = spy
......
require 'spec_helper'
describe Gitlab::BitbucketImport::Client do
describe Gitlab::BitbucketImport::Client, lib: true do
let(:token) { '123456' }
let(:secret) { 'secret' }
let(:client) { Gitlab::BitbucketImport::Client.new(token, secret) }
......
require 'spec_helper'
describe Gitlab::BitbucketImport::ProjectCreator do
describe Gitlab::BitbucketImport::ProjectCreator, lib: true do
let(:user) { create(:user) }
let(:repo) do
{
......
require 'spec_helper'
describe Gitlab::ClosingIssueExtractor do
describe Gitlab::ClosingIssueExtractor, lib: true do
let(:project) { create(:project) }
let(:project2) { create(:project) }
let(:issue) { create(:issue, project: project) }
......
require 'spec_helper'
describe Gitlab::ColorSchemes do
describe Gitlab::ColorSchemes, lib: true do
describe '.body_classes' do
it 'returns a space-separated list of class names' do
css = described_class.body_classes
......
require 'spec_helper'
describe Gitlab::Database do
describe Gitlab::Database, lib: true do
# These are just simple smoke tests to check if the methods work (regardless
# of what they may return).
describe '.mysql?' do
......
require 'spec_helper'
describe Gitlab::Diff::File do
describe Gitlab::Diff::File, lib: true do
include RepoHelpers
let(:project) { create(:project) }
......
require 'spec_helper'
describe Gitlab::Diff::Parser do
describe Gitlab::Diff::Parser, lib: true do
include RepoHelpers
let(:project) { create(:project) }
......
require "spec_helper"
describe Gitlab::Email::AttachmentUploader do
describe Gitlab::Email::AttachmentUploader, lib: true do
describe "#execute" do
let(:project) { build(:project) }
let(:message_raw) { fixture_file("emails/attachment.eml") }
......
require "spec_helper"
describe Gitlab::Email::Receiver do
describe Gitlab::Email::Receiver, lib: true do
before do
stub_incoming_email_setting(enabled: true, address: "reply+%{key}@appmail.adventuretime.ooo")
end
......
require "spec_helper"
# Inspired in great part by Discourse's Email::Receiver
describe Gitlab::Email::ReplyParser do
describe Gitlab::Email::ReplyParser, lib: true do
describe '#execute' do
def test_parse_body(mail_string)
described_class.new(Mail::Message.new(mail_string)).execute
......
require 'spec_helper'
describe Gitlab::GitAccess do
describe Gitlab::GitAccess, lib: true do
let(:access) { Gitlab::GitAccess.new(actor, project) }
let(:project) { create(:project) }
let(:user) { create(:user) }
......
require 'spec_helper'
describe Gitlab::GitAccessWiki do
describe Gitlab::GitAccessWiki, lib: true do
let(:access) { Gitlab::GitAccessWiki.new(user, project) }
let(:project) { create(:project) }
let(:user) { create(:user) }
......
require 'spec_helper'
describe Gitlab::GithubImport::Client do
describe Gitlab::GithubImport::Client, lib: true do
let(:token) { '123456' }
let(:client) { Gitlab::GithubImport::Client.new(token) }
......
require 'spec_helper'
describe Gitlab::GithubImport::ProjectCreator do
describe Gitlab::GithubImport::ProjectCreator, lib: true do
let(:user) { create(:user) }
let(:repo) do
OpenStruct.new(
......
require 'spec_helper'
describe Gitlab::GitlabImport::Client do
describe Gitlab::GitlabImport::Client, lib: true do
let(:token) { '123456' }
let(:client) { Gitlab::GitlabImport::Client.new(token) }
......
require 'spec_helper'
describe Gitlab::GitlabImport::ProjectCreator do
describe Gitlab::GitlabImport::ProjectCreator, lib: true do
let(:user) { create(:user) }
let(:repo) do
{
......
require 'spec_helper'
describe Gitlab::GitoriousImport::ProjectCreator do
describe Gitlab::GitoriousImport::ProjectCreator, lib: true do
let(:user) { create(:user) }
let(:repo) { Gitlab::GitoriousImport::Repository.new('foo/bar-baz-qux') }
let(:namespace){ create(:group, owner: user) }
......
require "spec_helper"
describe Gitlab::GoogleCodeImport::Client do
describe Gitlab::GoogleCodeImport::Client, lib: true do
let(:raw_data) { JSON.parse(fixture_file("GoogleCodeProjectHosting.json")) }
subject { described_class.new(raw_data) }
......
require "spec_helper"
describe Gitlab::GoogleCodeImport::Importer do
describe Gitlab::GoogleCodeImport::Importer, lib: true do
let(:mapped_user) { create(:user, username: "thilo123") }
let(:raw_data) { JSON.parse(fixture_file("GoogleCodeProjectHosting.json")) }
let(:client) { Gitlab::GoogleCodeImport::Client.new(raw_data) }
......
require 'spec_helper'
describe Gitlab::GoogleCodeImport::ProjectCreator do
describe Gitlab::GoogleCodeImport::ProjectCreator, lib: true do
let(:user) { create(:user) }
let(:repo) do
Gitlab::GoogleCodeImport::Repository.new(
......
require "spec_helper"
describe Gitlab::IncomingEmail do
describe Gitlab::IncomingEmail, lib: true do
describe "self.enabled?" do
context "when reply by email is enabled" do
before do
......
require 'spec_helper'
describe Gitlab::InlineDiff do
describe Gitlab::InlineDiff, lib: true do
describe '#processing' do
let(:diff) do
<<eos
......
require "spec_helper"
describe Gitlab::KeyFingerprint do
describe Gitlab::KeyFingerprint, lib: true do
let(:key) { "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=" }
let(:fingerprint) { "3f:a2:ee:de:b5:de:53:c3:aa:2f:9c:45:24:4c:47:7b" }
......
require 'spec_helper'
describe Gitlab::LDAP::Access do
describe Gitlab::LDAP::Access, lib: true do
let(:access) { Gitlab::LDAP::Access.new user }
let(:user) { create(:omniauth_user) }
......
require 'spec_helper'
describe Gitlab::LDAP::Adapter do
describe Gitlab::LDAP::Adapter, lib: true do
let(:adapter) { Gitlab::LDAP::Adapter.new 'ldapmain' }
describe '#dn_matches_filter?' do
......
require 'spec_helper'
describe Gitlab::LDAP::AuthHash do
describe Gitlab::LDAP::AuthHash, lib: true do
let(:auth_hash) do
Gitlab::LDAP::AuthHash.new(
OmniAuth::AuthHash.new(
......
require 'spec_helper'
describe Gitlab::LDAP::Authentication do
describe Gitlab::LDAP::Authentication, lib: true do
let(:user) { create(:omniauth_user, extern_uid: dn) }
let(:dn) { 'uid=john,ou=people,dc=example,dc=com' }
let(:login) { 'john' }
......
require 'spec_helper'
describe Gitlab::LDAP::Config do
describe Gitlab::LDAP::Config, lib: true do
let(:config) { Gitlab::LDAP::Config.new provider }
let(:provider) { 'ldapmain' }
......
require 'spec_helper'
describe Gitlab::LDAP::User do
describe Gitlab::LDAP::User, lib: true do
let(:ldap_user) { Gitlab::LDAP::User.new(auth_hash) }
let(:gl_user) { ldap_user.gl_user }
let(:info) do
......
require 'spec_helper'
describe Gitlab::Lfs::Router do
describe Gitlab::Lfs::Router, lib: true do
let(:project) { create(:project) }
let(:public_project) { create(:project, :public) }
let(:forked_project) { fork_project(public_project, user) }
......
require 'spec_helper'
module Gitlab::Markdown
describe AutolinkFilter do
describe AutolinkFilter, lib: true do
include FilterSpecHelper
let(:link) { 'http://about.gitlab.com/' }
......
require 'spec_helper'
module Gitlab::Markdown
describe CommitRangeReferenceFilter do
describe CommitRangeReferenceFilter, lib: true do
include FilterSpecHelper
let(:project) { create(:project, :public) }
......
require 'spec_helper'
module Gitlab::Markdown
describe CommitReferenceFilter do
describe CommitReferenceFilter, lib: true do
include FilterSpecHelper
let(:project) { create(:project, :public) }
......
require 'spec_helper'
module Gitlab::Markdown
describe CrossProjectReference do
describe CrossProjectReference, lib: true do
include described_class
describe '#project_from_ref' do
......
require 'spec_helper'
module Gitlab::Markdown
describe EmojiFilter do
describe EmojiFilter, lib: true do
include FilterSpecHelper
before do
......
require 'spec_helper'
module Gitlab::Markdown
describe ExternalIssueReferenceFilter do
describe ExternalIssueReferenceFilter, lib: true do
include FilterSpecHelper
def helper
......
require 'spec_helper'
module Gitlab::Markdown
describe ExternalLinkFilter do
describe ExternalLinkFilter, lib: true do
include FilterSpecHelper
it 'ignores elements without an href attribute' do
......
require 'spec_helper'
module Gitlab::Markdown
describe IssueReferenceFilter do
describe IssueReferenceFilter, lib: true do
include FilterSpecHelper
def helper
......
......@@ -2,7 +2,7 @@ require 'spec_helper'
require 'html/pipeline'
module Gitlab::Markdown
describe LabelReferenceFilter do
describe LabelReferenceFilter, lib: true do
include FilterSpecHelper
let(:project) { create(:empty_project, :public) }
......
require 'spec_helper'
module Gitlab::Markdown
describe MergeRequestReferenceFilter do
describe MergeRequestReferenceFilter, lib: true do
include FilterSpecHelper
let(:project) { create(:project, :public) }
......
require 'spec_helper'
module Gitlab::Markdown
describe RedactorFilter do
describe RedactorFilter, lib: true do
include ActionView::Helpers::UrlHelper
include FilterSpecHelper
......
require 'spec_helper'
module Gitlab::Markdown
describe ReferenceGathererFilter do
describe ReferenceGathererFilter, lib: true do
include ActionView::Helpers::UrlHelper
include FilterSpecHelper
......
......@@ -3,7 +3,7 @@
require 'spec_helper'
module Gitlab::Markdown
describe RelativeLinkFilter do
describe RelativeLinkFilter, lib: true do
def filter(doc, contexts = {})
contexts.reverse_merge!({
commit: project.commit,
......
require 'spec_helper'
module Gitlab::Markdown
describe SanitizationFilter do
describe SanitizationFilter, lib: true do
include FilterSpecHelper
describe 'default whitelist' do
......
require 'spec_helper'
module Gitlab::Markdown
describe SnippetReferenceFilter do
describe SnippetReferenceFilter, lib: true do
include FilterSpecHelper
let(:project) { create(:empty_project, :public) }
......
require 'spec_helper'
module Gitlab::Markdown
describe SyntaxHighlightFilter do
describe SyntaxHighlightFilter, lib: true do
include FilterSpecHelper
it 'highlights valid code blocks' do
......
......@@ -3,7 +3,7 @@
require 'spec_helper'
module Gitlab::Markdown
describe TableOfContentsFilter do
describe TableOfContentsFilter, lib: true do
include FilterSpecHelper
def header(level, text)
......
require 'spec_helper'
module Gitlab::Markdown
describe TaskListFilter do
describe TaskListFilter, lib: true do
include FilterSpecHelper
it 'does not apply `task-list` class to non-task lists' do
......
......@@ -3,7 +3,7 @@
require 'spec_helper'
module Gitlab::Markdown
describe UploadLinkFilter do
describe UploadLinkFilter, lib: true do
def filter(doc, contexts = {})
contexts.reverse_merge!({
project: project
......
require 'spec_helper'
module Gitlab::Markdown
describe UserReferenceFilter do
describe UserReferenceFilter, lib: true do
include FilterSpecHelper
let(:project) { create(:empty_project, :public) }
......
require 'spec_helper'
describe Gitlab::MarkupHelper do
describe Gitlab::MarkupHelper, lib: true do
describe '#markup?' do
%w(textile rdoc org creole wiki
mediawiki rst adoc ad asciidoc mdown md markdown).each do |type|
......
require 'spec_helper'
describe 'Gitlab::NoteDataBuilder' do
describe 'Gitlab::NoteDataBuilder', lib: true do
let(:project) { create(:project) }
let(:user) { create(:user) }
let(:data) { Gitlab::NoteDataBuilder.build(note, user) }
......
require 'spec_helper'
describe Gitlab::OAuth::AuthHash do
describe Gitlab::OAuth::AuthHash, lib: true do
let(:auth_hash) do
Gitlab::OAuth::AuthHash.new(
OmniAuth::AuthHash.new(
......
require 'spec_helper'
describe Gitlab::OAuth::User do
describe Gitlab::OAuth::User, lib: true do
let(:oauth_user) { Gitlab::OAuth::User.new(auth_hash) }
let(:gl_user) { oauth_user.gl_user }
let(:uid) { 'my-uid' }
......
require 'spec_helper'
describe 'Gitlab::Popen', no_db: true do
describe 'Gitlab::Popen', lib: true, no_db: true do
let(:path) { Rails.root.join('tmp').to_s }
before do
......
require 'spec_helper'
describe Gitlab::ProjectSearchResults do
describe Gitlab::ProjectSearchResults, lib: true do
let(:project) { create(:project) }
let(:query) { 'hello world' }
......
require 'spec_helper'
describe 'Gitlab::PushDataBuilder' do
describe 'Gitlab::PushDataBuilder', lib: true do
let(:project) { create(:project) }
let(:user) { create(:user) }
......
require 'spec_helper'
describe Gitlab::ReferenceExtractor do
describe Gitlab::ReferenceExtractor, lib: true do
let(:project) { create(:project) }
subject { Gitlab::ReferenceExtractor.new(project, project.creator) }
......
# coding: utf-8
require 'spec_helper'
describe Gitlab::Regex do
describe Gitlab::Regex, lib: true do
describe 'project path regex' do
it { expect('gitlab-ce').to match(Gitlab::Regex.project_path_regex) }
it { expect('gitlab_git').to match(Gitlab::Regex.project_path_regex) }
......
require 'spec_helper'
describe Gitlab::Sherlock::Collection do
describe Gitlab::Sherlock::Collection, lib: true do
let(:collection) { described_class.new }
let(:transaction) do
......
require 'spec_helper'
describe Gitlab::Sherlock::FileSample do
describe Gitlab::Sherlock::FileSample, lib: true do
let(:sample) { described_class.new(__FILE__, [], 150.4, 2) }
describe '#id' do
......
require 'spec_helper'
describe Gitlab::Sherlock::LineProfiler do
describe Gitlab::Sherlock::LineProfiler, lib: true do
let(:profiler) { described_class.new }
describe '#profile' do
......
require 'spec_helper'
describe Gitlab::Sherlock::LineSample do
describe Gitlab::Sherlock::LineSample, lib: true do
let(:sample) { described_class.new(150.0, 4) }
describe '#duration' do
......
require 'spec_helper'
describe Gitlab::Sherlock::Location do
describe Gitlab::Sherlock::Location, lib: true do
let(:location) { described_class.new(__FILE__, 1) }
describe 'from_ruby_location' do
......
require 'spec_helper'
describe Gitlab::Sherlock::Middleware do
describe Gitlab::Sherlock::Middleware, lib: true do
let(:app) { double(:app) }
let(:middleware) { described_class.new(app) }
......
require 'spec_helper'
describe Gitlab::Sherlock::Query do
describe Gitlab::Sherlock::Query, lib: true do
let(:started_at) { Time.utc(2015, 1, 1) }
let(:finished_at) { started_at + 5 }
......
require 'spec_helper'
describe Gitlab::Sherlock::Transaction do
describe Gitlab::Sherlock::Transaction, lib: true do
let(:transaction) { described_class.new('POST', '/cat_pictures') }
describe '#id' do
......
require 'spec_helper'
describe Gitlab::SQL::Union do
describe Gitlab::SQL::Union, lib: true do
describe '#to_sql' do
it 'returns a String joining relations together using a UNION' do
rel1 = User.where(email: 'alice@example.com')
......
require 'spec_helper'
describe Gitlab::Themes do
describe Gitlab::Themes, lib: true do
describe '.body_classes' do
it 'returns a space-separated list of class names' do
css = described_class.body_classes
......
require 'spec_helper'
describe Gitlab::Upgrader do
describe Gitlab::Upgrader, lib: true do
let(:upgrader) { Gitlab::Upgrader.new }
let(:current_version) { Gitlab::VERSION }
......
require 'spec_helper'
describe Gitlab::UploadsTransfer do
describe Gitlab::UploadsTransfer, lib: true do
before do
@root_dir = File.join(Rails.root, "public", "uploads")
@upload_transfer = Gitlab::UploadsTransfer.new
......
require 'spec_helper'
describe Gitlab::UrlBuilder do
describe Gitlab::UrlBuilder, lib: true do
describe 'When asking for an issue' do
it 'returns the issue url' do
issue = create(:issue)
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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