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

syscfg.defs:
    RUNTEST_LOG:
        description: >
            Causes test results to be written to a cbmem-backed log.
        value: 0
    RUNTEST_LOG_SIZE:
        description: >
            The size of the test log cbmem (bytes).
        value: 2048
        restrictions:
            - 'RUNTEST_LOG_SIZE > 0 || !RUNTEST_LOG'
    RUNTEST_CLI:
        description: 'CLI commands for accessing tests'
        value: 0
        restrictions:
            - SHELL_TASK
    RUNTEST_MGMT:
        description: 'Enable mgmt command to execute tests'
        value: 1
    RUNTEST_NEWTMGR:
        description: 'Enable newtmgr command to execute tests'
        value: 1
    RUNTEST_PREFIX:
        description: >
            String to preface all log messages with.  If this is undefined, the
            prefix is constructed from the legacy C macros `BUILD_TARGET` and
            `BUILD_TEST`.
        value:
    RUNTEST_MAX_TEST_NAME_LEN:
        description: 'The maximum length, in characters, of each test name.'
        value: 32
    RUNTEST_MAX_TOKEN_LEN:
        description: >
            The maximum length, in characters, of the test token name.  The
            test token is specified by the runtest client and is included in
            test result log entries.
        value: 32
    RUNTEST_SYSINIT_STAGE:
        description: >
            Sysinit stage for runtest functionality.
        value: 500

syscfg.vals.RUNTEST_NEWTMGR:
        RUNTEST_MGMT: MYNEWT_VAL(RUNTEST_NEWTMGR)
