dulwich.tests.compat.utils module

Utilities for interacting with cgit.

class dulwich.tests.compat.utils.CompatTestCase(methodName='runTest')

Bases: dulwich.tests.TestCase

Test case that requires git for compatibility checks.

Subclasses can change the git version required by overriding min_git_version.

Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name.

assertObjectStoreEqual(store1, store2)
assertReposEqual(repo1, repo2)
assertReposNotEqual(repo1, repo2)
import_repo(name)

Import a repo from a fast-export file in a temporary directory.

Parameters:name – The name of the repository export file, relative to dulwich/tests/data/repos.
Returns:An initialized Repo object that lives in a temporary directory.
min_git_version = (1, 5, 0)
setUp()

Hook method for setting up the test fixture before exercising it.

dulwich.tests.compat.utils.check_for_daemon(limit=10, delay=0.1, timeout=0.1, port=9418)

Check for a running TCP daemon.

Defaults to checking 10 times with a delay of 0.1 sec between tries.

Parameters:
  • limit – Number of attempts before deciding no daemon is running.
  • delay – Delay between connection attempts.
  • timeout – Socket timeout for connection attempts.
  • port – Port on which we expect the daemon to appear.
Returns:

A boolean, true if a daemon is running on the specified port, false if not.

dulwich.tests.compat.utils.git_version(git_path='git')

Attempt to determine the version of git currently installed.

Parameters:git_path – Path to the git executable; defaults to the version in the system path.
Returns:A tuple of ints of the form (major, minor, point, sub-point), or None if no git installation was found.
dulwich.tests.compat.utils.import_repo_to_dir(name)

Import a repo from a fast-export file in a temporary directory.

These are used rather than binary repos for compat tests because they are more compact and human-editable, and we already depend on git.

Parameters:name – The name of the repository export file, relative to dulwich/tests/data/repos.
Returns:The path to the imported repository.
dulwich.tests.compat.utils.require_git_version(required_version, git_path='git')

Require git version >= version, or skip the calling test.

Parameters:
  • required_version – A tuple of ints of the form (major, minor, point, sub-point); ommitted components default to 0.
  • git_path – Path to the git executable; defaults to the version in the system path.
Raises:
  • ValueError – if the required version tuple has too many parts.
  • SkipTest – if no suitable git version was found at the given path.
dulwich.tests.compat.utils.run_git(args, git_path='git', input=None, capture_stdout=False, **popen_kwargs)

Run a git command.

Input is piped from the input parameter and output is sent to the standard streams, unless capture_stdout is set.

Parameters:
  • args – A list of args to the git command.
  • git_path – Path to to the git executable.
  • input – Input data to be sent to stdin.
  • capture_stdout – Whether to capture and return stdout.
  • popen_kwargs – Additional kwargs for subprocess.Popen; stdin/stdout args are ignored.
Returns:

A tuple of (returncode, stdout contents). If capture_stdout is False, None will be returned as stdout contents.

Raises:

OSError – if the git executable was not found.

dulwich.tests.compat.utils.run_git_or_fail(args, git_path='git', input=None, **popen_kwargs)

Run a git command, capture stdout/stderr, and fail if git fails.