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

This is the preparation of an attempt to make these tests work with both a local github mock (in-memory) and a remote actual github. Move a bunch of fixtures relying on the specific github implementation (and odoo-as-library access) to the "local" plugin, including splitting the "repo" fixture. The specific fixtures will likely have to be adjusted as the remote endpoint is fleshed out.
85 lines
2.4 KiB
Python
85 lines
2.4 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 project(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,
|
|
})
|
|
env['res.partner'].create({
|
|
'name': "Other",
|
|
'github_login': 'other',
|
|
})
|
|
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
|