############################################################################### # # installer.eagle -- # # Written by Joe Mistachkin. # Released to the public domain, use at your own risk! # ############################################################################### package require Eagle package require Eagle.Library package require Eagle.Test runTestPrologue ############################################################################### package require System.Data.SQLite.Test runSQLiteTestPrologue ############################################################################### # # NOTE: Setup the variables that refer to the various files required by the # tests in this file. # set systemDataSQLiteDllFile [getBuildFileName System.Data.SQLite.dll] set systemDataSQLiteLinqDllFile [getBuildFileName System.Data.SQLite.Linq.dll] set systemDataSQLiteEf6DllFile [getBuildFileName System.Data.SQLite.EF6.dll] set sqliteDesignerDllFile [getBuildFileName SQLite.Designer.dll] set installerExeFile [getBuildFileName Installer.exe] # # NOTE: The various install/uninstall log files used to test the design-time # component installer. # set testInstallVs2005LogFile [file nativename [file join $path \ Installer_Test_Vs2005.log]] set testInstallVs2008LogFile [file nativename [file join $path \ Installer_Test_Vs2008.log]] set testInstallVs2010LogFile [file nativename [file join $path \ Installer_Test_Vs2010.log]] set testInstallVs2012LogFile [file nativename [file join $path \ Installer_Test_Vs2012.log]] set testInstallVs2013LogFile [file nativename [file join $path \ Installer_Test_Vs2013.log]] set testUninstallVs2005LogFile [file nativename [file join $path \ Uninstaller_Test_Vs2005.log]] set testUninstallVs2008LogFile [file nativename [file join $path \ Uninstaller_Test_Vs2008.log]] set testUninstallVs2010LogFile [file nativename [file join $path \ Uninstaller_Test_Vs2010.log]] set testUninstallVs2012LogFile [file nativename [file join $path \ Uninstaller_Test_Vs2012.log]] set testUninstallVs2013LogFile [file nativename [file join $path \ Uninstaller_Test_Vs2013.log]] # # NOTE: Setup the test constraints specific to the tests in this file. # if {![haveConstraint [appendArgs file_ \ [file tail $systemDataSQLiteDllFile]]]} then { checkForFile $test_channel $systemDataSQLiteDllFile } if {![haveConstraint [appendArgs file_ \ [file tail $systemDataSQLiteLinqDllFile]]]} then { checkForFile $test_channel $systemDataSQLiteLinqDllFile } if {![haveConstraint [appendArgs file_ \ [file tail $systemDataSQLiteEf6DllFile]]]} then { checkForFile $test_channel $systemDataSQLiteEf6DllFile } if {![haveConstraint [appendArgs file_ \ [file tail $sqliteDesignerDllFile]]]} then { checkForFile $test_channel $sqliteDesignerDllFile } if {![haveConstraint [appendArgs file_ \ [file tail $installerExeFile]]]} then { checkForFile $test_channel $installerExeFile Installer.exe } if {![haveConstraint [appendArgs file_ \ [file tail $testInstallVs2005LogFile]]]} then { checkForFile $test_channel $testInstallVs2005LogFile } if {![haveConstraint [appendArgs file_ \ [file tail $testInstallVs2008LogFile]]]} then { checkForFile $test_channel $testInstallVs2008LogFile } if {![haveConstraint [appendArgs file_ \ [file tail $testInstallVs2010LogFile]]]} then { checkForFile $test_channel $testInstallVs2010LogFile } if {![haveConstraint [appendArgs file_ \ [file tail $testInstallVs2012LogFile]]]} then { checkForFile $test_channel $testInstallVs2012LogFile } if {![haveConstraint [appendArgs file_ \ [file tail $testInstallVs2013LogFile]]]} then { checkForFile $test_channel $testInstallVs2013LogFile } if {![haveConstraint [appendArgs file_ \ [file tail $testUninstallVs2005LogFile]]]} then { checkForFile $test_channel $testUninstallVs2005LogFile } if {![haveConstraint [appendArgs file_ \ [file tail $testUninstallVs2008LogFile]]]} then { checkForFile $test_channel $testUninstallVs2008LogFile } if {![haveConstraint [appendArgs file_ \ [file tail $testUninstallVs2010LogFile]]]} then { checkForFile $test_channel $testUninstallVs2010LogFile } if {![haveConstraint [appendArgs file_ \ [file tail $testUninstallVs2012LogFile]]]} then { checkForFile $test_channel $testUninstallVs2012LogFile } if {![haveConstraint [appendArgs file_ \ [file tail $testUninstallVs2013LogFile]]]} then { checkForFile $test_channel $testUninstallVs2013LogFile } ############################################################################### runTest {test installer-1.1 {installer tool / Visual Studio 2005} -setup { set fileName [file join [getTemporaryPath] [file tail [string map [list \ .log [appendArgs _ [pid] .log]] $testInstallVs2005LogFile]]] cleanupFile $fileName } -body { set output "" set code [catch { testClrExec $installerExeFile [list -eventflags Wait -stdout output \ -success 0] -debugPriority Lowest -tracePriority MediumHigh \ -noRuntimeVersion true -noCompact true -noNetFx35 true \ -noNetFx40 true -noNetFx45 true -noNetFx451 true -noVs2008 true \ -noVs2010 true -noVs2012 true -noVs2013 true -whatIf true \ -verbose true -confirm true -install true -debug true -wow64 true \ -logFileName [appendArgs \" [file nativename $fileName] \"] \ -traceFormat [appendArgs \" "#{0}: {2}" \"] } error] tlog "---- BEGIN STDOUT OUTPUT\n" tlog $output tlog "\n---- END STDOUT OUTPUT\n" set is64 [haveConstraint amd64.64bit] set wow64 [expr {$is64 ? "\\Wow6432Node" : ""}] list $code [expr {$code == 0 ? [string equal -nocase [readFile $fileName] \ [subst -nobackslashes [readFile $testInstallVs2005LogFile]]] : $error}] } -cleanup { cleanupFile $fileName unset -nocomplain wow64 is64 code output error fileName } -constraints [fixConstraints {eagle administrator !wow64 buildYear.2005\ visualStudio2005 System.Data.SQLite.dll_v2.0.50727 file_Installer.exe testExec\ file_System.Data.SQLite.dll file_SQLite.Designer.dll\ file_Installer_Test_Vs2005.log}] -result {0 True}} ############################################################################### runTest {test installer-1.2 {uninstaller tool / Visual Studio 2005} -setup { set fileName [file join [getTemporaryPath] [file tail [string map [list \ .log [appendArgs _ [pid] .log]] $testUninstallVs2005LogFile]]] cleanupFile $fileName } -body { set output "" set code [catch { testClrExec $installerExeFile [list -eventflags Wait -stdout output \ -success 0] -debugPriority Lowest -tracePriority MediumHigh \ -noRuntimeVersion true -noCompact true -noNetFx35 true \ -noNetFx40 true -noNetFx45 true -noNetFx451 true -noVs2008 true \ -noVs2010 true -noVs2012 true -noVs2013 true -whatIf true \ -verbose true -confirm true -install false -debug true -wow64 true \ -logFileName [appendArgs \" [file nativename $fileName] \"] \ -traceFormat [appendArgs \" "#{0}: {2}" \"] } error] tlog "---- BEGIN STDOUT OUTPUT\n" tlog $output tlog "\n---- END STDOUT OUTPUT\n" set is64 [haveConstraint amd64.64bit] set wow64 [expr {$is64 ? "\\Wow6432Node" : ""}] list $code [expr {$code == 0 ? [string equal -nocase [readFile $fileName] \ [subst -nobackslashes [readFile $testUninstallVs2005LogFile]]] : $error}] } -cleanup { cleanupFile $fileName unset -nocomplain wow64 is64 code output error fileName } -constraints [fixConstraints {eagle administrator !wow64 buildYear.2005\ visualStudio2005 System.Data.SQLite.dll_v2.0.50727 file_Installer.exe testExec\ file_System.Data.SQLite.dll file_SQLite.Designer.dll\ file_Uninstaller_Test_Vs2005.log}] -result {0 True}} ############################################################################### runTest {test installer-1.3 {installer tool / Visual Studio 2008} -setup { set fileName [file join [getTemporaryPath] [file tail [string map [list \ .log [appendArgs _ [pid] .log]] $testInstallVs2008LogFile]]] cleanupFile $fileName } -body { set output "" set code [catch { testClrExec $installerExeFile [list -eventflags Wait -stdout output \ -success 0] -debugPriority Lowest -tracePriority MediumHigh \ -noRuntimeVersion true -noCompact true -noNetFx40 true \ -noNetFx45 true -noNetFx451 true -noVs2005 true -noVs2010 true \ -noVs2012 true -noVs2013 true -whatIf true -verbose true \ -confirm true -install true -debug true -wow64 true \ -logFileName [appendArgs \" [file nativename $fileName] \"] \ -traceFormat [appendArgs \" "#{0}: {2}" \"] } error] tlog "---- BEGIN STDOUT OUTPUT\n" tlog $output tlog "\n---- END STDOUT OUTPUT\n" set is64 [haveConstraint amd64.64bit] set wow64 [expr {$is64 ? "\\Wow6432Node" : ""}] list $code [expr {$code == 0 ? [string equal -nocase [readFile $fileName] \ [subst -nobackslashes [readFile $testInstallVs2008LogFile]]] : $error}] } -cleanup { cleanupFile $fileName unset -nocomplain wow64 is64 code output error fileName } -constraints [fixConstraints {eagle administrator !wow64 buildYear.2008\ visualStudio2008 System.Data.SQLite.dll_v2.0.50727 file_Installer.exe testExec\ file_System.Data.SQLite.dll file_System.Data.SQLite.Linq.dll\ file_SQLite.Designer.dll file_Installer_Test_Vs2008.log}] -result {0 True}} ############################################################################### runTest {test installer-1.4 {uninstaller tool / Visual Studio 2008} -setup { set fileName [file join [getTemporaryPath] [file tail [string map [list \ .log [appendArgs _ [pid] .log]] $testUninstallVs2008LogFile]]] cleanupFile $fileName } -body { set output "" set code [catch { testClrExec $installerExeFile [list -eventflags Wait -stdout output \ -success 0] -debugPriority Lowest -tracePriority MediumHigh \ -noRuntimeVersion true -noCompact true -noNetFx40 true \ -noNetFx45 true -noNetFx451 true -noVs2005 true -noVs2010 true \ -noVs2012 true -noVs2013 true -whatIf true -verbose true \ -confirm true -install false -debug true -wow64 true \ -logFileName [appendArgs \" [file nativename $fileName] \"] \ -traceFormat [appendArgs \" "#{0}: {2}" \"] } error] tlog "---- BEGIN STDOUT OUTPUT\n" tlog $output tlog "\n---- END STDOUT OUTPUT\n" set is64 [haveConstraint amd64.64bit] set wow64 [expr {$is64 ? "\\Wow6432Node" : ""}] list $code [expr {$code == 0 ? [string equal -nocase [readFile $fileName] \ [subst -nobackslashes [readFile $testUninstallVs2008LogFile]]] : $error}] } -cleanup { cleanupFile $fileName unset -nocomplain wow64 is64 code output error fileName } -constraints [fixConstraints {eagle administrator !wow64 buildYear.2008\ visualStudio2008 System.Data.SQLite.dll_v2.0.50727 file_Installer.exe testExec\ file_System.Data.SQLite.dll file_System.Data.SQLite.Linq.dll\ file_SQLite.Designer.dll file_Uninstaller_Test_Vs2008.log}] -result {0 True}} ############################################################################### runTest {test installer-1.5 {installer tool / Visual Studio 2010} -setup { set fileName [file join [getTemporaryPath] [file tail [string map [list \ .log [appendArgs _ [pid] .log]] $testInstallVs2010LogFile]]] cleanupFile $fileName } -body { set output "" set code [catch { testClrExec $installerExeFile [list -eventflags Wait -stdout output \ -success 0] -debugPriority Lowest -tracePriority MediumHigh \ -noRuntimeVersion true -noCompact true -noNetFx20 true \ -noNetFx35 true -noNetFx45 true -noNetFx451 true -noVs2005 true \ -noVs2008 true -noVs2012 true -noVs2013 true -whatIf true \ -verbose true -confirm true -install true -debug true -wow64 true \ -logFileName [appendArgs \" [file nativename $fileName] \"] \ -traceFormat [appendArgs \" "#{0}: {2}" \"] } error] tlog "---- BEGIN STDOUT OUTPUT\n" tlog $output tlog "\n---- END STDOUT OUTPUT\n" set is64 [haveConstraint amd64.64bit] set wow64 [expr {$is64 ? "\\Wow6432Node" : ""}] list $code [expr {$code == 0 ? [string equal -nocase [readFile $fileName] \ [subst -nobackslashes [readFile $testInstallVs2010LogFile]]] : $error}] } -cleanup { cleanupFile $fileName unset -nocomplain wow64 is64 code output error fileName } -constraints [fixConstraints {eagle administrator !wow64 buildYear.2010\ visualStudio2010 System.Data.SQLite.dll_v4.0.30319 file_Installer.exe testExec\ file_System.Data.SQLite.dll file_System.Data.SQLite.Linq.dll\ file_System.Data.SQLite.EF6.dll file_SQLite.Designer.dll\ file_Installer_Test_Vs2010.log}] -result {0 True}} ############################################################################### runTest {test installer-1.6 {uninstaller tool / Visual Studio 2010} -setup { set fileName [file join [getTemporaryPath] [file tail [string map [list \ .log [appendArgs _ [pid] .log]] $testUninstallVs2010LogFile]]] cleanupFile $fileName } -body { set output "" set code [catch { testClrExec $installerExeFile [list -eventflags Wait -stdout output \ -success 0] -debugPriority Lowest -tracePriority MediumHigh \ -noRuntimeVersion true -noCompact true -noNetFx20 true \ -noNetFx35 true -noNetFx45 true -noNetFx451 true -noVs2005 true \ -noVs2008 true -noVs2012 true -noVs2013 true -whatIf true \ -verbose true -confirm true -install false -debug true -wow64 true \ -logFileName [appendArgs \" [file nativename $fileName] \"] \ -traceFormat [appendArgs \" "#{0}: {2}" \"] } error] tlog "---- BEGIN STDOUT OUTPUT\n" tlog $output tlog "\n---- END STDOUT OUTPUT\n" set is64 [haveConstraint amd64.64bit] set wow64 [expr {$is64 ? "\\Wow6432Node" : ""}] list $code [expr {$code == 0 ? [string equal -nocase [readFile $fileName] \ [subst -nobackslashes [readFile $testUninstallVs2010LogFile]]] : $error}] } -cleanup { cleanupFile $fileName unset -nocomplain wow64 is64 code output error fileName } -constraints [fixConstraints {eagle administrator !wow64 buildYear.2010\ visualStudio2010 System.Data.SQLite.dll_v4.0.30319 file_Installer.exe testExec\ file_System.Data.SQLite.dll file_System.Data.SQLite.Linq.dll\ file_System.Data.SQLite.EF6.dll file_SQLite.Designer.dll\ file_Uninstaller_Test_Vs2010.log}] -result {0 True}} ############################################################################### runTest {test installer-1.7 {installer tool / Visual Studio 2012} -setup { set fileName [file join [getTemporaryPath] [file tail [string map [list \ .log [appendArgs _ [pid] .log]] $testInstallVs2012LogFile]]] cleanupFile $fileName } -body { set output "" set code [catch { testClrExec $installerExeFile [list -eventflags Wait -stdout output \ -success 0] -debugPriority Lowest -tracePriority MediumHigh \ -noRuntimeVersion true -noCompact true -noNetFx20 true \ -noNetFx35 true -noNetFx40 true -noNetFx451 true -noVs2005 true \ -noVs2008 true -noVs2010 true -noVs2013 true -whatIf true \ -verbose true -confirm true -install true -debug true -wow64 true \ -configVersion 4.0.30319 \ -logFileName [appendArgs \" [file nativename $fileName] \"] \ -traceFormat [appendArgs \" "#{0}: {2}" \"] } error] tlog "---- BEGIN STDOUT OUTPUT\n" tlog $output tlog "\n---- END STDOUT OUTPUT\n" set is64 [haveConstraint amd64.64bit] set wow64 [expr {$is64 ? "\\Wow6432Node" : ""}] list $code [expr {$code == 0 ? [string equal -nocase [readFile $fileName] \ [subst -nobackslashes [readFile $testInstallVs2012LogFile]]] : $error}] } -cleanup { cleanupFile $fileName unset -nocomplain wow64 is64 code output error fileName } -constraints [fixConstraints {eagle administrator !wow64 buildYear.2012\ visualStudio2012 System.Data.SQLite.dll_v4.0.30319 file_Installer.exe testExec\ file_System.Data.SQLite.dll file_System.Data.SQLite.Linq.dll\ file_System.Data.SQLite.EF6.dll file_SQLite.Designer.dll\ file_Installer_Test_Vs2012.log}] -result {0 True}} ############################################################################### runTest {test installer-1.8 {uninstaller tool / Visual Studio 2012} -setup { set fileName [file join [getTemporaryPath] [file tail [string map [list \ .log [appendArgs _ [pid] .log]] $testUninstallVs2012LogFile]]] cleanupFile $fileName } -body { set output "" set code [catch { testClrExec $installerExeFile [list -eventflags Wait -stdout output \ -success 0] -debugPriority Lowest -tracePriority MediumHigh \ -noRuntimeVersion true -noCompact true -noNetFx20 true \ -noNetFx35 true -noNetFx40 true -noNetFx451 true -noVs2005 true \ -noVs2008 true -noVs2010 true -noVs2013 true -whatIf true \ -verbose true -confirm true -install false -debug true -wow64 true \ -configVersion 4.0.30319 \ -logFileName [appendArgs \" [file nativename $fileName] \"] \ -traceFormat [appendArgs \" "#{0}: {2}" \"] } error] tlog "---- BEGIN STDOUT OUTPUT\n" tlog $output tlog "\n---- END STDOUT OUTPUT\n" set is64 [haveConstraint amd64.64bit] set wow64 [expr {$is64 ? "\\Wow6432Node" : ""}] list $code [expr {$code == 0 ? [string equal -nocase [readFile $fileName] \ [subst -nobackslashes [readFile $testUninstallVs2012LogFile]]] : $error}] } -cleanup { cleanupFile $fileName unset -nocomplain wow64 is64 code output error fileName } -constraints [fixConstraints {eagle administrator !wow64 buildYear.2012\ visualStudio2012 System.Data.SQLite.dll_v4.0.30319 file_Installer.exe testExec\ file_System.Data.SQLite.dll file_System.Data.SQLite.Linq.dll\ file_System.Data.SQLite.EF6.dll file_SQLite.Designer.dll\ file_Uninstaller_Test_Vs2012.log}] -result {0 True}} ############################################################################### runTest {test installer-1.9 {installer tool / Visual Studio 2013} -setup { set fileName [file join [getTemporaryPath] [file tail [string map [list \ .log [appendArgs _ [pid] .log]] $testInstallVs2013LogFile]]] cleanupFile $fileName } -body { set output "" set code [catch { testClrExec $installerExeFile [list -eventflags Wait -stdout output \ -success 0] -debugPriority Lowest -tracePriority MediumHigh \ -noRuntimeVersion true -noCompact true -noNetFx20 true \ -noNetFx35 true -noNetFx40 true -noNetFx45 true -noVs2005 true \ -noVs2008 true -noVs2010 true -noVs2012 true -whatIf true \ -verbose true -confirm true -install true -debug true -wow64 true \ -configVersion 4.0.30319 \ -logFileName [appendArgs \" [file nativename $fileName] \"] \ -traceFormat [appendArgs \" "#{0}: {2}" \"] } error] tlog "---- BEGIN STDOUT OUTPUT\n" tlog $output tlog "\n---- END STDOUT OUTPUT\n" set is64 [haveConstraint amd64.64bit] set wow64 [expr {$is64 ? "\\Wow6432Node" : ""}] list $code [expr {$code == 0 ? [string equal -nocase [readFile $fileName] \ [subst -nobackslashes [readFile $testInstallVs2013LogFile]]] : $error}] } -cleanup { cleanupFile $fileName unset -nocomplain wow64 is64 code output error fileName } -constraints [fixConstraints {eagle administrator !wow64 buildYear.2013\ visualStudio2013 System.Data.SQLite.dll_v4.0.30319 file_Installer.exe testExec\ file_System.Data.SQLite.dll file_System.Data.SQLite.Linq.dll\ file_System.Data.SQLite.EF6.dll file_SQLite.Designer.dll\ file_Installer_Test_Vs2013.log}] -result {0 True}} ############################################################################### runTest {test installer-1.10 {uninstaller tool / Visual Studio 2013} -setup { set fileName [file join [getTemporaryPath] [file tail [string map [list \ .log [appendArgs _ [pid] .log]] $testUninstallVs2013LogFile]]] cleanupFile $fileName } -body { set output "" set code [catch { testClrExec $installerExeFile [list -eventflags Wait -stdout output \ -success 0] -debugPriority Lowest -tracePriority MediumHigh \ -noRuntimeVersion true -noCompact true -noNetFx20 true \ -noNetFx35 true -noNetFx40 true -noNetFx45 true -noVs2005 true \ -noVs2008 true -noVs2010 true -noVs2012 true -whatIf true \ -verbose true -confirm true -install false -debug true -wow64 true \ -configVersion 4.0.30319 \ -logFileName [appendArgs \" [file nativename $fileName] \"] \ -traceFormat [appendArgs \" "#{0}: {2}" \"] } error] tlog "---- BEGIN STDOUT OUTPUT\n" tlog $output tlog "\n---- END STDOUT OUTPUT\n" set is64 [haveConstraint amd64.64bit] set wow64 [expr {$is64 ? "\\Wow6432Node" : ""}] list $code [expr {$code == 0 ? [string equal -nocase [readFile $fileName] \ [subst -nobackslashes [readFile $testUninstallVs2013LogFile]]] : $error}] } -cleanup { cleanupFile $fileName unset -nocomplain wow64 is64 code output error fileName } -constraints [fixConstraints {eagle administrator !wow64 buildYear.2013\ visualStudio2013 System.Data.SQLite.dll_v4.0.30319 file_Installer.exe testExec\ file_System.Data.SQLite.dll file_System.Data.SQLite.Linq.dll\ file_System.Data.SQLite.EF6.dll file_SQLite.Designer.dll\ file_Uninstaller_Test_Vs2013.log}] -result {0 True}} ############################################################################### unset -nocomplain testUninstallVs2013LogFile testUninstallVs2012LogFile \ testUninstallVs2010LogFile testUninstallVs2008LogFile \ testUninstallVs2005LogFile testInstallVs2013LogFile \ testInstallVs2012LogFile testInstallVs2010LogFile \ testInstallVs2008LogFile testInstallVs2005LogFile sqliteDesignerDllFile \ installerExeFile systemDataSQLiteEf6DllFile systemDataSQLiteLinqDllFile \ systemDataSQLiteDllFile ############################################################################### runSQLiteTestEpilogue runTestEpilogue