###############################################################################
#
# 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 non-data 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 \
[getSQLiteTestDataPath] Installer_Test_Vs2005.log]]
set testInstallVs2008LogFile [file nativename [file join \
[getSQLiteTestDataPath] Installer_Test_Vs2008.log]]
set testInstallVs2010LogFile [file nativename [file join \
[getSQLiteTestDataPath] Installer_Test_Vs2010.log]]
set testInstallVs2012LogFile [file nativename [file join \
[getSQLiteTestDataPath] Installer_Test_Vs2012.log]]
set testInstallVs2013LogFile [file nativename [file join \
[getSQLiteTestDataPath] Installer_Test_Vs2013.log]]
set testUninstallVs2005LogFile [file nativename [file join \
[getSQLiteTestDataPath] Uninstaller_Test_Vs2005.log]]
set testUninstallVs2008LogFile [file nativename [file join \
[getSQLiteTestDataPath] Uninstaller_Test_Vs2008.log]]
set testUninstallVs2010LogFile [file nativename [file join \
[getSQLiteTestDataPath] Uninstaller_Test_Vs2010.log]]
set testUninstallVs2012LogFile [file nativename [file join \
[getSQLiteTestDataPath] Uninstaller_Test_Vs2012.log]]
set testUninstallVs2013LogFile [file nativename [file join \
[getSQLiteTestDataPath] 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