mirror of
https://github.com/odoo/runbot.git
synced 2025-03-24 20:05:50 +07:00

staging delay was mistakenly commented in
bb664455ec
Also modified testing fixtures so the staging delay is not enabled when
running tests locally: on my box it increases the local runtime from
~70s to ~1500s (20s/staging, ~1 staging/test, 73 tests)
97 lines
2.7 KiB
Python
97 lines
2.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
import odoo
|
|
import pytest
|
|
import fake_github
|
|
|
|
@pytest.fixture
|
|
def gh():
|
|
with fake_github.Github() as gh:
|
|
yield gh
|
|
|
|
@pytest.fixture(scope='session')
|
|
def registry(request):
|
|
""" Set up Odoo & yields a registry to the specified db
|
|
"""
|
|
db = request.config.getoption('--db')
|
|
addons = request.config.getoption('--addons-path')
|
|
odoo.tools.config.parse_config(['--addons-path', addons, '-d', db, '--db-filter', db])
|
|
try:
|
|
odoo.service.db._create_empty_database(db)
|
|
except odoo.service.db.DatabaseExists:
|
|
pass
|
|
|
|
#odoo.service.server.load_server_wide_modules()
|
|
#odoo.service.server.preload_registries([db])
|
|
|
|
with odoo.api.Environment.manage():
|
|
# ensure module is installed
|
|
r0 = odoo.registry(db)
|
|
with r0.cursor() as cr:
|
|
env = odoo.api.Environment(cr, 1, {})
|
|
[mod] = env['ir.module.module'].search([('name', '=', 'runbot_merge')])
|
|
mod.button_immediate_install()
|
|
|
|
from odoo.addons.runbot_merge.models import pull_requests
|
|
pull_requests.STAGING_SLEEP = 0
|
|
yield odoo.registry(db)
|
|
|
|
@pytest.fixture
|
|
def env(registry):
|
|
with registry.cursor() as cr:
|
|
env = odoo.api.Environment(cr, odoo.SUPERUSER_ID, {})
|
|
ctx = env['res.users'].context_get()
|
|
registry.enter_test_mode(cr)
|
|
yield env(context=ctx)
|
|
registry.leave_test_mode()
|
|
|
|
cr.rollback()
|
|
|
|
@pytest.fixture
|
|
def owner():
|
|
return 'user'
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def users(env):
|
|
env['res.partner'].create({
|
|
'name': "Reviewer",
|
|
'github_login': 'reviewer',
|
|
'reviewer': True,
|
|
})
|
|
env['res.partner'].create({
|
|
'name': "Self Reviewer",
|
|
'github_login': 'self_reviewer',
|
|
'self_reviewer': True,
|
|
})
|
|
|
|
return {
|
|
'reviewer': 'reviewer',
|
|
'self_reviewer': 'self_reviewer',
|
|
'other': 'other',
|
|
'user': 'user',
|
|
}
|
|
|
|
@pytest.fixture
|
|
def project(env):
|
|
return env['runbot_merge.project'].create({
|
|
'name': 'odoo',
|
|
'github_token': 'okokok',
|
|
'github_prefix': 'hansen',
|
|
'branch_ids': [(0, 0, {'name': 'master'})],
|
|
'required_statuses': 'legal/cla,ci/runbot',
|
|
})
|
|
|
|
@pytest.fixture
|
|
def make_repo(gh, project):
|
|
def make_repo(name):
|
|
fullname = 'org/' + name
|
|
project.write({'repo_ids': [(0, 0, {'name': fullname})]})
|
|
return gh.repo(fullname, hooks=[
|
|
((odoo.http.root, '/runbot_merge/hooks'), [
|
|
'pull_request', 'issue_comment', 'status', 'pull_request_review'
|
|
])
|
|
])
|
|
return make_repo
|
|
# TODO: project fixture
|
|
# TODO: repos (indirect/parameterize?) w/ WS hook
|
|
# + repo proxy object
|