From 562692efa09742828a49e10760ab5f02829945c4 Mon Sep 17 00:00:00 2001 From: Eric Holscher Date: Wed, 6 Dec 2017 08:19:03 -0800 Subject: [PATCH 1/6] Revert "Merge pull request #3336 from rtfd/use-active-for-stable" This reverts commit 0d9c3fefb1ea8a64272bfeff42cb37b8122ae335, reversing changes made to 73b693ce4dd408e6a9f2812a8b7aaa9b9d205c7a. --- readthedocs/projects/models.py | 2 +- readthedocs/projects/views/private.py | 1 + readthedocs/rtd_tests/tests/test_sync_versions.py | 5 +---- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/readthedocs/projects/models.py b/readthedocs/projects/models.py index a07454f040d..ac8df36d6ce 100644 --- a/readthedocs/projects/models.py +++ b/readthedocs/projects/models.py @@ -707,7 +707,7 @@ def update_stable_version(self): if current_stable: identifier_updated = ( new_stable.identifier != current_stable.identifier) - if identifier_updated and current_stable.active: + if identifier_updated and current_stable.machine: log.info( "Update stable version: {project}:{version}".format( project=self.slug, diff --git a/readthedocs/projects/views/private.py b/readthedocs/projects/views/private.py index cf4cac0e968..6c09304dc62 100644 --- a/readthedocs/projects/views/private.py +++ b/readthedocs/projects/views/private.py @@ -176,6 +176,7 @@ def project_version_detail(request, project_slug, version_slug): log.info('Removing files for version %s', version.slug) broadcast(type='app', task=tasks.clear_artifacts, args=[version.pk]) version.built = False + version.machine = False version.save() url = reverse('project_version_list', args=[project.slug]) return HttpResponseRedirect(url) diff --git a/readthedocs/rtd_tests/tests/test_sync_versions.py b/readthedocs/rtd_tests/tests/test_sync_versions.py index 8e525b06b9e..79d6caf472f 100644 --- a/readthedocs/rtd_tests/tests/test_sync_versions.py +++ b/readthedocs/rtd_tests/tests/test_sync_versions.py @@ -349,9 +349,6 @@ def test_update_stable_version(self): self.assertEqual(version_stable.identifier, '1.0.0') def test_update_inactive_stable_version(self): - """ - Test that stable doesn't get updated when it isn't active - """ version_post_data = { 'branches': [ { @@ -391,7 +388,7 @@ def test_update_inactive_stable_version(self): version_stable = Version.objects.get(slug=STABLE) self.assertFalse(version_stable.active) - self.assertEqual(version_stable.identifier, '0.9') + self.assertEqual(version_stable.identifier, '1.0.0') def test_stable_version_tags_over_branches(self): version_post_data = { From 6d47a9bbb42b53f89acee391bfeb0c9bc414ca92 Mon Sep 17 00:00:00 2001 From: Eric Holscher Date: Wed, 6 Dec 2017 08:23:50 -0800 Subject: [PATCH 2/6] Don't unset machine, when they don't have that version locally --- readthedocs/projects/views/private.py | 1 - 1 file changed, 1 deletion(-) diff --git a/readthedocs/projects/views/private.py b/readthedocs/projects/views/private.py index 6c09304dc62..cf4cac0e968 100644 --- a/readthedocs/projects/views/private.py +++ b/readthedocs/projects/views/private.py @@ -176,7 +176,6 @@ def project_version_detail(request, project_slug, version_slug): log.info('Removing files for version %s', version.slug) broadcast(type='app', task=tasks.clear_artifacts, args=[version.pk]) version.built = False - version.machine = False version.save() url = reverse('project_version_list', args=[project.slug]) return HttpResponseRedirect(url) From e8bf5c2d0ce79950c339ef6df241990f82fc4a07 Mon Sep 17 00:00:00 2001 From: Eric Holscher Date: Wed, 6 Dec 2017 08:24:26 -0800 Subject: [PATCH 3/6] ALl of these need to be true, not either or --- readthedocs/projects/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readthedocs/projects/models.py b/readthedocs/projects/models.py index ac8df36d6ce..bc3b2131153 100644 --- a/readthedocs/projects/models.py +++ b/readthedocs/projects/models.py @@ -707,7 +707,7 @@ def update_stable_version(self): if current_stable: identifier_updated = ( new_stable.identifier != current_stable.identifier) - if identifier_updated and current_stable.machine: + if identifier_updated and current_stable.active and current_stable.machine: log.info( "Update stable version: {project}:{version}".format( project=self.slug, From 39f7598c3c8aae1e088d92e8464d5e62c4724d01 Mon Sep 17 00:00:00 2001 From: Eric Holscher Date: Wed, 6 Dec 2017 10:13:41 -0800 Subject: [PATCH 4/6] Add test for this case --- .../rtd_tests/tests/test_sync_versions.py | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/readthedocs/rtd_tests/tests/test_sync_versions.py b/readthedocs/rtd_tests/tests/test_sync_versions.py index 79d6caf472f..3fead7f8fbe 100644 --- a/readthedocs/rtd_tests/tests/test_sync_versions.py +++ b/readthedocs/rtd_tests/tests/test_sync_versions.py @@ -468,3 +468,79 @@ def test_unicode(self): content_type='application/json', ) self.assertEqual(resp.status_code, 200) + + def test_user_defined_stable_version_with_tags(self): + + Version.objects.create( + project=self.pip, + identifier='0.8.3', + verbose_name='0.8.3', + active=True, + ) + + Version.objects.create( + project=self.pip, + identifier='foo', + type='branch', + verbose_name='stable', + active=True, + machine=True, + ) + + version_post_data = { + 'branches': [ + { + 'identifier': 'origin/master', + 'verbose_name': 'master', + }, + { + 'identifier': 'origin/stable', + 'verbose_name': 'stable', + }, + { + 'identifier': 'origin/to_add', + 'verbose_name': 'to_add', + }, + ], + 'tags': [ + { + 'identifier': '0.9', + 'verbose_name': '0.9', + }, + { + 'identifier': '0.8.3', + 'verbose_name': '0.8.3', + }, + ], + } + + self.client.post( + '/api/v2/project/{}/sync_versions/'.format(self.pip.pk), + data=json.dumps(version_post_data), + content_type='application/json', + ) + + version_9 = Version.objects.get(slug='0.9') + self.assertFalse(version_9.active) + + version_stable = Version.objects.get(slug='stable') + self.assertFalse(version_stable.machine) + self.assertTrue(version_stable.active) + + # Version 0.9 doesn't become stable, since we already had a user-defined stable + self.assertEqual( + 'origin/stable', + self.pip.get_stable_version().identifier, + ) + + self.client.post( + '/api/v2/project/{}/sync_versions/'.format(self.pip.pk), + data=json.dumps(version_post_data), + content_type='application/json', + ) + + # Version 0.9 doesn't become stable, since we already had a user-defined stable + self.assertEqual( + 'origin/stable', + self.pip.get_stable_version().identifier, + ) From b4a9fd73f7412cce4812ad41986c5636eef5681e Mon Sep 17 00:00:00 2001 From: Eric Holscher Date: Wed, 6 Dec 2017 10:23:43 -0800 Subject: [PATCH 5/6] Fix prior test --- readthedocs/rtd_tests/tests/test_sync_versions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readthedocs/rtd_tests/tests/test_sync_versions.py b/readthedocs/rtd_tests/tests/test_sync_versions.py index 3fead7f8fbe..895f6ed46ed 100644 --- a/readthedocs/rtd_tests/tests/test_sync_versions.py +++ b/readthedocs/rtd_tests/tests/test_sync_versions.py @@ -388,7 +388,7 @@ def test_update_inactive_stable_version(self): version_stable = Version.objects.get(slug=STABLE) self.assertFalse(version_stable.active) - self.assertEqual(version_stable.identifier, '1.0.0') + self.assertEqual(version_stable.identifier, '0.9') def test_stable_version_tags_over_branches(self): version_post_data = { From 5f6917cd1acc41c5f7f8c5708d2c6a4e283a0d83 Mon Sep 17 00:00:00 2001 From: Eric Holscher Date: Wed, 6 Dec 2017 10:26:45 -0800 Subject: [PATCH 6/6] Cleanup test code and comment it --- .../rtd_tests/tests/test_sync_versions.py | 22 ++++++------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/readthedocs/rtd_tests/tests/test_sync_versions.py b/readthedocs/rtd_tests/tests/test_sync_versions.py index 895f6ed46ed..945a765bb6b 100644 --- a/readthedocs/rtd_tests/tests/test_sync_versions.py +++ b/readthedocs/rtd_tests/tests/test_sync_versions.py @@ -478,6 +478,7 @@ def test_user_defined_stable_version_with_tags(self): active=True, ) + # A pre-existing active stable branch that was machine created Version.objects.create( project=self.pip, identifier='foo', @@ -493,14 +494,11 @@ def test_user_defined_stable_version_with_tags(self): 'identifier': 'origin/master', 'verbose_name': 'master', }, + # A new user-defined stable branch { 'identifier': 'origin/stable', 'verbose_name': 'stable', }, - { - 'identifier': 'origin/to_add', - 'verbose_name': 'to_add', - }, ], 'tags': [ { @@ -520,27 +518,21 @@ def test_user_defined_stable_version_with_tags(self): content_type='application/json', ) + # Didn't update to newest tag version_9 = Version.objects.get(slug='0.9') self.assertFalse(version_9.active) + # Did update to user-defined stable version version_stable = Version.objects.get(slug='stable') self.assertFalse(version_stable.machine) self.assertTrue(version_stable.active) + self.assertEqual('origin/stable', self.pip.get_stable_version().identifier) - # Version 0.9 doesn't become stable, since we already had a user-defined stable - self.assertEqual( - 'origin/stable', - self.pip.get_stable_version().identifier, - ) - + # Check that posting again doesn't change anything from current state. self.client.post( '/api/v2/project/{}/sync_versions/'.format(self.pip.pk), data=json.dumps(version_post_data), content_type='application/json', ) - # Version 0.9 doesn't become stable, since we already had a user-defined stable - self.assertEqual( - 'origin/stable', - self.pip.get_stable_version().identifier, - ) + self.assertEqual('origin/stable', self.pip.get_stable_version().identifier)