Skip to content

Commit

Permalink
fix the version check
Browse files Browse the repository at this point in the history
  • Loading branch information
smn committed Nov 20, 2014
1 parent ddd8a77 commit 139895d
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 2 deletions.
7 changes: 6 additions & 1 deletion elasticgit/models.py
Expand Up @@ -175,13 +175,18 @@ class ModelVersionField(DictField):
}
}

def compatible_version(self, own_version, check_version):
own = map(int, own_version.split('.'))
check = map(int, check_version.split('.'))
return own >= check

def validate(self, config):
config._config_data.setdefault(
self.name, elasticgit.version_info.copy())
value = self.get_value(config)
current_version = elasticgit.version_info['package_version']
package_version = value['package_version']
if (current_version < package_version):
if not self.compatible_version(current_version, package_version):
raise ConfigError(
'Got a version from the future, expecting: %r got %r' % (
current_version, package_version))
Expand Down
9 changes: 8 additions & 1 deletion elasticgit/tests/test_models.py
@@ -1,5 +1,6 @@
from elasticgit.tests.base import ModelBaseTest
from elasticgit.models import ConfigError, IntegerField, TextField
from elasticgit.models import (
ConfigError, IntegerField, TextField, ModelVersionField)

import elasticgit

Expand Down Expand Up @@ -79,3 +80,9 @@ def test_update(self):
self.assertEqual(new_model.name, model.name)
self.assertTrue(model.is_read_only())
self.assertFalse(new_model.is_read_only())

def test_version_check(self):
field = ModelVersionField('ModelVersionField')
self.assertTrue(field.compatible_version('0.2.10', '0.2.9'))
self.assertTrue(field.compatible_version('0.2.10', '0.2.10'))
self.assertFalse(field.compatible_version('0.2.9', '0.2.10'))

0 comments on commit 139895d

Please sign in to comment.