<!--
 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.

 -->
 <phpunit bootstrap="bootstrap.php"
	colors="true"
	convertErrorsToExceptions="true"
	convertNoticesToExceptions="true"
	convertWarningsToExceptions="true"
	stopOnFailure="false">

	<testsuite name="log4php">
		<directory>.</directory>
	</testsuite>
	
	<filter>
		<whitelist>
			<directory suffix=".php">../../main/php</directory>
		</whitelist>
	</filter>
	
	<logging>
		<log type="coverage-html" target="../../../target/test/report" charset="UTF-8" 
			yui="true" highlight="false" lowUpperBound="35" highLowerBound="70"/>
	</logging>

</phpunit>
