
- Re-factor - Remove code for notifications - Remove addons - Remove travis-core gem. - Ignore logs directory only - Move core tests to spec/lib
356 lines
12 KiB
Ruby
356 lines
12 KiB
Ruby
require 'active_support/core_ext/numeric/time'
|
|
|
|
module Travis
|
|
module Testing
|
|
module Stubs
|
|
require 'travis/testing/stubs/stub'
|
|
|
|
class << self
|
|
include Stub
|
|
|
|
def included(base)
|
|
base.send(:instance_eval) do
|
|
let(:repository) { stub_repo }
|
|
let(:repo) { stub_repo }
|
|
let(:request) { stub_request }
|
|
let(:commit) { stub_commit }
|
|
let(:build) { stub_build }
|
|
let(:test) { stub_test }
|
|
let(:log) { stub_log }
|
|
let(:annotation) { stub_annotation }
|
|
let(:annotation_provider) { stub_annotation_provider }
|
|
let(:event) { stub_event }
|
|
let(:worker) { stub_worker }
|
|
let(:user) { stub_user }
|
|
let(:org) { stub_org }
|
|
let(:url) { stub_url }
|
|
let(:broadcast) { stub_broadcast }
|
|
let(:travis_token) { stub_travis_token }
|
|
let(:cache) { stub_cache }
|
|
end
|
|
end
|
|
end
|
|
|
|
def stub_repo(attributes = {})
|
|
Stubs.stub 'repository', attributes.reverse_merge(
|
|
id: 1,
|
|
owner: stub_user(id: 1, login: 'svenfuchs'),
|
|
owner_type: 'User',
|
|
owner_id: 1,
|
|
owner_name: 'svenfuchs',
|
|
owner_email: 'svenfuchs@artweb-design.de',
|
|
name: 'minimal',
|
|
slug: 'svenfuchs/minimal',
|
|
description: 'the repo description',
|
|
url: 'http://github.com/svenfuchs/minimal',
|
|
source_url: 'git://github.com/svenfuchs/minimal.git',
|
|
api_url: 'https://api.github.com/repos/svenfuchs/minimal',
|
|
key: stub_key,
|
|
admin: stub_user,
|
|
active: true,
|
|
private: false,
|
|
private?: false,
|
|
last_build_id: 1,
|
|
last_build_number: 2,
|
|
last_build_started_at: Time.now.utc - 60,
|
|
last_build_finished_at: Time.now.utc,
|
|
last_build_state: :passed,
|
|
last_build_duration: 60,
|
|
github_language: 'ruby',
|
|
github_id: 549743,
|
|
builds_only_with_travis_yml?: false,
|
|
settings: stub_settings,
|
|
users_with_permission: [],
|
|
default_branch: 'master',
|
|
current_build_id: nil
|
|
)
|
|
end
|
|
alias stub_repository stub_repo
|
|
|
|
def stub_settings
|
|
Stubs.stub 'settings', 'ssh_keys' => [], 'env_vars' => []
|
|
end
|
|
|
|
def stub_key(attributes = {})
|
|
Stubs.stub 'key', attributes.reverse_merge(
|
|
id: 1,
|
|
public_key: '-----BEGIN PUBLIC KEY-----'
|
|
)
|
|
end
|
|
|
|
def stub_request(attributes = {})
|
|
repo = stub_repository
|
|
commit = stub_commit
|
|
Stubs.stub 'request', attributes.reverse_merge(
|
|
id: 1,
|
|
repository: repo,
|
|
repository_id: repo.id,
|
|
commit: commit,
|
|
commit_id: commit.id,
|
|
config: {},
|
|
event_type: 'push',
|
|
head_commit: 'head-commit',
|
|
base_commit: 'base-commit',
|
|
token: 'token',
|
|
api_request?: false,
|
|
pull_request?: false,
|
|
comments_url: 'http://github.com/path/to/comments',
|
|
config_url: 'https://api.github.com/repos/svenfuchs/minimal/contents/.travis.yml?ref=62aae5f70ceee39123ef',
|
|
result: :accepted,
|
|
created_at: DateTime.new(2013, 01, 01, 0, 0, 0),
|
|
owner_type: 'User',
|
|
owner_id: 1,
|
|
owner_name: 'svenfuchs',
|
|
owner_email: 'svenfuchs@artweb-design.de',
|
|
message: 'a message',
|
|
branch_name: 'master',
|
|
tag_name: '',
|
|
pull_request: false,
|
|
pull_request_title: nil,
|
|
pull_request_number: nil,
|
|
head_repo: 'BanzaiMan/travis-core',
|
|
head_branch: 'feature-branch',
|
|
base_repo: 'travis-ci/travis-core',
|
|
base_branch: 'master',
|
|
)
|
|
end
|
|
|
|
def stub_commit(attributes = {})
|
|
Stubs.stub 'commit', attributes.reverse_merge(
|
|
id: 1,
|
|
commit: '62aae5f70ceee39123ef',
|
|
range: '0cd9ffaab2c4ffee...62aae5f70ceee39123ef',
|
|
branch: 'master',
|
|
ref: 'refs/master',
|
|
message: 'the commit message',
|
|
author_name: 'Sven Fuchs',
|
|
author_email: 'svenfuchs@artweb-design.de',
|
|
committer_name: 'Sven Fuchs',
|
|
committer_email: 'svenfuchs@artweb-design.de',
|
|
committed_at: Time.now.utc - 3600,
|
|
compare_url: 'https://github.com/svenfuchs/minimal/compare/master...develop',
|
|
pull_request?: false,
|
|
pull_request_number: nil
|
|
)
|
|
end
|
|
|
|
def stub_build(attributes = {})
|
|
Stubs.stub 'build', attributes.reverse_merge(
|
|
id: 1,
|
|
repository_id: repository.id,
|
|
repository: stub_repository(owner: attributes.delete(:owner)),
|
|
request_id: request.id,
|
|
request: request,
|
|
commit_id: commit.id,
|
|
commit: commit,
|
|
matrix: attributes[:matrix] || [stub_test(id: 1, number: '2.1'), stub_test(id: 2, number: '2.2')],
|
|
matrix_ids: [1, 2],
|
|
cached_matrix_ids: [1, 2],
|
|
number: 2,
|
|
config: { 'rvm' => ['1.8.7', '1.9.2'], 'gemfile' => ['test/Gemfile.rails-2.3.x', 'test/Gemfile.rails-3.0.x'] },
|
|
obfuscated_config: { 'rvm' => ['1.8.7', '1.9.2'], 'gemfile' => ['test/Gemfile.rails-2.3.x', 'test/Gemfile.rails-3.0.x'] },
|
|
state: 'passed',
|
|
result: 0, # see build/compat.rb
|
|
passed?: true,
|
|
failed?: false,
|
|
finished?: true,
|
|
previous_state: 'passed',
|
|
started_at: Time.now.utc - 60,
|
|
finished_at: Time.now.utc,
|
|
duration: 60,
|
|
pull_request?: false,
|
|
queue: 'builds.linux',
|
|
pull_request_title: nil,
|
|
pull_request_number: nil,
|
|
secure_env_enabled?: true,
|
|
event_type: 'push'
|
|
)
|
|
end
|
|
|
|
def stub_test(attributes = {})
|
|
log = self.log
|
|
annotation = stub_annotation(job_id: 1)
|
|
test = Stubs.stub 'test', attributes.reverse_merge(
|
|
id: 1,
|
|
owner: stub_user,
|
|
repository_id: 1,
|
|
repository: repository,
|
|
source_id: 1,
|
|
request_id: 1,
|
|
commit_id: commit.id,
|
|
commit: commit,
|
|
log: log,
|
|
log_id: log.id,
|
|
annotations: [annotation],
|
|
annotation_ids: [annotation.id],
|
|
number: '2.1',
|
|
config: { 'rvm' => '1.8.7', 'gemfile' => 'test/Gemfile.rails-2.3.x' },
|
|
decrypted_config: { 'rvm' => '1.8.7', 'gemfile' => 'test/Gemfile.rails-2.3.x' },
|
|
obfuscated_config: { 'rvm' => '1.8.7', 'gemfile' => 'test/Gemfile.rails-2.3.x' },
|
|
state: :passed,
|
|
result: 0, # see job/compat.rb
|
|
started?: true,
|
|
finished?: true,
|
|
queue: 'builds.linux',
|
|
allow_failure: false,
|
|
started_at: Time.now.utc - 60,
|
|
finished_at: Time.now.utc,
|
|
worker: 'ruby3.worker.travis-ci.org:travis-ruby-4',
|
|
tags: 'tag-a,tag-b',
|
|
log_content: log.content,
|
|
ssh_key: nil,
|
|
secure_env_enabled?: true
|
|
)
|
|
|
|
source = stub_build(:matrix => [test])
|
|
test.define_singleton_method(:source) { source }
|
|
test
|
|
end
|
|
|
|
def stub_log(attributes = {})
|
|
Stubs.stub 'log', attributes.reverse_merge(
|
|
class: Stubs.stub('class', name: 'Log'),
|
|
id: 1,
|
|
job_id: 1,
|
|
content: 'the test log'
|
|
)
|
|
end
|
|
|
|
def stub_log_part(attributes = {})
|
|
Stubs.stub 'log_part', attributes.reverse_merge(
|
|
id: 1,
|
|
log_id: 1,
|
|
content: 'the test log',
|
|
number: 1,
|
|
final: false
|
|
)
|
|
end
|
|
|
|
def stub_annotation(attributes = {})
|
|
Stubs.stub 'annotation', attributes.reverse_merge(
|
|
class: Stubs.stub('class', name: 'Annotation'),
|
|
id: 1,
|
|
job_id: attributes[:job_id] || test.id, # Needed to break the infinite loop in stub_test
|
|
annotation_provider_id: annotation_provider.id,
|
|
annotation_provider: annotation_provider,
|
|
description: "The job passed.",
|
|
url: "https://travis-ci.org/travis-ci/travis-ci/12345",
|
|
status: ""
|
|
)
|
|
end
|
|
|
|
def stub_annotation_provider(attributes = {})
|
|
Stubs.stub 'annotation_provider', attributes.reverse_merge(
|
|
class: Stubs.stub('class', name: 'AnnotationProvider'),
|
|
id: 1,
|
|
name: "Travis CI",
|
|
api_username: "travis-ci",
|
|
api_key: "0123456789abcdef",
|
|
)
|
|
end
|
|
|
|
def stub_event(attributes = {})
|
|
Stubs.stub 'event', attributes.reverse_merge(
|
|
id: 1,
|
|
repository_id: 1,
|
|
source: stub_request,
|
|
source_id: stub_request.id,
|
|
source_type: 'Request',
|
|
event: 'request:finished',
|
|
data: { 'result' => 'accepted' },
|
|
created_at: Time.now
|
|
)
|
|
end
|
|
|
|
def stub_worker(attributes = {})
|
|
Stubs.stub 'worker', attributes.reverse_merge(
|
|
id: 1,
|
|
name: 'ruby-1',
|
|
host: 'ruby-1.worker.travis-ci.org',
|
|
queue: 'builds.linux',
|
|
state: 'created',
|
|
last_seen_at: Time.now.utc,
|
|
payload: nil,
|
|
)
|
|
end
|
|
|
|
def stub_user(attributes = {})
|
|
Stubs.stub 'user', attributes.reverse_merge(
|
|
id: 1,
|
|
github_id: 1,
|
|
organizations: [org],
|
|
name: 'Sven Fuchs',
|
|
login: 'svenfuchs',
|
|
email: 'svenfuchs@artweb-design.de',
|
|
gravatar_id: '402602a60e500e85f2f5dc1ff3648ecb',
|
|
avatar_url: 'https://0.gravatar.com/avatar/402602a60e500e85f2f5dc1ff3648ecb',
|
|
locale: 'de',
|
|
github_oauth_token: 'token',
|
|
syncing?: false,
|
|
is_syncing: false,
|
|
synced_at: Time.now.utc - 3600,
|
|
tokens: [stub('token', token: 'token')],
|
|
github_scopes: Travis.config.oauth2.scopes.to_s.split(','),
|
|
created_at: Time.now.utc - 7200
|
|
)
|
|
end
|
|
|
|
def stub_org(attributes = {})
|
|
Stubs.stub 'org', attributes.reverse_merge(
|
|
id: 1,
|
|
login: 'travis-ci',
|
|
name: 'Travis CI',
|
|
email: 'contact@travis-ci.org'
|
|
)
|
|
end
|
|
|
|
def stub_url(attributes = {})
|
|
Stubs.stub 'url', attributes.reverse_merge(
|
|
id: 1,
|
|
short_url: 'http://trvs.io/short'
|
|
)
|
|
end
|
|
|
|
def stub_broadcast(attributes = {})
|
|
Stubs.stub 'broadcast', attributes.reverse_merge(
|
|
id: 1,
|
|
message: 'message'
|
|
)
|
|
end
|
|
|
|
def stub_travis_token(attributes = {})
|
|
Stubs.stub 'travis_token', attributes.reverse_merge(
|
|
id: 1,
|
|
user: stub_user,
|
|
token: 'super secret'
|
|
)
|
|
end
|
|
|
|
def stub_cache(attributes = {})
|
|
Stubs.stub 'cache', attributes.reverse_merge(
|
|
repository: stub_repository,
|
|
size: 1000,
|
|
slug: 'cache',
|
|
branch: 'master',
|
|
last_modified: Time.at(0).utc
|
|
)
|
|
end
|
|
|
|
def stub_email(attributes = {})
|
|
Stubs.stub 'email', attributes.reverse_merge(
|
|
email: 'email'
|
|
)
|
|
end
|
|
|
|
def stub_job(attributes = {})
|
|
Stubs.stub 'job', attributes.reverse_merge(
|
|
repository: stub_repository,
|
|
id: '42.1',
|
|
enqueue: true
|
|
)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|