Fix tests & fall back properly to Database

rate-limit-builds
Eric Holscher 2016-01-21 15:25:23 -08:00
parent c0b668058a
commit 7845c98580
3 changed files with 42 additions and 21 deletions

View File

@ -80,6 +80,18 @@ class ConfigWrapper(object):
else:
return self._project.requirements_file
@property
def formats(self):
if 'formats' in self._yaml_config:
return self._yaml_config['formats']
else:
formats = ['htmlzip']
if self._project.enable_epub_build:
formats += ['epub']
if self._project.enable_pdf_build:
formats += ['pdf']
return formats
# Not implemented until we figure out how to keep in sync with the webs.
# Probably needs to be version-specific as well, not project.
# @property

View File

@ -74,7 +74,7 @@ class UpdateDocsTask(Task):
default_retry_delay = (7 * 60)
name = 'update_docs'
def __init__(self, build_env=None, python_env=None, force=False, search=True, localmedia=True,
def __init__(self, build_env=None, python_env=None, config=None, force=False, search=True, localmedia=True,
build=None, project=None, version=None):
self.build_env = build_env
self.python_env = python_env
@ -90,6 +90,8 @@ class UpdateDocsTask(Task):
self.project = {}
if project is not None:
self.project = project
if config is not None:
self.config = config
def _log(self, msg):
log.info(LOG_TEMPLATE
@ -348,23 +350,17 @@ class UpdateDocsTask(Task):
def build_docs_pdf(self):
"""Build PDF docs"""
if 'pdf' not in self.config.formats:
return False
if (self.project.slug in HTML_ONLY or
not self.project.is_type_sphinx or
not self.project.enable_pdf_build):
if ('pdf' not in self.config.formats or
self.project.slug in HTML_ONLY or
not self.project.is_type_sphinx):
return False
return self.build_docs_class('sphinx_pdf')
def build_docs_epub(self):
"""Build ePub docs"""
if 'epub' not in self.config.formats:
return False
if (self.project.slug in HTML_ONLY or
not self.project.is_type_sphinx or
not self.project.enable_epub_build):
if ('epub' not in self.config.formats or
self.project.slug in HTML_ONLY or
not self.project.is_type_sphinx):
return False
return self.build_docs_class('sphinx_epub')

View File

@ -5,10 +5,12 @@ from django_dynamic_fixture import fixture
import mock
from readthedocs.projects.models import Project
from readthedocs.doc_builder.config import ConfigWrapper
from readthedocs.doc_builder.environments import LocalEnvironment
from readthedocs.doc_builder.python_environments import Virtualenv
from readthedocs.doc_builder.loader import get_builder_class
from readthedocs.projects.tasks import UpdateDocsTask
from readthedocs.rtd_tests.tests.test_config_wrapper import get_build_config
from ..mocks.environment import EnvironmentMockGroup
@ -38,8 +40,10 @@ class BuildEnvironmentTests(TestCase):
build_env = LocalEnvironment(project=project, version=version, build={})
python_env = Virtualenv(version=version, build_env=build_env)
task = UpdateDocsTask(build_env=build_env, python_env=python_env, version=version,
project=project, search=False, localmedia=False)
yaml_config = get_build_config({})
config = ConfigWrapper(version=version, yaml_config=yaml_config)
task = UpdateDocsTask(build_env=build_env, project=project, python_env=python_env,
version=version, search=False, localmedia=False, config=config)
task.build_docs()
# Get command and check first part of command list is a call to sphinx
@ -61,8 +65,11 @@ class BuildEnvironmentTests(TestCase):
build_env = LocalEnvironment(project=project, version=version, build={})
python_env = Virtualenv(version=version, build_env=build_env)
task = UpdateDocsTask(build_env=build_env, python_env=python_env, version=version,
project=project, search=False, localmedia=False)
yaml_config = get_build_config({})
config = ConfigWrapper(version=version, yaml_config=yaml_config)
task = UpdateDocsTask(build_env=build_env, project=project, python_env=python_env,
version=version, search=False, localmedia=False, config=config)
task.build_docs()
# The HTML and the Epub format were built.
@ -84,8 +91,10 @@ class BuildEnvironmentTests(TestCase):
build_env = LocalEnvironment(project=project, version=version, build={})
python_env = Virtualenv(version=version, build_env=build_env)
task = UpdateDocsTask(build_env=build_env, python_env=python_env, version=version,
project=project, search=False, localmedia=False)
yaml_config = get_build_config({})
config = ConfigWrapper(version=version, yaml_config=yaml_config)
task = UpdateDocsTask(build_env=build_env, project=project, python_env=python_env,
version=version, search=False, localmedia=False, config=config)
task.build_docs()
# The HTML and the Epub format were built.
@ -137,8 +146,10 @@ class BuildEnvironmentTests(TestCase):
build_env = LocalEnvironment(project=project, version=version, build={})
python_env = Virtualenv(version=version, build_env=build_env)
yaml_config = get_build_config({})
config = ConfigWrapper(version=version, yaml_config=yaml_config)
task = UpdateDocsTask(build_env=build_env, project=project, python_env=python_env,
version=version, search=False, localmedia=False)
version=version, search=False, localmedia=False, config=config)
# Mock out the separate calls to Popen using an iterable side_effect
returns = [
@ -177,8 +188,10 @@ class BuildEnvironmentTests(TestCase):
build_env = LocalEnvironment(project=project, version=version, build={})
python_env = Virtualenv(version=version, build_env=build_env)
yaml_config = get_build_config({})
config = ConfigWrapper(version=version, yaml_config=yaml_config)
task = UpdateDocsTask(build_env=build_env, project=project, python_env=python_env,
version=version, search=False, localmedia=False)
version=version, search=False, localmedia=False, config=config)
# Mock out the separate calls to Popen using an iterable side_effect
returns = [