[gexiv2] build: Fix running tests out-of-tree



commit 88d159bae728b26ff430d4ed8b8a3d0fd821250a
Author: Jens Georg <mail jensge org>
Date:   Fri May 12 21:07:21 2017 +0200

    build: Fix running tests out-of-tree

 Makefile.am                  |    7 +++++--
 check.am                     |    3 ++-
 test/python/gexiv2.py        |    2 +-
 test/python/test_metadata.py |   30 +++++++++++++++++++++---------
 4 files changed, 29 insertions(+), 13 deletions(-)
---
diff --git a/Makefile.am b/Makefile.am
index 2b8d22b..517b268 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -24,9 +24,12 @@ EXTRA_DIST = \
        @PACKAGE_NAME@.vapi             \
        gexiv2/gexiv2-version.m4 \
        $(TYPELIB_FILES) \
-       test/sample-author-badencoding.jpg \
+       test/data/sample-author-badencoding.jpg \
+       test/data/original.jpg \
+       test/data/CaorVN.jpeg \
        test/gexiv2-dump.vala \
-       test/python/gexiv2.py
+       test/python/gexiv2.py \
+       test/python/test_metadata.py
 
 
 # Installed Files #
diff --git a/check.am b/check.am
index 59196e4..df1dc79 100644
--- a/check.am
+++ b/check.am
@@ -4,7 +4,8 @@ TESTS_ENVIRONMENT = \
        GI_TYPELIB_PATH=$(top_builddir) \
        PYTHONPATH=$(top_srcdir)/test/python \
        MALLOC_CHECK_=2 \
-       MALLOC_PERTURB_=$$((RANDOM % 255))
+       MALLOC_PERTURB_=$$((RANDOM % 255)) \
+       TEST_DATA_DIR=$(srcdir)/test/data
 
 tests: check
 
diff --git a/test/python/gexiv2.py b/test/python/gexiv2.py
index 2b25eba..c1d4940 100644
--- a/test/python/gexiv2.py
+++ b/test/python/gexiv2.py
@@ -36,7 +36,7 @@ gi.require_version('GExiv2', '0.10')
 from gi.repository import GExiv2
 
 
-SAMPLES_DIR = os.path.join(os.path.dirname(__file__), '..', 'data')
+SAMPLES_DIR = os.getenv('TEST_DATA_DIR', default = os.path.join(os.path.dirname(__file__), '..', 'data'))
 
 
 class TestGexiv2(unittest.TestCase):
diff --git a/test/python/test_metadata.py b/test/python/test_metadata.py
index eb8cadc..5f7589a 100644
--- a/test/python/test_metadata.py
+++ b/test/python/test_metadata.py
@@ -26,6 +26,7 @@ import sys
 import errno
 import shutil
 import unittest
+import tempfile
 
 PY3K = sys.version_info[0] == 3
 
@@ -38,17 +39,28 @@ from fractions import Fraction
 class TestMetadata(unittest.TestCase):
     maxDiff = None
 
+    DATADIR = os.getenv('TEST_DATA_DIR', default = os.path.join(os.path.dirname(__file__), '..', 'data'))
+
     def setUp(self):
         self.metadata = GExiv2.Metadata()
-        self.metadata.open_path('test/data/original.jpg')
+        self.metadata.open_path(self.get_input_file())
+        self.output_dir = tempfile.mkdtemp()
+        self.output_file = os.path.join(self.output_dir, 'withgps.jpg')
 
     def tearDown(self):
         try:
-            os.unlink('test/data/withgps.jpg')
+            os.remove(self.output_file)
+            os.rmdir(self.output_dir)
         except Exception as e:
             if e.errno != errno.ENOENT:
                 raise
 
+    def get_input_file(self):
+        return os.path.join(self.DATADIR, 'original.jpg')
+
+    def get_output_file(self):
+        return os.path.join(self.output_dir, self.output_file)
+
     def test_presence_of_expected_methods(self):
         metadata = GExiv2.Metadata()
         methods = [m for m in dir(metadata) if not m.startswith('_')]
@@ -171,7 +183,7 @@ class TestMetadata(unittest.TestCase):
             self.assertIn(method, methods)
 
     def test_open_buf(self):
-        with open('test/data/original.jpg', 'rb' if PY3K else 'r') as fd:
+        with open(self.get_input_file(), 'rb' if PY3K else 'r') as fd:
             buf = fd.read()
         metadata = GExiv2.Metadata()
         metadata.open_buf(buf)
@@ -179,7 +191,7 @@ class TestMetadata(unittest.TestCase):
 
     def test_open_path(self):
         metadata = GExiv2.Metadata()
-        metadata.open_path('test/data/original.jpg')
+        metadata.open_path(self.get_input_file())
         self.assertEqual(len(metadata.get_exif_tags()), 112)
 
     def test_get_tag_string(self):
@@ -609,12 +621,12 @@ generated the image. When the field is left blank, it is treated as unknown.""")
         self.assertEqual(len(thumb), 4534)
 
     def test_set_exif_thumbnail_from_file(self):
-        self.metadata.set_exif_thumbnail_from_file('test/data/original.jpg')
+        self.metadata.set_exif_thumbnail_from_file(self.get_input_file())
         thumb = self.metadata.get_exif_thumbnail()
         self.assertEqual(len(thumb), 56080)
 
     def test_set_exif_thumbnail_from_buffer(self):
-        with open('test/data/original.jpg', 'rb' if PY3K else 'r') as fd:
+        with open(self.get_input_file(), 'rb' if PY3K else 'r') as fd:
             buf = fd.read()
         self.metadata.set_exif_thumbnail_from_buffer(buf)
         thumb = self.metadata.get_exif_thumbnail()
@@ -740,12 +752,12 @@ generated the image. When the field is left blank, it is treated as unknown.""")
             self.assertEqual(len(thumb.get_data()), nbytes.pop())
 
     def test_save_file(self):
-        shutil.copyfile('test/data/original.jpg', 'test/data/withgps.jpg')
+        shutil.copyfile(self.get_input_file(), self.get_output_file())
         self.metadata.set_gps_info(12.5683371, 55.6760968, 42)
-        self.metadata.save_file('test/data/withgps.jpg')
+        self.metadata.save_file(self.get_output_file())
 
         newfile = GExiv2.Metadata()
-        newfile.open_path('test/data/withgps.jpg')
+        newfile.open_path(self.get_output_file())
         self.assertEqual(
             [(tag, newfile.get_tag_string(tag))
              for tag in newfile.get_exif_tags()


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]