# *****************************************************************************
# NICOS, the Networked Instrument Control System of the MLZ
# Copyright (c) 2009-2025 by the NICOS contributors (see AUTHORS)
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#
# Module authors:
#   Georg Brandl <g.brandl@fz-juelich.de>
#
# *****************************************************************************

"""NICOS test suite console."""

import os
import logging
from os import path

try:
    import coverage
except ImportError:
    pass
else:
    # Note: This will only fire up coverage if the COVERAGE_PROCESS_START env
    # variable is set
    coverage.process_startup()

from nicos import config
from nicos.utils import loggers
from nicos.core.sessions.console import ConsoleSession

from test.utils import runtime_root, module_root, selfDestructAfter


class TestConsoleSession(ConsoleSession):

    def __init__(self, appname, daemonized=False):
        ConsoleSession.__init__(self, appname, daemonized)
        self.setSetupPath(path.join(module_root, 'test', 'setups'))

    def createRootLogger(self, prefix='nicos', console=True, logfile=True):
        self.log = loggers.NicosLogger('nicos')
        self.log.parent = None
        handler = logging.StreamHandler()
        handler.setLevel(logging.INFO)
        handler.setFormatter(logging.Formatter('%(name)s: %(message)s'))
        self.log.addHandler(handler)
        self._master_handler = None


config.apply()
config.user = None
config.group = None
config.nicos_root = runtime_root

os.environ['NICOS_HISTORY_FILE'] = os.devnull
selfDestructAfter(300)
TestConsoleSession.run('startup', False)
