Benjamin Poirier a6d98d
#!/usr/bin/python3
Benjamin Poirier a6d98d
# -*- coding: utf-8 -*-
Benjamin Poirier a6d98d
Benjamin Poirier a6d98d
import os.path
Benjamin Poirier a6d98d
import shutil
Benjamin Poirier a6d98d
import subprocess
Benjamin Poirier a6d98d
import tempfile
Benjamin Poirier a6d98d
import unittest
Benjamin Poirier a6d98d
Benjamin Poirier a6d98d
import lib
Benjamin Poirier a6d98d
Benjamin Poirier a6d98d
Benjamin Poirier a6d98d
class TestLinuxGit(unittest.TestCase):
Benjamin Poirier a6d98d
    def setUp(self):
Benjamin Poirier a6d98d
        self.tmpdir = tempfile.mkdtemp(prefix="ks_linux_git")
Benjamin Poirier a6d98d
        self.lg_path = os.path.join(lib.libdir(), "../linux_git.sh")
Benjamin Poirier a6d98d
Benjamin Poirier a6d98d
Benjamin Poirier a6d98d
    def tearDown(self):
Benjamin Poirier a6d98d
        shutil.rmtree(self.tmpdir)
Benjamin Poirier a6d98d
Benjamin Poirier a6d98d
Benjamin Poirier 9ce16e
    def run_one(self, *, bare, var, output):
Benjamin Poirier a6d98d
        args = ["git", "init", "--quiet"]
Benjamin Poirier a6d98d
        if bare:
Benjamin Poirier a6d98d
            args.append("--bare")
Benjamin Poirier a6d98d
        args.append(self.tmpdir)
Benjamin Poirier a6d98d
Benjamin Poirier a6d98d
        subprocess.check_call(args, env={})
Benjamin Poirier a6d98d
Benjamin Poirier a6d98d
        retval = subprocess.check_output((self.lg_path,),
Benjamin Poirier a6d98d
                                         env={"LINUX_GIT" : var})
Benjamin Poirier a6d98d
        self.assertEqual(output, retval.decode())
Benjamin Poirier a6d98d
Benjamin Poirier a6d98d
Benjamin Poirier a6d98d
    def test_bare(self):
Benjamin Poirier 9ce16e
        self.run_one(bare=True, var=self.tmpdir, output=self.tmpdir + "\n")
Benjamin Poirier a6d98d
Benjamin Poirier a6d98d
Benjamin Poirier a6d98d
    def test_nonbare(self):
Benjamin Poirier 9ce16e
        self.run_one(bare=False, var=self.tmpdir,
Benjamin Poirier 9ce16e
                     output=os.path.join(self.tmpdir, ".git") + "\n")
Benjamin Poirier 9ce16e
Benjamin Poirier 9ce16e
Benjamin Poirier 9ce16e
    def test_nonbare_git(self):
Benjamin Poirier 9ce16e
        self.run_one(bare=False, var=os.path.join(self.tmpdir, ".git"),
Benjamin Poirier 9ce16e
                     output=os.path.join(self.tmpdir, ".git") + "\n")
Benjamin Poirier a6d98d
Benjamin Poirier a6d98d
Benjamin Poirier a6d98d
if __name__ == '__main__':
Benjamin Poirier a6d98d
    # Run a single testcase
Benjamin Poirier a6d98d
    suite = unittest.TestLoader().loadTestsFromTestCase(TestLinuxGit)
Benjamin Poirier a6d98d
    unittest.TextTestRunner(verbosity=2).run(suite)