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