def exercise_retrieve_unless_exists(): import urllib filehandle, filename = tempfile.mkstemp(prefix='kings_of_france') # we will need to pass filename to functions which will open it # on Windows this causes a permission exception os.close(filehandle) with open(filename, 'w') as f: f.write( 'Henri IV, Louis XIII, Louis XIV, Louis XV, Louis XVI, Louis XVIII') digestname = os.path.join(os.path.dirname(f.name), 'digests.txt') with open(digestname, 'w') as f: f.writelines([ ('%s %s\n') % (os.path.basename(filename), utils.md5_hexdigest(filename)), 'something_else yyyyyyy', ]) os.chmod(digestname, os.stat(digestname).st_mode | stat.S_IWGRP | stat.S_IWOTH) d = tempfile.mkdtemp() targetname = os.path.join(d, 'target') try: os.remove(targetname) except Exception: pass url = 'file:' + urllib.pathname2url(filename) assert (utils.retrieve_unless_exists(url=url, filename=targetname) == "Downloaded") with open(filename) as source, open(targetname) as target: assert source.read() == target.read() assert (utils.retrieve_unless_exists(url=url, filename=targetname) == "Cached") with open(filename) as source, open(targetname) as target: assert source.read() == target.read()