Fix EXIF based image rotation test
authorElrond <elrond+mediagoblin.org@samba-tng.org>
Sat, 4 Feb 2012 19:54:14 +0000 (20:54 +0100)
committerJoar Wandborg <git@wandborg.com>
Sat, 4 Feb 2012 20:37:05 +0000 (21:37 +0100)
The test checks for a pixel value after rotation (good
idea!). But the value seems to be a bit different on some
platforms, so use a list of seen values.

Not the perfect solution, but it works.

mediagoblin/tests/test_exif.py

index bfafe129062db18a995c2d1f524f0800047c4f73..ed95045c4e5d43601006cb2b63a575dbfbb0ef57 100644 (file)
@@ -21,6 +21,11 @@ import Image
 from mediagoblin.tools.exif import exif_fix_image_orientation, \
     extract_exif, clean_exif, get_gps_data, get_useful
 
+
+def assert_in(a, b):
+    assert a in b, "%r not in %r" % (a, b)
+
+
 GOOD_JPG = pkg_resources.resource_filename(
     'mediagoblin.tests',
     os.path.join(
@@ -42,6 +47,7 @@ GPS_JPG = pkg_resources.resource_filename(
         'test_exif',
         'has-gps.jpg'))
 
+
 def test_exif_extraction():
     '''
     Test EXIF extraction from a good image
@@ -130,6 +136,7 @@ def test_exif_extraction():
                 32, 32, 32],
             'field_length': 44}}
 
+
 def test_exif_image_orientation():
     '''
     Test image reorientation based on EXIF data
@@ -144,7 +151,10 @@ def test_exif_image_orientation():
     assert image.size == (428, 640)
 
     # If this pixel looks right, the rest of the image probably will too.
-    assert image.getdata()[10000] == (41, 28, 11)
+    assert_in(image.getdata()[10000],
+              ((41, 28, 11), (43, 27, 11))
+              )
+
 
 def test_exif_no_exif():
     '''
@@ -160,6 +170,7 @@ def test_exif_no_exif():
     assert gps == {}
     assert useful == {}
 
+
 def test_exif_bad_image():
     '''
     Test EXIF extraction from a faithful, but bad image
@@ -174,6 +185,7 @@ def test_exif_bad_image():
     assert gps == {}
     assert useful == {}
 
+
 def test_exif_gps_data():
     '''
     Test extractiion of GPS data
@@ -186,4 +198,3 @@ def test_exif_gps_data():
         'direction': 25.674046740467404,
         'altitude': 37.64365671641791,
         'longitude': 18.016166666666667}
-