;       Licensed to the Apache Software Foundation (ASF) under one
;       or more contributor license agreements.  See the NOTICE file
;       distributed with this work for additional information
;       regarding copyright ownership.  The ASF licenses this file
;       to you under the Apache License, Version 2.0 (the
;       "License"); you may not use this file except in compliance
;       with the License.  You may obtain a copy of the License at
;
;         http://www.apache.org/licenses/LICENSE-2.0
;
;       Unless required by applicable law or agreed to in writing,
;       software distributed under the License is distributed on an
;       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
;       KIND, either express or implied.  See the License for the
;       specific language governing permissions and limitations
;       under the License.
;
; Allura - testing configuration
;
;

;
; This inherits all the settings from development.ini
; and then overrides only settings needed for tests to work.
;

[app:main]
use = config:development.ini#main
override_root=basetest_project_root ; TurboGears will use controllers/basetest_project_root.py as root controller
disable_template_overrides = True

; Use in-memory MongoDB
ming.main.uri = mim:///allura
ming.project.uri = mim:///project-data
ming.task.uri = mim:///task
activitystream.master = mim://

solr.server =
smtp.mock = true

load_test_data = true
cache_test_data = false
site_admin_project = test

; useful primarily for test suites, where we want to see the error right away
monq.raise_errors = true

; Required so that g.production_mode is True, and Google Analytics is included (weird.)
; may also be useful for other reasons during tests (e.g. not intercepting error handling)
debug = false

; if enabled during tests, TimerMiddleware will end up wrapping requests way too many times instead of just once
; not necessary anyway
stats.sample_rate = 0

base_url = http://localhost

; specify these without any build_key being included
ew.script_name = /nf/_ew_/
ew.url_base = /nf/_ew_/
static.script_name = /nf/_static_/
static.url_base = /nf/_static_/

; tests check for these values in output
scm.host.ro.git = git://git.localhost$path
scm.host.rw.git = ssh://$username@localhost:8022/scm-repo$path
scm.host.ro.svn = http://svn.localhost$path/
scm.host.rw.svn = svn+ssh://$username@localhost:8022/scm-repo$path/
scm.host.https.svn = https://$username@localhost:8022/scm-repo$path/
scm.host.ro.hg = http://hg.localhost$path
scm.host.rw.hg = ssh://$username@localhost:8022/scm-repo$path

scm.repos.root = /tmp
scm.repos.tarball.enable = true
scm.repos.tarball.root = /tmp/tarball
scm.repos.tarball.url_prefix = file://

support_tool_choices = wiki tickets discussion

; markdown text longer than max length will not be converted to html
; tests expect max length of 40000
markdown_render_max_length = 40000

; TODO: make this and tests match development.ini
bulk_export_filename = {project}.zip

; TODO: update tests and let this be true
solr.use_new_types = false

; TODO: update tests and remove this setting override
auth.require_email_addr = false


;
; Logging goes to a test.log file in current directory
;
[loggers]
keys = root, allura

[handlers]
keys = test

[formatters]
keys = generic

[logger_root]
level = INFO
handlers = test

[logger_allura]
level = DEBUG
handlers =
qualname = allura

[handler_test]
class = FileHandler
args = ('test.log',)
level = NOTSET
formatter = generic

[formatter_generic]
format = %(asctime)s,%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
datefmt = %H:%M:%S

[validation]
validate_html5 = false
validate_inlinejs = false
