;       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
; TurboGears will use controllers/basetest_project_root.py as root controller
override_root=basetest_project_root
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
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: 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

[app:task]
use = main
; TurboGears will use controllers/task.py as root controller
override_root = task

;
; 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
