mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-29 03:47:31 +09:00
55 lines
1.7 KiB
Python
55 lines
1.7 KiB
Python
#!/usr/bin/env python
|
|
|
|
# Copyright (c) 2014 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.
|
|
|
|
"""
|
|
Make sure overwriting read-only files works as expected (via win-tool).
|
|
"""
|
|
|
|
import TestGyp
|
|
|
|
import filecmp
|
|
import os
|
|
import stat
|
|
import sys
|
|
|
|
if sys.platform == 'win32':
|
|
test = TestGyp.TestGyp(formats=['ninja'])
|
|
|
|
# First, create the source files.
|
|
os.makedirs('subdir')
|
|
read_only_files = ['read-only-file', 'subdir/A', 'subdir/B', 'subdir/C']
|
|
for f in read_only_files:
|
|
test.write(f, 'source_contents')
|
|
test.chmod(f, stat.S_IREAD)
|
|
if os.access(f, os.W_OK):
|
|
test.fail_test()
|
|
|
|
# Second, create the read-only destination files. Note that we are creating
|
|
# them where the ninja and win-tool will try to copy them to, in order to test
|
|
# that copies overwrite the files.
|
|
os.makedirs(test.built_file_path('dest/subdir'))
|
|
for f in read_only_files:
|
|
f = os.path.join('dest', f)
|
|
test.write(test.built_file_path(f), 'SHOULD BE OVERWRITTEN')
|
|
test.chmod(test.built_file_path(f), stat.S_IREAD)
|
|
# Ensure not writable.
|
|
if os.access(test.built_file_path(f), os.W_OK):
|
|
test.fail_test()
|
|
|
|
test.run_gyp('copies_readonly_files.gyp')
|
|
test.build('copies_readonly_files.gyp')
|
|
|
|
# Check the destination files were overwritten by ninja.
|
|
for f in read_only_files:
|
|
f = os.path.join('dest', f)
|
|
test.must_contain(test.built_file_path(f), 'source_contents')
|
|
|
|
# This will fail if the files are not the same mode or contents.
|
|
for f in read_only_files:
|
|
if not filecmp.cmp(f, test.built_file_path(os.path.join('dest', f))):
|
|
test.fail_test()
|
|
|
|
test.pass_test()
|