mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-05-18 18:50:32 +02:00
52 lines
1.4 KiB
Python
52 lines
1.4 KiB
Python
import unittest
|
|
import sys
|
|
import os
|
|
|
|
# Ensure filter_plugins directory is on the path
|
|
sys.path.insert(
|
|
0,
|
|
os.path.abspath(os.path.join(os.path.dirname(__file__), '../../filter_plugins'))
|
|
)
|
|
|
|
from safe_join import safe_join
|
|
|
|
class TestSafeJoinFilter(unittest.TestCase):
|
|
def test_join_with_trailing_slashes(self):
|
|
self.assertEqual(
|
|
safe_join('http://example.com/', '/path/to'),
|
|
'http://example.com/path/to'
|
|
)
|
|
|
|
def test_join_without_slashes(self):
|
|
self.assertEqual(
|
|
safe_join('http://example.com', 'path/to'),
|
|
'http://example.com/path/to'
|
|
)
|
|
|
|
def test_base_none(self):
|
|
self.assertEqual(safe_join(None, 'path'), '')
|
|
|
|
def test_base_empty(self):
|
|
self.assertEqual(safe_join('', 'path'), '')
|
|
|
|
def test_tail_empty(self):
|
|
# joining with empty tail should yield base with trailing slash
|
|
self.assertEqual(
|
|
safe_join('http://example.com', ''),
|
|
'http://example.com/'
|
|
)
|
|
|
|
def test_numeric_base(self):
|
|
# numeric base is cast to string
|
|
self.assertEqual(safe_join(123, 'path'), '123/path')
|
|
|
|
def test_exception_in_str(self):
|
|
class Bad:
|
|
def __str__(self):
|
|
raise ValueError('bad')
|
|
# on exception, safe_join returns ''
|
|
self.assertEqual(safe_join(Bad(), 'x'), '')
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|