|
|
|
@ -60,7 +60,10 @@ __author__ = 'wan@google.com (Zhanyong Wan)' |
|
|
|
|
|
|
|
|
|
import os |
|
|
|
|
import re |
|
|
|
|
import sets |
|
|
|
|
try: |
|
|
|
|
from sets import Set as set # For Python 2.3 compatibility |
|
|
|
|
except ImportError: |
|
|
|
|
pass |
|
|
|
|
import sys |
|
|
|
|
|
|
|
|
|
# We assume that this file is in the scripts/ directory in the Google |
|
|
|
@ -90,10 +93,10 @@ def VerifyFileExists(directory, relative_path): |
|
|
|
|
""" |
|
|
|
|
|
|
|
|
|
if not os.path.isfile(os.path.join(directory, relative_path)): |
|
|
|
|
print 'ERROR: Cannot find %s in directory %s.' % (relative_path, |
|
|
|
|
directory) |
|
|
|
|
print ('Please either specify a valid project root directory ' |
|
|
|
|
'or omit it on the command line.') |
|
|
|
|
print('ERROR: Cannot find %s in directory %s.' % (relative_path, |
|
|
|
|
directory)) |
|
|
|
|
print('Please either specify a valid project root directory ' |
|
|
|
|
'or omit it on the command line.') |
|
|
|
|
sys.exit(1) |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -119,11 +122,11 @@ def VerifyOutputFile(output_dir, relative_path): |
|
|
|
|
# TODO(wan@google.com): The following user-interaction doesn't |
|
|
|
|
# work with automated processes. We should provide a way for the |
|
|
|
|
# Makefile to force overwriting the files. |
|
|
|
|
print ('%s already exists in directory %s - overwrite it? (y/N) ' % |
|
|
|
|
(relative_path, output_dir)) |
|
|
|
|
print('%s already exists in directory %s - overwrite it? (y/N) ' % |
|
|
|
|
(relative_path, output_dir)) |
|
|
|
|
answer = sys.stdin.readline().strip() |
|
|
|
|
if answer not in ['y', 'Y']: |
|
|
|
|
print 'ABORTED.' |
|
|
|
|
print('ABORTED.') |
|
|
|
|
sys.exit(1) |
|
|
|
|
|
|
|
|
|
# Makes sure the directory holding the output file exists; creates |
|
|
|
@ -146,8 +149,8 @@ def ValidateOutputDir(output_dir): |
|
|
|
|
def FuseGTestH(gtest_root, output_dir): |
|
|
|
|
"""Scans folder gtest_root to generate gtest/gtest.h in output_dir.""" |
|
|
|
|
|
|
|
|
|
output_file = file(os.path.join(output_dir, GTEST_H_OUTPUT), 'w') |
|
|
|
|
processed_files = sets.Set() # Holds all gtest headers we've processed. |
|
|
|
|
output_file = open(os.path.join(output_dir, GTEST_H_OUTPUT), 'w') |
|
|
|
|
processed_files = set() # Holds all gtest headers we've processed. |
|
|
|
|
|
|
|
|
|
def ProcessFile(gtest_header_path): |
|
|
|
|
"""Processes the given gtest header file.""" |
|
|
|
@ -159,7 +162,7 @@ def FuseGTestH(gtest_root, output_dir): |
|
|
|
|
processed_files.add(gtest_header_path) |
|
|
|
|
|
|
|
|
|
# Reads each line in the given gtest header. |
|
|
|
|
for line in file(os.path.join(gtest_root, gtest_header_path), 'r'): |
|
|
|
|
for line in open(os.path.join(gtest_root, gtest_header_path), 'r'): |
|
|
|
|
m = INCLUDE_GTEST_FILE_REGEX.match(line) |
|
|
|
|
if m: |
|
|
|
|
# It's '#include "gtest/..."' - let's process it recursively. |
|
|
|
@ -175,7 +178,7 @@ def FuseGTestH(gtest_root, output_dir): |
|
|
|
|
def FuseGTestAllCcToFile(gtest_root, output_file): |
|
|
|
|
"""Scans folder gtest_root to generate gtest/gtest-all.cc in output_file.""" |
|
|
|
|
|
|
|
|
|
processed_files = sets.Set() |
|
|
|
|
processed_files = set() |
|
|
|
|
|
|
|
|
|
def ProcessFile(gtest_source_file): |
|
|
|
|
"""Processes the given gtest source file.""" |
|
|
|
@ -187,7 +190,7 @@ def FuseGTestAllCcToFile(gtest_root, output_file): |
|
|
|
|
processed_files.add(gtest_source_file) |
|
|
|
|
|
|
|
|
|
# Reads each line in the given gtest source file. |
|
|
|
|
for line in file(os.path.join(gtest_root, gtest_source_file), 'r'): |
|
|
|
|
for line in open(os.path.join(gtest_root, gtest_source_file), 'r'): |
|
|
|
|
m = INCLUDE_GTEST_FILE_REGEX.match(line) |
|
|
|
|
if m: |
|
|
|
|
if 'include/' + m.group(1) == GTEST_SPI_H_SEED: |
|
|
|
@ -218,7 +221,7 @@ def FuseGTestAllCcToFile(gtest_root, output_file): |
|
|
|
|
def FuseGTestAllCc(gtest_root, output_dir): |
|
|
|
|
"""Scans folder gtest_root to generate gtest/gtest-all.cc in output_dir.""" |
|
|
|
|
|
|
|
|
|
output_file = file(os.path.join(output_dir, GTEST_ALL_CC_OUTPUT), 'w') |
|
|
|
|
output_file = open(os.path.join(output_dir, GTEST_ALL_CC_OUTPUT), 'w') |
|
|
|
|
FuseGTestAllCcToFile(gtest_root, output_file) |
|
|
|
|
output_file.close() |
|
|
|
|
|
|
|
|
@ -242,7 +245,7 @@ def main(): |
|
|
|
|
# fuse_gtest_files.py GTEST_ROOT_DIR OUTPUT_DIR |
|
|
|
|
FuseGTest(sys.argv[1], sys.argv[2]) |
|
|
|
|
else: |
|
|
|
|
print __doc__ |
|
|
|
|
print(__doc__) |
|
|
|
|
sys.exit(1) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|