From 3a916aa589b422692b8b05f204c34807c40376ee Mon Sep 17 00:00:00 2001 From: Jaisen Mathai Date: Tue, 8 Dec 2015 23:40:01 -0800 Subject: [PATCH] Closes gh-21 Add all tests for FileSystem class and test photo files --- .travis.yml | 6 +- elodie/constants.py | 2 +- elodie/filesystem.py | 3 + elodie/tests/files/plain.jpg | Bin 0 -> 28163 bytes .../tests/files/with-location-and-title.jpg | Bin 0 -> 28381 bytes elodie/tests/files/with-location.jpg | Bin 0 -> 28288 bytes elodie/tests/files/with-title.jpg | Bin 0 -> 28267 bytes elodie/tests/filesystem.py | 192 ++++++++++++++++++ 8 files changed, 201 insertions(+), 2 deletions(-) create mode 100644 elodie/tests/files/plain.jpg create mode 100644 elodie/tests/files/with-location-and-title.jpg create mode 100644 elodie/tests/files/with-location.jpg create mode 100644 elodie/tests/files/with-title.jpg diff --git a/.travis.yml b/.travis.yml index 4c657b5..38e80eb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,8 +5,12 @@ virtualenv: system_site_packages: true before_install: - "sudo apt-get update -qq" - - "sudo apt-get install python-dev python-pip python-pyexiv2 -y" + - "sudo apt-get install python-dev python-pip python-pyexiv2 libimage-exiftool-perl -y" install: - "sudo pip install docopt LatLon nose requests" # command to run tests +# test mapquest key +before_script: + - "mkdir ~/.elodie" + - "sed 's/your-api-key-goes-here/x8wQLqGhW7qK3sFpjYtVTogVtoMK0S8s/g' config.ini-sample > ~/.elodie/config.ini" script: "nosetests elodie/tests/*.py" diff --git a/elodie/constants.py b/elodie/constants.py index c324876..ebb7c49 100644 --- a/elodie/constants.py +++ b/elodie/constants.py @@ -1,6 +1,6 @@ from os import path -debug = False +debug = True application_directory = '{}/.elodie'.format(path.expanduser('~')) hash_db = '{}/hash.json'.format(application_directory) script_directory = path.dirname(path.dirname(path.abspath(__file__))) diff --git a/elodie/filesystem.py b/elodie/filesystem.py index 436edfd..a200a30 100644 --- a/elodie/filesystem.py +++ b/elodie/filesystem.py @@ -43,9 +43,12 @@ class FileSystem: def delete_directory_if_empty(self, directory_path): try: os.rmdir(directory_path) + return True except OSError: pass + return False + """ Recursively get all files which match a path and extension. diff --git a/elodie/tests/files/plain.jpg b/elodie/tests/files/plain.jpg new file mode 100644 index 0000000000000000000000000000000000000000..646160663b5230174e432901c357285246251583 GIT binary patch literal 28163 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 z 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
otrBQ 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 CWE6A& literal 0 HcmV?d00001 diff --git a/elodie/tests/files/with-title.jpg b/elodie/tests/files/with-title.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4e74f6dbe322d0b96f9d36309dd89b623a6d082e GIT binary patch literal 28267 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 literal 0 HcmV?d00001 diff --git a/elodie/tests/filesystem.py b/elodie/tests/filesystem.py index afde9da..a6a98de 100644 --- a/elodie/tests/filesystem.py +++ b/elodie/tests/filesystem.py @@ -3,13 +3,20 @@ import os import sys import random +import re import shutil import string import tempfile +import time sys.path.insert(0, os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))))) from elodie import filesystem +from elodie.media.media import Media +from elodie.media.photo import Photo +from elodie.media.video import Video + +os.environ['TZ'] = 'GMT' filesystem = filesystem.FileSystem() @@ -46,6 +53,191 @@ def test_create_directory_invalid_permissions(): assert status == False +def test_delete_directory_if_empty(): + folder = '%s/%s' % (tempfile.gettempdir(), random_string(10)) + os.makedirs(folder) + + assert os.path.isdir(folder) == True + assert os.path.exists(folder) == True + + filesystem.delete_directory_if_empty(folder) + + assert os.path.isdir(folder) == False + assert os.path.exists(folder) == False + +def test_delete_directory_if_empty_when_not_empty(): + folder = '%s/%s/%s' % (tempfile.gettempdir(), random_string(10), random_string(10)) + os.makedirs(folder) + parent_folder = os.path.dirname(folder) + + assert os.path.isdir(folder) == True + assert os.path.exists(folder) == True + assert os.path.isdir(parent_folder) == True + assert os.path.exists(parent_folder) == True + + filesystem.delete_directory_if_empty(parent_folder) + + assert os.path.isdir(folder) == True + assert os.path.exists(folder) == True + assert os.path.isdir(parent_folder) == True + assert os.path.exists(parent_folder) == True + + shutil.rmtree(parent_folder) + +def test_get_all_files_success(): + folder = populate_folder(5) + files = filesystem.get_all_files(folder) + shutil.rmtree(folder) + + assert len(files) == 5 + + +def test_get_all_files_by_extension(): + folder = populate_folder(5) + + files = filesystem.get_all_files(folder) + assert len(files) == 5 + + files = filesystem.get_all_files(folder, 'jpg') + assert len(files) == 3 + + files = filesystem.get_all_files(folder, 'txt') + assert len(files) == 2 + + files = filesystem.get_all_files(folder, 'gif') + assert len(files) == 0 + + shutil.rmtree(folder) + +def test_get_current_directory(): + assert os.getcwd() == filesystem.get_current_directory() + +def test_get_file_name_plain(): + media = Photo(get_file('plain.jpg')) + file_name = filesystem.get_file_name(media) + + assert file_name == '2015-12-05_00-59-26-plain.jpg' + +def test_get_file_name_with_title(): + media = Photo(get_file('with-title.jpg')) + file_name = filesystem.get_file_name(media) + + assert file_name == '2015-12-05_00-59-26-with-title-some-title.jpg' + +def test_get_folder_name_by_date(): + time_tuple = (2010, 4, 15, 1, 2, 3, 0, 0, 0) + folder_name = filesystem.get_folder_name_by_date(time_tuple) + + assert folder_name == '2010-04-Apr' + + time_tuple = (2010, 9, 15, 1, 2, 3, 0, 0, 0) + folder_name = filesystem.get_folder_name_by_date(time_tuple) + + assert folder_name == '2010-09-Sep' + +def test_get_folder_path_plain(): + media = Photo(get_file('plain.jpg')) + path = filesystem.get_folder_path(media.get_metadata()) + + assert path == '2015-12-Dec/Unknown Location' + +def test_get_folder_path_with_title(): + media = Photo(get_file('with-title.jpg')) + path = filesystem.get_folder_path(media.get_metadata()) + + assert path == '2015-12-Dec/Unknown Location' + +def test_get_folder_path_with_location(): + media = Photo(get_file('with-location.jpg')) + path = filesystem.get_folder_path(media.get_metadata()) + + assert path == '2015-12-Dec/Sunnyvale' + +def test_get_folder_path_with_location_and_title(): + media = Photo(get_file('with-location-and-title.jpg')) + path = filesystem.get_folder_path(media.get_metadata()) + + assert path == '2015-12-Dec/Sunnyvale' + +def test_process_file_plain(): + temporary_folder = tempfile.gettempdir() + folder = '%s/%s/%s' % (temporary_folder, random_string(10), random_string(10)) + os.makedirs(folder) + + origin = '%s/plain.jpg' % folder + shutil.copyfile(get_file('plain.jpg'), origin) + + media = Photo(origin) + destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) + + shutil.rmtree(folder) + shutil.rmtree(os.path.dirname(os.path.dirname(destination))) + + assert '2015-12-Dec/Unknown Location/2015-12-05_00-59-26-plain.jpg' in destination + +def test_process_file_with_title(): + temporary_folder = tempfile.gettempdir() + folder = '%s/%s/%s' % (temporary_folder, random_string(10), random_string(10)) + os.makedirs(folder) + + origin = '%s/plain.jpg' % folder + shutil.copyfile(get_file('with-title.jpg'), origin) + + media = Photo(origin) + destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) + + shutil.rmtree(folder) + shutil.rmtree(os.path.dirname(os.path.dirname(destination))) + + assert '2015-12-Dec/Unknown Location/2015-12-05_00-59-26-plain-some-title.jpg' in destination + +def test_process_file_with_location(): + temporary_folder = tempfile.gettempdir() + folder = '%s/%s/%s' % (temporary_folder, random_string(10), random_string(10)) + os.makedirs(folder) + + origin = '%s/plain.jpg' % folder + shutil.copyfile(get_file('with-location.jpg'), origin) + + media = Photo(origin) + destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) + + shutil.rmtree(folder) + shutil.rmtree(os.path.dirname(os.path.dirname(destination))) + + assert '2015-12-Dec/Sunnyvale/2015-12-05_00-59-26-plain.jpg' in destination + +def test_process_file_with_location_and_title(): + temporary_folder = tempfile.gettempdir() + folder = '%s/%s/%s' % (temporary_folder, random_string(10), random_string(10)) + os.makedirs(folder) + + origin = '%s/plain.jpg' % folder + shutil.copyfile(get_file('with-location-and-title.jpg'), origin) + + media = Photo(origin) + destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) + + shutil.rmtree(folder) + shutil.rmtree(os.path.dirname(os.path.dirname(destination))) + + assert '2015-12-Dec/Sunnyvale/2015-12-05_00-59-26-plain-some-title.jpg' in destination + +def populate_folder(number_of_files): + folder = '%s/%s' % (tempfile.gettempdir(), random_string(10)) + os.makedirs(folder) + + for x in range(0, number_of_files): + ext = 'jpg' if x % 2 == 0 else 'txt' + fname = '%s/%s.%s' % (folder, x, ext) + with open(fname, 'a'): + os.utime(fname, None) + + return folder + +def get_file(name): + current_folder = os.path.dirname(os.path.realpath(__file__)) + return '%s/files/%s' % (current_folder, name) def random_string(length): return ''.join(random.SystemRandom().choice(string.ascii_uppercase + string.digits) for _ in range(length))