diff options
| author | William Deegan <bill@baddogconsulting.com> | 2015-09-21 17:03:12 (GMT) |
|---|---|---|
| committer | William Deegan <bill@baddogconsulting.com> | 2015-09-21 17:03:12 (GMT) |
| commit | 0941093e0e5a030faa49968457638a3a6aee7ad8 (patch) | |
| tree | 6d33513c14eb6eac0531dd050de0ecca4c39bd79 /test/scons-time/run | |
| download | SCons-2.4.0.zip SCons-2.4.0.tar.gz SCons-2.4.0.tar.bz2 | |
release 2.4.02.4.0
Diffstat (limited to 'test/scons-time/run')
26 files changed, 1829 insertions, 0 deletions
diff --git a/test/scons-time/run/aegis.py b/test/scons-time/run/aegis.py new file mode 100644 index 0000000..09c6aad --- /dev/null +++ b/test/scons-time/run/aegis.py @@ -0,0 +1,79 @@ +#!/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 the ability to "check out" an SCons delta from a fake +Aegis utility. +""" + +import re + +import TestSCons_time + +test = TestSCons_time.TestSCons_time() + +test.write_sample_project('foo.tar') + +my_aegis_py = test.write_fake_aegis_py('my_aegis.py') + +test.write('config', """\ +aegis = r'%(my_aegis_py)s' +""" % locals()) + +test.run(arguments = 'run -f config --aegis xyzzy.0.1 --number 321,329 foo.tar') + +test.must_exist('foo-321-0.log', + 'foo-321-0.prof', + 'foo-321-1.log', + 'foo-321-1.prof', + 'foo-321-2.log', + 'foo-321-2.prof') + +test.must_exist('foo-329-0.log', + 'foo-329-0.prof', + 'foo-329-1.log', + 'foo-329-1.prof', + 'foo-329-2.log', + 'foo-329-2.prof') + +expect = [ + test.tempdir_re('src', 'script', 'scons.py'), + 'SCONS_LIB_DIR = %s' % test.tempdir_re('src', 'engine'), +] + +content = test.read(test.workpath('foo-321-2.log')) + +def re_find(content, line): + return re.search(line, content) +test.must_contain_all_lines(content, expect, 'foo-617-2.log', re_find) + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/scons-time/run/archive/dir.py b/test/scons-time/run/archive/dir.py new file mode 100644 index 0000000..590d568 --- /dev/null +++ b/test/scons-time/run/archive/dir.py @@ -0,0 +1,55 @@ +#!/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 basic generation of timing information from an input fake-project +directory tree. +""" + +import TestSCons_time + +test = TestSCons_time.TestSCons_time() + +test.write_fake_scons_py() + +test.write_sample_project('foo') + +test.run(arguments = 'run foo') + +test.must_exist('foo-000-0.log', + 'foo-000-0.prof', + 'foo-000-1.log', + 'foo-000-1.prof', + 'foo-000-2.log', + 'foo-000-2.prof') + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/scons-time/run/archive/tar-gz.py b/test/scons-time/run/archive/tar-gz.py new file mode 100644 index 0000000..af11c33 --- /dev/null +++ b/test/scons-time/run/archive/tar-gz.py @@ -0,0 +1,55 @@ +#!/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 basic generation of timing information from an input fake-project +.tar.gz file. +""" + +import TestSCons_time + +test = TestSCons_time.TestSCons_time() + +test.write_fake_scons_py() + +test.write_sample_project('foo.tar.gz') + +test.run(arguments = 'run foo.tar.gz') + +test.must_exist('foo-000-0.log', + 'foo-000-0.prof', + 'foo-000-1.log', + 'foo-000-1.prof', + 'foo-000-2.log', + 'foo-000-2.prof') + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/scons-time/run/archive/tar.py b/test/scons-time/run/archive/tar.py new file mode 100644 index 0000000..a85dacf --- /dev/null +++ b/test/scons-time/run/archive/tar.py @@ -0,0 +1,55 @@ +#!/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 basic generation of timing information from an input fake-project +.tar file. +""" + +import TestSCons_time + +test = TestSCons_time.TestSCons_time() + +test.write_fake_scons_py() + +test.write_sample_project('foo.tar') + +test.run(arguments = 'run foo.tar') + +test.must_exist('foo-000-0.log', + 'foo-000-0.prof', + 'foo-000-1.log', + 'foo-000-1.prof', + 'foo-000-2.log', + 'foo-000-2.prof') + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/scons-time/run/archive/tgz.py b/test/scons-time/run/archive/tgz.py new file mode 100644 index 0000000..c349e02 --- /dev/null +++ b/test/scons-time/run/archive/tgz.py @@ -0,0 +1,55 @@ +#!/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 basic generation of timing information from an input fake-project +.tgz file. +""" + +import TestSCons_time + +test = TestSCons_time.TestSCons_time() + +test.write_fake_scons_py() + +test.write_sample_project('foo.tgz') + +test.run(arguments = 'run foo.tgz') + +test.must_exist('foo-000-0.log', + 'foo-000-0.prof', + 'foo-000-1.log', + 'foo-000-1.prof', + 'foo-000-2.log', + 'foo-000-2.prof') + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/scons-time/run/archive/zip.py b/test/scons-time/run/archive/zip.py new file mode 100644 index 0000000..4620440 --- /dev/null +++ b/test/scons-time/run/archive/zip.py @@ -0,0 +1,57 @@ +#!/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 basic generation of timing information from an input fake-project +.zip file. +""" + +import sys + +import TestSCons_time + +test = TestSCons_time.TestSCons_time() + +test.write_fake_scons_py() + +test.write_sample_project('foo.zip') + +test.run(arguments = 'run foo.zip') + +test.must_exist('foo-000-0.log', + 'foo-000-0.prof', + 'foo-000-1.log', + 'foo-000-1.prof', + 'foo-000-2.log', + 'foo-000-2.prof') + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/scons-time/run/config/archive_list.py b/test/scons-time/run/config/archive_list.py new file mode 100644 index 0000000..d393a69 --- /dev/null +++ b/test/scons-time/run/config/archive_list.py @@ -0,0 +1,83 @@ +#!/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 specifying a list of archives through the archive_list setting +in a config file. +""" + +import TestSCons_time + +test = TestSCons_time.TestSCons_time() + +test.write_fake_scons_py() + +test.write_sample_project('foo.tar.gz') + +test.write('config', """\ +archive_list = ['foo.tar.gz', 'foo-file'] +""") + +test.write('foo-file', "foo-file\n") + +test.run(arguments = 'run -f config') + +test.must_exist('foo-000-0.log', + 'foo-000-0.prof', + 'foo-000-1.log', + 'foo-000-1.prof', + 'foo-000-2.log', + 'foo-000-2.prof') + +test.must_exist('foo-file') + + +test.write_sample_project('bar.tar.gz') + +test.run(arguments = 'run -f config bar.tar.gz') + +test.must_not_exist('foo-001-0.log', + 'foo-001-0.prof', + 'foo-001-1.log', + 'foo-001-1.prof', + 'foo-001-2.log', + 'foo-001-2.prof') + +test.must_exist('bar-000-0.log', + 'bar-000-0.prof', + 'bar-000-1.log', + 'bar-000-1.prof', + 'bar-000-2.log', + 'bar-000-2.prof') + + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/scons-time/run/config/initial_commands.py b/test/scons-time/run/config/initial_commands.py new file mode 100644 index 0000000..167ed49 --- /dev/null +++ b/test/scons-time/run/config/initial_commands.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 specifying a list of initial commands through a config file. +""" + +import TestSCons_time + +test = TestSCons_time.TestSCons_time() + +test.write_fake_scons_py() + +test.write_sample_project('foo.tar.gz') + +test.write('config', """\ +def touch(arg): + open(arg, 'w') +initial_commands = [(touch, 'touch %%%%s', r'%s')] +""" % test.workpath('INITIAL')) + +test.run(arguments = 'run -f config foo.tar.gz') + +test.must_exist('foo-000-0.log', + 'foo-000-0.prof', + 'foo-000-1.log', + 'foo-000-1.prof', + 'foo-000-2.log', + 'foo-000-2.prof') + +test.must_exist('INITIAL') + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/scons-time/run/config/prefix.py b/test/scons-time/run/config/prefix.py new file mode 100644 index 0000000..5ef673b --- /dev/null +++ b/test/scons-time/run/config/prefix.py @@ -0,0 +1,58 @@ +#!/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 specifying an alternate file prefix through a config file. +""" + +import TestSCons_time + +test = TestSCons_time.TestSCons_time() + +test.write_fake_scons_py() + +test.write_sample_project('foo.tar.gz') + +test.write('config', """\ +prefix = 'bar' +""") + +test.run(arguments = 'run -f config foo.tar.gz') + +test.must_exist('bar-000-0.log', + 'bar-000-0.prof', + 'bar-000-1.log', + 'bar-000-1.prof', + 'bar-000-2.log', + 'bar-000-2.prof') + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/scons-time/run/config/python.py b/test/scons-time/run/config/python.py new file mode 100644 index 0000000..6cf965b --- /dev/null +++ b/test/scons-time/run/config/python.py @@ -0,0 +1,74 @@ +#!/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 specifying an alternate Python executable in a config file. +""" + +import os + +import TestSCons_time + +test = TestSCons_time.TestSCons_time() + +test.write_sample_project('foo.tar.gz') + +my_python_py = test.workpath('my_python.py') + +test.write('config', """\ +python = r'%(my_python_py)s' +""" % locals()) + +test.write(my_python_py, """\ +#!/usr/bin/env python +import sys +profile = '' +for arg in sys.argv[1:]: + if arg.startswith('--profile='): + profile = arg[10:] + break +print 'my_python.py: %s' % profile +""") + +os.chmod(my_python_py, 0755) + +test.run(arguments = 'run -f config foo.tar.gz') + +prof0 = test.workpath('foo-000-0.prof') +prof1 = test.workpath('foo-000-1.prof') +prof2 = test.workpath('foo-000-2.prof') + +test.must_match('foo-000-0.log', "my_python.py: %s\n" % prof0) +test.must_match('foo-000-1.log', "my_python.py: %s\n" % prof1) +test.must_match('foo-000-2.log', "my_python.py: %s\n" % prof2) + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/scons-time/run/config/scons.py b/test/scons-time/run/config/scons.py new file mode 100644 index 0000000..73f041d --- /dev/null +++ b/test/scons-time/run/config/scons.py @@ -0,0 +1,70 @@ +#!/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 specifying an alternate SCons through a config file. +""" + + +import TestSCons_time + +test = TestSCons_time.TestSCons_time() + +test.write_sample_project('foo.tar.gz') + +my_scons_py = test.workpath('my_scons.py') + +test.write('config', """\ +scons = r'%(my_scons_py)s' +""" % locals()) + +test.write(my_scons_py, """\ +import sys +profile = '' +for arg in sys.argv[1:]: + if arg.startswith('--profile='): + profile = arg[10:] + break +print 'my_scons.py: %s' % profile +""") + +test.run(arguments = 'run -f config foo.tar.gz') + +prof0 = test.workpath('foo-000-0.prof') +prof1 = test.workpath('foo-000-1.prof') +prof2 = test.workpath('foo-000-2.prof') + +test.must_match('foo-000-0.log', "my_scons.py: %s\n" % prof0) +test.must_match('foo-000-1.log', "my_scons.py: %s\n" % prof1) +test.must_match('foo-000-2.log', "my_scons.py: %s\n" % prof2) + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/scons-time/run/config/subdir.py b/test/scons-time/run/config/subdir.py new file mode 100644 index 0000000..1d7ca8e --- /dev/null +++ b/test/scons-time/run/config/subdir.py @@ -0,0 +1,71 @@ +#!/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 picking up the subdir value from a config file. +""" + +import os +import re + +import TestSCons_time + +test = TestSCons_time.TestSCons_time() + +test.write_fake_scons_py() + +test.write_sample_project('foo.tar.gz', 'subdir') + +test.write('config', """\ +subdir = 'subdir' +""") + +test.run(arguments = 'run -f config foo.tar.gz') + +test.must_exist('foo-000-0.log', + 'foo-000-0.prof', + 'foo-000-1.log', + 'foo-000-1.prof', + 'foo-000-2.log', + 'foo-000-2.prof') + +content = test.read(test.workpath('foo-000-0.log'), mode='r') + +expect = [ + 'SConstruct file directory: .*%ssubdir$' % re.escape(os.sep), +] + +def re_find(content, line): + return re.search(line, content) +test.must_contain_all_lines(content, expect, 'foo-000-0.log', re_find) + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/scons-time/run/config/targets.py b/test/scons-time/run/config/targets.py new file mode 100644 index 0000000..482a44d --- /dev/null +++ b/test/scons-time/run/config/targets.py @@ -0,0 +1,92 @@ +#!/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 specifying a list of targets through a config file. +""" + +import os +import re + +import TestSCons_time + +test = TestSCons_time.TestSCons_time(match = TestSCons_time.match_re) + +test.write_fake_scons_py() + +test.write_sample_project('foo.tar.gz') + +test.write('config', """\ +targets = 'target1 target2' +""") + +test.run(arguments = 'run -f config foo.tar.gz') + +scons_py = re.escape(test.workpath('src', 'script', 'scons.py')) +src_engine = re.escape(test.workpath('src', 'engine')) + +prof1 = re.escape(test.workpath('foo-000-1.prof')) +prof2 = re.escape(test.workpath('foo-000-2.prof')) + +sep = re.escape(os.sep) + +expect = """\ +%(scons_py)s + --debug=count + --debug=memory + --debug=time + --debug=memoizer + --profile=%(prof1)s + target1 + target2 +SCONS_LIB_DIR = %(src_engine)s +SConstruct file directory: .*scons-time-.*%(sep)sfoo +""" % locals() + +test.must_match('foo-000-1.log', expect, mode='r') + +expect = """\ +%(scons_py)s + --debug=count + --debug=memory + --debug=time + --debug=memoizer + --profile=%(prof2)s + target1 + target2 +SCONS_LIB_DIR = %(src_engine)s +SConstruct file directory: .*scons-time-.*%(sep)sfoo +""" % locals() + +test.must_match('foo-000-2.log', expect, mode='r') + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/scons-time/run/option/help.py b/test/scons-time/run/option/help.py new file mode 100644 index 0000000..d7f2b29 --- /dev/null +++ b/test/scons-time/run/option/help.py @@ -0,0 +1,65 @@ +#!/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 the run -h option (and variants) prints help. +""" + +import TestSCons_time + +test = TestSCons_time.TestSCons_time() + +expect = [ + "Usage: scons-time run [OPTIONS] [FILE ...]\n", + " -h, --help Print this help and exit\n", + " -n, --no-exec No execute, just print command lines\n", + " -q, --quiet Don't print command lines\n", + " -v, --verbose Display output of commands\n", +] + +test.run(arguments = 'run -h') + +test.must_contain_all_lines(test.stdout(), expect) + +test.run(arguments = 'run -?') + +test.must_contain_all_lines(test.stdout(), expect) + +test.run(arguments = 'run --help') + +test.must_contain_all_lines(test.stdout(), expect) + +test.run(arguments = 'help run') + +test.must_contain_all_lines(test.stdout(), expect) + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/scons-time/run/option/next-run.py b/test/scons-time/run/option/next-run.py new file mode 100644 index 0000000..7e729cb --- /dev/null +++ b/test/scons-time/run/option/next-run.py @@ -0,0 +1,105 @@ +#!/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 the script finds the next run number based on the +contents of the directory, even when specified with --outdir. +""" + +import TestSCons_time + +test = TestSCons_time.TestSCons_time() + +test.subdir('sub') + +test.write_fake_scons_py() + +test.write_sample_project('foo.tar.gz') + +test.run(arguments = 'run foo.tar.gz') + +test.must_exist('foo-000-0.log', + 'foo-000-0.prof', + 'foo-000-1.log', + 'foo-000-1.prof', + 'foo-000-2.log', + 'foo-000-2.prof') + +test.must_not_exist('foo-001-0.log', + 'foo-001-0.prof', + 'foo-001-1.log', + 'foo-001-1.prof', + 'foo-001-2.log', + 'foo-001-2.prof') + +test.run(arguments = 'run foo.tar.gz') + +test.must_exist('foo-001-0.log', + 'foo-001-0.prof', + 'foo-001-1.log', + 'foo-001-1.prof', + 'foo-001-2.log', + 'foo-001-2.prof') + +test.must_not_exist('foo-002-0.log', + 'foo-002-0.prof', + 'foo-002-1.log', + 'foo-002-1.prof', + 'foo-002-2.log', + 'foo-002-2.prof') + +test.run(arguments = 'run foo.tar.gz') + +test.must_exist('foo-002-0.log', + 'foo-002-0.prof', + 'foo-002-1.log', + 'foo-002-1.prof', + 'foo-002-2.log', + 'foo-002-2.prof') + +test.run(arguments = 'run --outdir sub foo.tar.gz') + +test.must_exist(['sub', 'foo-000-0.log'], + ['sub', 'foo-000-0.prof'], + ['sub', 'foo-000-1.log'], + ['sub', 'foo-000-1.prof'], + ['sub', 'foo-000-2.log'], + ['sub', 'foo-000-2.prof']) + +test.must_not_exist('foo-003-0.log', + 'foo-003-0.prof', + 'foo-003-1.log', + 'foo-003-1.prof', + 'foo-003-2.log', + 'foo-003-2.prof') + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/scons-time/run/option/no-args.py b/test/scons-time/run/option/no-args.py new file mode 100644 index 0000000..e01f24b --- /dev/null +++ b/test/scons-time/run/option/no-args.py @@ -0,0 +1,48 @@ +#!/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 the error when the run command is passed no arguments. +""" + +import TestSCons_time + +test = TestSCons_time.TestSCons_time() + +expect = """\ +scons-time: run: No arguments or -f config file specified. + Type "scons-time help run" for help. +""" + +test.run(arguments = 'run', status = 1, stderr = expect) + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/scons-time/run/option/no-exec.py b/test/scons-time/run/option/no-exec.py new file mode 100644 index 0000000..db6757c --- /dev/null +++ b/test/scons-time/run/option/no-exec.py @@ -0,0 +1,55 @@ +#!/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 the run -n and --no-exec options don't actually create the +expected output files. +""" + +import TestSCons_time + +test = TestSCons_time.TestSCons_time() + +test.write_sample_project('foo.tar.gz') + +test.run(arguments = 'run -n foo.tar.gz') + +test.run(arguments = 'run --no-exec foo.tar.gz') + +test.must_not_exist('foo-000-0.log', + 'foo-000-0.prof', + 'foo-000-1.log', + 'foo-000-1.prof', + 'foo-000-2.log', + 'foo-000-2.prof') + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/scons-time/run/option/number.py b/test/scons-time/run/option/number.py new file mode 100644 index 0000000..0e87c2d --- /dev/null +++ b/test/scons-time/run/option/number.py @@ -0,0 +1,54 @@ +#!/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 the run --number option specifies the run number. +""" + +import TestSCons_time + +test = TestSCons_time.TestSCons_time() + +test.write_fake_scons_py() + +test.write_sample_project('foo.tar.gz') + +test.run(arguments = 'run --number 77 foo.tar.gz') + +test.must_exist('foo-077-0.log', + 'foo-077-0.prof', + 'foo-077-1.log', + 'foo-077-1.prof', + 'foo-077-2.log', + 'foo-077-2.prof') + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/scons-time/run/option/outdir.py b/test/scons-time/run/option/outdir.py new file mode 100644 index 0000000..370974b --- /dev/null +++ b/test/scons-time/run/option/outdir.py @@ -0,0 +1,57 @@ + +#!/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 specifying an alternate output directory with the --outdir option. +""" + +import TestSCons_time + +test = TestSCons_time.TestSCons_time() + +test.subdir('sub') + +test.write_fake_scons_py() + +test.write_sample_project('foo.tar.gz') + +test.run(arguments = 'run --outdir sub foo.tar.gz') + +test.must_exist(['sub', 'foo-000-0.log'], + ['sub', 'foo-000-0.prof'], + ['sub', 'foo-000-1.log'], + ['sub', 'foo-000-1.prof'], + ['sub', 'foo-000-2.log'], + ['sub', 'foo-000-2.prof']) + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/scons-time/run/option/prefix.py b/test/scons-time/run/option/prefix.py new file mode 100644 index 0000000..df13cd0 --- /dev/null +++ b/test/scons-time/run/option/prefix.py @@ -0,0 +1,54 @@ +#!/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 specifying an alternate file prefix with the --prefix option. +""" + +import TestSCons_time + +test = TestSCons_time.TestSCons_time() + +test.write_fake_scons_py() + +test.write_sample_project('foo.tar.gz') + +test.run(arguments = 'run --prefix bar foo.tar.gz') + +test.must_exist('bar-000-0.log', + 'bar-000-0.prof', + 'bar-000-1.log', + 'bar-000-1.prof', + 'bar-000-2.log', + 'bar-000-2.prof') + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/scons-time/run/option/python.py b/test/scons-time/run/option/python.py new file mode 100644 index 0000000..a28e23f --- /dev/null +++ b/test/scons-time/run/option/python.py @@ -0,0 +1,70 @@ +#!/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 the run --python option to specify an alternatie Python executable. +""" + +import os + +import TestSCons_time + +test = TestSCons_time.TestSCons_time() + +test.write_sample_project('foo.tar.gz') + +my_python_py = test.workpath('my_python.py') + +test.write(my_python_py, """\ +#!/usr/bin/env python +import sys +profile = '' +for arg in sys.argv[1:]: + if arg.startswith('--profile='): + profile = arg[10:] + break +sys.stdout.write('my_python.py: %s\\n' % profile) +""") + +os.chmod(my_python_py, 0755) + +test.run(arguments = 'run --python %s foo.tar.gz' % my_python_py) + +prof0 = test.workpath('foo-000-0.prof') +prof1 = test.workpath('foo-000-1.prof') +prof2 = test.workpath('foo-000-2.prof') + +test.must_match('foo-000-0.log', "my_python.py: %s\n" % prof0) +test.must_match('foo-000-1.log', "my_python.py: %s\n" % prof1) +test.must_match('foo-000-2.log', "my_python.py: %s\n" % prof2) + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/scons-time/run/option/quiet.py b/test/scons-time/run/option/quiet.py new file mode 100644 index 0000000..2910e8e --- /dev/null +++ b/test/scons-time/run/option/quiet.py @@ -0,0 +1,88 @@ +#!/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 the run -q and --quiet options suppress build output. +""" + +import re + +import TestSCons_time + +python = TestSCons_time.python + +test = TestSCons_time.TestSCons_time(match = TestSCons_time.match_re, + diff = TestSCons_time.diff_re) + +scons_py = re.escape(test.workpath('src', 'script', 'scons.py')) +src_engine = re.escape(test.workpath('src', 'engine')) + +tmp_scons_time = test.tempdir_re() +tmp_scons_time_foo = test.tempdir_re('foo') + + +test.write_fake_scons_py() + +foo_tar_gz = test.write_sample_project('foo.tar.gz') + +expect = """\ +%(scons_py)s + --version +SCONS_LIB_DIR = %(src_engine)s +SConstruct file directory: %(tmp_scons_time_foo)s +""" % locals() + +test.run(arguments = 'run -q foo.tar.gz', stdout = expect) + +test.must_exist('foo-000-0.log', + 'foo-000-0.prof', + 'foo-000-1.log', + 'foo-000-1.prof', + 'foo-000-2.log', + 'foo-000-2.prof') + +scons_py = test.workpath('src/script/scons.py') + +src_engine = test.workpath('src/engine') + +test.run(arguments = 'run -q foo.tar.gz', stdout = expect) + +test.must_exist('foo-001-0.log', + 'foo-001-0.prof', + 'foo-001-1.log', + 'foo-001-1.prof', + 'foo-001-2.log', + 'foo-001-2.prof') + +test.run(arguments = 'run --quiet foo.tar.gz', stdout = expect) + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/scons-time/run/option/scons.py b/test/scons-time/run/option/scons.py new file mode 100644 index 0000000..0bf883b --- /dev/null +++ b/test/scons-time/run/option/scons.py @@ -0,0 +1,65 @@ +#!/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 the run --scons option to specify an alternatie SCons script. +""" + +import TestSCons_time + +test = TestSCons_time.TestSCons_time() + +test.write_sample_project('foo.tar.gz') + +my_scons_py = test.workpath('my_scons.py') + +test.write(my_scons_py, """\ +import sys +profile = '' +for arg in sys.argv[1:]: + if arg.startswith('--profile='): + profile = arg[10:] + break +print 'my_scons.py: %s' % profile +""") + +test.run(arguments = 'run --scons %s foo.tar.gz' % my_scons_py) + +prof0 = test.workpath('foo-000-0.prof') +prof1 = test.workpath('foo-000-1.prof') +prof2 = test.workpath('foo-000-2.prof') + +test.must_match('foo-000-0.log', "my_scons.py: %s\n" % prof0) +test.must_match('foo-000-1.log', "my_scons.py: %s\n" % prof1) +test.must_match('foo-000-2.log', "my_scons.py: %s\n" % prof2) + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/scons-time/run/option/subdir.py b/test/scons-time/run/option/subdir.py new file mode 100644 index 0000000..ef8bc81 --- /dev/null +++ b/test/scons-time/run/option/subdir.py @@ -0,0 +1,67 @@ +#!/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 we change to a subdirectory before building if asked to do so. +""" + +import os +import re + +import TestSCons_time + +test = TestSCons_time.TestSCons_time() + +test.write_fake_scons_py() + +test.write_sample_project('foo.tar.gz', 'subdir') + +test.run(arguments = 'run --subdir subdir foo.tar.gz') + +test.must_exist('foo-000-0.log', + 'foo-000-0.prof', + 'foo-000-1.log', + 'foo-000-1.prof', + 'foo-000-2.log', + 'foo-000-2.prof') + +expect = [ + 'SConstruct file directory: .*%ssubdir$' % re.escape(os.sep), +] + +content = test.read(test.workpath('foo-000-0.log'), mode='r') + +def re_find(content, line): + return re.search(line, content) +test.must_contain_all_lines(content, expect, 'foo-000-0.log', re_find) + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/scons-time/run/option/verbose.py b/test/scons-time/run/option/verbose.py new file mode 100644 index 0000000..5fc6d64 --- /dev/null +++ b/test/scons-time/run/option/verbose.py @@ -0,0 +1,154 @@ +#!/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 the run -v and --verbose options display command output. +""" + +import sys +import re + +import TestSCons_time + +_python_ = re.escape('"' + sys.executable + '"') + + +test = TestSCons_time.TestSCons_time(match = TestSCons_time.match_re, + diff = TestSCons_time.diff_re) + +scons_py = re.escape(test.workpath('src', 'script', 'scons.py')) +src_engine = re.escape(test.workpath('src', 'engine')) + +tmp_scons_time = test.tempdir_re() +tmp_scons_time_foo = test.tempdir_re('foo') + + +test.write_fake_scons_py() + +foo_tar_gz = test.write_sample_project('foo.tar.gz') + +expect = """\ +%(scons_py)s + --version +SCONS_LIB_DIR = %(src_engine)s +SConstruct file directory: %(tmp_scons_time_foo)s +""" % locals() + +test.run(arguments = 'run -q foo.tar.gz', stdout = expect) + +test.must_exist('foo-000-0.log', + 'foo-000-0.prof', + 'foo-000-1.log', + 'foo-000-1.prof', + 'foo-000-2.log', + 'foo-000-2.prof') + +time_re = r'\[\d\d:\d\d:\d\d\]' + +scons_flags = '--debug=count --debug=memory --debug=time --debug=memoizer' + + +expect = """\ +scons-time%(time_re)s: mkdir %(tmp_scons_time)s +scons-time%(time_re)s: cd %(tmp_scons_time)s +scons-time%(time_re)s: tar xzf %(foo_tar_gz)s +scons-time%(time_re)s: cd foo +scons-time%(time_re)s: find \\* -type f | xargs cat > /dev/null +scons-time%(time_re)s: export SCONS_LIB_DIR=%(src_engine)s +scons-time%(time_re)s: %(_python_)s %(scons_py)s --version +%(scons_py)s + --version +SCONS_LIB_DIR = %(src_engine)s +SConstruct file directory: %(tmp_scons_time_foo)s +scons-time%(time_re)s: %(_python_)s %(scons_py)s %(scons_flags)s --profile=%(prof0)s --help 2>&1 \\| tee %(log0)s +%(scons_py)s + --debug=count + --debug=memory + --debug=time + --debug=memoizer + --profile=%(prof0)s + --help +SCONS_LIB_DIR = %(src_engine)s +SConstruct file directory: %(tmp_scons_time_foo)s +scons-time%(time_re)s: %(_python_)s %(scons_py)s %(scons_flags)s --profile=%(prof1)s 2>&1 \\| tee %(log1)s +%(scons_py)s + --debug=count + --debug=memory + --debug=time + --debug=memoizer + --profile=%(prof1)s +SCONS_LIB_DIR = %(src_engine)s +SConstruct file directory: %(tmp_scons_time_foo)s +scons-time%(time_re)s: %(_python_)s %(scons_py)s %(scons_flags)s --profile=%(prof2)s 2>&1 \\| tee %(log2)s +%(scons_py)s + --debug=count + --debug=memory + --debug=time + --debug=memoizer + --profile=%(prof2)s +SCONS_LIB_DIR = %(src_engine)s +SConstruct file directory: %(tmp_scons_time_foo)s +scons-time%(time_re)s: cd .* +scons-time%(time_re)s: rm -rf %(tmp_scons_time)s +""" + +foo_tar_gz = re.escape(foo_tar_gz) + +log0 = re.escape(test.workpath('foo-001-0.log')) +log1 = re.escape(test.workpath('foo-001-1.log')) +log2 = re.escape(test.workpath('foo-001-2.log')) + +prof0 = re.escape(test.workpath('foo-001-0.prof')) +prof1 = re.escape(test.workpath('foo-001-1.prof')) +prof2 = re.escape(test.workpath('foo-001-2.prof')) + +test.run(arguments = 'run -v foo.tar.gz', stdout = expect % locals()) + +test.must_exist('foo-001-0.log', + 'foo-001-0.prof', + 'foo-001-1.log', + 'foo-001-1.prof', + 'foo-001-2.log', + 'foo-001-2.prof') + +log0 = re.escape(test.workpath('foo-002-0.log')) +log1 = re.escape(test.workpath('foo-002-1.log')) +log2 = re.escape(test.workpath('foo-002-2.log')) + +prof0 = re.escape(test.workpath('foo-002-0.prof')) +prof1 = re.escape(test.workpath('foo-002-1.prof')) +prof2 = re.escape(test.workpath('foo-002-2.prof')) + +test.run(arguments = 'run --verbose foo.tar.gz', stdout = expect % locals()) + + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/scons-time/run/subversion.py b/test/scons-time/run/subversion.py new file mode 100644 index 0000000..f895760 --- /dev/null +++ b/test/scons-time/run/subversion.py @@ -0,0 +1,81 @@ +#!/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 ability to "check out" an SCons revision from a fake +Subversion utility. +""" + +import re +import tempfile + +import TestSCons_time + +test = TestSCons_time.TestSCons_time() + +test.write_sample_project('foo.tar') + +_python_ = TestSCons_time._python_ +my_svn_py = test.write_fake_svn_py('my_svn.py') + +test.write('config', """\ +svn = r'%(_python_)s %(my_svn_py)s' +""" % locals()) + +test.run(arguments = 'run -f config --svn http://xyzzy --number 617,716 foo.tar') + +test.must_exist('foo-617-0.log', + 'foo-617-0.prof', + 'foo-617-1.log', + 'foo-617-1.prof', + 'foo-617-2.log', + 'foo-617-2.prof') + +test.must_exist('foo-716-0.log', + 'foo-716-0.prof', + 'foo-716-1.log', + 'foo-716-1.prof', + 'foo-716-2.log', + 'foo-716-2.prof') + +expect = [ + test.tempdir_re('src', 'script', 'scons.py'), + 'SCONS_LIB_DIR = %s' % test.tempdir_re('src', 'engine'), +] + +content = test.read(test.workpath('foo-617-2.log'), mode='r') + +def re_find(content, line): + return re.search(line, content) +test.must_contain_all_lines(content, expect, 'foo-617-2.log', re_find) + +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: |
