You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.7 KiB
56 lines
1.7 KiB
import os
|
|
from io import BytesIO
|
|
from shutil import rmtree
|
|
from tempfile import mkdtemp
|
|
|
|
from pelican.server import ComplexHTTPRequestHandler
|
|
from pelican.tests.support import unittest
|
|
|
|
|
|
class MockRequest:
|
|
def makefile(self, *args, **kwargs):
|
|
return BytesIO(b"")
|
|
|
|
|
|
class MockServer:
|
|
pass
|
|
|
|
|
|
class TestServer(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
self.server = MockServer()
|
|
self.temp_output = mkdtemp(prefix='pelicantests.')
|
|
self.old_cwd = os.getcwd()
|
|
os.chdir(self.temp_output)
|
|
|
|
def tearDown(self):
|
|
os.chdir(self.old_cwd)
|
|
rmtree(self.temp_output)
|
|
|
|
def test_get_path_that_exists(self):
|
|
handler = ComplexHTTPRequestHandler(MockRequest(), ('0.0.0.0', 8888),
|
|
self.server)
|
|
handler.base_path = self.temp_output
|
|
|
|
open(os.path.join(self.temp_output, 'foo.html'), 'a').close()
|
|
os.mkdir(os.path.join(self.temp_output, 'foo'))
|
|
open(os.path.join(self.temp_output, 'foo', 'index.html'), 'a').close()
|
|
|
|
os.mkdir(os.path.join(self.temp_output, 'bar'))
|
|
open(os.path.join(self.temp_output, 'bar', 'index.html'), 'a').close()
|
|
|
|
os.mkdir(os.path.join(self.temp_output, 'baz'))
|
|
|
|
for suffix in ['', '/']:
|
|
path = handler.get_path_that_exists('foo' + suffix)
|
|
self.assertEqual(path, 'foo.html')
|
|
|
|
path = handler.get_path_that_exists('bar' + suffix)
|
|
self.assertEqual(path, 'bar/index.html')
|
|
|
|
path = handler.get_path_that_exists('baz' + suffix)
|
|
self.assertEqual(path, 'baz/')
|
|
|
|
path = handler.get_path_that_exists('quux' + suffix)
|
|
self.assertIsNone(path)
|
|
|