Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Revert "Merge pull request #3336 from rtfd/use-active-for-stable" #3368

Merged
merged 6 commits into from
Dec 7, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion readthedocs/projects/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -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.active and current_stable.machine:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So, comparing this with the original code, we are just adding a another condition (has to be active) but we keep the machine.

In other words, we are just updating the stable version only if, the identifier changed (a new tag become the stable, for example) and the stable version is active and it was created by RTD.

If what I'm saying is correct, I think we are OK :)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep, thats the goal :)

log.info(
"Update stable version: {project}:{version}".format(
project=self.slug,
Expand Down
71 changes: 68 additions & 3 deletions readthedocs/rtd_tests/tests/test_sync_versions.py
Original file line number Diff line number Diff line change
Expand Up @@ -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': [
{
Expand Down Expand Up @@ -471,3 +468,71 @@ 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,
)

# A pre-existing active stable branch that was machine created
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',
},
# A new user-defined stable branch
{
'identifier': 'origin/stable',
'verbose_name': 'stable',
},
],
'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',
)

# 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)

# 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',
)

self.assertEqual('origin/stable', self.pip.get_stable_version().identifier)