diff options
| author | Simon Charette <charette.s@gmail.com> | 2014-03-31 15:25:08 -0400 |
|---|---|---|
| committer | Simon Charette <charette.s@gmail.com> | 2014-04-13 18:22:26 -0400 |
| commit | 72d3889db4eb3a14acb94f613edd79f0f27d26e3 (patch) | |
| tree | 4ed6813ee328d31a865d9f6cb7c8ba10f5457c95 /tests | |
| parent | b82f30785ff0f9fedf38fc79624a9064a903de4a (diff) | |
Fixed #22350 -- Consistently serialize bytes and text in migrations.
Thanks to @treyhunner and Loïc for their suggestions and review.
Diffstat (limited to 'tests')
11 files changed, 49 insertions, 4 deletions
diff --git a/tests/migrations/test_migrations/0001_initial.py b/tests/migrations/test_migrations/0001_initial.py index 344bebdfe3..3544610eb4 100644 --- a/tests/migrations/test_migrations/0001_initial.py +++ b/tests/migrations/test_migrations/0001_initial.py @@ -1,3 +1,6 @@ +# encoding: utf8 +from __future__ import unicode_literals + from django.db import migrations, models diff --git a/tests/migrations/test_migrations/0002_second.py b/tests/migrations/test_migrations/0002_second.py index 736e844825..5da381677c 100644 --- a/tests/migrations/test_migrations/0002_second.py +++ b/tests/migrations/test_migrations/0002_second.py @@ -1,3 +1,6 @@ +# encoding: utf8 +from __future__ import unicode_literals + from django.db import migrations, models diff --git a/tests/migrations/test_migrations_2/0001_initial.py b/tests/migrations/test_migrations_2/0001_initial.py index 6172f011e8..cb15a04956 100644 --- a/tests/migrations/test_migrations_2/0001_initial.py +++ b/tests/migrations/test_migrations_2/0001_initial.py @@ -1,3 +1,6 @@ +# encoding: utf8 +from __future__ import unicode_literals + from django.db import migrations, models diff --git a/tests/migrations/test_migrations_conflict/0001_initial.py b/tests/migrations/test_migrations_conflict/0001_initial.py index 344bebdfe3..3544610eb4 100644 --- a/tests/migrations/test_migrations_conflict/0001_initial.py +++ b/tests/migrations/test_migrations_conflict/0001_initial.py @@ -1,3 +1,6 @@ +# encoding: utf8 +from __future__ import unicode_literals + from django.db import migrations, models diff --git a/tests/migrations/test_migrations_conflict/0002_conflicting_second.py b/tests/migrations/test_migrations_conflict/0002_conflicting_second.py index 15ea1f063a..cf83d7b036 100644 --- a/tests/migrations/test_migrations_conflict/0002_conflicting_second.py +++ b/tests/migrations/test_migrations_conflict/0002_conflicting_second.py @@ -1,3 +1,6 @@ +# encoding: utf8 +from __future__ import unicode_literals + from django.db import migrations, models diff --git a/tests/migrations/test_migrations_conflict/0002_second.py b/tests/migrations/test_migrations_conflict/0002_second.py index ace9a83347..0595de83f0 100644 --- a/tests/migrations/test_migrations_conflict/0002_second.py +++ b/tests/migrations/test_migrations_conflict/0002_second.py @@ -1,3 +1,6 @@ +# encoding: utf8 +from __future__ import unicode_literals + from django.db import migrations, models diff --git a/tests/migrations/test_migrations_squashed/0001_initial.py b/tests/migrations/test_migrations_squashed/0001_initial.py index 344bebdfe3..3544610eb4 100644 --- a/tests/migrations/test_migrations_squashed/0001_initial.py +++ b/tests/migrations/test_migrations_squashed/0001_initial.py @@ -1,3 +1,6 @@ +# encoding: utf8 +from __future__ import unicode_literals + from django.db import migrations, models diff --git a/tests/migrations/test_migrations_squashed/0001_squashed_0002.py b/tests/migrations/test_migrations_squashed/0001_squashed_0002.py index 742be641aa..b357e3f6f8 100644 --- a/tests/migrations/test_migrations_squashed/0001_squashed_0002.py +++ b/tests/migrations/test_migrations_squashed/0001_squashed_0002.py @@ -1,3 +1,6 @@ +# encoding: utf8 +from __future__ import unicode_literals + from django.db import migrations, models diff --git a/tests/migrations/test_migrations_squashed/0002_second.py b/tests/migrations/test_migrations_squashed/0002_second.py index ace9a83347..0595de83f0 100644 --- a/tests/migrations/test_migrations_squashed/0002_second.py +++ b/tests/migrations/test_migrations_squashed/0002_second.py @@ -1,3 +1,6 @@ +# encoding: utf8 +from __future__ import unicode_literals + from django.db import migrations, models diff --git a/tests/migrations/test_migrations_unmigdep/0001_initial.py b/tests/migrations/test_migrations_unmigdep/0001_initial.py index f4c11b4657..ff19085563 100644 --- a/tests/migrations/test_migrations_unmigdep/0001_initial.py +++ b/tests/migrations/test_migrations_unmigdep/0001_initial.py @@ -1,3 +1,6 @@ +# encoding: utf8 +from __future__ import unicode_literals + from django.db import migrations, models diff --git a/tests/migrations/test_writer.py b/tests/migrations/test_writer.py index c3889df0e7..4d552532d4 100644 --- a/tests/migrations/test_writer.py +++ b/tests/migrations/test_writer.py @@ -1,9 +1,9 @@ # encoding: utf8 - from __future__ import unicode_literals import datetime import os +import tokenize from django.core.validators import RegexValidator, EmailValidator from django.db import models, migrations @@ -59,7 +59,11 @@ class WriterTests(TestCase): self.assertSerializedEqual(1) self.assertSerializedEqual(None) self.assertSerializedEqual(b"foobar") + string, imports = MigrationWriter.serialize(b"foobar") + self.assertEqual(string, "b'foobar'") self.assertSerializedEqual("föobár") + string, imports = MigrationWriter.serialize("foobar") + self.assertEqual(string, "'foobar'") self.assertSerializedEqual({1: 2}) self.assertSerializedEqual(["a", 2, True, None]) self.assertSerializedEqual(set([2, 3, "eighty"])) @@ -92,15 +96,15 @@ class WriterTests(TestCase): # Classes validator = RegexValidator(message="hello") string, imports = MigrationWriter.serialize(validator) - self.assertEqual(string, "django.core.validators.RegexValidator(message=%s)" % repr("hello")) + self.assertEqual(string, "django.core.validators.RegexValidator(message='hello')") self.serialize_round_trip(validator) validator = EmailValidator(message="hello") # Test with a subclass. string, imports = MigrationWriter.serialize(validator) - self.assertEqual(string, "django.core.validators.EmailValidator(message=%s)" % repr("hello")) + self.assertEqual(string, "django.core.validators.EmailValidator(message='hello')") self.serialize_round_trip(validator) validator = deconstructible(path="custom.EmailValidator")(EmailValidator)(message="hello") string, imports = MigrationWriter.serialize(validator) - self.assertEqual(string, "custom.EmailValidator(message=%s)" % repr("hello")) + self.assertEqual(string, "custom.EmailValidator(message='hello')") # Django fields self.assertSerializedFieldEqual(models.CharField(max_length=255)) self.assertSerializedFieldEqual(models.TextField(null=True, blank=True)) @@ -153,6 +157,17 @@ class WriterTests(TestCase): # Just make sure it runs for now, and that things look alright. result = self.safe_exec(output) self.assertIn("Migration", result) + # In order to preserve compatibility with Python 3.2 unicode literals + # prefix shouldn't be added to strings. + tokens = tokenize.generate_tokens(six.StringIO(str(output)).readline) + for token_type, token_source, (srow, scol), _, line in tokens: + if token_type == tokenize.STRING: + self.assertFalse( + token_source.startswith('u'), + "Unicode literal prefix found at %d:%d: %r" % ( + srow, scol, line.strip() + ) + ) def test_migration_path(self): test_apps = [ |
