Files
@ 50b376bcdcda
Branch filter:
Location: kallithea/scripts/dbmigrate-test - annotation
50b376bcdcda
3.5 KiB
text/plain
setup: bump py.test version
Note: latest pytest versions has an undeclared dependency / incompatibility
with pytest-benchmark, which thus has to be bumped at the same time:
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR> File "data/env/lib/python2.7/site-packages/_pytest/main.py", line 202, in wrap_session
INTERNALERROR> config._do_configure()
INTERNALERROR> File "data/env/lib/python2.7/site-packages/_pytest/config/__init__.py", line 671, in _do_configure
INTERNALERROR> self.hook.pytest_configure.call_historic(kwargs=dict(config=self))
INTERNALERROR> File "data/env/lib/python2.7/site-packages/pluggy/hooks.py", line 311, in call_historic
INTERNALERROR> res = self._hookexec(self, self.get_hookimpls(), kwargs)
INTERNALERROR> File "data/env/lib/python2.7/site-packages/pluggy/manager.py", line 87, in _hookexec
INTERNALERROR> return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR> File "data/env/lib/python2.7/site-packages/pluggy/manager.py", line 81, in <lambda>
INTERNALERROR> firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
INTERNALERROR> File "data/env/lib/python2.7/site-packages/pluggy/callers.py", line 208, in _multicall
INTERNALERROR> return outcome.get_result()
INTERNALERROR> File "data/env/lib/python2.7/site-packages/pluggy/callers.py", line 81, in get_result
INTERNALERROR> _reraise(*ex) # noqa
INTERNALERROR> File "data/env/lib/python2.7/site-packages/pluggy/callers.py", line 187, in _multicall
INTERNALERROR> res = hook_impl.function(*args)
INTERNALERROR> File "data/env/lib/python2.7/site-packages/pytest_benchmark/plugin.py", line 427, in pytest_configure
INTERNALERROR> bs = config._benchmarksession = BenchmarkSession(config)
INTERNALERROR> File "data/env/lib/python2.7/site-packages/pytest_benchmark/session.py", line 31, in __init__
INTERNALERROR> self.logger = Logger(self.verbose, config)
INTERNALERROR> File "data/env/lib/python2.7/site-packages/pytest_benchmark/logger.py", line 15, in __init__
INTERNALERROR> self.pytest_warn = config.warn
INTERNALERROR> AttributeError: 'Config' object has no attribute 'warn'
The new py.test will show deprecation warnings from other libraries and how we use them:
kallithea/tests/__init__.py:28
kallithea/tests/__init__.py:28: PytestAssertRewriteWarning: Module already imported so cannot be rewritten: kallithea.tests
pytest.register_assert_rewrite('kallithea.tests')
data/env/lib/python2.7/site-packages/pkg_resources/__init__.py:1145
kallithea/tests/api/test_api_git.py::TestGitApi::test_api_wrong_key
data/env/lib/python2.7/site-packages/pkg_resources/__init__.py:1145: DeprecationWarning: Use of .. or absolute path in a resource path is not allowed and will raise exceptions in a future release.
self, resource_name
<string>:2
<string>:2: SADeprecationWarning: Mapper.order_by is deprecated.Use Query.order_by() in order to affect the ordering of ORM result sets.
data/env/lib/python2.7/site-packages/tg/configuration/app_config.py:473
data/env/lib/python2.7/site-packages/tg/configuration/app_config.py:473: DeprecationWarning: direct usage of error tracing options has been deprecated, please specify them as trace_errors.option_name instad of directly setting option_name. EXAMPLE: trace_errors.error_email
"setting option_name. EXAMPLE: trace_errors.error_email", DeprecationWarning)
data/env/lib/python2.7/site-packages/tg/wsgiapp.py:68
data/env/lib/python2.7/site-packages/tg/wsgiapp.py:68: DeprecationWarning: Session options should start with session. instead of baker.session.
app_wrapper = wrapper(self.wrapped_dispatch, self.config)
...
kallithea/model/validators.py:279: DeprecationWarning: validate_python is deprecated; use _validate_python instead
class _validator(formencode.validators.FancyValidator):
...
kallithea/model/validators.py:793: DeprecationWarning: _to_python is deprecated; use _convert_to_python instead
class _validator(formencode.validators.FancyValidator):
...
kallithea/tests/other/test_doctest.py::test_doctests[kallithea.lib.markup_renderer]
data/env/lib/python2.7/site-packages/markdown/__init__.py:259: DeprecationWarning: Using short names for Markdown's builtin extensions is deprecated. Use the full path to the extension with Python's dot notation (eg: "markdown.extensions.codehilite" instead of "codehilite"). The current behavior will raise an error in version 2.7. See the Release Notes for Python-Markdown version 2.6 for more info.
DeprecationWarning)
kallithea/tests/other/test_doctest.py::test_doctests[kallithea.lib.markup_renderer]
data/env/lib/python2.7/site-packages/markdown/__init__.py:259: DeprecationWarning: Using short names for Markdown's builtin extensions is deprecated. Use the full path to the extension with Python's dot notation (eg: "markdown.extensions.extra" instead of "extra"). The current behavior will raise an error in version 2.7. See the Release Notes for Python-Markdown version 2.6 for more info.
DeprecationWarning)
Note: latest pytest versions has an undeclared dependency / incompatibility
with pytest-benchmark, which thus has to be bumped at the same time:
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR> File "data/env/lib/python2.7/site-packages/_pytest/main.py", line 202, in wrap_session
INTERNALERROR> config._do_configure()
INTERNALERROR> File "data/env/lib/python2.7/site-packages/_pytest/config/__init__.py", line 671, in _do_configure
INTERNALERROR> self.hook.pytest_configure.call_historic(kwargs=dict(config=self))
INTERNALERROR> File "data/env/lib/python2.7/site-packages/pluggy/hooks.py", line 311, in call_historic
INTERNALERROR> res = self._hookexec(self, self.get_hookimpls(), kwargs)
INTERNALERROR> File "data/env/lib/python2.7/site-packages/pluggy/manager.py", line 87, in _hookexec
INTERNALERROR> return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR> File "data/env/lib/python2.7/site-packages/pluggy/manager.py", line 81, in <lambda>
INTERNALERROR> firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
INTERNALERROR> File "data/env/lib/python2.7/site-packages/pluggy/callers.py", line 208, in _multicall
INTERNALERROR> return outcome.get_result()
INTERNALERROR> File "data/env/lib/python2.7/site-packages/pluggy/callers.py", line 81, in get_result
INTERNALERROR> _reraise(*ex) # noqa
INTERNALERROR> File "data/env/lib/python2.7/site-packages/pluggy/callers.py", line 187, in _multicall
INTERNALERROR> res = hook_impl.function(*args)
INTERNALERROR> File "data/env/lib/python2.7/site-packages/pytest_benchmark/plugin.py", line 427, in pytest_configure
INTERNALERROR> bs = config._benchmarksession = BenchmarkSession(config)
INTERNALERROR> File "data/env/lib/python2.7/site-packages/pytest_benchmark/session.py", line 31, in __init__
INTERNALERROR> self.logger = Logger(self.verbose, config)
INTERNALERROR> File "data/env/lib/python2.7/site-packages/pytest_benchmark/logger.py", line 15, in __init__
INTERNALERROR> self.pytest_warn = config.warn
INTERNALERROR> AttributeError: 'Config' object has no attribute 'warn'
The new py.test will show deprecation warnings from other libraries and how we use them:
kallithea/tests/__init__.py:28
kallithea/tests/__init__.py:28: PytestAssertRewriteWarning: Module already imported so cannot be rewritten: kallithea.tests
pytest.register_assert_rewrite('kallithea.tests')
data/env/lib/python2.7/site-packages/pkg_resources/__init__.py:1145
kallithea/tests/api/test_api_git.py::TestGitApi::test_api_wrong_key
data/env/lib/python2.7/site-packages/pkg_resources/__init__.py:1145: DeprecationWarning: Use of .. or absolute path in a resource path is not allowed and will raise exceptions in a future release.
self, resource_name
<string>:2
<string>:2: SADeprecationWarning: Mapper.order_by is deprecated.Use Query.order_by() in order to affect the ordering of ORM result sets.
data/env/lib/python2.7/site-packages/tg/configuration/app_config.py:473
data/env/lib/python2.7/site-packages/tg/configuration/app_config.py:473: DeprecationWarning: direct usage of error tracing options has been deprecated, please specify them as trace_errors.option_name instad of directly setting option_name. EXAMPLE: trace_errors.error_email
"setting option_name. EXAMPLE: trace_errors.error_email", DeprecationWarning)
data/env/lib/python2.7/site-packages/tg/wsgiapp.py:68
data/env/lib/python2.7/site-packages/tg/wsgiapp.py:68: DeprecationWarning: Session options should start with session. instead of baker.session.
app_wrapper = wrapper(self.wrapped_dispatch, self.config)
...
kallithea/model/validators.py:279: DeprecationWarning: validate_python is deprecated; use _validate_python instead
class _validator(formencode.validators.FancyValidator):
...
kallithea/model/validators.py:793: DeprecationWarning: _to_python is deprecated; use _convert_to_python instead
class _validator(formencode.validators.FancyValidator):
...
kallithea/tests/other/test_doctest.py::test_doctests[kallithea.lib.markup_renderer]
data/env/lib/python2.7/site-packages/markdown/__init__.py:259: DeprecationWarning: Using short names for Markdown's builtin extensions is deprecated. Use the full path to the extension with Python's dot notation (eg: "markdown.extensions.codehilite" instead of "codehilite"). The current behavior will raise an error in version 2.7. See the Release Notes for Python-Markdown version 2.6 for more info.
DeprecationWarning)
kallithea/tests/other/test_doctest.py::test_doctests[kallithea.lib.markup_renderer]
data/env/lib/python2.7/site-packages/markdown/__init__.py:259: DeprecationWarning: Using short names for Markdown's builtin extensions is deprecated. Use the full path to the extension with Python's dot notation (eg: "markdown.extensions.extra" instead of "extra"). The current behavior will raise an error in version 2.7. See the Release Notes for Python-Markdown version 2.6 for more info.
DeprecationWarning)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 | 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b f973b866fffc 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 3158cf0dafb7 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b 51b1af58589b | #!/bin/sh -e
if [ $# -lt 2 ] || [ $# -gt 3 ]; then
cat >&2 <<EOD
usage: $0 CONFIG_FILE FROM_REV [TO_REV]
Runs a database migration from FROM_REV to TO_REV (default: current
working directory parent), using the specified CONFIG_FILE (.ini file).
Test is run using a clean Kallithea install, in a temporary virtual
environment. FROM_REV and (optional) TO_REV should be Mercurial revision
identifiers (e.g. changeset hash or a version number tag). The working
directory is not touched, but the database referenced in the config file
will be (re)created.
Only SQLite is available out of the box; for MySQL or PostgreSQL, set
the EXTRA environment variable to the required package(s), and it'll
be installed in the virtual environment. (E.g. EXTRA=MySQL-python or
EXTRA=psycopg2.)
The temporary directory is not removed, allowing follow-up examination
of the upgrade results. It is, however, created in /tmp by default,
which many Linux distributions automatically clean at regular intervals.
EOD
exit 1
fi
config_file=$(readlink -f "$1")
from_rev=$2
to_rev=$3
source_repo=$(dirname "$(dirname "$(readlink -f "$0")")")
announce() {
echo
echo "$1"
echo
}
quiet_if_ok() (
local output
local st
set +e
output=$("$@" < /dev/null 2>&1)
st=$?
if [ $st -ne 0 ]; then
echo "$output" >&2
echo "Command $@ returned exit status $st." >&2
exit 1
fi
)
HG() {
"${HG:-hg}" --repository "$source_repo" "$@"
}
# If upgrading to "current revision", warn if working directory is dirty.
if [ ! "$to_rev" ] && [ "$(HG status -mard)" ]; then
announce "Warning: Uncommitted changes in working directory will be ignored!"
fi
from_rev_hash=$(HG id --id --rev "${from_rev:-.}")
to_rev_hash=$(HG id --id --rev "${to_rev:-.}")
temp=$(readlink -f "$(mktemp --tmpdir -d 'dbmigrate-test.XXXXXX')")
cat <<EOD
Config file: $config_file
EOD
sed -n -e 's/^sqlalchemy\.url *= */Database URL: /p' "$config_file"
cat <<EOD
Working dir: $temp
Repository: $source_repo
Upgrade from: $from_rev_hash (${from_rev:-current})
Upgrade to: $to_rev_hash (${to_rev:-current})
Extra packages: ${EXTRA:-(none)}
EOD
mkdir "$temp/repos" # empty
# Enable caching for old pip versions (this will cache the pip upgrade)
# Newer pip versions cache automatically, and don't use this variable.
if [ ! "$PIP_DOWNLOAD_CACHE" ]; then
export PIP_DOWNLOAD_CACHE=$HOME/.cache/pip/legacy
fi
install_kallithea() {
local prefix=$1
local rev=$2
announce "Installing Kallithea $rev in $prefix..."
"${VIRTUALENV:-virtualenv}" --quiet "$prefix-env"
HG archive --rev "$rev" "$prefix"
(
cd "$prefix"
. "$prefix-env/bin/activate"
pip install --quiet --upgrade pip setuptools mercurial $EXTRA
pip install --quiet -e .
)
}
install_kallithea "$temp/from" "$from_rev_hash"
(
cd "$temp/from"
. "$temp/from-env/bin/activate"
announce "Initializing database..."
quiet_if_ok kallithea-cli db-create -c "$config_file" --repos="$temp/repos" --user=doe --email=doe@example.com --password=123456 --no-public-access --force-yes
alembic -c "$config_file" current -v
)
install_kallithea "$temp/to" "$to_rev_hash"
(
cd "$temp/to"
. "$temp/to-env/bin/activate"
announce "Commencing database upgrade from shown Alembic revision to head..."
alembic -c "$config_file" current -v
alembic -c "$config_file" upgrade head
announce "Upgrade complete, now at the shown Alembic revision:"
alembic -c "$config_file" current -v
)
|