diff options
Diffstat (limited to 'media/webrtc/trunk/tools/gyp/test/mac/gyptest-postbuild-copy-bundle.py')
-rw-r--r-- | media/webrtc/trunk/tools/gyp/test/mac/gyptest-postbuild-copy-bundle.py | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/media/webrtc/trunk/tools/gyp/test/mac/gyptest-postbuild-copy-bundle.py b/media/webrtc/trunk/tools/gyp/test/mac/gyptest-postbuild-copy-bundle.py new file mode 100644 index 000000000..1f04d1cb3 --- /dev/null +++ b/media/webrtc/trunk/tools/gyp/test/mac/gyptest-postbuild-copy-bundle.py @@ -0,0 +1,75 @@ +#!/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. + +""" +Verifies that a postbuild copying a dependend framework into an app bundle is +rerun if the resources in the framework change. +""" + +import TestGyp + +import os.path +import sys + +if sys.platform == 'darwin': + # TODO(thakis): Make this pass with the make generator, http://crbug.com/95529 + test = TestGyp.TestGyp(formats=['ninja', 'xcode']) + + CHDIR = 'postbuild-copy-bundle' + test.run_gyp('test.gyp', chdir=CHDIR) + + app_bundle_dir = test.built_file_path('Test App.app', chdir=CHDIR) + bundled_framework_dir = os.path.join( + app_bundle_dir, 'Contents', 'My Framework.framework', 'Resources') + final_plist_path = os.path.join(bundled_framework_dir, 'Info.plist') + final_resource_path = os.path.join(bundled_framework_dir, 'resource_file.sb') + final_copies_path = os.path.join( + app_bundle_dir, 'Contents', 'My Framework.framework', 'Versions', 'A', + 'Libraries', 'copied.txt') + + # Check that the dependency was built and copied into the app bundle: + test.build('test.gyp', 'test_app', chdir=CHDIR) + test.must_exist(final_resource_path) + test.must_match(final_resource_path, + 'This is included in the framework bundle.\n') + + test.must_exist(final_plist_path) + test.must_contain(final_plist_path, '''\ +\t<key>RandomKey</key> +\t<string>RandomValue</string>''') + + # Touch the dependency's bundle resource, and check that the modification + # makes it all the way into the app bundle: + test.sleep() + test.write('postbuild-copy-bundle/resource_file.sb', 'New text\n') + test.build('test.gyp', 'test_app', chdir=CHDIR) + + test.must_exist(final_resource_path) + test.must_match(final_resource_path, 'New text\n') + + # Check the same for the plist file. + test.sleep() + contents = test.read('postbuild-copy-bundle/Framework-Info.plist') + contents = contents.replace('RandomValue', 'NewRandomValue') + test.write('postbuild-copy-bundle/Framework-Info.plist', contents) + test.build('test.gyp', 'test_app', chdir=CHDIR) + + test.must_exist(final_plist_path) + test.must_contain(final_plist_path, '''\ +\t<key>RandomKey</key> +\t<string>NewRandomValue</string>''') + + # Check the same for the copies section, test for http://crbug.com/157077 + test.sleep() + contents = test.read('postbuild-copy-bundle/copied.txt') + contents = contents.replace('old', 'new') + test.write('postbuild-copy-bundle/copied.txt', contents) + test.build('test.gyp', 'test_app', chdir=CHDIR) + + test.must_exist(final_copies_path) + test.must_contain(final_copies_path, 'new copied file') + + test.pass_test() |