| Index: tests/test_generation_exceptional_cases.py | 
| diff --git a/tests/test_generation_exceptional_cases.py b/tests/test_generation_exceptional_cases.py | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..35706590410c524a7bb01bc1369df96d156ea2b6 | 
| --- /dev/null | 
| +++ b/tests/test_generation_exceptional_cases.py | 
| @@ -0,0 +1,74 @@ | 
| +# This file is part of the Adblock Plus web scripts, | 
| +# Copyright (C) 2006-present eyeo GmbH | 
| +# | 
| +# Adblock Plus is free software: you can redistribute it and/or modify | 
| +# it under the terms of the GNU General Public License version 3 as | 
| +# published by the Free Software Foundation. | 
| +# | 
| +# Adblock Plus is distributed in the hope that it will be useful, | 
| +# but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
| +# GNU General Public License for more details. | 
| +# | 
| +# You should have received a copy of the GNU General Public License | 
| +# along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 
| + | 
| +import os | 
| + | 
| +import pytest | 
| + | 
| +from cms.bin.generate_static_pages import generate_pages | 
| + | 
| + | 
| +@pytest.fixture | 
| +def target_dir_with_file(tmpdir): | 
| +    target_dir = tmpdir.mkdir('out_file').strpath | 
| +    os.mkdir(os.path.join(target_dir, 'en')) | 
| + | 
| +    with open(os.path.join(target_dir, 'en', 'foo'), 'w') as f: | 
| +        f.write('test\n') | 
| + | 
| +    yield target_dir | 
| + | 
| + | 
| +@pytest.fixture | 
| +def target_dir_with_dir(tmpdir): | 
| +    target_dir = tmpdir.mkdir('out_dir').strpath | 
| +    os.makedirs(os.path.join(target_dir, 'en', 'translate')) | 
| + | 
| +    yield target_dir | 
| + | 
| + | 
| +@pytest.fixture | 
| +def target_dir_with_fifo(tmpdir): | 
| +    target_dir = tmpdir.mkdir('out_dir').strpath | 
| +    os.mkdir(os.path.join(target_dir, 'en')) | 
| +    os.mkfifo(os.path.join(target_dir, 'en', 'translate')) | 
| + | 
| +    yield target_dir | 
| + | 
| + | 
| +def test_generate_dir_instead_of_file(temp_site, target_dir_with_file): | 
| +    """Case where a file from previous version becomes a directory.""" | 
| +    generate_pages(str(temp_site), str(target_dir_with_file)) | 
| + | 
| +    assert os.path.isdir(os.path.join(target_dir_with_file, 'en', 'foo')) | 
| + | 
| + | 
| +def test_generate_file_instead_of_dir(temp_site, target_dir_with_dir): | 
| +    """Case where a directory from previous version becomes a file.""" | 
| +    generate_pages(str(temp_site), str(target_dir_with_dir)) | 
| + | 
| +    assert os.path.isfile(os.path.join(target_dir_with_dir, 'en', 'translate')) | 
| + | 
| + | 
| +@pytest.mark.script_launch_mode('subprocess') | 
| +def test_generate_fifo_instead_of_file(temp_site, target_dir_with_fifo, | 
| +                                       script_runner): | 
| +    cmd = ['python', '-m', 'cms.bin.generate_static_pages', str(temp_site), | 
| +           str(target_dir_with_fifo)] | 
| + | 
| +    ret = script_runner.run(*cmd) | 
| + | 
| +    assert not ret.success | 
| +    assert 'It is neither a file, nor a directory!' in ret.stderr | 
|  |