changeset 6895:163d1c4f2b8b

tests: generate test.ini directly from template Get rid of the committed generated test.ini
author Mads Kiilerich <mads@kiilerich.com>
date Thu, 14 Sep 2017 02:08:07 +0200
parents 94f6b23e52d0
children e338b3468987
files MANIFEST.in kallithea/tests/conftest.py kallithea/tests/test.ini scripts/generate-ini.py scripts/manifest
diffstat 5 files changed, 24 insertions(+), 475 deletions(-) [+]
line wrap: on
line diff
--- a/MANIFEST.in	Thu Sep 14 02:08:07 2017 +0200
+++ b/MANIFEST.in	Thu Sep 14 02:08:07 2017 +0200
@@ -24,6 +24,5 @@
 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 *
--- a/kallithea/tests/conftest.py	Thu Sep 14 02:08:07 2017 +0200
+++ b/kallithea/tests/conftest.py	Thu Sep 14 02:08:07 2017 +0200
@@ -12,6 +12,7 @@
 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 @@
     # 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
--- a/kallithea/tests/test.ini	Thu Sep 14 02:08:07 2017 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -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 <kallithea-noreply@example.com>
-#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 <kallithea-noreply@example.com>
-#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 = /<your-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/<gistid>.
-## example: http://gist.example.com/{gistid}. Empty means use the internal
-## Kallithea url, ie. http[s]://kallithea.example.com/_admin/gists/<gistid>
-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 <ControllerClass>:<function>. 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 #<numbers> 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><id>
-
-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 = <key_for_encryption>
-#beaker.session.validate_key = <validation_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
--- a/scripts/generate-ini.py	Thu Sep 14 02:08:07 2017 +0200
+++ b/scripts/generate-ini.py	Thu Sep 14 02:08:07 2017 +0200
@@ -11,29 +11,6 @@
 
 # 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]': {
--- a/scripts/manifest	Thu Sep 14 02:08:07 2017 +0200
+++ b/scripts/manifest	Thu Sep 14 02:08:07 2017 +0200
@@ -918,7 +918,6 @@
 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