# Copyright 2014 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 os, re

from autotest_lib.client.bin import test
from autotest_lib.client.common_lib import error, utils
from autotest_lib.client.cros.graphics import graphics_utils

class graphics_Gbm(test.test):
    """
    Test the gbm implementation.
    """
    version = 1
    preserve_srcdir = True
    GSC = None

    def setup(self):
        os.chdir(self.srcdir)
        utils.make('clean')
        utils.make('all')

    def initialize(self):
        self.GSC = graphics_utils.GraphicsStateChecker()

    def cleanup(self):
        if self.GSC:
            self.GSC.finalize()

    def run_once(self):
        cmd = os.path.join(self.srcdir, 'gbmtest')
        cmd = graphics_utils.xcommand(cmd)
        result = utils.run(cmd,
                           stderr_is_expected = False,
                           stdout_tee = utils.TEE_TO_LOGS,
                           stderr_tee = utils.TEE_TO_LOGS,
                           ignore_status = True)
        report = re.findall(r'\[  PASSED  \]', result.stdout)
        if not report:
            raise error.TestFail('Gbm test failed (' + result.stdout + ')')