ui: add 'Save *.orig Merge Backups' to the options dialog
[git-cola.git] / t / testutils.py
blobb9b0764c5f065f81666d5d5f93f23710d1dc8eb2
1 #!/usr/bin/env python
2 import os
3 import sys
4 import shutil
5 import unittest
6 from os.path import join
7 from os.path import dirname
8 from os.path import basename
10 TEST_SCRIPT_DIR = dirname(__file__)
11 ROOT_TMP_DIR = join( dirname(TEST_SCRIPT_DIR), 'tmp' )
12 TEST_TMP_DIR = join( ROOT_TMP_DIR, basename(sys.argv[0]) )
14 DEBUG_MODE = os.getenv("DEBUG",'')
16 def setup_dir(dir):
17 newdir = dir
18 parentdir = dirname(newdir)
19 if not os.path.isdir(parentdir):
20 os.mkdir(parentdir)
21 if not os.path.isdir(newdir):
22 os.mkdir(newdir)
24 LAST_IDX = -1
26 def test_dir():
27 global LAST_IDX
28 return '%s-%d.%04d' % (TEST_TMP_DIR, os.getpid(), LAST_IDX)
30 def create_test_dir():
31 global LAST_IDX
32 LAST_IDX += 1
33 newdir = test_dir()
34 setup_dir(newdir)
35 os.chdir(newdir)
36 return newdir
38 def remove_dir(dir):
39 if not DEBUG_MODE:
40 os.chdir(ROOT_TMP_DIR)
41 shutil.rmtree(dir)
43 def remove_test_dir():
44 global LAST_IDX
45 testdir = test_dir()
46 remove_dir(testdir)
47 LAST_IDX -= 1
49 def shell(cmd):
50 result = os.system(cmd)
51 return result
53 def pipe(cmd):
54 p = os.popen(cmd)
55 out = p.read().strip()
56 p.close()
57 return out
59 # All tests that operate on temporary data
60 # derive from testutils.TestCase
61 class TestCase(unittest.TestCase):
62 def setUp(self):
63 create_test_dir()
64 def tearDown(self):
65 remove_test_dir()
66 def shell(self, cmd):
67 result = shell(cmd)
68 self.failIf(result != 0)
69 def testDir(self):
70 return test_dir()