1d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.org#!/usr/bin/env python
2d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.org
3d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.org# Copyright (c) 2012 Google Inc. All rights reserved.
4d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.org# Use of this source code is governed by a BSD-style license that can be
5d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.org# found in the LICENSE file.
6d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.org
7d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.org"""
8d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.orgTest that two targets with the same name generates an error.
9d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.org"""
10d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.org
111c4be478a439eaaf11fba83e4a35f4926a21a1b9yukawa@chromium.orgimport os
121c4be478a439eaaf11fba83e4a35f4926a21a1b9yukawa@chromium.orgimport sys
131c4be478a439eaaf11fba83e4a35f4926a21a1b9yukawa@chromium.org
14d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.orgimport TestGyp
15d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.orgimport TestCmd
16d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.org
1746b4f67e79748c751cb2ec7e769bc2cfbcfb9f79bradnelson@google.com# TODO(sbc): Remove the use of match_re below, done because scons
1846b4f67e79748c751cb2ec7e769bc2cfbcfb9f79bradnelson@google.com# error messages were not consistent with other generators.
1946b4f67e79748c751cb2ec7e769bc2cfbcfb9f79bradnelson@google.com# Also remove input.py:generator_wants_absolute_build_file_paths.
20d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.org
21d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.orgtest = TestGyp.TestGyp()
22d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.org
23d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.orgstderr = ('gyp: Duplicate target definitions for '
24d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.org          '.*duplicate_targets.gyp:foo#target\n')
25d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.orgtest.run_gyp('duplicate_targets.gyp', status=1, stderr=stderr,
26d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.org             match=TestCmd.match_re)
27d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.org
28072660db6ec1fafc1e0997439b5015913f0b9aa5scottmg@chromium.orgstderr = ('.*: Unable to find targets in build file .*missing_targets.gyp.*')
29d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.orgtest.run_gyp('missing_targets.gyp', status=1, stderr=stderr,
30072660db6ec1fafc1e0997439b5015913f0b9aa5scottmg@chromium.org             match=TestCmd.match_re_dotall)
31d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.org
32d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.orgstderr = ('gyp: rule bar exists in duplicate, target '
33d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.org          '.*duplicate_rule.gyp:foo#target\n')
34d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.orgtest.run_gyp('duplicate_rule.gyp', status=1, stderr=stderr,
35d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.org             match=TestCmd.match_re)
36d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.org
37d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.orgstderr = ("gyp: Key 'targets' repeated at level 1 with key path '' while "
38072660db6ec1fafc1e0997439b5015913f0b9aa5scottmg@chromium.org          "reading .*duplicate_node.gyp.*")
39d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.orgtest.run_gyp('duplicate_node.gyp', '--check', status=1, stderr=stderr,
40072660db6ec1fafc1e0997439b5015913f0b9aa5scottmg@chromium.org             match=TestCmd.match_re_dotall)
41d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.org
42d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.orgstderr = 'gyp: Duplicate basenames in sources section, see list above\n'
43d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.orgtest.run_gyp('duplicate_basenames.gyp', status=1, stderr=stderr)
44d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.org
451c4be478a439eaaf11fba83e4a35f4926a21a1b9yukawa@chromium.org# Check if '--no-duplicate-basename-check' works.
461c4be478a439eaaf11fba83e4a35f4926a21a1b9yukawa@chromium.orgif ((test.format == 'make' and sys.platform == 'darwin') or
471c4be478a439eaaf11fba83e4a35f4926a21a1b9yukawa@chromium.org    (test.format == 'msvs' and
481c4be478a439eaaf11fba83e4a35f4926a21a1b9yukawa@chromium.org        int(os.environ.get('GYP_MSVS_VERSION', 2010)) < 2010)):
491c4be478a439eaaf11fba83e4a35f4926a21a1b9yukawa@chromium.org  stderr = 'gyp: Duplicate basenames in sources section, see list above\n'
501c4be478a439eaaf11fba83e4a35f4926a21a1b9yukawa@chromium.org  test.run_gyp('duplicate_basenames.gyp', '--no-duplicate-basename-check',
511c4be478a439eaaf11fba83e4a35f4926a21a1b9yukawa@chromium.org               status=1, stderr=stderr)
521c4be478a439eaaf11fba83e4a35f4926a21a1b9yukawa@chromium.orgelse:
531c4be478a439eaaf11fba83e4a35f4926a21a1b9yukawa@chromium.org  test.run_gyp('duplicate_basenames.gyp', '--no-duplicate-basename-check')
541c4be478a439eaaf11fba83e4a35f4926a21a1b9yukawa@chromium.org
55d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.orgstderr = ("gyp: Dependency '.*missing_dep.gyp:missing.gyp#target' not found "
56d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.org          "while trying to load target .*missing_dep.gyp:foo#target\n")
57d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.orgtest.run_gyp('missing_dep.gyp', status=1, stderr=stderr,
58d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.org             match=TestCmd.match_re)
59d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.org
60d3d94fcdfb9745d6784065cade320c2462924df9sbc@chromium.orgtest.pass_test()
61