17614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org#!/usr/bin/env python
27614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org
37614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org# Copyright (c) 2013 Google Inc. All rights reserved.
47614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org# Use of this source code is governed by a BSD-style license that can be
57614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org# found in the LICENSE file.
67614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org
77614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org"""
87614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.orgVerifies that copying files preserves file attributes.
97614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org"""
107614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org
117614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.orgimport TestGyp
127614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org
137614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.orgimport os
147614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.orgimport stat
157614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.orgimport sys
167614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org
177614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org
187614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.orgdef check_attribs(path, expected_exec_bit):
197614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org  out_path = test.built_file_path(path, chdir='src')
207614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org
217614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org  in_stat = os.stat(os.path.join('src', path))
227614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org  out_stat = os.stat(out_path)
237614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org  if out_stat.st_mode & stat.S_IXUSR != expected_exec_bit:
247614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org    test.fail_test()
257614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org
267614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org
277614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.orgtest = TestGyp.TestGyp()
287614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org
297614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.orgtest.run_gyp('copies-attribs.gyp', chdir='src')
307614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org
317614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.orgtest.build('copies-attribs.gyp', chdir='src')
327614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org
337614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.orgif sys.platform != 'win32':
347614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org  out_path = test.built_file_path('executable-file.sh', chdir='src')
357614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org  test.must_contain(out_path,
367614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org                    '#!/bin/bash\n'
377614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org                    '\n'
387614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org                    'echo echo echo echo cho ho o o\n')
397614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org  check_attribs('executable-file.sh', expected_exec_bit=stat.S_IXUSR)
407614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.org
417614842ca70d1cca6192166b10c0565f9aee358athakis@chromium.orgtest.pass_test()
42