Exemplo n.º 1
0
 def test_write_dont_preserve_timestamps(self):
     stat = os.stat(self.pathname)
     atime = round(stat.st_atime)
     mtime = round(stat.st_mtime)
     metadata = ImageMetadata(self.pathname)
     metadata.read()
     metadata.comment = 'Yellow Submarine'
     time.sleep(1.1)
     metadata.write()
     stat2 = os.stat(self.pathname)
     atime2 = round(stat2.st_atime)
     mtime2 = round(stat2.st_mtime)
     # It is not safe to assume that atime will have been modified when the
     # file has been read, as it may depend on mount options (e.g. noatime,
     # relatime).
     # See discussion at http://bugs.launchpad.net/pyexiv2/+bug/624999.
     #self.failIfEqual(atime2, atime)
     self.failIfEqual(mtime2, mtime)
     metadata.comment = 'Yesterday'
     time.sleep(1.1)
     metadata.write(preserve_timestamps=True)
     stat3 = os.stat(self.pathname)
     atime3 = round(stat3.st_atime)
     mtime3 = round(stat3.st_mtime)
     self.failUnlessEqual(atime3, atime2)
     self.failUnlessEqual(mtime3, mtime2)
Exemplo n.º 2
0
 def test_write_dont_preserve_timestamps(self):
     stat = os.stat(self.pathname)
     atime = round(stat.st_atime)
     mtime = round(stat.st_mtime)
     metadata = ImageMetadata(self.pathname)
     metadata.read()
     metadata.comment = 'Yellow Submarine'
     time.sleep(1.1)
     metadata.write()
     stat2 = os.stat(self.pathname)
     atime2 = round(stat2.st_atime)
     mtime2 = round(stat2.st_mtime)
     # It is not safe to assume that atime will have been modified when the
     # file has been read, as it may depend on mount options (e.g. noatime,
     # relatime).
     # See discussion at http://bugs.launchpad.net/pyexiv2/+bug/624999.
     #self.failIfEqual(atime2, atime)
     self.failIfEqual(mtime2, mtime)
     metadata.comment = 'Yesterday'
     time.sleep(1.1)
     metadata.write(preserve_timestamps=True)
     stat3 = os.stat(self.pathname)
     atime3 = round(stat3.st_atime)
     mtime3 = round(stat3.st_mtime)
     self.failUnlessEqual(atime3, atime2)
     self.failUnlessEqual(mtime3, mtime2)
Exemplo n.º 3
0
def jpg_with_tags(scratch_directory):
    """A JPEG file with several tags, used by a bunch of tests.
       This fixture creates the file itself and returns its pathname.
       The file is made read-only for safety.
       N.B. we use NamedTemporaryFile(delete=False) because we want to be
       able to close the initial file descriptor, to avoid tripping
       over Windows' exclusive file access rules.  Cleanup is handled
       by the teardown of the scratch_directory fixture.
    """
    with tempfile.NamedTemporaryFile(dir=scratch_directory,
                                     suffix='.jpg',
                                     delete=False) as fp:
        fp.write(EMPTY_JPG_DATA)
        name = fp.name

    # Write some metadata
    m = ImageMetadata(name)
    m.read()
    m['Exif.Image.Make'] = 'EASTMAN KODAK COMPANY'
    m['Exif.Image.DateTime'] = datetime.datetime(2009, 2, 9, 13, 33, 20)
    m['Iptc.Application2.Caption'] = ['blabla']
    m['Iptc.Application2.DateCreated'] = [datetime.date(2004, 7, 13)]
    m['Xmp.dc.format'] = ('image', 'jpeg')
    m['Xmp.dc.subject'] = ['image', 'test', 'pyexiv2']
    m.comment = 'Hello World!'
    m.write()
    del m

    os.chmod(name, 0o0400)  # r--------
    return name
Exemplo n.º 4
0
 def test_write_preserve_timestamps(self):
     stat = os.stat(self.pathname)
     atime = round(stat.st_atime)
     mtime = round(stat.st_mtime)
     metadata = ImageMetadata(self.pathname)
     metadata.read()
     metadata.comment = 'Yellow Submarine'
     time.sleep(1.1)
     metadata.write(preserve_timestamps=True)
     stat2 = os.stat(self.pathname)
     atime2 = round(stat2.st_atime)
     mtime2 = round(stat2.st_mtime)
     self.failUnlessEqual(atime2, atime)
     self.failUnlessEqual(mtime2, mtime)
Exemplo n.º 5
0
 def test_write_preserve_timestamps(self):
     stat = os.stat(self.pathname)
     atime = round(stat.st_atime)
     mtime = round(stat.st_mtime)
     metadata = ImageMetadata(self.pathname)
     metadata.read()
     metadata.comment = 'Yellow Submarine'
     time.sleep(1.1)
     metadata.write(preserve_timestamps=True)
     stat2 = os.stat(self.pathname)
     atime2 = round(stat2.st_atime)
     mtime2 = round(stat2.st_mtime)
     self.failUnlessEqual(atime2, atime)
     self.failUnlessEqual(mtime2, mtime)
Exemplo n.º 6
0
 def setUp(self):
     # Create an empty image file
     fd, self.pathname = tempfile.mkstemp(suffix='.jpg')
     os.write(fd, EMPTY_JPG_DATA)
     os.close(fd)
     # Write some metadata
     m = ImageMetadata(self.pathname)
     m.read()
     m['Exif.Image.Make'] = 'EASTMAN KODAK COMPANY'
     m['Exif.Image.DateTime'] = datetime.datetime(2009, 2, 9, 13, 33, 20)
     m['Iptc.Application2.Caption'] = ['blabla']
     m['Iptc.Application2.DateCreated'] = [datetime.date(2004, 7, 13)]
     m['Xmp.dc.format'] = ('image', 'jpeg')
     m['Xmp.dc.subject'] = ['image', 'test', 'pyexiv2']
     m.comment = 'Hello World!'
     m.write()
     self.metadata = ImageMetadata(self.pathname)
Exemplo n.º 7
0
 def setUp(self):
     # Create an empty image file
     fd, self.pathname = tempfile.mkstemp(suffix='.jpg')
     os.write(fd, EMPTY_JPG_DATA)
     os.close(fd)
     # Write some metadata
     m = ImageMetadata(self.pathname)
     m.read()
     m['Exif.Image.Make'] = 'EASTMAN KODAK COMPANY'
     m['Exif.Image.DateTime'] = datetime.datetime(2009, 2, 9, 13, 33, 20)
     m['Iptc.Application2.Caption'] = ['blabla']
     m['Iptc.Application2.DateCreated'] = [datetime.date(2004, 7, 13)]
     m['Xmp.dc.format'] = ('image', 'jpeg')
     m['Xmp.dc.subject'] = ['image', 'test', 'pyexiv2']
     m.comment = 'Hello World!'
     m.write()
     self.metadata = ImageMetadata(self.pathname)