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