def test_bareGitRepo(self):
        d = tempfile.TemporaryDirectory()
        self._createBareGitRepo(d.name)

        c = Config.fromGitRepo(d.name)
        self.assertTrue("Database" in c)
        self.assertTrue("master" in c)
        self.assertEqual(c["Database"]["Engine"], "sqlite")
        self.assertEqual(c.repoPath, d.name)

        c = Config.fromPath(d.name)
        self.assertTrue("Database" in c)
        self.assertTrue("master" in c)
        self.assertEqual(c["Database"]["Engine"], "sqlite")
        self.assertEqual(c.repoPath, d.name)

        d.cleanup()
    def test_bareGitRepo(self):
        d = tempfile.TemporaryDirectory()
        self._createBareGitRepo(d.name)

        c = Config.fromGitRepo(d.name)
        self.assertTrue('Database' in c)
        self.assertTrue('master' in c)
        self.assertEqual(c['Database']['Engine'], 'sqlite')
        self.assertEqual(c.repoPath, d.name)

        c = Config.fromPath(d.name)
        self.assertTrue('Database' in c)
        self.assertTrue('master' in c)
        self.assertEqual(c['Database']['Engine'], 'sqlite')
        self.assertEqual(c.repoPath, d.name)

        d.cleanup()
Esempio n. 3
0
def gitDhMain(target, action, args, dbBe=None):
    config = Config.fromPath(target)

    if config.repoPath is None:
        raise Exception("Missing RepositoryPath in '%s'" % (target,))

    if dbBe is None and "Database" in config:
        dbBe = DatabaseBackend.getDatabaseBackend(config)

    enabledModules = []

    modules = ModuleLoader().initModuleObjects(config, args, dbBe)
    for module in modules:
        if module.isEnabled(action):
            enabledModules.append(module)

    commitCycle(enabledModules)
Esempio n. 4
0
    def test_filePath(self):
        f = tempfile.NamedTemporaryFile()
        f.write(self.cStr.encode())
        f.flush()
        c = Config.fromFilePath(f.name)

        self.assertTrue("Database" in c)
        self.assertTrue("master" in c)
        self.assertEqual(c["Database"]["Engine"], "sqlite")
        self.assertEqual(c.repoPath, "/var/lib/gitolite/repositories/test.git")

        c = Config.fromPath(f.name)

        self.assertTrue("Database" in c)
        self.assertTrue("master" in c)
        self.assertEqual(c["Database"]["Engine"], "sqlite")
        self.assertEqual(c.repoPath, "/var/lib/gitolite/repositories/test.git")

        f.close()
	def test_filePath(self):
		f = tempfile.NamedTemporaryFile()
		f.write(self.cStr.encode())
		f.flush()
		c = Config.fromFilePath(f.name)

		self.assertTrue('Database' in c)
		self.assertTrue('master' in c)
		self.assertEqual(c['Database']['Engine'], 'sqlite')
		self.assertEqual(c.repoPath, '/var/lib/gitolite/repositories/test.git')

		c = Config.fromPath(f.name)

		self.assertTrue('Database' in c)
		self.assertTrue('master' in c)
		self.assertEqual(c['Database']['Engine'], 'sqlite')
		self.assertEqual(c.repoPath, '/var/lib/gitolite/repositories/test.git')

		f.close()
Esempio n. 6
0
    def test_gitRepo(self):
        path = "/home/git/repositories/test.git"

        isdir = mock.MagicMock(return_value=True)
        git = mock.MagicMock()
        git.return_value = git
        git.getBranches.return_value = ["master", "development", "gitdh"]
        confFile = mock.MagicMock()
        confFile.getFileName.return_value = "gitdh.conf"
        confFile.getFileContent.return_value = self.cStr
        git.getFiles.return_value = [confFile]

        with mock.patch("gitdh.git.Git", new=git):
            c = Config.fromGitRepo(path)
            self.assertTrue("Database" in c)
            self.assertTrue("master" in c)
            self.assertEqual(c["Database"]["Engine"], "sqlite")
            self.assertEqual(c.repoPath, path)

            git.assert_called_once_with(path)
            git.getBranches.assert_called_once_with()
            git.getFiles.assert_called_once_with(branch="gitdh")
            confFile.getFileName.assert_called_once_with()
            confFile.getFileContent.assert_called_once_with()

            git.reset_mock()
            confFile.reset_mock()

            with mock.patch("os.path.isdir", new=isdir):
                c = Config.fromPath(path)
                self.assertTrue("Database" in c)
                self.assertTrue("master" in c)
                self.assertEqual(c["Database"]["Engine"], "sqlite")
                self.assertEqual(c.repoPath, path)

                git.assert_called_once_with(path)
                git.getBranches.assert_called_once_with()
                git.getFiles.assert_called_once_with(branch="gitdh")
                confFile.getFileName.assert_called_once_with()
                confFile.getFileContent.assert_called_once_with()
                isdir.assert_called_once_with(path)
	def test_gitRepo(self):
		path = "/home/git/repositories/test.git"

		isdir = mock.MagicMock(return_value=True)
		git = mock.MagicMock()
		git.return_value = git
		git.getBranches.return_value = ["master", "development", "gitdh"]
		confFile = mock.MagicMock()
		confFile.getFileName.return_value = "gitdh.conf"
		confFile.getFileContent.return_value = self.cStr
		git.getFiles.return_value = [confFile]

		with mock.patch('gitdh.git.Git', new=git):
			c = Config.fromGitRepo(path)
			self.assertTrue('Database' in c)
			self.assertTrue('master' in c)
			self.assertEqual(c['Database']['Engine'], 'sqlite')
			self.assertEqual(c.repoPath, path)

			git.assert_called_once_with(path)
			git.getBranches.assert_called_once_with()
			git.getFiles.assert_called_once_with(branch='gitdh')
			confFile.getFileName.assert_called_once_with()
			confFile.getFileContent.assert_called_once_with()

			git.reset_mock()
			confFile.reset_mock()

			with mock.patch('os.path.isdir', new=isdir):
				c = Config.fromPath(path)
				self.assertTrue('Database' in c)
				self.assertTrue('master' in c)
				self.assertEqual(c['Database']['Engine'], 'sqlite')
				self.assertEqual(c.repoPath, path)

				git.assert_called_once_with(path)
				git.getBranches.assert_called_once_with()
				git.getFiles.assert_called_once_with(branch='gitdh')
				confFile.getFileName.assert_called_once_with()
				confFile.getFileContent.assert_called_once_with()
				isdir.assert_called_once_with(path)
Esempio n. 8
0
def installCron(
    name,
    user=None,
    printOnly=False,
    force=False,
    quiet=False,
    mailto="root",
    unixPath=None,
    interval="*/5 * * * *",
    mode="644",
    *target
):
    "Install a cron job in /etc/conf.d"
    if force and printOnly:
        print("Invalid options: --printOnly and --force both set", file=sys.stderr)
        sys.exit(1)
    if len(target) == 0:
        print("Please provide at least one target, for more info call with -h", file=sys.stderr)
        sys.exit(1)

    if user is None:
        user = pwd.getpwuid(os.getuid())[0]

    fPath = os.path.join("/etc/cron.d", name)
    try:
        for t in target:
            Config.fromPath(t)
        if not printOnly and not os.access(os.path.dirname(fPath), os.W_OK):
            raise Exception("Can't write to '%s'" % (fPath,))
        if not printOnly and os.path.exists(fPath) and not force:
            raise Exception("'%s' already exists, use --force to overwrite" % (fPath,))
    except Exception as e:
        print(e, file=sys.stderr)
        sys.exit(1)

    cmdStr = "git-dh cron"
    for t in target:
        cmdStr += " " + quote(os.path.abspath(t))
    if "VIRTUAL_ENV" in os.environ:
        virtEnvPath = os.path.join(os.environ["VIRTUAL_ENV"], "bin", "activate")
        cmdStr = ". %s; %s" % (quote(virtEnvPath), cmdStr)
        cmdStr = "bash -c %s" % (quote(cmdStr),)
    if unixPath is None:
        unixPath = os.environ.get("PATH", "")
    content = cronContent.format(fPath, unixPath, mailto, interval, user, cmdStr)

    if printOnly:
        yield "# File '%s'" % fPath
        yield content
    else:
        try:
            if not quiet:
                yield "Writing cron job '%s'" % (fPath,)
            with open(fPath, "w") as f:
                f.write(content)
                # Only on UNIX
                # os.fchmod(f, mode)
            os.chmod(fPath, int(mode, 8))
        except (IOError, OSError) as e:
            print(e, file=sys.stderr)
            print("Please check '%s'" % (fPath,), file=sys.stderr)
            sys.exit(1)