# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.


import logging
import os

import common


_WHITELISTED_SUITES = (
    'arc-cts',
    'arc-cts-perbuild',
    'arc-cts-dev',
    'arc-cts-beta',
    'arc-cts-stable',
    'arc-gts',
    'arc-gts-perbuild',
    'arc-gts-tot',
    'arc-nightly',
    'arc-weekly',
    'crosbolt_arc_perf',
    'crosbolt_arc_perf_nightly',
    'crosbolt_arc_perf_perbuild',
)

def CheckControlFileExistence(tasks):
    """
    Make sure that for any task that schedules a suite, that
    test_suites/control.<suite> exists. this prevents people from accidentally
    adding a suite to suite_scheduler.ini but not adding an actual suite
    control file, thus resulting in their suite not running and the lab team
    getting lots of email

    @param tasks The list of tasks to check.
    @return 0 if no missing control files are found
            1 if there are at least one missing control files
    """
    corrections = False

    for task in tasks:
        suite_path = os.path.join(common.autotest_dir,
                                  'test_suites', 'control.'+task.suite)
        if task.suite in _WHITELISTED_SUITES:
            continue
        if not os.path.exists(suite_path):
            corrections = True
            logging.warning("No suite control file for %s", task.suite)

    return 1 if corrections else 0