Merged revisions 2136-2200,2202-2290,2292-2301 via svnmerge from
[scons.git] / test / packaging / msi / file-placement.py
index 08b0ba65cd2c08e6990b2678b77ccb2ef3712e44..c2aaf35654e964ffde1801bfbac00168ea5bb5c1 100644 (file)
@@ -37,17 +37,19 @@ test = TestSCons.TestSCons()
 try:
     from xml.dom.minidom import *
 except ImportError:
-    test.skip_test('Canoot import xml.dom.minidom skipping test\n')
+    test.skip_test('Cannot import xml.dom.minidom; skipping test\n')
 
 wix = test.Environment().WhereIs('candle')
 
-if wix:
-  #
-  # Test the default directory layout
-  #
-  test.write( 'file1.exe', "file1" )
+if not wix:
+    test.skip_test("No 'candle' found; skipping test\n")
 
-  test.write('SConstruct', """
+#
+# Test the default directory layout
+#
+test.write( 'file1.exe', "file1" )
+
+test.write('SConstruct', """
 env = Environment(tools=['default', 'packaging'])
 f1  = env.Install( '/bin/' , 'file1.exe'  )
 
@@ -61,28 +63,28 @@ env.Package( NAME         = 'foo',
            )
 """)
 
-  test.run(arguments='', stderr = None)
+test.run(arguments='', stderr = None)
 
-  dom  = parse( test.workpath( 'foo-1.2.wxs' ) )
-  dirs = dom.getElementsByTagName( 'Directory' )
+dom  = parse( test.workpath( 'foo-1.2.wxs' ) )
+dirs = dom.getElementsByTagName( 'Directory' )
 
-  test.fail_test( not dirs[0].attributes['Name'].value == 'SourceDir' )
-  test.fail_test( not dirs[1].attributes['Name'].value == 'PFiles' )
-  test.fail_test( not dirs[2].attributes['Name'].value == 'NANOSOF1' )
-  test.fail_test( not dirs[3].attributes['Name'].value == 'FOO-1.2' )
+test.fail_test( not dirs[0].attributes['Name'].value == 'SourceDir' )
+test.fail_test( not dirs[1].attributes['Name'].value == 'PFiles' )
+test.fail_test( not dirs[2].attributes['Name'].value == 'NANOSOF1' )
+test.fail_test( not dirs[3].attributes['Name'].value == 'FOO-1.2' )
 
-  #
-  # Try to put 7 files into 5 distinct directories of varying depth and overlapping count
-  #
-  test.write( 'file1.exe', "file1" )
-  test.write( 'file2.exe', "file2" )
-  test.write( 'file3.dll', "file3" )
-  test.write( 'file4.dll', "file4" )
-  test.write( 'file5.class', "file5" )
-  test.write( 'file6.class', "file6" )
-  test.write( 'file7.class', "file7" )
-
-  test.write('SConstruct', """
+#
+# Try to put 7 files into 5 distinct directories of varying depth and overlapping count
+#
+test.write( 'file1.exe', "file1" )
+test.write( 'file2.exe', "file2" )
+test.write( 'file3.dll', "file3" )
+test.write( 'file4.dll', "file4" )
+test.write( 'file5.class', "file5" )
+test.write( 'file6.class', "file6" )
+test.write( 'file7.class', "file7" )
+
+test.write('SConstruct', """
 env = Environment(tools=['default', 'packaging'])
 f1  = env.Install( '/bin/' , 'file1.exe'  )
 f2  = env.Install( '/bin/' , 'file2.exe'  )
@@ -103,35 +105,35 @@ env.Package( NAME         = 'foo',
             )
 """)
 
-  test.run(arguments='', stderr = None)
+test.run(arguments='', stderr = None)
 
-  dom   = parse( test.workpath( 'foo-1.2.wxs' ) )
-  files = dom.getElementsByTagName( 'File' )
+dom   = parse( test.workpath( 'foo-1.2.wxs' ) )
+files = dom.getElementsByTagName( 'File' )
 
-  test.fail_test( not files[0].parentNode.parentNode.attributes['LongName'].value == 'bin' )
-  test.fail_test( not files[1].parentNode.parentNode.attributes['LongName'].value == 'bin' )
-  test.fail_test( not files[2].parentNode.parentNode.attributes['LongName'].value == 'lib' )
-  test.fail_test( not files[3].parentNode.parentNode.attributes['LongName'].value == 'lib' )
-    
-  test.fail_test( not files[4].parentNode.parentNode.attributes['LongName'].value == 'teco' )
-  test.fail_test( not files[4].parentNode.parentNode.parentNode.attributes['LongName'].value == 'edu' )
-  test.fail_test( not files[4].parentNode.parentNode.parentNode.parentNode.attributes['LongName'].value == 'java' )
+test.fail_test( not files[0].parentNode.parentNode.attributes['LongName'].value == 'bin' )
+test.fail_test( not files[1].parentNode.parentNode.attributes['LongName'].value == 'bin' )
+test.fail_test( not files[2].parentNode.parentNode.attributes['LongName'].value == 'lib' )
+test.fail_test( not files[3].parentNode.parentNode.attributes['LongName'].value == 'lib' )
+  
+test.fail_test( not files[4].parentNode.parentNode.attributes['LongName'].value == 'teco' )
+test.fail_test( not files[4].parentNode.parentNode.parentNode.attributes['LongName'].value == 'edu' )
+test.fail_test( not files[4].parentNode.parentNode.parentNode.parentNode.attributes['LongName'].value == 'java' )
 
-  test.fail_test( not files[5].parentNode.parentNode.attributes['LongName'].value == 'teco' )
-  test.fail_test( not files[5].parentNode.parentNode.parentNode.attributes['LongName'].value == 'java' )
+test.fail_test( not files[5].parentNode.parentNode.attributes['LongName'].value == 'teco' )
+test.fail_test( not files[5].parentNode.parentNode.parentNode.attributes['LongName'].value == 'java' )
 
-  test.fail_test( not files[6].parentNode.parentNode.attributes['LongName'].value == 'tec' )
-  test.fail_test( not files[6].parentNode.parentNode.parentNode.attributes['LongName'].value == 'java' )
+test.fail_test( not files[6].parentNode.parentNode.attributes['LongName'].value == 'tec' )
+test.fail_test( not files[6].parentNode.parentNode.parentNode.attributes['LongName'].value == 'java' )
 
-  #
-  # Test distinct directories put into distinct features
-  #
-  test.write( 'file1.exe', "file1" )
-  test.write( 'file2.exe', "file2" )
-  test.write( 'file3.dll', "file3" )
-  test.write( 'file3-.dll', "file3" )
+#
+# Test distinct directories put into distinct features
+#
+test.write( 'file1.exe', "file1" )
+test.write( 'file2.exe', "file2" )
+test.write( 'file3.dll', "file3" )
+test.write( 'file3-.dll', "file3" )
 
-  test.write('SConstruct', """
+test.write('SConstruct', """
 env = Environment(tools=['default', 'packaging'])
 f1  = env.Install( '/bin/' , 'file1.exe'  )
 f2  = env.Install( '/bin/' , 'file2.exe'  )
@@ -152,21 +154,19 @@ env.Package( NAME         = 'foo',
             )
 """)
 
-  test.run(arguments='', stderr = None)
-
-  dom      = parse( test.workpath( 'foo-1.2.wxs' ) )
-  features = dom.getElementsByTagName( 'Feature' )
+test.run(arguments='', stderr = None)
 
-  test.fail_test( not features[1].attributes['Title'].value == 'Core Part' )
-  componentrefs = features[1].getElementsByTagName( 'ComponentRef' ) 
-  test.fail_test( not componentrefs[0].attributes['Id'].value == 'file1.exe' )
-  test.fail_test( not componentrefs[1].attributes['Id'].value == 'file2.exe' )
-  test.fail_test( not componentrefs[2].attributes['Id'].value == 'file3.dll1' )
+dom      = parse( test.workpath( 'foo-1.2.wxs' ) )
+features = dom.getElementsByTagName( 'Feature' )
 
-  test.fail_test( not features[2].attributes['Title'].value == 'Java Part' )
-  componentrefs = features[2].getElementsByTagName( 'ComponentRef' ) 
-  test.fail_test( not componentrefs[0].attributes['Id'].value == 'file3.dll' )
+test.fail_test( not features[1].attributes['Title'].value == 'Core Part' )
+componentrefs = features[1].getElementsByTagName( 'ComponentRef' ) 
+test.fail_test( not componentrefs[0].attributes['Id'].value == 'file1.exe' )
+test.fail_test( not componentrefs[1].attributes['Id'].value == 'file2.exe' )
+test.fail_test( not componentrefs[2].attributes['Id'].value == 'file3.dll1' )
 
-else:
-  test.no_result()
+test.fail_test( not features[2].attributes['Title'].value == 'Java Part' )
+componentrefs = features[2].getElementsByTagName( 'ComponentRef' ) 
+test.fail_test( not componentrefs[0].attributes['Id'].value == 'file3.dll' )
 
+test.pass_test()