Skip to content

Commit 173c1f8

Browse files
authored
Merge pull request readthedocs#5393 from dojutsu-user/trigger-build-default-branch
Trigger build on default branch when saving a project
2 parents 61db3c1 + a014580 commit 173c1f8

File tree

2 files changed

+60
-3
lines changed

2 files changed

+60
-3
lines changed

readthedocs/core/utils/__init__.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from django.utils.text import slugify as slugify_base
1717
from celery import group, chord
1818

19-
from readthedocs.builds.constants import LATEST, BUILD_STATE_TRIGGERED
19+
from readthedocs.builds.constants import BUILD_STATE_TRIGGERED
2020
from readthedocs.doc_builder.constants import DOCKER_LIMITS
2121

2222
log = logging.getLogger(__name__)
@@ -73,7 +73,7 @@ def prepare_build(
7373
project has ``skip=True``, the build is not triggered.
7474
7575
:param project: project's documentation to be built
76-
:param version: version of the project to be built. Default: ``latest``
76+
:param version: version of the project to be built. Default: ``project.get_default_version()``
7777
:param record: whether or not record the build in a new Build object
7878
:param force: build the HTML documentation even if the files haven't changed
7979
:param immutable: whether or not create an immutable Celery signature
@@ -95,7 +95,8 @@ def prepare_build(
9595
return (None, None)
9696

9797
if not version:
98-
version = project.versions.get(slug=LATEST)
98+
default_version = project.get_default_version()
99+
version = project.versions.get(slug=default_version)
99100

100101
kwargs = {
101102
'version_pk': version.pk,

readthedocs/rtd_tests/tests/test_core_utils.py

+56
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from readthedocs.projects.tasks import remove_dirs
1515
from readthedocs.core.utils import slugify, trigger_build
1616
from readthedocs.projects.models import Project
17+
from readthedocs.builds.constants import LATEST
1718

1819

1920
class CoreUtilTests(TestCase):
@@ -34,6 +35,61 @@ def test_trigger_skipped_project(self, update_docs_task):
3435
self.assertFalse(update_docs_task.signature.called)
3536
self.assertFalse(update_docs_task.signature().apply_async.called)
3637

38+
@mock.patch('readthedocs.projects.tasks.update_docs_task')
39+
def test_trigger_build_when_version_not_provided_default_version_exist(self, update_docs_task):
40+
self.assertFalse(Version.objects.filter(slug='test-default-version').exists())
41+
42+
project_1 = get(Project)
43+
version_1 = get(Version, project=project_1, slug='test-default-version', active=True)
44+
45+
project_1.default_version = 'test-default-version'
46+
project_1.save()
47+
48+
default_version = project_1.get_default_version()
49+
self.assertEqual(default_version, 'test-default-version')
50+
51+
trigger_build(project=project_1)
52+
kwargs = {
53+
'version_pk': version_1.pk,
54+
'record': True,
55+
'force': False,
56+
'build_pk': mock.ANY,
57+
}
58+
59+
update_docs_task.signature.assert_has_calls([
60+
mock.call(
61+
args=(project_1.pk,),
62+
kwargs=kwargs,
63+
options=mock.ANY,
64+
immutable=True,
65+
),
66+
])
67+
68+
@mock.patch('readthedocs.projects.tasks.update_docs_task')
69+
def test_trigger_build_when_version_not_provided_default_version_doesnt_exist(self, update_docs_task):
70+
71+
trigger_build(project=self.project)
72+
default_version = self.project.get_default_version()
73+
version_ = self.project.versions.get(slug=default_version)
74+
75+
self.assertEqual(version_.slug, LATEST)
76+
77+
kwargs = {
78+
'version_pk': version_.pk,
79+
'record': True,
80+
'force': False,
81+
'build_pk': mock.ANY,
82+
}
83+
84+
update_docs_task.signature.assert_has_calls([
85+
mock.call(
86+
args=(self.project.pk,),
87+
kwargs=kwargs,
88+
options=mock.ANY,
89+
immutable=True,
90+
),
91+
])
92+
3793
@mock.patch('readthedocs.projects.tasks.update_docs_task')
3894
def test_trigger_custom_queue(self, update_docs):
3995
"""Use a custom queue when routing the task."""

0 commit comments

Comments
 (0)