diff options
Diffstat (limited to 'test/site_scons')
-rw-r--r-- | test/site_scons/basic.py | 69 | ||||
-rw-r--r-- | test/site_scons/no-site-dir.py | 82 | ||||
-rw-r--r-- | test/site_scons/nonexistent.py | 47 | ||||
-rw-r--r-- | test/site_scons/override.py | 62 | ||||
-rw-r--r-- | test/site_scons/site-dir.py | 73 |
5 files changed, 333 insertions, 0 deletions
diff --git a/test/site_scons/basic.py b/test/site_scons/basic.py new file mode 100644 index 0000000..ed2e1d5 --- /dev/null +++ b/test/site_scons/basic.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python +# +# __COPYRIGHT__ +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import TestSCons + +""" +Verify basic functionality of the site_scons dir and +site_scons/site_init.py file: +Make sure the site_scons/site_init.py file gets loaded, +and make sure a tool can be loaded from the site_scons/site_tools subdir, +even when executing out of a subdirectory. +""" + +test = TestSCons.TestSCons() + +test.subdir('site_scons', ['site_scons', 'site_tools']) + +test.write(['site_scons', 'site_init.py'], """ +from SCons.Script import * +print "Hi there, I am in site_scons/site_init.py!" +""") + +test.write(['site_scons', 'site_tools', 'mytool.py'], """ +import SCons.Tool +def generate(env): + env['MYTOOL']='mytool' +def exists(env): + return 1 +""") + + +test.write('SConstruct', """ +e=Environment(tools=['default', 'mytool']) +print e.subst('My site tool is $MYTOOL') +""") + +test.run(arguments = '-Q .', + stdout = """Hi there, I am in site_scons/site_init.py! +My site tool is mytool +scons: `.' is up to date.\n""") + + + +test.pass_test() + +# end of file diff --git a/test/site_scons/no-site-dir.py b/test/site_scons/no-site-dir.py new file mode 100644 index 0000000..6f2f26e --- /dev/null +++ b/test/site_scons/no-site-dir.py @@ -0,0 +1,82 @@ +#!/usr/bin/env python +# +# __COPYRIGHT__ +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +""" +Verify use of the --no-site-dir option: +the site_scons/site_init.py script should NOT be loaded. +""" + +import TestSCons + +test = TestSCons.TestSCons() + +test.subdir('site_scons', ['site_scons', 'site_tools']) + +test.write(['site_scons', 'site_init.py'], """ +from SCons.Script import * +print "Hi there, I am in site_scons/site_init.py!" +""") + +test.write(['site_scons', 'site_tools', 'mytool.py'], """ +import SCons.Tool +def generate(env): + env['MYTOOL']='mytool' +def exists(env): + return 1 +""") + +test.write(['site_scons', 'site_tools', 'm4.py'], """ +import SCons.Tool +def generate(env): + env['M4']='my_m4' + env['M4_MINE']=1 +def exists(env): + return 1 +""") + +test.write('SConstruct', """ +e=Environment() +""") + +test.run(arguments = '-Q --no-site-dir .', + stdout = "scons: `.' is up to date.\n") + +# With --no-site-dir, shouldn't override default m4 tool + +test.write('SConstruct', """ +e=Environment() +print e.subst('no site: M4 is $M4, M4_MINE is $M4_MINE') +""") + +test.run(arguments = '-Q --no-site-dir .', +stdout = """no site: M4 is m4, M4_MINE is +scons: `.' is up to date.\n""") + + + +test.pass_test() + +# end of file diff --git a/test/site_scons/nonexistent.py b/test/site_scons/nonexistent.py new file mode 100644 index 0000000..2185304 --- /dev/null +++ b/test/site_scons/nonexistent.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python +# +# __COPYRIGHT__ +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +""" +Verify that specifying --site-dir= with a nonexistent directory +gives an error and nonzero status. +""" + +import TestSCons + +test = TestSCons.TestSCons() + +test.write('SConstruct', "\n") + +test.run(arguments = '-Q --site-dir=whatever .', + stderr = r".*site dir .*whatever not found.*", + status = 2, + match = TestSCons.match_re_dotall) + + + +test.pass_test() + +# end of file diff --git a/test/site_scons/override.py b/test/site_scons/override.py new file mode 100644 index 0000000..ebe56a6 --- /dev/null +++ b/test/site_scons/override.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python +# +# __COPYRIGHT__ +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + + +""" +Verify that a that a tool module in site_tools overrides base tool. + +Use 'm4' as test tool since it's likely to be found, +and not commonly overridden by platform-specific stuff the way cc is. +""" + +import TestSCons + +test = TestSCons.TestSCons() + +test.subdir('site_scons', ['site_scons', 'site_tools']) + +test.write(['site_scons', 'site_tools', 'm4.py'], """ +import SCons.Tool +def generate(env): + env['M4']='my_m4' + env['M4_MINE']=1 +def exists(env): + return 1 +""") + +test.write('SConstruct', """ +e=Environment() +print e.subst('M4 is $M4, M4_MINE is $M4_MINE') +""") +test.run(arguments = '-Q .', + stdout = """M4 is my_m4, M4_MINE is 1 +scons: `.' is up to date.\n""") + + + +test.pass_test() + +# end of file diff --git a/test/site_scons/site-dir.py b/test/site_scons/site-dir.py new file mode 100644 index 0000000..a05817e --- /dev/null +++ b/test/site_scons/site-dir.py @@ -0,0 +1,73 @@ +#!/usr/bin/env python +# +# __COPYRIGHT__ +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +""" +Verify that --site-dir=otherdir loads the site_init.py script +from the other dir; +the usual site_scons/site_init.py should NOT be loaded. +""" + +import TestSCons + +test = TestSCons.TestSCons() + +test.subdir('site_scons', ['site_scons', 'site_tools']) + +test.write(['site_scons', 'site_init.py'], """ +from SCons.Script import * +print "Hi there, I am in site_scons/site_init.py!" +""") + +test.write(['site_scons', 'site_tools', 'mytool.py'], """ +import SCons.Tool +def generate(env): + env['MYTOOL']='mytool' +def exists(env): + return 1 +""") + + + +test.subdir('alt_site', ['alt_site', 'site_tools']) + +test.write(['alt_site', 'site_init.py'], """ +from SCons.Script import * +print "Hi there, I am in alt_site/site_init.py!" +""") + +test.write('SConstruct', """ +e=Environment() +""") + +test.run(arguments = '-Q --site-dir=alt_site .', + stdout = """Hi there, I am in alt_site/site_init.py! +scons: `.' is up to date.\n""") + + + +test.pass_test() + +# end of file |