#!/usr/bin/env python

# Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS.  All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.

import re
import os
import unittest

#pylint: disable=relative-import
import build_helpers

TESTDATA_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)),
                            'testdata')


class GnCheckTest(unittest.TestCase):

  def testCircularDependencyError(self):
    test_dir = os.path.join(TESTDATA_DIR, 'circular_dependency')
    expected_error = re.compile('ERROR Dependency cycle')
    gn_output = build_helpers.RunGnCheck(test_dir)
    self.assertEqual(1, len(gn_output))
    self.assertRegexpMatches(gn_output[0], expected_error)


if __name__ == '__main__':
  unittest.main()
