Towards issue 2336: Rename the compat/builtins.py module to
[scons.git] / test / ParseConfig.py
index 108aa31392abda18a2795f86a2ea422d44c3e85c..9bcc440f4db29b1297d04ef8873a4c3ea24dcabd 100644 (file)
 
 __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
-import os
-import sys
-
 import TestSCons
 
+_python_ = TestSCons._python_
+
 test = TestSCons.TestSCons()
 
-test_config = test.workpath('test-config')
+test_config1 = test.workpath('test-config1')
+test_config2 = test.workpath('test-config2')
+test_config3 = test.workpath('test-config3')
 
-test.write('test-config', """#! /usr/bin/env python
-print "-I/usr/include/fum -Ibar -X"
+# 'abc' is supposed to be a static lib; it is included in LIBS as a
+# File node.
+# It used to be returned as the 'static_libs' output of ParseConfig.
+test.write(test_config1, """\
+print "-I/usr/include/fum -Ibar -X -arch i386"
 print "-L/usr/fax -Lfoo -lxxx abc"
 """)
 
-test.write('SConstruct', """
-env = Environment(CPPPATH = [], LIBPATH = [], LIBS = [], CCFLAGS = '')
-static_libs = env.ParseConfig([r"%s", r"%s", "--libs --cflags"])
+test.write(test_config2, """\
+print "-L foo -L lib_dir"
+""")
+
+# This is like what wxWidgets does on OSX w/ Universal Binaries
+test.write(test_config3, """\
+print "-L foo -L lib_dir -isysroot /tmp -arch ppc -arch i386"
+""")
+
+test.write('SConstruct1', """
+env = Environment(CPPPATH = [], LIBPATH = [], LIBS = [],
+                  CCFLAGS = '-pipe -Wall')
+env.ParseConfig([r'%(_python_)s', r"%(test_config1)s", "--libs --cflags"])
+env.ParseConfig([r'%(_python_)s', r"%(test_config2)s", "--libs --cflags"])
 print env['CPPPATH']
 print env['LIBPATH']
-print env['LIBS']
+print [str(x) for x in env['LIBS']]
 print env['CCFLAGS']
-print static_libs
-""" % (TestSCons.python, test_config))
+""" % locals())
 
 test.write('SConstruct2', """
-env = Environment(CPPPATH = [], LIBPATH = [], LIBS = [], CCFLAGS = '',
-                  PYTHON = '%s')
-static_libs = env.ParseConfig(r"$PYTHON %s --libs --cflags")
+env = Environment(CPPPATH = [], LIBPATH = [], LIBS = [],
+                  CCFLAGS = '-pipe -Wall',
+                  PYTHON = r'%(_python_)s')
+env.ParseConfig(r"$PYTHON %(test_config1)s --libs --cflags")
+env.ParseConfig(r"$PYTHON %(test_config2)s --libs --cflags")
 print env['CPPPATH']
 print env['LIBPATH']
-print env['LIBS']
+print [str(x) for x in env['LIBS']]
 print env['CCFLAGS']
-print static_libs
-""" % (TestSCons.python, test_config))
+""" % locals())
 
 test.write('SConstruct3', """
-env = Environment(CPPPATH = [], LIBPATH = [], LIBS = [], CCFLAGS = '')
-static_libs = ParseConfig(env, r"%s %s --libs --cflags")
+env = Environment(CPPPATH = [], LIBPATH = [], LIBS = [],
+                  CCFLAGS = '-pipe -Wall',
+                  PYTHON = r'%(_python_)s')
+env.ParseConfig(r"$PYTHON %(test_config3)s --libs --cflags")
 print env['CPPPATH']
 print env['LIBPATH']
-print env['LIBS']
+print [str(x) for x in env['LIBS']]
 print env['CCFLAGS']
-print static_libs
-""" % (TestSCons.python, test_config))
+""" % locals())
 
-good_stdout = test.wrap_stdout(read_str = """\
+good_stdout = """\
 ['/usr/include/fum', 'bar']
-['/usr/fax', 'foo']
-['xxx']
-['-X']
-['abc']
-""", build_str = "scons: `.' is up to date.\n")
-
-test.run(arguments = ".", stdout = good_stdout)
-
-test.run(arguments = "-f SConstruct2 .", stdout = good_stdout)
-
-test.run(arguments = "-f SConstruct3 .",
-         stdout = good_stdout,
-         stderr = """
-scons: warning: The ParseConfig() function has been deprecated;
-       use the env.ParseConfig() method instead.
-File "SConstruct3", line 3, in ?
-""")
+['/usr/fax', 'foo', 'lib_dir']
+['xxx', 'abc']
+['-pipe', '-Wall', '-X', ('-arch', 'i386')]
+"""
+
+stdout3 = """\
+[]
+['foo', 'lib_dir']
+[]
+['-pipe', '-Wall', ('-isysroot', '/tmp'), ('-arch', 'ppc'), ('-arch', 'i386')]
+"""
+
+test.run(arguments = "-q -Q -f SConstruct1 .", stdout = good_stdout)
+
+test.run(arguments = "-q -Q -f SConstruct2 .", stdout = good_stdout)
+
+test.run(arguments = "-q -Q -f SConstruct3 .", stdout = stdout3)
 
 test.pass_test()
+
+# Local Variables:
+# tab-width:4
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=4 shiftwidth=4: