Skip to content
Permalink
Browse files

Make application directory where data files are stored configurable #6 (

  • Loading branch information...
jmathai committed Apr 1, 2019
1 parent 9ddb094 commit 7fc5b5ffe0a127f899345ce1a857f0d84bb04f54
Showing with 77 additions and 3 deletions.
  1. +1 −1 Readme.md
  2. +8 −2 elodie/constants.py
  3. +68 −0 elodie/tests/constants_test.py
@@ -170,7 +170,7 @@ Usage: elodie.py verify

OK, so what if you don't like the folders being named `2015-07-Jul/Mountain View`? No problem!

You can add a custom folder structure by editing your `config.ini` file (which should be placed under `~/.elodie/config.ini`).
You can add a custom folder structure by editing your `config.ini` file (which should be placed under `~/.elodie/config.ini`). If you'd like to use a different folder for your configuration file then set an environment variable named `ELODIE_APPLICATION_DIRECTORY` with the fully qualified directory path.

#### Custom folder examples

@@ -2,14 +2,20 @@
Settings used by Elodie.
"""

from os import path
from os import environ, path
from sys import version_info

#: If True, debug messages will be printed.
debug = False

#: Directory in which to store Elodie settings.
application_directory = '{}/.elodie'.format(path.expanduser('~'))
if (
'ELODIE_APPLICATION_DIRECTORY' in environ and
path.isdir(environ['ELODIE_APPLICATION_DIRECTORY'])
):
application_directory = environ['ELODIE_APPLICATION_DIRECTORY']
else:
application_directory = '{}/.elodie'.format(path.expanduser('~'))

#: File in which to store details about media Elodie has seen.
hash_db = '{}/hash.json'.format(application_directory)
@@ -0,0 +1,68 @@
from __future__ import absolute_import
# Project imports

import os
import sys
import unittest

try:
reload # Python 2.7
except NameError:
try:
from importlib import reload # Python 3.4+
except ImportError:
from imp import reload # Python 3.0 - 3.3

from mock import patch

sys.path.insert(0, os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))))

from elodie import constants

BASE_PATH = os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))

def test_debug():
# This seems pointless but on Travis we explicitly modify the file to be True
assert constants.debug == constants.debug, constants.debug

def test_application_directory_default():
reload(constants)
expected_path = '{}/.elodie'.format(os.path.expanduser('~'))
assert constants.application_directory == expected_path, constants.application_directory

def test_application_directory_override_invalid():
os.environ['ELODIE_APPLICATION_DIRECTORY'] = '/foo/bar'
reload(constants)
expected_path = '{}/.elodie'.format(os.path.expanduser('~'))
assert constants.application_directory == expected_path, constants.application_directory

def test_application_directory_override_valid():
cwd = os.getcwd()
os.environ['ELODIE_APPLICATION_DIRECTORY'] = cwd
reload(constants)

assert constants.application_directory == cwd, constants.application_directory
assert cwd in constants.hash_db, constants.hash_db

# must come after test_application_directory_override_valid due to env var reset
def test_hash_db():
os.environ['ELODIE_APPLICATION_DIRECTORY'] = ''
reload(constants)
assert constants.hash_db == '{}/hash.json'.format(constants.application_directory), constants.hash_db

def test_location_db():
assert constants.location_db == '{}/location.json'.format(constants.application_directory), constants.location_db

def test_script_directory():
path = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
assert path == constants.script_directory, constants.script_directory

def test_exiftool_config():
path = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
assert '{}/configs/ExifTool_config'.format(path) == constants.exiftool_config, constants.exiftool_config

def test_accepted_language():
assert constants.accepted_language == 'en', constants.accepted_language

def test_python_version():
assert constants.python_version == sys.version_info.major, constants.python_version

0 comments on commit 7fc5b5f

Please sign in to comment.
You can’t perform that action at this time.