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

Remote's labels are not entirely under our control as the part before ":" is the *owner* of the source repo => introduce additional "owned" fixture to handle this case, as it may diverge from the "user" role if running the tests against an organisation.
95 lines
2.6 KiB
Python
95 lines
2.6 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()
|
|
|
|
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
|