Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(406)

Side by Side Diff: pylib/gyp/system_test.py

Issue 10990023: make: drop all system tests (Closed) Base URL: http://git.chromium.org/external/gyp.git@master
Patch Set: Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « pylib/gyp/generator/ninja.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #!/usr/bin/env python
2
3 # Copyright (c) 2011 Google Inc. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file.
6
7 import os
8 import tempfile
9 import shutil
10 import subprocess
11
12
13 def TestCommands(commands, files={}, env={}):
14 """Run commands in a temporary directory, returning true if they all succeed.
15 Return false on failures or if any commands produce output.
16
17 Arguments:
18 commands: an array of shell-interpretable commands, e.g. ['ls -l', 'pwd']
19 each will be expanded with Python %-expansion using env first.
20 files: a dictionary mapping filename to contents;
21 files will be created in the temporary directory before running
22 the command.
23 env: a dictionary of strings to expand commands with.
24 """
25 tempdir = tempfile.mkdtemp()
26 try:
27 for name, contents in files.items():
28 f = open(os.path.join(tempdir, name), 'wb')
29 f.write(contents)
30 f.close()
31 for command in commands:
32 proc = subprocess.Popen(command % env, shell=True,
33 stdout=subprocess.PIPE,
34 stderr=subprocess.STDOUT,
35 cwd=tempdir)
36 output = proc.communicate()[0]
37 if proc.returncode != 0 or output:
38 return False
39 return True
40 finally:
41 shutil.rmtree(tempdir)
42 return False
43
44
45 def TestArSupportsT(ar_command='ar', cc_command='cc'):
46 """Test whether 'ar' supports the 'T' flag."""
47 return TestCommands(['%(cc)s -c test.c',
48 '%(ar)s crsT test.a test.o',
49 '%(cc)s test.a'],
50 files={'test.c': 'int main(){}'},
51 env={'ar': ar_command, 'cc': cc_command})
52
53
54 def main():
55 # Run the various test functions and print the results.
56 def RunTest(description, function, **kwargs):
57 print "Testing " + description + ':',
58 if function(**kwargs):
59 print 'ok'
60 else:
61 print 'fail'
62 RunTest("ar 'T' flag", TestArSupportsT)
63 RunTest("ar 'T' flag with ccache", TestArSupportsT, cc_command='ccache cc')
64 return 0
65
66
67 if __name__ == '__main__':
68 sys.exit(main())
OLDNEW
« no previous file with comments | « pylib/gyp/generator/ninja.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698