#!/usr/bin/env python # Copyright (c) 2011 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import commands import glob import logging import os import sys import unittest import pyauto_functional # Must import before pyauto import pyauto class CodesignTest(pyauto.PyUITest): """Test if the build is code signed""" def testCodeSign(self): """Check the app for codesign and bail out if it's non-branded.""" browser_info = self.GetBrowserInfo() # bail out if not a branded build if browser_info['properties']['branding'] != 'Google Chrome': return # TODO: Add functionality for other operating systems (see crbug.com/47902) if self.IsMac(): self._MacCodeSign(browser_info) def _MacCodeSign(self, browser_info): valid_text = 'valid on disk' app_name = 'Google Chrome.app' # Codesign of the app @ xcodebuild/Release/Google Chrome.app/ app_path = browser_info['child_process_path'] app_path = app_path[:app_path.find(app_name)] app_path = app_path + app_name self.assertTrue(valid_text in self._checkCodeSign(app_path)) # Codesign of the frameWork framework_path = glob.glob(os.path.join(app_path, 'Contents', 'Versions', '*.*.*.*'))[0] framework_path = os.path.join(framework_path, 'Google Chrome Framework.framework') self.assertTrue(valid_text in self._checkCodeSign(framework_path)) def _checkCodeSign(self, file_path): """Return the output of the codesign""" return commands.getoutput('codesign -vvv "%s"' % file_path) if __name__ == '__main__': pyauto_functional.Main()