Revision control
Copy as Markdown
Other Tools
#!/usr/bin/env python3
"""
Unittests for Botan Python scripts. Those tests only need to pass un UNIX-like
operating systems.
Requires Python 3.
(C) 2017 Simon Warta (Kullo GmbH)
Botan is released under the Simplified BSD License (see license.txt)
"""
import os
import sys
import unittest
sys.path.append("../..") # Botan repo root
from install import prepend_destdir # pylint: disable=wrong-import-position
from install import PrependDestdirError # pylint: disable=wrong-import-position
class PrependDestdir(unittest.TestCase):
def test_absolute_destdir(self):
os.environ["DESTDIR"] = "/"
self.assertEqual(prepend_destdir("/home/me"), "/home/me")
self.assertEqual(prepend_destdir("/home/me/"), "/home/me")
self.assertEqual(prepend_destdir("/home/me/../me2"), "/home/me2")
os.environ["DESTDIR"] = "/opt"
self.assertEqual(prepend_destdir("/home/me"), "/opt/home/me")
self.assertEqual(prepend_destdir("/home/me/"), "/opt/home/me")
self.assertEqual(prepend_destdir("/home/me/../me2"), "/opt/home/me2")
def test_relative_destdir(self):
os.environ["DESTDIR"] = "."
self.assertEqual(prepend_destdir("/home/me"), "./home/me")
self.assertEqual(prepend_destdir("/home/me/"), "./home/me")
self.assertEqual(prepend_destdir("/home/me/../me2"), "./home/me2")
os.environ["DESTDIR"] = "bar"
self.assertEqual(prepend_destdir("/home/me"), "bar/home/me")
self.assertEqual(prepend_destdir("/home/me/"), "bar/home/me")
self.assertEqual(prepend_destdir("/home/me/../me2"), "bar/home/me2")
def test_relative(self):
# No destdir set
os.environ["DESTDIR"] = ""
self.assertEqual(prepend_destdir("foo"), "foo")
self.assertEqual(prepend_destdir("../foo"), "../foo")
# Destdir set
os.environ["DESTDIR"] = "/opt"
with self.assertRaises(PrependDestdirError):
prepend_destdir("foo")
with self.assertRaises(PrependDestdirError):
prepend_destdir("../foo")
def test_escaping(self):
os.environ["DESTDIR"] = "/opt"
with self.assertRaises(PrependDestdirError):
prepend_destdir("/foo/../..")
if __name__ == '__main__':
unittest.TestCase.longMessage = True
unittest.main()