Files
@ d6d3cb5991e2
Branch filter:
Location: kallithea/scripts/validate-minimum-dependency-versions - annotation
d6d3cb5991e2
1.6 KiB
text/plain
tests: stabilize Git committer in test_vcs_operations
Git tries to find out name and email in this order:
1. The author can be set e.g. via the `--author` option of `git commit`.
2. If set, the environment variables GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL,
GIT_COMMITTER_NAME and GIT_COMMITTER_EMAIL are taken.
3. If set, various (global) config files are considered.
4. Unless disabled by the user.useconfigonly config, the names and emails are
inferred from various system sources such as various fields from /etc/passwd,
/etc/mailname and the environment variable EMAIL.
The author can be provided on the command line (1), but that is not possible
for the committer.
It is not an option to modify Git’s configuration files, so the result of (3)
depends on the system the tests run on, which should be avoided. A follow-up
patch will try to instruct Git to not read the system Git configuration files.
(4) is also system-dependent. On some systems, (4) is disabled in the Git
configuration. If enabled, Git will try to infer the committer name from the
gecko field in /etc/passwd, but will fail if it is empty. The previous code
passed the environment variable EMAIL to provide the corresponding email
address.
By passing the names and emails via (2), we can set the author and committer
name and email uniformly and prevent Git from using the system-dependent ways
(3) and (4). This will replace the use of of EMAIL. The environment variables
were introduced in 2005, so there should be no backwards compatibility
problems.
The tests will specify --author explicitly in the cases where the actual name
matters. We just need default values that can be used for committing when we
don't care.
We set it as static defaults to:
Author: test_regular <test_regular@example.com>
Commit: test_admin <test_admin@example.com>
Based on changes and research by Manuel Jacob <me@manueljacob.de>.
Git tries to find out name and email in this order:
1. The author can be set e.g. via the `--author` option of `git commit`.
2. If set, the environment variables GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL,
GIT_COMMITTER_NAME and GIT_COMMITTER_EMAIL are taken.
3. If set, various (global) config files are considered.
4. Unless disabled by the user.useconfigonly config, the names and emails are
inferred from various system sources such as various fields from /etc/passwd,
/etc/mailname and the environment variable EMAIL.
The author can be provided on the command line (1), but that is not possible
for the committer.
It is not an option to modify Git’s configuration files, so the result of (3)
depends on the system the tests run on, which should be avoided. A follow-up
patch will try to instruct Git to not read the system Git configuration files.
(4) is also system-dependent. On some systems, (4) is disabled in the Git
configuration. If enabled, Git will try to infer the committer name from the
gecko field in /etc/passwd, but will fail if it is empty. The previous code
passed the environment variable EMAIL to provide the corresponding email
address.
By passing the names and emails via (2), we can set the author and committer
name and email uniformly and prevent Git from using the system-dependent ways
(3) and (4). This will replace the use of of EMAIL. The environment variables
were introduced in 2005, so there should be no backwards compatibility
problems.
The tests will specify --author explicitly in the cases where the actual name
matters. We just need default values that can be used for committing when we
don't care.
We set it as static defaults to:
Author: test_regular <test_regular@example.com>
Commit: test_admin <test_admin@example.com>
Based on changes and research by Manuel Jacob <me@manueljacob.de>.
ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e 89e9aef9b983 ac6cc1b8a07e 0a9ddb8cd8c1 ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e ac6cc1b8a07e | #!/bin/bash
# Test that installation of all dependencies works fine if versions are set to
# the minimum ones.
set -e
if [ -n "$VIRTUAL_ENV" ]; then
echo "This script will create its own virtualenv - please don't run it inside an existing one." >&2
exit 1
fi
cd "$(hg root)"
venv=build/minimum-dependency-versions-venv
log=build/minimum-dependency-versions.log
min_requirements=build/minimum-dependency-versions-requirements.txt
echo "virtualenv: $venv"
echo "log: $log"
echo "minimum requirements file: $min_requirements"
# clean up previous runs
rm -rf "$venv" "$log"
mkdir -p "$venv"
# Make a light weight parsing of setup.py and dev_requirements.txt,
# finding all >= requirements and dumping into a custom requirements.txt
# while fixating the requirement at the lower bound.
sed -n 's/.*"\(.*\)>=\(.*\)".*/\1==\2/p' setup.py > "$min_requirements"
sed 's/>=/==/p' dev_requirements.txt >> "$min_requirements"
python3 -m venv "$venv"
source "$venv/bin/activate"
pip install --upgrade pip "setuptools<67"
pip install -e . -r "$min_requirements" python-ldap python-pam 2> >(tee "$log" >&2)
# Treat any message on stderr as a problem, for the caller to interpret.
if [ -s "$log" ]; then
echo
echo "Error: pip detected following problems:"
cat "$log"
echo
exit 1
fi
freeze_txt=build/minimum-dependency-versions.txt
pip freeze > $freeze_txt
echo "Installation of minimum packages was successful, providing a set of packages as in $freeze_txt . Now running test suite..."
pytest
echo "Test suite execution was successful."
echo "You can now do additional validation using virtual env '$venv'."
|