summaryrefslogtreecommitdiff
path: root/deps/gyp/test/ninja/s-needs-no-depfiles/gyptest-s-needs-no-depfiles.py
blob: 77a3245d4625a0fc2afb94b3d1ba5e97fa0635e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/usr/bin/env python

# Copyright (c) 2012 Google Inc. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""
Verify that .s files don't always trigger a rebuild, as would happen if depfiles
were used for them (since clang & gcc ignore -MMD when building .s->.o on
linux).
"""

import os
import sys
import TestCommon
import TestGyp

# NOTE(fischman): Each generator uses depfiles (or not) differently, so this is
# a ninja-specific test.
test = TestGyp.TestGyp(formats=['ninja'])

if sys.platform == 'win32' or sys.platform == 'win64':
  # This test is about clang/gcc vs. depfiles; VS gets a pass.
  test.pass_test()
  sys.exit(0)

test.run_gyp('s-needs-no-depfiles.gyp')

# Build the library, grab its timestamp, rebuild the library, ensure timestamp
# hasn't changed.
test.build('s-needs-no-depfiles.gyp', 'empty')
empty_dll = test.built_file_path('empty', test.SHARED_LIB)
test.built_file_must_exist(empty_dll)
pre_stat = os.stat(test.built_file_path(empty_dll))
test.sleep()
test.build('s-needs-no-depfiles.gyp', 'empty')
post_stat = os.stat(test.built_file_path(empty_dll))

if pre_stat.st_mtime != post_stat.st_mtime:
  test.fail_test()
else:
  test.pass_test()