###############################################################################
#
# version.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
###############################################################################
# ******************** BEGIN VOLATILE VERSION INFORMATION *********************
###############################################################################
#
# NOTE: For these unit tests to be useful and accurate, the following version
# numbers must be manually kept synchronized with the version numbers for
# the source code files, the built binaries, and the release packages.
#
set version(major) 1
set version(minor) 0
set version(build) 91; # NOTE: Incremented with each release.
set version(revision) 0
###############################################################################
# ********************* END VOLATILE VERSION INFORMATION **********************
###############################################################################
#
# NOTE: Build the full version number using the components setup above. This
# should not have to be changed.
#
set version(full) [appendArgs $version(major) . $version(minor) . \
$version(build) . $version(revision)]
###############################################################################
#
# NOTE: Build the version number used for the NuGet packages. This should
# be the same as the above version number, with the exception of the
# revision, which may differ.
#
set version(nuget) [appendArgs $version(major) . $version(minor) . \
$version(build) . \\d+]
###############################################################################
#
# 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 testExeFile [getBuildFileName test.exe]
set testLinqExeFile [getBuildFileName testlinq.exe]
set testEf6ExeFile [getBuildFileName testef6.exe]
#
# 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 $testExeFile]]]} then {
checkForFile $test_channel $testExeFile test.exe
}
if {![haveConstraint [appendArgs file_ [file tail $testLinqExeFile]]]} then {
checkForFile $test_channel $testLinqExeFile testlinq.exe
}
if {![haveConstraint [appendArgs file_ [file tail $testEf6ExeFile]]]} then {
checkForFile $test_channel $testEf6ExeFile testef6.exe
}
###############################################################################
runTest {test version-1.1 {'System.Data.SQLite' binary version} -body {
file version $systemDataSQLiteDllFile
} -constraints {eagle file_System.Data.SQLite.dll} -result $version(full)}
###############################################################################
runTest {test version-1.2 {'System.Data.SQLite' assembly version} -body {
set assemblyName [object invoke -alias System.Reflection.AssemblyName \
GetAssemblyName $systemDataSQLiteDllFile]
$assemblyName Version.ToString
} -cleanup {
unset -nocomplain assemblyName
} -constraints {eagle file_System.Data.SQLite.dll} -result $version(full)}
###############################################################################
runTest {test version-1.3 {'System.Data.SQLite.Linq' binary version} -body {
file version $systemDataSQLiteLinqDllFile
} -constraints {eagle file_System.Data.SQLite.Linq.dll} -result $version(full)}
###############################################################################
runTest {test version-1.4 {'System.Data.SQLite.Linq' assembly version} -body {
set assemblyName [object invoke -alias System.Reflection.AssemblyName \
GetAssemblyName $systemDataSQLiteLinqDllFile]
$assemblyName Version.ToString
} -cleanup {
unset -nocomplain assemblyName
} -constraints {eagle file_System.Data.SQLite.Linq.dll} -result $version(full)}
###############################################################################
runTest {test version-1.5 {'System.Data.SQLite.EF6' binary version} -body {
file version $systemDataSQLiteEf6DllFile
} -constraints {eagle file_System.Data.SQLite.EF6.dll} -result $version(full)}
###############################################################################
runTest {test version-1.6 {'System.Data.SQLite.EF6' assembly version} -body {
set assemblyName [object invoke -alias System.Reflection.AssemblyName \
GetAssemblyName $systemDataSQLiteEf6DllFile]
$assemblyName Version.ToString
} -cleanup {
unset -nocomplain assemblyName
} -constraints {eagle file_System.Data.SQLite.EF6.dll} -result $version(full)}
###############################################################################
runTest {test version-1.7 {'SQLite.Designer' binary version} -body {
file version $sqliteDesignerDllFile
} -constraints {eagle file_SQLite.Designer.dll} -result $version(full)}
###############################################################################
runTest {test version-1.8 {'SQLite.Designer' assembly version} -body {
set assemblyName [object invoke -alias System.Reflection.AssemblyName \
GetAssemblyName $sqliteDesignerDllFile]
$assemblyName Version.ToString
} -cleanup {
unset -nocomplain assemblyName
} -constraints {eagle file_SQLite.Designer.dll} -result $version(full)}
###############################################################################
runTest {test version-1.9 {'test' binary version} -body {
file version $testExeFile
} -constraints {eagle file_test.exe} -result $version(full)}
###############################################################################
runTest {test version-1.10 {'test' assembly version} -body {
set assemblyName [object invoke -alias System.Reflection.AssemblyName \
GetAssemblyName $testExeFile]
$assemblyName Version.ToString
} -cleanup {
unset -nocomplain assemblyName
} -constraints {eagle file_test.exe} -result $version(full)}
###############################################################################
runTest {test version-1.11 {'testlinq' binary version} -body {
file version $testLinqExeFile
} -constraints {eagle file_testlinq.exe} -result $version(full)}
###############################################################################
runTest {test version-1.12 {'testlinq' assembly version} -body {
set assemblyName [object invoke -alias System.Reflection.AssemblyName \
GetAssemblyName $testLinqExeFile]
$assemblyName Version.ToString
} -cleanup {
unset -nocomplain assemblyName
} -constraints {eagle file_testlinq.exe} -result $version(full)}
###############################################################################
runTest {test version-1.13 {'testef6' binary version} -body {
file version $testEf6ExeFile
} -constraints {eagle file_testef6.exe} -result $version(full)}
###############################################################################
runTest {test version-1.14 {'testef6' assembly version} -body {
set assemblyName [object invoke -alias System.Reflection.AssemblyName \
GetAssemblyName $testEf6ExeFile]
$assemblyName Version.ToString
} -cleanup {
unset -nocomplain assemblyName
} -constraints {eagle file_testef6.exe} -result $version(full)}
###############################################################################
runTest {test version-1.15 {SQLiteVersion} -body {
object invoke System.Data.SQLite.SQLiteConnection SQLiteVersion
} -constraints {eagle SQLite System.Data.SQLite} -match regexp -result \
{^\d+\.\d+\.\d+(?:\.\d+)?$}}
###############################################################################
runTest {test version-1.16 {SQLiteSourceId} -body {
object invoke System.Data.SQLite.SQLiteConnection SQLiteSourceId
} -constraints {eagle SQLite System.Data.SQLite} -match regexp -result \
{^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} [0-9a-f]{40}$}}
###############################################################################
runTest {test version-1.17 {InteropVersion} -body {
object invoke System.Data.SQLite.SQLiteConnection InteropVersion
} -constraints {eagle SQLiteInterop System.Data.SQLite} -result $version(full)}
###############################################################################
runTest {test version-1.18 {InteropSourceId} -body {
object invoke System.Data.SQLite.SQLiteConnection InteropSourceId
} -constraints {eagle SQLiteInterop System.Data.SQLite} -match regexp -result \
{^[0-9a-f]{40} \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} UTC$}}
###############################################################################
runTest {test version-1.19 {ProviderVersion} -body {
object invoke System.Data.SQLite.SQLiteConnection ProviderVersion
} -constraints {eagle System.Data.SQLite} -result $version(full)}
###############################################################################
runTest {test version-1.20 {ProviderSourceId} -body {
#
# NOTE: The ProviderSourceId property value may be null, which
# would result in an empty string being returned here.
#
object invoke System.Data.SQLite.SQLiteConnection ProviderSourceId
} -constraints {eagle System.Data.SQLite} -match regexp -result \
{^(?:|[0-9a-f]{40} \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} UTC)$}}
###############################################################################
set patterns [list \
[appendArgs Version= [string map [list . \\.] $version(full)] ,] \
[appendArgs Version= [string map [list . \\.] $version(full)] ,] \
[appendArgs "\; [format %03d $version(build)] "\;] \
[appendArgs [string map [list . \\.] $version(nuget)] \
] \
[appendArgs [string map [list . \\.] $version(nuget)] \
] \
[appendArgs [string map [list . \\.] $version(nuget)] \
] \
[appendArgs [string map [list . \\.] $version(nuget)] \
] \
[appendArgs " targetFramework=\"net40\".*?\" version=\"" $version(nuget) \
"\" "] \
[appendArgs " targetFramework=\"net45\".*?\" version=\"" $version(nuget) \
"\" "] \
[appendArgs " targetFramework=\"net451\".*?\" version=\"" $version(nuget) \
"\" "] \
[appendArgs [string map [list . \\.] $version(nuget)] \
] \
[appendArgs " targetFramework=\"net20\".*?\" version=\"" $version(nuget) \
"\" "] \
[appendArgs " targetFramework=\"net40\".*?\" version=\"" $version(nuget) \
"\" "] \
[appendArgs " targetFramework=\"net45\".*?\" version=\"" $version(nuget) \
"\" "] \
[appendArgs " targetFramework=\"net451\".*?\" version=\"" $version(nuget) \
"\" "] \
[appendArgs [string map [list . \\.] $version(nuget)] \
] \
[appendArgs [string map [list . \\.] $version(nuget)] \
] \
[appendArgs [string map [list . \\.] $version(nuget)] \
] \
[appendArgs [string map [list . \\.] $version(nuget)] \
] \
[appendArgs AssemblyVersion\\(\" [string map [list . \\.] \
$version(full)] \"\\)] \
[appendArgs AssemblyFileVersion\\(\" [string map [list . \\.] \
$version(full)] \"\\)] \
[appendArgs [string map [list . \\.] \
$version(full)] ] \
[appendArgs Value=\" [format %03d $version(build)] \"] \
[appendArgs Value=\" [string map [list . \\.] $version(full)] \"] \
[appendArgs Value=\" [string map [list . ,] $version(full)] \"] \
[appendArgs Value=\" [format %03d $version(build)] \"] \
[appendArgs Value=\" [string map [list . \\.] $version(full)] \"] \
[appendArgs Value=\" [string map [list . ,] $version(full)] \"] \
[appendArgs [format %03d $version(build)] \
] \
[appendArgs [string map [list . \\.] \
$version(full)] ] \
[appendArgs [string map [list . ,] \
$version(full)] ] \
[appendArgs [format %03d $version(build)] \
] \
[appendArgs [string map [list . \\.] \
$version(full)] ] \
[appendArgs [string map [list . ,] \
$version(full)] ] \
[appendArgs \" [string map [list . \\.] $version(full)] \"] \
[appendArgs AssemblyVersion\\(\" [string map [list . \\.] \
$version(full)] \"\\)] \
[appendArgs AssemblyFileVersion\\(\" [string map [list . \\.] \
$version(full)] \"\\)] \
[appendArgs \" [string map [list . \\.] $version(full)] \"] \
[appendArgs \"SQLite.Interop. [format %03d $version(build)] .dll\"] \
[appendArgs AssemblyVersion\\(\" [string map [list . \\.] \
$version(full)] \"\\)] \
[appendArgs AssemblyFileVersion\\(\" [string map [list . \\.] \
$version(full)] \"\\)] \
[appendArgs AssemblyVersion\\(\" [string map [list . \\.] \
$version(full)] \"\\)] \
[appendArgs AssemblyFileVersion\\(\" [string map [list . \\.] \
$version(full)] \"\\)] \
[appendArgs Version= [string map [list . \\.] $version(full)] ,] \
[appendArgs AssemblyVersion\\(\" [string map [list . \\.] \
$version(full)] \"\\)] \
[appendArgs AssemblyFileVersion\\(\" [string map [list . \\.] \
$version(full)] \"\\)] \
[appendArgs \
"SQLiteFactory, System\\.Data\\.SQLite, " \
"Version=" [string map [list . \\.] $version(full)] ,] \
[appendArgs \
"SQLiteProviderFactory, System\\.Data\\.SQLite\\.Linq, " \
"Version=" [string map [list . \\.] $version(full)] ,] \
[appendArgs \
"SQLiteProviderFactory, System\\.Data\\.SQLite\\.EF6, " \
"Version=" [string map [list . \\.] $version(full)] ,] \
[appendArgs \
"SQLiteProviderServices, System\\.Data\\.SQLite\\.EF6, " \
"Version=" [string map [list . \\.] $version(full)] ,] \
[appendArgs \
"SQLiteFactory, System\\.Data\\.SQLite, " \
"Version=" [string map [list . \\.] $version(full)] ,] \
[appendArgs \
"SQLiteProviderFactory, System\\.Data\\.SQLite\\.Linq, " \
"Version=" [string map [list . \\.] $version(full)] ,] \
[appendArgs \
"SQLiteProviderFactory, System\\.Data\\.SQLite\\.EF6, " \
"Version=" [string map [list . \\.] $version(full)] ,] \
[appendArgs \
"SQLiteProviderServices, System\\.Data\\.SQLite\\.EF6, " \
"Version=" [string map [list . \\.] $version(full)] ,] \
[appendArgs \
"SQLiteFactory, System\\.Data\\.SQLite, " \
"Version=" [string map [list . \\.] $version(full)] ,] \
[appendArgs \
"SQLiteProviderFactory, System\\.Data\\.SQLite\\.Linq, " \
"Version=" [string map [list . \\.] $version(full)] ,] \
[appendArgs \
"SQLiteProviderFactory, System\\.Data\\.SQLite\\.EF6, " \
"Version=" [string map [list . \\.] $version(full)] ,] \
[appendArgs \
"SQLiteProviderServices, System\\.Data\\.SQLite\\.EF6, " \
"Version=" [string map [list . \\.] $version(full)] ,] \
[appendArgs \
"SQLiteFactory, System\\.Data\\.SQLite, " \
"Version=" [string map [list . \\.] $version(full)] ,] \
[appendArgs \
"SQLiteProviderFactory, System\\.Data\\.SQLite\\.Linq, " \
"Version=" [string map [list . \\.] $version(full)] ,] \
[appendArgs AssemblyVersion\\(\" [string map [list . \\.] \
$version(full)] \"\\)] \
[appendArgs AssemblyFileVersion\\(\" [string map [list . \\.] \
$version(full)] \"\\)] \
[appendArgs AssemblyVersion\\(\" [string map [list . \\.] \
$version(full)] \"\\)] \
[appendArgs AssemblyFileVersion\\(\" [string map [list . \\.] \
$version(full)] \"\\)]]
set fileNames [list \
readme.htm \
[file join Doc Extra Provider dbfactorysupport.html] \
[file join Doc Extra Provider welcome.html] \
[file join NuGet SQLite.nuspec] \
[file join NuGet SQLite.Beta.nuspec] \
[file join NuGet SQLite.Core.nuspec] \
[file join NuGet SQLite.EF6.nuspec] \
[file join NuGet SQLite.EF6.nuspec] \
[file join NuGet SQLite.EF6.nuspec] \
[file join NuGet SQLite.EF6.nuspec] \
[file join NuGet SQLite.Linq.nuspec] \
[file join NuGet SQLite.Linq.nuspec] \
[file join NuGet SQLite.Linq.nuspec] \
[file join NuGet SQLite.Linq.nuspec] \
[file join NuGet SQLite.Linq.nuspec] \
[file join NuGet SQLite.MSIL.nuspec] \
[file join NuGet SQLite.x64.nuspec] \
[file join NuGet SQLite.x86.nuspec] \
[file join SQLite.Designer AssemblyInfo.cs] \
[file join SQLite.Designer AssemblyInfo.cs] \
[file join SQLite.Designer source.extension.vsixmanifest] \
[file join SQLite.Interop props SQLite.Interop.2005.vsprops] \
[file join SQLite.Interop props SQLite.Interop.2005.vsprops] \
[file join SQLite.Interop props SQLite.Interop.2005.vsprops] \
[file join SQLite.Interop props SQLite.Interop.2008.vsprops] \
[file join SQLite.Interop props SQLite.Interop.2008.vsprops] \
[file join SQLite.Interop props SQLite.Interop.2008.vsprops] \
[file join SQLite.Interop props SQLite.Interop.2010.props] \
[file join SQLite.Interop props SQLite.Interop.2010.props] \
[file join SQLite.Interop props SQLite.Interop.2010.props] \
[file join SQLite.Interop props SQLite.Interop.2012.props] \
[file join SQLite.Interop props SQLite.Interop.2012.props] \
[file join SQLite.Interop props SQLite.Interop.2012.props] \
[file join SQLite.Interop src win interop.h] \
[file join System.Data.SQLite AssemblyInfo.cs] \
[file join System.Data.SQLite AssemblyInfo.cs] \
[file join System.Data.SQLite SQLite3.cs] \
[file join System.Data.SQLite UnsafeNativeMethods.cs] \
[file join System.Data.SQLite.Linq AssemblyInfo.cs] \
[file join System.Data.SQLite.Linq AssemblyInfo.cs] \
[file join test AssemblyInfo.cs] \
[file join test AssemblyInfo.cs] \
[file join test app.config] \
[file join testce AssemblyInfo.cs] \
[file join testce AssemblyInfo.cs] \
[file join testlinq 2008 LINQ App.config] \
[file join testlinq 2008 LINQ App.config] \
[file join testlinq 2010 EF6 App.config] \
[file join testlinq 2010 EF6 App.config] \
[file join testlinq 2010 LINQ App.config] \
[file join testlinq 2010 LINQ App.config] \
[file join testlinq 2012 EF6 App.config] \
[file join testlinq 2012 EF6 App.config] \
[file join testlinq 2012 LINQ App.config] \
[file join testlinq 2012 LINQ App.config] \
[file join testlinq 2013 EF6 App.config] \
[file join testlinq 2013 EF6 App.config] \
[file join testlinq 2013 LINQ App.config] \
[file join testlinq 2013 LINQ App.config] \
[file join testlinq Properties AssemblyInfo.cs] \
[file join testlinq Properties AssemblyInfo.cs] \
[file join tools install Properties AssemblyInfo.cs] \
[file join tools install Properties AssemblyInfo.cs]]
for {set i 1} {$i <= [llength $fileNames]} {incr i} {
set pattern [lindex $patterns [expr {$i - 1}]]
set fileName [lindex $fileNames [expr {$i - 1}]]
set constraint [string map [list / _ \\ _] $fileName]
set fileName [file join $root_path $fileName]
if {![haveConstraint [appendArgs file_ $constraint]]} then {
checkForFile $test_channel $fileName $constraint
}
runTest {test [appendArgs version-1.21. $i] \
[appendArgs "pattern {" $pattern "} in file \"" $fileName \"] -body {
regexp -- $pattern [readFile $fileName]
} -constraints [list eagle [appendArgs file_ $constraint]] -result {1}}
}
###############################################################################
unset -nocomplain constraint fileName pattern fileNames patterns i version
###############################################################################
unset -nocomplain testEf6ExeFile testLinqExeFile testExeFile \
sqliteDesignerDllFile systemDataSQLiteEf6DllFile \
systemDataSQLiteLinqDllFile systemDataSQLiteDllFile
###############################################################################
runSQLiteTestEpilogue
runTestEpilogue