1#!/usr/bin/env python 2 3# Copyright (c) 2012 Google Inc. All rights reserved. 4# Use of this source code is governed by a BSD-style license that can be 5# found in the LICENSE file. 6 7""" 8Make sure we don't cause unnecessary builds due to import libs appearing 9to be out of date. 10""" 11 12import TestGyp 13 14import os 15import sys 16import time 17 18if sys.platform == 'win32': 19 test = TestGyp.TestGyp(formats=['msvs', 'ninja']) 20 21 if not os.environ.get('ProgramFiles(x86)'): 22 # TODO(scottmg) 23 print 'Skipping test on x86, http://crbug.com/365833' 24 test.pass_test() 25 26 CHDIR = 'importlib' 27 test.run_gyp('importlib.gyp', chdir=CHDIR) 28 test.build('importlib.gyp', test.ALL, chdir=CHDIR) 29 30 # Delay briefly so that there's time for this touch not to have the 31 # timestamp as the previous run. 32 test.sleep() 33 34 # Touch the .cc file; the .dll will rebuild, but the import libs timestamp 35 # won't be updated. 36 test.touch('importlib/has-exports.cc') 37 test.build('importlib.gyp', 'test_importlib', chdir=CHDIR) 38 39 # This is the important part. The .dll above will relink and have an updated 40 # timestamp, however the import .libs timestamp won't be updated. So, we 41 # have to handle restating inputs in ninja so the final binary doesn't 42 # continually relink (due to thinking the .lib isn't up to date). 43 test.up_to_date('importlib.gyp', test.ALL, chdir=CHDIR) 44 45 test.pass_test() 46