mirror of
https://github.com/Relintai/scons_gd.git
synced 2025-02-10 16:40:14 +01:00
212 lines
6.9 KiB
Python
212 lines
6.9 KiB
Python
|
#!/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 Copy() Action symlink soft-copy support works.
|
||
|
"""
|
||
|
|
||
|
import os
|
||
|
import TestSCons
|
||
|
|
||
|
import SCons.Defaults
|
||
|
SCons.Defaults.DefaultEnvironment( tools = [] )
|
||
|
|
||
|
test = TestSCons.TestSCons()
|
||
|
|
||
|
if not test.platform_has_symlink():
|
||
|
test.skip_test('No os.symlink() method, no symlinks to test.\n')
|
||
|
|
||
|
filelinkToCopy = 'filelinkToCopy'
|
||
|
fileToLink = 'file.in'
|
||
|
fileContents = 'stuff n things\n'
|
||
|
dirToLink = 'dir'
|
||
|
dirlinkToCopy = 'dirlinkToCopy'
|
||
|
treeToLink = 'tree'
|
||
|
treelinkToCopy = 'treelinkToCopy'
|
||
|
badToLink = 'None' # do not write this item
|
||
|
badlinkToCopy = 'badlinkToCopy'
|
||
|
relToLink = os.path.join( treeToLink, fileToLink )
|
||
|
rellinkToCopy = 'relLinkToCopy'
|
||
|
|
||
|
test.symlink( fileToLink, filelinkToCopy )
|
||
|
test.symlink( dirToLink, dirlinkToCopy )
|
||
|
test.symlink( treeToLink, treelinkToCopy )
|
||
|
test.symlink( badToLink, badlinkToCopy )
|
||
|
test.symlink( relToLink, rellinkToCopy )
|
||
|
|
||
|
test.write( fileToLink, fileContents )
|
||
|
test.subdir( dirToLink )
|
||
|
test.subdir( treeToLink )
|
||
|
test.write( relToLink, fileContents )
|
||
|
|
||
|
sconstructPath = 'SConstruct'
|
||
|
sconscriptPath = os.path.join( treeToLink, 'SConscript' )
|
||
|
|
||
|
test.write( sconstructPath,
|
||
|
"""\
|
||
|
import SCons.Defaults
|
||
|
SCons.Defaults.DefaultEnvironment( tools = [] )
|
||
|
|
||
|
Execute( Copy( 'F1', '%(filelinkToCopy)s', False ) )
|
||
|
Execute( Copy( 'L1', '%(filelinkToCopy)s' ) )
|
||
|
Execute( Copy( 'L2', '%(filelinkToCopy)s', True ) )
|
||
|
|
||
|
Execute( Copy( 'D1', '%(dirlinkToCopy)s', False ) )
|
||
|
Execute( Copy( 'L3', '%(dirlinkToCopy)s' ) )
|
||
|
Execute( Copy( 'L4', '%(dirlinkToCopy)s', True ) )
|
||
|
|
||
|
Execute( Copy( 'T1', '%(treelinkToCopy)s', False ) )
|
||
|
Execute( Copy( 'L5', '%(treelinkToCopy)s' ) )
|
||
|
Execute( Copy( 'L6', '%(treelinkToCopy)s', True ) )
|
||
|
|
||
|
Execute( Copy( 'Fails', '%(badlinkToCopy)s', False ) )
|
||
|
Execute( Copy( 'L7', '%(badlinkToCopy)s' ) )
|
||
|
Execute( Copy( 'L8', '%(badlinkToCopy)s', True ) )
|
||
|
|
||
|
SConscript( '%(sconscriptPath)s' )
|
||
|
"""
|
||
|
% locals()
|
||
|
)
|
||
|
|
||
|
relLinkCopyPath = os.path.join( '..', rellinkToCopy )
|
||
|
|
||
|
test.write( sconscriptPath,
|
||
|
"""\
|
||
|
Execute( Copy( 'F2', '%(relLinkCopyPath)s', False ) )
|
||
|
Execute( Copy( 'L9', '%(relLinkCopyPath)s' ) )
|
||
|
Execute( Copy( 'L10', '%(relLinkCopyPath)s', True ) )
|
||
|
"""
|
||
|
% locals()
|
||
|
)
|
||
|
|
||
|
test.must_exist( sconstructPath )
|
||
|
test.must_exist( sconscriptPath )
|
||
|
test.must_exist( fileToLink )
|
||
|
test.must_exist( filelinkToCopy )
|
||
|
test.must_exist( dirlinkToCopy )
|
||
|
test.must_exist( treelinkToCopy )
|
||
|
test.must_not_exist( badToLink )
|
||
|
test.must_exist( badlinkToCopy )
|
||
|
test.must_exist( rellinkToCopy )
|
||
|
|
||
|
expectStdout = test.wrap_stdout(
|
||
|
read_str =
|
||
|
'''\
|
||
|
Copy("F1", "%(filelinkToCopy)s")
|
||
|
Copy("L1", "%(filelinkToCopy)s")
|
||
|
Copy("L2", "%(filelinkToCopy)s")
|
||
|
Copy("D1", "%(dirlinkToCopy)s")
|
||
|
Copy("L3", "%(dirlinkToCopy)s")
|
||
|
Copy("L4", "%(dirlinkToCopy)s")
|
||
|
Copy("T1", "%(treelinkToCopy)s")
|
||
|
Copy("L5", "%(treelinkToCopy)s")
|
||
|
Copy("L6", "%(treelinkToCopy)s")
|
||
|
Copy("Fails", "%(badlinkToCopy)s")
|
||
|
Copy("L7", "%(badlinkToCopy)s")
|
||
|
Copy("L8", "%(badlinkToCopy)s")
|
||
|
Copy("F2", "%(relLinkCopyPath)s")
|
||
|
Copy("L9", "%(relLinkCopyPath)s")
|
||
|
Copy("L10", "%(relLinkCopyPath)s")
|
||
|
''' % locals(),
|
||
|
build_str =
|
||
|
'''\
|
||
|
scons: `.' is up to date.
|
||
|
'''
|
||
|
)
|
||
|
|
||
|
expectStderr = \
|
||
|
'''\
|
||
|
scons: *** %s: No such file or directory
|
||
|
''' % os.path.join( os.getcwd(), badToLink )
|
||
|
|
||
|
test.run( stdout = expectStdout, stderr = expectStderr, status = None )
|
||
|
|
||
|
F2 = os.path.join( treeToLink, 'F2' )
|
||
|
L9 = os.path.join( treeToLink, 'L9' )
|
||
|
L10 = os.path.join( treeToLink, 'L10' )
|
||
|
|
||
|
test.must_exist('D1')
|
||
|
test.must_exist('F1')
|
||
|
test.must_exist( F2 )
|
||
|
test.must_exist('L2')
|
||
|
test.must_exist('L3')
|
||
|
test.must_exist('L4')
|
||
|
test.must_exist('L5')
|
||
|
test.must_exist('L6')
|
||
|
test.must_exist('L7')
|
||
|
test.must_exist('L8')
|
||
|
test.must_exist( L9 )
|
||
|
test.must_exist( L10 )
|
||
|
test.must_exist('T1')
|
||
|
test.must_not_exist( 'Fails' )
|
||
|
|
||
|
test.must_match( fileToLink, fileContents )
|
||
|
test.must_match( 'F1', fileContents )
|
||
|
test.must_match( F2 , fileContents )
|
||
|
test.must_match( 'L1', fileContents )
|
||
|
test.must_match( 'L2', fileContents )
|
||
|
test.must_match( os.path.join( treeToLink, fileToLink ), fileContents )
|
||
|
|
||
|
test.fail_test( condition=os.path.islink('D1') )
|
||
|
test.fail_test( condition=os.path.islink('F1') )
|
||
|
test.fail_test( condition=os.path.islink( F2 ) )
|
||
|
test.fail_test( condition=os.path.islink('T1') )
|
||
|
test.fail_test( condition=(not os.path.isdir('D1')) )
|
||
|
test.fail_test( condition=(not os.path.isfile('F1')) )
|
||
|
test.fail_test( condition=(not os.path.isdir('T1')) )
|
||
|
test.fail_test( condition=(not os.path.islink('L1')) )
|
||
|
test.fail_test( condition=(not os.path.islink('L2')) )
|
||
|
test.fail_test( condition=(not os.path.islink('L3')) )
|
||
|
test.fail_test( condition=(not os.path.islink('L4')) )
|
||
|
test.fail_test( condition=(not os.path.islink('L5')) )
|
||
|
test.fail_test( condition=(not os.path.islink('L6')) )
|
||
|
test.fail_test( condition=(not os.path.islink('L7')) )
|
||
|
test.fail_test( condition=(not os.path.islink('L8')) )
|
||
|
test.fail_test( condition=(not os.path.islink( L9 )) )
|
||
|
test.fail_test( condition=(not os.path.islink( L10 )) )
|
||
|
test.fail_test( condition=(os.path.exists('L7')) )
|
||
|
test.fail_test( condition=(os.path.exists('L8')) )
|
||
|
test.fail_test( condition=(os.path.exists( L9 )) )
|
||
|
test.fail_test( condition=(os.path.exists( L10 )) )
|
||
|
test.fail_test( condition=(os.readlink(filelinkToCopy) != os.readlink('L1')) )
|
||
|
test.fail_test( condition=(os.readlink(filelinkToCopy) != os.readlink('L2')) )
|
||
|
test.fail_test( condition=(os.readlink(dirlinkToCopy) != os.readlink('L3')) )
|
||
|
test.fail_test( condition=(os.readlink(dirlinkToCopy) != os.readlink('L4')) )
|
||
|
test.fail_test( condition=(os.readlink(treelinkToCopy) != os.readlink('L5')) )
|
||
|
test.fail_test( condition=(os.readlink(treelinkToCopy) != os.readlink('L6')) )
|
||
|
test.fail_test( condition=(os.readlink(badlinkToCopy) != os.readlink('L7')) )
|
||
|
test.fail_test( condition=(os.readlink(badlinkToCopy) != os.readlink('L8')) )
|
||
|
test.fail_test( condition=(os.readlink(rellinkToCopy) != os.readlink( L9 )) )
|
||
|
test.fail_test( condition=(os.readlink(rellinkToCopy) != os.readlink( L10 )) )
|
||
|
|
||
|
test.pass_test()
|
||
|
|
||
|
# Local Variables:
|
||
|
# tab-width:4
|
||
|
# indent-tabs-mode:nil
|
||
|
# End:
|
||
|
# vim: set expandtab tabstop=4 shiftwidth=4:
|