Merge branch 'master' into 3112-report-bug
[arvados.git] / sdk / python / tests / arvados_testutil.py
1 #!/usr/bin/env python
2
3 import errno
4 import httplib
5 import httplib2
6 import os
7 import shutil
8 import tempfile
9 import unittest
10
11 def fake_httplib2_response(code, **headers):
12     headers.update(status=str(code),
13                    reason=httplib.responses.get(code, "Unknown Response"))
14     return httplib2.Response(headers)
15
16 class ArvadosBaseTestCase(unittest.TestCase):
17     # This class provides common utility functions for our tests.
18
19     def setUp(self):
20         self._tempdirs = []
21
22     def tearDown(self):
23         for workdir in self._tempdirs:
24             shutil.rmtree(workdir, ignore_errors=True)
25
26     def make_tmpdir(self):
27         self._tempdirs.append(tempfile.mkdtemp())
28         return self._tempdirs[-1]
29
30     def data_file(self, filename):
31         try:
32             basedir = os.path.dirname(__file__)
33         except NameError:
34             basedir = '.'
35         return open(os.path.join(basedir, 'data', filename))
36
37     def build_directory_tree(self, tree):
38         tree_root = self.make_tmpdir()
39         for leaf in tree:
40             path = os.path.join(tree_root, leaf)
41             try:
42                 os.makedirs(os.path.dirname(path))
43             except OSError as error:
44                 if error.errno != errno.EEXIST:
45                     raise
46             with open(path, 'w') as tmpfile:
47                 tmpfile.write(leaf)
48         return tree_root
49
50     def make_test_file(self, text="test"):
51         testfile = tempfile.NamedTemporaryFile()
52         testfile.write(text)
53         testfile.flush()
54         return testfile