# HG changeset patch # User Mads Kiilerich # Date 2017-09-14 00:08:07 # Node ID 163d1c4f2b8bedee5f63c445561710be316bbef4 # Parent 94f6b23e52d0151603cd560ff4731c84f3e63ab2 tests: generate test.ini directly from template Get rid of the committed generated test.ini diff --git a/MANIFEST.in b/MANIFEST.in --- a/MANIFEST.in +++ b/MANIFEST.in @@ -24,6 +24,5 @@ recursive-include kallithea/tests/fixtur recursive-include kallithea/tests/scripts * include kallithea/tests/models/test_dump_html_mails.ref.html include kallithea/tests/performance/test_vcs.py -include kallithea/tests/test.ini include kallithea/tests/vcs/aconfig recursive-include scripts * diff --git a/kallithea/tests/conftest.py b/kallithea/tests/conftest.py --- a/kallithea/tests/conftest.py +++ b/kallithea/tests/conftest.py @@ -12,6 +12,7 @@ import pytest from pytest_localserver.http import WSGIServer from kallithea.controllers.root import RootController +from kallithea.lib import inifile from kallithea.lib.utils import repo2db_mapper from kallithea.model.user import UserModel from kallithea.model.meta import Session @@ -36,18 +37,32 @@ def pytest_configure(): # Disable INFO logging of test database creation, restore with NOTSET logging.disable(logging.INFO) - with open(os.path.join(path, 'kallithea/tests/test.ini'), 'r') as input_file: - test_ini = input_file.read() - + ini_settings = { + '[server:main]': { + 'port': '4999', + }, + '[app:main]': { + 'app_instance_uuid': 'test', + 'show_revision_number': 'true', + 'beaker.cache.sql_cache_short.expire': '1', + 'beaker.session.secret': '{74e0cd75-b339-478b-b129-07dd221def1f}', + }, + '[handler_console]': { + 'formatter': 'color_formatter', + }, + # The 'handler_console_sql' block is very similar to the one in + # development.ini, but without the explicit 'level=DEBUG' setting: + # it causes duplicate sqlalchemy debug logs, one through + # handler_console_sql and another through another path. + '[handler_console_sql]': { + 'formatter': 'color_formatter_sql', + }, + } if os.environ.get('TEST_DB'): - test_ini = re.sub('^\s*sqlalchemy.url\s*=.*$', - 'sqlalchemy.url = %s' % os.environ.get('TEST_DB'), - test_ini, - flags=re.M) + ini_settings['[app:main]']['sqlalchemy.url'] = os.environ.get('TEST_DB') test_ini_file = os.path.join(TESTS_TMP_PATH, 'test.ini') - with open(test_ini_file, 'w') as output_file: - output_file.write(test_ini) + inifile.create(test_ini_file, None, ini_settings) context = loadwsgi.loadcontext(loadwsgi.APP, 'config:%s' % test_ini_file) from kallithea.tests.fixture import create_test_env, create_test_index diff --git a/kallithea/tests/test.ini b/kallithea/tests/test.ini deleted file mode 100644 --- a/kallithea/tests/test.ini +++ /dev/null @@ -1,441 +0,0 @@ -################################################################################ -################################################################################ -# Kallithea - config file generated with kallithea-config # -# # -# The %(here)s variable will be replaced with the parent directory of this file# -################################################################################ -################################################################################ - -[DEFAULT] - -################################################################################ -## Email settings ## -## ## -## Refer to the documentation ("Email settings") for more details. ## -## ## -## It is recommended to use a valid sender address that passes access ## -## validation and spam filtering in mail servers. ## -################################################################################ - -## 'From' header for application emails. You can optionally add a name. -## Default: -#app_email_from = Kallithea -## Examples: -#app_email_from = Kallithea -#app_email_from = kallithea-noreply@example.com - -## Subject prefix for application emails. -## A space between this prefix and the real subject is automatically added. -## Default: -#email_prefix = -## Example: -#email_prefix = [Kallithea] - -## Recipients for error emails and fallback recipients of application mails. -## Multiple addresses can be specified, space-separated. -## Only addresses are allowed, do not add any name part. -## Default: -#email_to = -## Examples: -#email_to = admin@example.com -#email_to = admin@example.com another_admin@example.com -email_to = - -## 'From' header for error emails. You can optionally add a name. -## Default: (none) -## Examples: -#error_email_from = Kallithea Errors -#error_email_from = kallithea_errors@example.com -error_email_from = - -## SMTP server settings -## If specifying credentials, make sure to use secure connections. -## Default: Send unencrypted unauthenticated mails to the specified smtp_server. -## For "SSL", use smtp_use_ssl = true and smtp_port = 465. -## For "STARTTLS", use smtp_use_tls = true and smtp_port = 587. -smtp_server = -#smtp_username = -#smtp_password = -smtp_port = -#smtp_use_ssl = false -#smtp_use_tls = false - -[server:main] -## WAITRESS ## -use = egg:waitress#main -## number of worker threads -threads = 1 -## MAX BODY SIZE 100GB -max_request_body_size = 107374182400 -## use poll instead of select, fixes fd limits, may not work on old -## windows systems. -#asyncore_use_poll = True - -## COMMON ## -host = 127.0.0.1 -#port = 5000 -port = 4999 - -## middleware for hosting the WSGI application under a URL prefix -#[filter:proxy-prefix] -#use = egg:PasteDeploy#prefix -#prefix = / - -[app:main] -use = egg:kallithea -## enable proxy prefix middleware -#filter-with = proxy-prefix - -full_stack = true -static_files = true - -## Internationalization (see setup documentation for details) -## By default, the language requested by the browser is used if available. -#i18n.enable = false -## Fallback language, empty for English (valid values are the names of subdirectories in kallithea/i18n): -i18n.lang = - -cache_dir = %(here)s/data -index_dir = %(here)s/data/index - -## perform a full repository scan on each server start, this should be -## set to false after first startup, to allow faster server restarts. -initial_repo_scan = false - -## uncomment and set this path to use archive download cache -archive_cache_dir = %(here)s/tarballcache - -## change this to unique ID for security -#app_instance_uuid = VERY-SECRET -app_instance_uuid = test - -## cut off limit for large diffs (size in bytes) -cut_off_limit = 256000 - -## force https in Kallithea, fixes https redirects, assumes it's always https -force_https = false - -## use Strict-Transport-Security headers -use_htsts = false - -## number of commits stats will parse on each iteration -commit_parse_limit = 25 - -## path to git executable -git_path = git - -## git rev filter option, --all is the default filter, if you need to -## hide all refs in changelog switch this to --branches --tags -#git_rev_filter = --branches --tags - -## RSS feed options -rss_cut_off_limit = 256000 -rss_items_per_page = 10 -rss_include_diff = false - -## options for showing and identifying changesets -show_sha_length = 12 -#show_revision_number = false -show_revision_number = true - -## Canonical URL to use when creating full URLs in UI and texts. -## Useful when the site is available under different names or protocols. -## Defaults to what is provided in the WSGI environment. -#canonical_url = https://kallithea.example.com/repos - -## gist URL alias, used to create nicer urls for gist. This should be an -## url that does rewrites to _admin/gists/. -## example: http://gist.example.com/{gistid}. Empty means use the internal -## Kallithea url, ie. http[s]://kallithea.example.com/_admin/gists/ -gist_alias_url = - -## white list of API enabled controllers. This allows to add list of -## controllers to which access will be enabled by api_key. eg: to enable -## api access to raw_files put `FilesController:raw`, to enable access to patches -## add `ChangesetController:changeset_patch`. This list should be "," separated -## Syntax is :. Check debug logs for generated names -## Recommended settings below are commented out: -api_access_controllers_whitelist = -# ChangesetController:changeset_patch, -# ChangesetController:changeset_raw, -# FilesController:raw, -# FilesController:archivefile - -## default encoding used to convert from and to unicode -## can be also a comma separated list of encoding in case of mixed encodings -default_encoding = utf8 - -## issue tracker for Kallithea (leave blank to disable, absent for default) -#bugtracker = https://bitbucket.org/conservancy/kallithea/issues - -## issue tracking mapping for commits messages -## comment out issue_pat, issue_server, issue_prefix to enable - -## pattern to get the issues from commit messages -## default one used here is # with a regex passive group for `#` -## {id} will be all groups matched from this pattern - -issue_pat = (?:\s*#)(\d+) - -## server url to the issue, each {id} will be replaced with match -## fetched from the regex and {repo} is replaced with full repository name -## including groups {repo_name} is replaced with just name of repo - -issue_server_link = https://issues.example.com/{repo}/issue/{id} - -## prefix to add to link to indicate it's an url -## #314 will be replaced by - -issue_prefix = # - -## issue_pat, issue_server_link, issue_prefix can have suffixes to specify -## multiple patterns, to other issues server, wiki or others -## below an example how to create a wiki pattern -# wiki-some-id -> https://wiki.example.com/some-id - -#issue_pat_wiki = (?:wiki-)(.+) -#issue_server_link_wiki = https://wiki.example.com/{id} -#issue_prefix_wiki = WIKI- - -## alternative return HTTP header for failed authentication. Default HTTP -## response is 401 HTTPUnauthorized. Currently Mercurial clients have trouble with -## handling that. Set this variable to 403 to return HTTPForbidden -auth_ret_code = - -## locking return code. When repository is locked return this HTTP code. 2XX -## codes don't break the transactions while 4XX codes do -lock_ret_code = 423 - -## allows to change the repository location in settings page -allow_repo_location_change = True - -## allows to setup custom hooks in settings page -allow_custom_hooks_settings = True - -## extra extensions for indexing, space separated and without the leading '.'. -# index.extensions = -# gemfile -# lock - -## extra filenames for indexing, space separated -# index.filenames = -# .dockerignore -# .editorconfig -# INSTALL -# CHANGELOG - -#################################### -### CELERY CONFIG #### -#################################### - -use_celery = false - -## Example: connect to the virtual host 'rabbitmqhost' on localhost as rabbitmq: -broker.url = amqp://rabbitmq:qewqew@localhost:5672/rabbitmqhost - -celery.imports = kallithea.lib.celerylib.tasks -celery.accept.content = pickle -celery.result.backend = amqp -celery.result.dburi = amqp:// -celery.result.serialier = json - -#celery.send.task.error.emails = true -#celery.amqp.task.result.expires = 18000 - -celeryd.concurrency = 2 -celeryd.max.tasks.per.child = 1 - -## If true, tasks will never be sent to the queue, but executed locally instead. -celery.always.eager = false - -#################################### -### BEAKER CACHE #### -#################################### - -beaker.cache.data_dir = %(here)s/data/cache/data -beaker.cache.lock_dir = %(here)s/data/cache/lock - -beaker.cache.regions = short_term,long_term,sql_cache_short - -beaker.cache.short_term.type = memory -beaker.cache.short_term.expire = 60 -beaker.cache.short_term.key_length = 256 - -beaker.cache.long_term.type = memory -beaker.cache.long_term.expire = 36000 -beaker.cache.long_term.key_length = 256 - -beaker.cache.sql_cache_short.type = memory -#beaker.cache.sql_cache_short.expire = 10 -beaker.cache.sql_cache_short.expire = 1 -beaker.cache.sql_cache_short.key_length = 256 - -#################################### -### BEAKER SESSION #### -#################################### - -## Name of session cookie. Should be unique for a given host and path, even when running -## on different ports. Otherwise, cookie sessions will be shared and messed up. -beaker.session.key = kallithea -## Sessions should always only be accessible by the browser, not directly by JavaScript. -beaker.session.httponly = true -## Session lifetime. 2592000 seconds is 30 days. -beaker.session.timeout = 2592000 - -## Server secret used with HMAC to ensure integrity of cookies. -#beaker.session.secret = VERY-SECRET -beaker.session.secret = {74e0cd75-b339-478b-b129-07dd221def1f} -## Further, encrypt the data with AES. -#beaker.session.encrypt_key = -#beaker.session.validate_key = - -## Type of storage used for the session, current types are -## dbm, file, memcached, database, and memory. - -## File system storage of session data. (default) -#beaker.session.type = file - -## Cookie only, store all session data inside the cookie. Requires secure secrets. -#beaker.session.type = cookie - -## Database storage of session data. -#beaker.session.type = ext:database -#beaker.session.sa.url = postgresql://postgres:qwe@localhost/kallithea -#beaker.session.table_name = db_session - -################################################################################ -## WARNING: *DEBUG MODE MUST BE OFF IN A PRODUCTION ENVIRONMENT* ## -## Debug mode will enable the interactive debugging tool, allowing ANYONE to ## -## execute malicious code after an exception is raised. ## -################################################################################ -debug = false - -################################## -### LOGVIEW CONFIG ### -################################## - -logview.sqlalchemy = #faa -logview.pylons.templating = #bfb -logview.pylons.util = #eee - -######################################################### -### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ### -######################################################### - -# SQLITE [default] -sqlalchemy.url = sqlite:///%(here)s/kallithea.db?timeout=60 - -# see sqlalchemy docs for others - -sqlalchemy.pool_recycle = 3600 - -################################ -### ALEMBIC CONFIGURATION #### -################################ - -[alembic] -script_location = kallithea:alembic - -################################ -### LOGGING CONFIGURATION #### -################################ - -[loggers] -keys = root, routes, kallithea, sqlalchemy, tg, gearbox, beaker, templates, whoosh_indexer - -[handlers] -keys = console, console_sql - -[formatters] -keys = generic, color_formatter, color_formatter_sql - -############# -## LOGGERS ## -############# - -[logger_root] -level = NOTSET -handlers = console - -[logger_routes] -level = DEBUG -handlers = -qualname = routes.middleware -## "level = DEBUG" logs the route matched and routing variables. -propagate = 1 - -[logger_beaker] -level = DEBUG -handlers = -qualname = beaker.container -propagate = 1 - -[logger_templates] -level = INFO -handlers = -qualname = pylons.templating -propagate = 1 - -[logger_kallithea] -level = DEBUG -handlers = -qualname = kallithea -propagate = 1 - -[logger_tg] -level = DEBUG -handlers = -qualname = tg -propagate = 1 - -[logger_gearbox] -level = DEBUG -handlers = -qualname = gearbox -propagate = 1 - -[logger_sqlalchemy] -level = WARN -handlers = console_sql -qualname = sqlalchemy.engine -propagate = 0 - -[logger_whoosh_indexer] -level = DEBUG -handlers = -qualname = whoosh_indexer -propagate = 1 - -############## -## HANDLERS ## -############## - -[handler_console] -class = StreamHandler -args = (sys.stderr,) -#formatter = generic -formatter = color_formatter - -[handler_console_sql] -class = StreamHandler -args = (sys.stderr,) -#formatter = generic -formatter = color_formatter_sql - -################ -## FORMATTERS ## -################ - -[formatter_generic] -format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s -datefmt = %Y-%m-%d %H:%M:%S - -[formatter_color_formatter] -class = kallithea.lib.colored_formatter.ColorFormatter -format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s -datefmt = %Y-%m-%d %H:%M:%S - -[formatter_color_formatter_sql] -class = kallithea.lib.colored_formatter.ColorFormatterSql -format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s -datefmt = %Y-%m-%d %H:%M:%S diff --git a/scripts/generate-ini.py b/scripts/generate-ini.py --- a/scripts/generate-ini.py +++ b/scripts/generate-ini.py @@ -11,29 +11,6 @@ from kallithea.lib import inifile # files to be generated from the mako template ini_files = [ - ('kallithea/tests/test.ini', - { - '[server:main]': { - 'port': '4999', - }, - '[app:main]': { - 'app_instance_uuid': 'test', - 'show_revision_number': 'true', - 'beaker.cache.sql_cache_short.expire': '1', - 'beaker.session.secret': '{74e0cd75-b339-478b-b129-07dd221def1f}', - }, - '[handler_console]': { - 'formatter': 'color_formatter', - }, - # The 'handler_console_sql' block is very similar to the one in - # development.ini, but without the explicit 'level=DEBUG' setting: - # it causes duplicate sqlalchemy debug logs, one through - # handler_console_sql and another through another path. - '[handler_console_sql]': { - 'formatter': 'color_formatter_sql', - }, - }, - ), ('development.ini', { '[server:main]': { diff --git a/scripts/manifest b/scripts/manifest --- a/scripts/manifest +++ b/scripts/manifest @@ -918,7 +918,6 @@ kallithea/tests/scripts/create_rc.sh kallithea/tests/scripts/manual_test_concurrency.py kallithea/tests/scripts/manual_test_crawler.py kallithea/tests/scripts/mem_watch -kallithea/tests/test.ini kallithea/tests/vcs/ kallithea/tests/vcs/__init__.py kallithea/tests/vcs/aconfig