Hello community,

here is the log from the commit of package python-pymediainfo for 
openSUSE:Factory checked in at 2017-11-12 18:10:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pymediainfo (Old)
 and      /work/SRC/openSUSE:Factory/.python-pymediainfo.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pymediainfo"

Sun Nov 12 18:10:19 2017 rev:2 rq:541007 version:2.2.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pymediainfo/python-pymediainfo.changes    
2017-07-27 11:11:33.611268817 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-pymediainfo.new/python-pymediainfo.changes   
    2017-11-12 18:10:22.167285391 +0100
@@ -1,0 +2,13 @@
+Sat Nov 11 23:21:26 UTC 2017 - aloi...@gmx.com
+
+- Update to version 2.2.0
+  * Support MediaInfo v17.10
+  * Make parse support non-standard library locations (#24)
+  * Make parse support pathlib objects (#40)
+  * Add PyPy and PyPy3 support
+  * Run tests with pytest instead of nose
+
+- Dropped python-pymediainfo-skip_URL_test.patch (skipping network
+  test from the command line now)
+
+-------------------------------------------------------------------

Old:
----
  pymediainfo-2.1.9.tar.gz
  python-pymediainfo-skip_URL_test.patch

New:
----
  pymediainfo-2.2.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-pymediainfo.spec ++++++
--- /var/tmp/diff_new_pack.U4pFfp/_old  2017-11-12 18:10:23.163249158 +0100
+++ /var/tmp/diff_new_pack.U4pFfp/_new  2017-11-12 18:10:23.167249013 +0100
@@ -18,7 +18,7 @@
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-pymediainfo
-Version:        2.1.9
+Version:        2.2.0
 Release:        0
 Summary:        Python wrapper for the mediainfo library
 License:        MIT
@@ -26,9 +26,7 @@
 Url:            https://github.com/sbraz/pymediainfo
 Source0:        
https://files.pythonhosted.org/packages/source/p/pymediainfo/pymediainfo-%{version}.tar.gz
 Source99:       %{name}-rpmlintrc
-# PATCH-FIX-OPENSUSE python-pymediainfo-skip_URL_test.patch
-Patch0:         %{name}-skip_URL_test.patch
-BuildRequires:  %{python_module nose}
+BuildRequires:  %{python_module pytest}
 BuildRequires:  %{python_module setuptools}
 BuildRequires:  libmediainfo0
 Requires:       libmediainfo0
@@ -43,7 +41,6 @@
 
 %prep
 %setup -q -n pymediainfo-%{version}
-%patch0 -p1
 rm -rf pymediainfo.egg-info
 
 %build
@@ -55,7 +52,7 @@
 
 %check
 export LANG=en_US.UTF-8
-%python_expand PYTHONPATH=%{buildroot}%{$python_sitelib} $python 
%{_bindir}/nosetests -v
+%python_expand PYTHONPATH=%{buildroot}%{$python_sitelib} $python 
%{_bindir}/py.test -v -k 'not MediaInfoURLTest'
 
 %files %{python_files}
 %defattr(-,root,root,-)

++++++ pymediainfo-2.1.9.tar.gz -> pymediainfo-2.2.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pymediainfo-2.1.9/PKG-INFO 
new/pymediainfo-2.2.0/PKG-INFO
--- old/pymediainfo-2.1.9/PKG-INFO      2017-03-21 23:51:58.000000000 +0100
+++ new/pymediainfo-2.2.0/PKG-INFO      2017-11-08 00:10:33.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: pymediainfo
-Version: 2.1.9
+Version: 2.2.0
 Summary: A Python wrapper for the mediainfo library.
 Home-page: https://github.com/sbraz/pymediainfo
 Author: Louis Sautier
@@ -14,6 +14,8 @@
 Classifier: Programming Language :: Python :: 3.4
 Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: Implementation :: CPython
+Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Operating System :: POSIX :: Linux
 Classifier: Operating System :: MacOS :: MacOS X
 Classifier: Operating System :: Microsoft :: Windows
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pymediainfo-2.1.9/README.rst 
new/pymediainfo-2.2.0/README.rst
--- old/pymediainfo-2.1.9/README.rst    2017-03-21 23:51:37.000000000 +0100
+++ new/pymediainfo-2.2.0/README.rst    2017-11-08 00:10:07.000000000 +0100
@@ -7,11 +7,15 @@
 .. image:: https://img.shields.io/pypi/pyversions/pymediainfo.svg
   :target: https://pypi.org/project/pymediainfo
 
+.. image:: https://img.shields.io/pypi/implementation/pymediainfo.svg
+  :target: https://pypi.org/project/pymediainfo
+
 .. image:: https://api.travis-ci.org/sbraz/pymediainfo.svg?branch=master
   :target: https://travis-ci.org/sbraz/pymediainfo
 
 
 This small package is a wrapper around the MediaInfo library. It works on
 Linux, Mac OS X and Windows.
+It is tested on Python 2.6, 2.7, 3.4, 3.5, 3.6, PyPy and PyPy3.
 
 See https://pymediainfo.readthedocs.io/ for more information.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pymediainfo-2.1.9/docs/index.rst 
new/pymediainfo-2.2.0/docs/index.rst
--- old/pymediainfo-2.1.9/docs/index.rst        2017-03-21 23:51:37.000000000 
+0100
+++ new/pymediainfo-2.2.0/docs/index.rst        2017-11-08 00:10:07.000000000 
+0100
@@ -73,7 +73,7 @@
 =======================
 
 Please use the issue tracker in GitHub at 
https://github.com/sbraz/pymediainfo/issues
-to report all feature requests or bug reports.  Thanks!
+to report all feature requests or bug reports. Thanks!
 
 
 Indices and tables
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pymediainfo-2.1.9/docs/pymediainfo.rst 
new/pymediainfo-2.2.0/docs/pymediainfo.rst
--- old/pymediainfo-2.1.9/docs/pymediainfo.rst  2017-03-21 23:51:37.000000000 
+0100
+++ new/pymediainfo-2.2.0/docs/pymediainfo.rst  2017-11-08 00:10:07.000000000 
+0100
@@ -7,4 +7,3 @@
 .. automodule:: pymediainfo
     :members:
     :undoc-members:
-    :show-inheritance:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pymediainfo-2.1.9/pymediainfo/__init__.py 
new/pymediainfo-2.2.0/pymediainfo/__init__.py
--- old/pymediainfo-2.1.9/pymediainfo/__init__.py       2017-03-21 
23:51:37.000000000 +0100
+++ new/pymediainfo-2.2.0/pymediainfo/__init__.py       2017-11-08 
00:10:07.000000000 +0100
@@ -1,4 +1,5 @@
 import os
+import re
 import locale
 import json
 import sys
@@ -6,6 +7,11 @@
 import xml.etree.ElementTree as ET
 from ctypes import *
 
+try:
+    import pathlib
+except ImportError:
+    pathlib = None
+
 if sys.version_info < (3,):
     import urlparse
 else:
@@ -14,6 +20,30 @@
 __version__ = get_distribution("pymediainfo").version
 
 class Track(object):
+    """
+    An object associated with a media file track.
+
+    Each :class:`Track` attribute corresponds to attributes parsed from 
MediaInfo's output.
+    All attributes are lower case. Attributes that are present several times 
such as Duration
+    yield a second attribute starting with `other_` which is a list of all 
alternative attribute values.
+
+    When a non-existing attribute is accessed, `None` is returned.
+
+    Example:
+
+    >>> t = mi.tracks[0]
+    >>> t
+    <Track track_id='None', track_type='General'>
+    >>> t.duration
+    3000
+    >>> t.to_data()["other_duration"]
+    ['3 s 0 ms', '3 s 0 ms', '3 s 0 ms',
+        '00:00:03.000', '00:00:03.000']
+    >>> type(t.non_existing)
+    NoneType
+
+    All available attributes can be obtained by calling :func:`to_data`.
+    """
     def __getattribute__(self, name):
         try:
             return object.__getattribute__(self, name)
@@ -53,6 +83,19 @@
     def __repr__(self):
         return("<Track track_id='{0}', 
track_type='{1}'>".format(self.track_id, self.track_type))
     def to_data(self):
+        """
+        Returns a dict representation of the track attributes.
+
+        Example:
+
+        >>> sorted(track.to_data().keys())[:3]
+        ['codec', 'codec_extensions_usually_used', 'codec_url']
+        >>> t.to_data()["file_size"]
+        5988
+
+
+        :rtype: dict
+        """
         data = {}
         for k, v in self.__dict__.items():
             if k != 'xml_dom_fragment':
@@ -61,19 +104,42 @@
 
 
 class MediaInfo(object):
+    """
+    An object containing information about a media file.
+
+
+    :class:`MediaInfo` objects can be created by directly calling code from
+    libmediainfo (in this case, the library must be present on the system):
+
+    >>> pymediainfo.MediaInfo.parse("/path/to/file.mp4")
+
+    Alternatively, objects may be created from MediaInfo's XML output.
+    XML output can be obtained using the `XML` output format on versions older 
than v17.10
+    and the `OLDXML` format on newer versions.
+
+    Using such an XML file, we can create a :class:`MediaInfo` object:
+
+    >>> with open("output.xml") as f:
+    ...     mi = pymediainfo.MediaInfo(f.read())
+
+    :param str xml: XML output obtained from MediaInfo
+    """
     def __init__(self, xml):
-        self.xml_dom = MediaInfo.parse_xml_data_into_dom(xml)
+        self.xml_dom = MediaInfo._parse_xml_data_into_dom(xml)
 
     @staticmethod
-    def parse_xml_data_into_dom(xml_data):
+    def _parse_xml_data_into_dom(xml_data):
         try:
             return ET.fromstring(xml_data.encode("utf-8"))
         except:
             return None
     @staticmethod
-    def _get_library():
-        if os.name in ("nt", "dos", "os2", "ce"):
-            return windll.MediaInfo
+    def _get_library(library_file=None):
+        if library_file is not None:
+            return CDLL(library_file)
+        elif os.name in ("nt", "dos", "os2", "ce"):
+            if library_file is None:
+                return windll.MediaInfo
         elif sys.platform == "darwin":
             try:
                 return CDLL("libmediainfo.0.dylib")
@@ -82,21 +148,41 @@
         else:
             return CDLL("libmediainfo.so.0")
     @classmethod
-    def can_parse(cls):
+    def can_parse(cls, library_file=None):
+        """
+        Checks whether media files can be analyzed using libmediainfo.
+
+        :rtype: bool
+        """
         try:
-            cls._get_library()
+            cls._get_library(library_file)
             return True
         except:
             return False
     @classmethod
-    def parse(cls, filename):
-        lib = cls._get_library()
-        url = urlparse.urlparse(filename)
-        # Test whether the filename is actually a URL
-        if url.scheme is None:
-            # Test file is readable
-            with open(filename, "rb"):
-                pass
+    def parse(cls, filename, library_file=None):
+        """
+        Analyze a media file using libmediainfo.
+        If libmediainfo is located in a non-standard location, the 
`library_file` parameter can be used:
+
+        >>> pymediainfo.MediaInfo.parse("tests/data/sample.mkv",
+        ...     library_file="/path/to/libmediainfo.dylib")
+
+        :param filename: path to the media file which will be analyzed.
+        :param str library_file: path to the libmediainfo library, this should 
only be used if the library cannot be auto-detected.
+        :type filename: str or pathlib.Path
+        :rtype: MediaInfo
+        """
+        lib = cls._get_library(library_file)
+        if pathlib is not None and isinstance(filename, pathlib.PurePath):
+            filename = str(filename)
+        else:
+            url = urlparse.urlparse(filename)
+            # Test whether the filename is actually a URL
+            if url.scheme is None:
+                # Test whether the file is readable
+                with open(filename, "rb"):
+                    pass
         # Define arguments and return types
         lib.MediaInfo_Inform.restype = c_wchar_p
         lib.MediaInfo_New.argtypes = []
@@ -111,6 +197,14 @@
         lib.MediaInfo_Delete.restype  = None
         lib.MediaInfo_Close.argtypes = [c_void_p]
         lib.MediaInfo_Close.restype = None
+        # Obtain the library version
+        lib_version = lib.MediaInfo_Option(None, "Info_Version", "")
+        lib_version = [int(_) for _ in re.search("^MediaInfoLib - v(\S+)", 
lib_version).group(1).split(".")]
+        # The XML option was renamed starting with version 17.10
+        if lib_version >= [17, 10]:
+            xml_option = "OLDXML"
+        else:
+            xml_option = "XML"
         # Create a MediaInfo handle
         handle = lib.MediaInfo_New()
         lib.MediaInfo_Option(handle, "CharSet", "UTF-8")
@@ -120,7 +214,7 @@
         if (sys.version_info < (3,) and os.name == "posix"
                 and locale.getlocale() == (None, None)):
             locale.setlocale(locale.LC_CTYPE, locale.getdefaultlocale())
-        lib.MediaInfo_Option(None, "Inform", "XML")
+        lib.MediaInfo_Option(None, "Inform", xml_option)
         lib.MediaInfo_Option(None, "Complete", "1")
         lib.MediaInfo_Open(handle, filename)
         xml = lib.MediaInfo_Inform(handle, 0)
@@ -136,15 +230,36 @@
             self._tracks.append(Track(xml_track))
     @property
     def tracks(self):
+        """
+        A list of :py:class:`Track` objects which the media file contains.
+
+        For instance:
+
+        >>> mi = pymediainfo.MediaInfo.parse("/path/to/file.mp4")
+        >>> for t in mi.tracks:
+        ...     print(t)
+        <Track track_id='None', track_type='General'>
+        <Track track_id='1', track_type='Text'>
+        """
         if not hasattr(self, "_tracks"):
             self._tracks = []
         if len(self._tracks) == 0:
             self._populate_tracks()
         return self._tracks
     def to_data(self):
+        """
+        Returns a dict representation of the object's :py:class:`Tracks 
<Track>`.
+
+        :rtype: dict
+        """
         data = {'tracks': []}
         for track in self.tracks:
             data['tracks'].append(track.to_data())
         return data
     def to_json(self):
+        """
+        Returns a json representation of the object's :py:class:`Tracks 
<Track>`.
+
+        :rtype: str
+        """
         return json.dumps(self.to_data())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pymediainfo-2.1.9/pymediainfo.egg-info/PKG-INFO 
new/pymediainfo-2.2.0/pymediainfo.egg-info/PKG-INFO
--- old/pymediainfo-2.1.9/pymediainfo.egg-info/PKG-INFO 2017-03-21 
23:51:58.000000000 +0100
+++ new/pymediainfo-2.2.0/pymediainfo.egg-info/PKG-INFO 2017-11-08 
00:10:33.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: pymediainfo
-Version: 2.1.9
+Version: 2.2.0
 Summary: A Python wrapper for the mediainfo library.
 Home-page: https://github.com/sbraz/pymediainfo
 Author: Louis Sautier
@@ -14,6 +14,8 @@
 Classifier: Programming Language :: Python :: 3.4
 Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: Implementation :: CPython
+Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Operating System :: POSIX :: Linux
 Classifier: Operating System :: MacOS :: MacOS X
 Classifier: Operating System :: Microsoft :: Windows
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pymediainfo-2.1.9/pymediainfo.egg-info/SOURCES.txt 
new/pymediainfo-2.2.0/pymediainfo.egg-info/SOURCES.txt
--- old/pymediainfo-2.1.9/pymediainfo.egg-info/SOURCES.txt      2017-03-21 
23:51:58.000000000 +0100
+++ new/pymediainfo-2.2.0/pymediainfo.egg-info/SOURCES.txt      2017-11-08 
00:10:33.000000000 +0100
@@ -13,7 +13,7 @@
 pymediainfo.egg-info/namespace_packages.txt
 pymediainfo.egg-info/not-zip-safe
 pymediainfo.egg-info/top_level.txt
-tests/test.py
+tests/test_pymediainfo.py
 tests/data/accentué.txt
 tests/data/invalid.xml
 tests/data/sample.mkv
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pymediainfo-2.1.9/setup.cfg 
new/pymediainfo-2.2.0/setup.cfg
--- old/pymediainfo-2.1.9/setup.cfg     2017-03-21 23:51:58.000000000 +0100
+++ new/pymediainfo-2.2.0/setup.cfg     2017-11-08 00:10:33.000000000 +0100
@@ -9,8 +9,10 @@
 [metadata]
 description-file = README.rst
 
+[aliases]
+test = pytest
+
 [egg_info]
 tag_build = 
 tag_date = 0
-tag_svn_revision = 0
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pymediainfo-2.1.9/setup.py 
new/pymediainfo-2.2.0/setup.py
--- old/pymediainfo-2.1.9/setup.py      2017-03-21 23:51:37.000000000 +0100
+++ new/pymediainfo-2.2.0/setup.py      2017-11-08 00:10:07.000000000 +0100
@@ -2,7 +2,7 @@
 
 setup(
     name='pymediainfo',
-    version='2.1.9',
+    version='2.2.0',
     author='Louis Sautier',
     author_email='sautier.lo...@gmail.com',
     url='https://github.com/sbraz/pymediainfo',
@@ -12,8 +12,7 @@
     include_package_data=True,
     zip_safe=False,
     license='MIT',
-    tests_require=["nose"],
-    test_suite="nose.collector",
+    tests_require=["pytest", "pytest-runner"],
     classifiers=[
         "Development Status :: 5 - Production/Stable",
         "Programming Language :: Python :: 2.6",
@@ -21,6 +20,8 @@
         "Programming Language :: Python :: 3.4",
         "Programming Language :: Python :: 3.5",
         "Programming Language :: Python :: 3.6",
+        "Programming Language :: Python :: Implementation :: CPython",
+        "Programming Language :: Python :: Implementation :: PyPy",
         "Operating System :: POSIX :: Linux",
         "Operating System :: MacOS :: MacOS X",
         "Operating System :: Microsoft :: Windows",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pymediainfo-2.1.9/tests/test.py 
new/pymediainfo-2.2.0/tests/test.py
--- old/pymediainfo-2.1.9/tests/test.py 2017-03-21 23:51:37.000000000 +0100
+++ new/pymediainfo-2.2.0/tests/test.py 1970-01-01 01:00:00.000000000 +0100
@@ -1,87 +0,0 @@
-# -*- coding: utf-8 -*-
-from __future__ import unicode_literals
-import os
-import sys
-import unittest
-
-from pymediainfo import MediaInfo
-
-data_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "data")
-
-class MediaInfoTest(unittest.TestCase):
-    def setUp(self):
-        with open(os.path.join(data_dir, 'sample.xml'), 'r') as f:
-            self.xml_data = f.read()
-        self.mi = MediaInfo(self.xml_data)
-    def test_populate_tracks(self):
-        self.assertEqual(4, len(self.mi.tracks))
-    def test_valid_video_track(self):
-        for track in self.mi.tracks:
-            if track.track_type == 'Video':
-                self.assertEqual('DV', track.codec)
-                self.assertEqual('Interlaced', track.scan_type)
-                break
-    def test_track_integer_attributes(self):
-        for track in self.mi.tracks:
-            if track.track_type == 'Audio':
-                self.assertTrue(isinstance(track.duration, int))
-                self.assertTrue(isinstance(track.bit_rate, int))
-                self.assertTrue(isinstance(track.sampling_rate, int))
-                break
-    def test_track_other_attributes(self):
-        for track in self.mi.tracks:
-            if track.track_type == 'General':
-                self.assertEqual(5, len(track.other_file_size))
-                self.assertEqual(4, len(track.other_duration))
-                break
-    def test_load_mediainfo_from_string(self):
-        self.assertEqual(4, len(self.mi.tracks))
-    def test_getting_attribute_that_doesnot_exist(self):
-        self.assertTrue(self.mi.tracks[0].does_not_exist is None)
-
-class MediaInfoInvalidXMLTest(unittest.TestCase):
-    def setUp(self):
-        with open(os.path.join(data_dir, 'invalid.xml'), 'r') as f:
-            self.xml_data = f.read()
-    def test_parse_invalid_xml(self):
-        mi = MediaInfo(MediaInfo.parse_xml_data_into_dom(self.xml_data))
-        self.assertEqual(len(mi.tracks), 0)
-
-class MediaInfoLibraryTest(unittest.TestCase):
-    def setUp(self):
-        self.mi = MediaInfo.parse(os.path.join(data_dir, "sample.mp4"))
-    def test_can_parse_true(self):
-        self.assertTrue(MediaInfo.can_parse())
-    def test_track_count(self):
-        self.assertEqual(len(self.mi.tracks), 3)
-    def test_track_types(self):
-        self.assertEqual(self.mi.tracks[1].track_type, "Video")
-        self.assertEqual(self.mi.tracks[2].track_type, "Audio")
-    def test_track_details(self):
-        self.assertEqual(self.mi.tracks[1].codec, "AVC")
-        self.assertEqual(self.mi.tracks[2].codec, "AAC LC")
-        self.assertEqual(self.mi.tracks[1].duration, 958)
-        self.assertEqual(self.mi.tracks[2].duration, 980)
-
-class MediaInfoUnicodeXMLTest(unittest.TestCase):
-    def setUp(self):
-        self.mi = MediaInfo.parse(os.path.join(data_dir, "sample.mkv"))
-    def test_parse_file_with_unicode_tags(self):
-        self.assertEqual(
-            self.mi.tracks[0].title,
-            "Dès Noël où un zéphyr haï me vêt de glaçons "
-            "würmiens je dîne d’exquis rôtis de bœuf au kir à "
-            "l’aÿ d’âge mûr & cætera !"
-        )
-
-class MediaInfoUnicodeFileNameTest(unittest.TestCase):
-    def setUp(self):
-        self.mi = MediaInfo.parse(os.path.join(data_dir, "accentué.txt"))
-    def test_parse_unicode_file(self):
-        self.assertEqual(len(self.mi.tracks), 1)
-
-class MediaInfoURLTest(unittest.TestCase):
-    def setUp(self):
-        self.mi = 
MediaInfo.parse("https://github.com/sbraz/pymediainfo/blob/master/tests/data/sample.mkv?raw=true";)
-    def test_parse_url(self):
-        self.assertEqual(len(self.mi.tracks), 2)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pymediainfo-2.1.9/tests/test_pymediainfo.py 
new/pymediainfo-2.2.0/tests/test_pymediainfo.py
--- old/pymediainfo-2.1.9/tests/test_pymediainfo.py     1970-01-01 
01:00:00.000000000 +0100
+++ new/pymediainfo-2.2.0/tests/test_pymediainfo.py     2017-11-08 
00:10:07.000000000 +0100
@@ -0,0 +1,97 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+import os
+import sys
+import unittest
+
+import pytest
+
+from pymediainfo import MediaInfo
+
+data_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "data")
+
+class MediaInfoTest(unittest.TestCase):
+    def setUp(self):
+        with open(os.path.join(data_dir, 'sample.xml'), 'r') as f:
+            self.xml_data = f.read()
+        self.mi = MediaInfo(self.xml_data)
+    def test_populate_tracks(self):
+        self.assertEqual(4, len(self.mi.tracks))
+    def test_valid_video_track(self):
+        for track in self.mi.tracks:
+            if track.track_type == 'Video':
+                self.assertEqual('DV', track.codec)
+                self.assertEqual('Interlaced', track.scan_type)
+                break
+    def test_track_integer_attributes(self):
+        for track in self.mi.tracks:
+            if track.track_type == 'Audio':
+                self.assertTrue(isinstance(track.duration, int))
+                self.assertTrue(isinstance(track.bit_rate, int))
+                self.assertTrue(isinstance(track.sampling_rate, int))
+                break
+    def test_track_other_attributes(self):
+        for track in self.mi.tracks:
+            if track.track_type == 'General':
+                self.assertEqual(5, len(track.other_file_size))
+                self.assertEqual(4, len(track.other_duration))
+                break
+    def test_load_mediainfo_from_string(self):
+        self.assertEqual(4, len(self.mi.tracks))
+    def test_getting_attribute_that_doesnot_exist(self):
+        self.assertTrue(self.mi.tracks[0].does_not_exist is None)
+
+class MediaInfoInvalidXMLTest(unittest.TestCase):
+    def setUp(self):
+        with open(os.path.join(data_dir, 'invalid.xml'), 'r') as f:
+            self.xml_data = f.read()
+    def test_parse_invalid_xml(self):
+        mi = MediaInfo(MediaInfo._parse_xml_data_into_dom(self.xml_data))
+        self.assertEqual(len(mi.tracks), 0)
+
+class MediaInfoLibraryTest(unittest.TestCase):
+    def setUp(self):
+        self.mi = MediaInfo.parse(os.path.join(data_dir, "sample.mp4"))
+    def test_can_parse_true(self):
+        self.assertTrue(MediaInfo.can_parse())
+    def test_track_count(self):
+        self.assertEqual(len(self.mi.tracks), 3)
+    def test_track_types(self):
+        self.assertEqual(self.mi.tracks[1].track_type, "Video")
+        self.assertEqual(self.mi.tracks[2].track_type, "Audio")
+    def test_track_details(self):
+        self.assertEqual(self.mi.tracks[1].codec, "AVC")
+        self.assertEqual(self.mi.tracks[2].codec, "AAC LC")
+        self.assertEqual(self.mi.tracks[1].duration, 958)
+        self.assertEqual(self.mi.tracks[2].duration, 980)
+
+class MediaInfoUnicodeXMLTest(unittest.TestCase):
+    def setUp(self):
+        self.mi = MediaInfo.parse(os.path.join(data_dir, "sample.mkv"))
+    def test_parse_file_with_unicode_tags(self):
+        self.assertEqual(
+            self.mi.tracks[0].title,
+            "Dès Noël où un zéphyr haï me vêt de glaçons "
+            "würmiens je dîne d’exquis rôtis de bœuf au kir à "
+            "l’aÿ d’âge mûr & cætera !"
+        )
+
+class MediaInfoUnicodeFileNameTest(unittest.TestCase):
+    def setUp(self):
+        self.mi = MediaInfo.parse(os.path.join(data_dir, "accentué.txt"))
+    def test_parse_unicode_file(self):
+        self.assertEqual(len(self.mi.tracks), 1)
+
+class MediaInfoURLTest(unittest.TestCase):
+    def setUp(self):
+        self.mi = 
MediaInfo.parse("https://github.com/sbraz/pymediainfo/blob/master/tests/data/sample.mkv?raw=true";)
+    def test_parse_url(self):
+        self.assertEqual(len(self.mi.tracks), 2)
+
+class MediaInfoPathlibTest(unittest.TestCase):
+    def setUp(self):
+        pathlib = pytest.importorskip("pathlib")
+        self.path = pathlib.Path(data_dir) / "sample.mp4"
+    def test_parse_pathlib_path(self):
+        mi = MediaInfo.parse(self.path)
+        self.assertEqual(len(mi.tracks), 3)


Reply via email to