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 |