diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..6b8710a --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +.git diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4b10b12 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,34 @@ +FROM debian:jessie + +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update -y && \ + apt-get install -y --no-install-recommends ca-certificates libimage-exiftool-perl python2.7 python-pip python-pyexiv2 && \ + pip install --upgrade pip setuptools && \ + apt-get autoremove -y && \ + rm -rf /var/lib/apt/lists/* + +# RUN apk add --update boost-python ca-certificates exiftool exiv2 make python py-pip && \ +# pip install --upgrade pip setuptools && \ +# apk add --virtual build-dependencies build-base boost-dev exiv2-dev python-dev scons wget && \ +# wget -O /tmp/pyexiv2-0.3.2.tar.bz2 https://launchpad.net/pyexiv2/0.3.x/0.3.2/+download/pyexiv2-0.3.2.tar.bz2 && \ +# echo "9c0377ca4cf7d5ceeee994af0b5536ae /tmp/pyexiv2-0.3.2.tar.bz2" | md5sum -c - && \ +# tar -C /tmp -xjf /tmp/pyexiv2-0.3.2.tar.bz2 && \ +# rm -f /tmp/pyexiv2-0.3.2.tar.bz2 && \ +# cd /tmp/pyexiv2-0.3.2 && \ +# scons && \ +# scons install && \ +# cd / && \ +# rm -rf /tmp/* + +COPY requirements.txt /opt/elodie/requirements.txt +COPY docs/requirements.txt /opt/elodie/docs/requirements.txt +COPY elodie/tests/requirements.txt /opt/elodie/elodie/tests/requirements.txt +WORKDIR /opt/elodie +RUN pip install -r docs/requirements.txt && \ + pip install -r elodie/tests/requirements.txt && \ + rm -rf /root/.cache/pip + +COPY . /opt/elodie + +CMD ["/bin/sh"] diff --git a/elodie/tests/filesystem_test.py b/elodie/tests/filesystem_test.py index 78e4be9..6257831 100644 --- a/elodie/tests/filesystem_test.py +++ b/elodie/tests/filesystem_test.py @@ -1,12 +1,13 @@ # Project imports import os -import sys - import re import shutil +import time +import sys from datetime import datetime from datetime import timedelta -import time + +import mock sys.path.insert(0, os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))))) @@ -31,7 +32,7 @@ def test_create_directory_success(): assert status == True assert os.path.isdir(folder) == True assert os.path.exists(folder) == True - + # Clean up shutil.rmtree(folder) @@ -50,9 +51,15 @@ def test_create_directory_recursive_success(): shutil.rmtree(folder) -def test_create_directory_invalid_permissions(): +@mock.patch('elodie.filesystem.os.makedirs') +def test_create_directory_invalid_permissions(mock_makedirs): if os.name == 'nt': raise SkipTest("It isn't implemented on Windows") + + # Mock the case where makedirs raises an OSError because the user does + # not have permission to create the given directory. + mock_makedirs.side_effect = OSError() + filesystem = FileSystem() status = filesystem.create_directory('/apathwhichdoesnotexist/afolderwhichdoesnotexist') diff --git a/elodie/tests/requirements.txt b/elodie/tests/requirements.txt index 0964c1c..0e75cd6 100644 --- a/elodie/tests/requirements.txt +++ b/elodie/tests/requirements.txt @@ -1,3 +1,4 @@ -r ../../requirements.txt +flake8>=2.2.5,<3.0 mock>=1.3.0,<2.0 nose>=1.3.7,<2.0