Version History
-1.0.86.0 - May XX, 2013 (release scheduled)
--
-
- Updated to SQLite 3.7.17. -
- Disable use of the AllowPartiallyTrustedCallers attribute when compiled for the .NET Framework 4.0/4.5. -
- Allow semi-colons in the data source file name. Fix for [e47b3d8346]. -
- NULL values should be reported as type "object", not "DBNull". Fix for [48a6b8e4ca]. -
1.0.85.0 - April 18, 2013
--
-
- Updated to SQLite 3.7.16.2. -
- Properly handle embedded NUL characters in parameter and column values. Fix for [3567020edf]. -
- Make use of the sqlite3_prepare_v2 function when applicable. -
- Check for a valid row in the SQLiteDataReader.GetValue method. -
- Implement processor architecture detection when running on the .NET Compact Framework (via P/Invoke). -
- Support automated testing when running on the .NET Compact Framework 2.0. -
- Skip checking loaded assemblies for types tagged with the SQLiteFunction attribute when the No_SQLiteFunctions environment variable is set. Pursuant to [e4c8121f7b]. -
- Add HexPassword connection string property to work around the inability to include a literal semicolon in a connection string property value. Pursuant to [1c456ae75f]. -
- Add static Execute method to the SQLiteCommand class. -
- Support custom connection pool implementations by adding the ISQLiteConnectionPool interface, the static SQLiteConnection.ConnectionPool property, and the static CreateHandle method in addition to modifying the SQLiteConnectionPool class. Pursuant to [393d954be0]. -
- Add public constructor to the SQLiteDataAdapter class that allows passing the parseViaFramework parameter to the SQLiteConnection constructor. -
- When built with the CHECK_STATE compile-time option, skip throwing exceptions from the SQLiteDataReader class when the object is being disposed. -
- Support automatic value conversions for columns with a declared type of BIGUINT, INTEGER8, INTEGER16, INTEGER32, INTEGER64, SMALLUINT, TINYSINT, UNSIGNEDINTEGER, UNSIGNEDINTEGER8, UNSIGNEDINTEGER16, UNSIGNEDINTEGER32, UNSIGNEDINTEGER64, INT8, INT16, INT32, INT64, UINT, UINT8, UINT16, UINT32, UINT64, or ULONG. -
- Add BindUInt32AsInt64 connection flag to force binding of UInt32 values as Int64 instead. Pursuant to [c010fa6584]. -
- Add BindAllAsText and GetAllAsText connection flags to force binding and returning of all values as text. -
- Remove AUTOINCREMENT from the column type name map. ** Potentially Incompatible Change ** -
- Avoid throwing overflow exceptions from the SQLite3.GetValue method for integral column types. Partial fix for [c010fa6584]. ** Potentially Incompatible Change ** -
- Use the legacy connection closing algorithm when built with the INTEROP_LEGACY_CLOSE compile-time option. -
- Support using the directory containing the primary managed-only assembly as the basis for native library pre-loading. -
- Still further enhancements to the build and test automation. -
1.0.84.0 - January 9, 2013
--
-
- Updated to SQLite 3.7.15.2. -
- Explicitly dispose of all SQLiteCommand objects managed by the DbDataAdapter class. Fix for [6434e23a0f]. -
- Add Cancel method to the SQLiteConnection class to interrupt a long running query. -
- Improve thread safety of the SQLiteLog.LogMessage method. -
1.0.83.0 - December 29, 2012
--
-
- Updated to SQLite 3.7.15.1. +
- Updated to SQLite 3.7.15.
- Add Visual Studio 2012 support to all the applicable solution/project files, their associated supporting files, and the test suite.
- Add Visual Studio 2012 support to the redesigned designer support installer.
- Allow opened connections to skip adding the extension functions included in the interop assembly via the new NoExtensionFunctions connection flag.
- Support loading of SQLite extensions via the new EnableExtensions and LoadExtension methods of the SQLiteConnection class. Pursuant to [17045010df]. -
- Remove one set of surrounding single or double quotes from property names and values parsed from the connection string. Fix for [b4cc611998]. -
- Modify parsing of connection strings to allow property names and values to be quoted. ** Potentially Incompatible Change ** -
- Add ParseViaFramework property to the SQLiteConnection class to allow the built-in (i.e. framework provided) connection string parser to be used when opening a connection. Pursuant to [b4cc611998].
- Add notifications before and after any connection is opened and closed, as well as other related notifications, via the new static Changed event.
- Add an overload of the SQLiteLog.LogMessage method that takes a single string parameter.
- Add an overload of the SQLiteConnection.LogMessage method that takes a SQLiteErrorCode parameter.
- All applicable calls into the SQLite core library now return a SQLiteErrorCode instead of an integer error code.
- Make sure the error code of the SQLiteException class gets serialized. @@ -101,19 +61,15 @@
- The public constructor for the SQLiteException now takes a SQLiteErrorCode instead of an integer error code. ** Potentially Incompatible Change **
- The ErrorCode property of the SQLiteException is now an Int32, to allow the property inherited from the base class to be properly overridden. ** Potentially Incompatible Change **
- The ErrorCode field of the LogEventArgs is now an object instead of an integer. ** Potentially Incompatible Change **
- The names and messages associated with the SQLiteErrorCode enumeration values have been normalized to match those in the SQLite core library. ** Potentially Incompatible Change **
- Implement more robust locking semantics for the CriticalHandle derived classes when compiled for the .NET Compact Framework. -
- Cache column indexes as they are looked up when using the SQLiteDataReader to improve performance. +
- Cache column indexes are they are looked up when using the SQLiteDataReader to improve performance.
- Prevent the SQLiteConnection.Close method from throwing non-fatal exceptions during its disposal.
- Rename the interop assembly functions sqlite3_cursor_rowid, sqlite3_context_collcompare, sqlite3_context_collseq, sqlite3_cursor_rowid, and sqlite3_table_cursor to include an "_interop" suffix. ** Potentially Incompatible Change **
- Prevent the LastInsertRowId, MemoryUsed, and MemoryHighwater connection properties from throwing NotSupportedException when running on the .NET Compact Framework. Fix for [dd45aba387]. -
- Improve automatic detection of the sqlite3_close_v2 function when compiled to use the standard SQLite library.
- Add protection against ThreadAbortException asynchronously interrupting native resource initialization and finalization. -
- Add native logging callback for use with the sqlite3_log function to the interop assembly, enabled via the INTEROP_LOG preprocessor definition. -
- Add various diagnostic messages to the interop assembly, enabled via flags in the INTEROP_DEBUG preprocessor definition. -
- Further enhancements to the build and test automation.
- Add test automation for the Windows CE binaries.
- Updated to SQLite 3.7.14. Index: Doc/Extra/welcome.html ================================================================== --- Doc/Extra/welcome.html +++ Doc/Extra/welcome.html @@ -158,11 +158,11 @@
- [[SQLITE_FCNTL_BUSYHANDLER]] -** ^The [SQLITE_FCNTL_BUSYHANDLER] -** file-control may be invoked by SQLite on the database file handle +** ^This file-control may be invoked by SQLite on the database file handle ** shortly after it is opened in order to provide a custom VFS with access ** to the connections busy-handler callback. The argument is of type (void **) ** - an array of two (void *) values. The first (void *) actually points ** to a function of type (int (*)(void *)). In order to invoke the connections ** busy-handler, this function should be invoked with the second (void *) in ** the array as the only argument. If it returns non-zero, then the operation ** should be retried. If it returns zero, the custom VFS should abandon the ** current operation. -** -**
- [[SQLITE_FCNTL_TEMPFILENAME]] -** ^Application can invoke the [SQLITE_FCNTL_TEMPFILENAME] file-control -** to have SQLite generate a -** temporary filename using the same algorithm that is followed to generate -** temporary filenames for TEMP tables and other internal uses. The -** argument should be a char** which will be filled with the filename -** written into memory obtained from [sqlite3_malloc()]. The caller should -** invoke [sqlite3_free()] on the result to avoid a memory leak. -** -**
- [[SQLITE_FCNTL_MMAP_SIZE]]
-** The [SQLITE_FCNTL_MMAP_SIZE] file control is used to query or set the
-** maximum number of bytes that will be used for memory-mapped I/O.
-** The argument is a pointer to a value of type sqlite3_int64 that
-** is an advisory maximum number of bytes in the file to memory map. The
-** pointer is overwritten with the old value. The limit is not changed if
-** the value originally pointed to is negative, and so the current limit
-** can be queried by passing in a pointer to a negative number. This
-** file-control is used internally to implement [PRAGMA mmap_size].
-**
-**
*/
#define SQLITE_FCNTL_LOCKSTATE 1
#define SQLITE_GET_LOCKPROXYFILE 2
#define SQLITE_SET_LOCKPROXYFILE 3
#define SQLITE_LAST_ERRNO 4
@@ -1493,12 +1448,10 @@
#define SQLITE_FCNTL_OVERWRITE 11
#define SQLITE_FCNTL_VFSNAME 12
#define SQLITE_FCNTL_POWERSAFE_OVERWRITE 13
#define SQLITE_FCNTL_PRAGMA 14
#define SQLITE_FCNTL_BUSYHANDLER 15
-#define SQLITE_FCNTL_TEMPFILENAME 16
-#define SQLITE_FCNTL_MMAP_SIZE 18
/*
** CAPI3REF: Mutex Handle
**
** The mutex module within SQLite defines [sqlite3_mutex] to be an
@@ -2161,13 +2114,11 @@
**
- ^(This option takes a single argument which is a pointer to an ** [sqlite3_pcache_methods2] object. SQLite copies of the current ** page cache implementation into that object.)^
** ** [[SQLITE_CONFIG_LOG]]- SQLITE_CONFIG_LOG
-**- The SQLITE_CONFIG_LOG option is used to configure the SQLite -** global [error log]. -** (^The SQLITE_CONFIG_LOG option takes two arguments: a pointer to a +**
- ^The SQLITE_CONFIG_LOG option takes two arguments: a pointer to a ** function with a call signature of void(*)(void*,int,const char*), ** and a pointer to void. ^If the function pointer is not NULL, it is ** invoked by [sqlite3_log()] to process each logging event. ^If the ** function pointer is NULL, the [sqlite3_log()] interface becomes a no-op. ** ^The void pointer that is the second argument to SQLITE_CONFIG_LOG is @@ -2194,11 +2145,11 @@ ** database connection is opened. By default, URI handling is globally ** disabled. The default value may be changed by compiling with the ** [SQLITE_USE_URI] symbol defined. ** ** [[SQLITE_CONFIG_COVERING_INDEX_SCAN]]
- SQLITE_CONFIG_COVERING_INDEX_SCAN -**
- This option takes a single integer argument which is interpreted as +**
- This option taks a single integer argument which is interpreted as ** a boolean in order to enable or disable the use of covering indices for ** full table scans in the query optimizer. The default setting is determined ** by the [SQLITE_ALLOW_COVERING_INDEX_SCAN] compile-time option, or is "on" ** if that compile-time option is omitted. ** The ability to disable the use of covering indices for full table scans @@ -2209,42 +2160,10 @@ ** ** [[SQLITE_CONFIG_PCACHE]] [[SQLITE_CONFIG_GETPCACHE]] **
- SQLITE_CONFIG_PCACHE and SQLITE_CONFIG_GETPCACHE **
- These options are obsolete and should not be used by new code. ** They are retained for backwards compatibility but are now no-ops. -**
-** -** [[SQLITE_CONFIG_SQLLOG]] -**- SQLITE_CONFIG_SQLLOG -**
- This option is only available if sqlite is compiled with the -** [SQLITE_ENABLE_SQLLOG] pre-processor macro defined. The first argument should -** be a pointer to a function of type void(*)(void*,sqlite3*,const char*, int). -** The second should be of type (void*). The callback is invoked by the library -** in three separate circumstances, identified by the value passed as the -** fourth parameter. If the fourth parameter is 0, then the database connection -** passed as the second argument has just been opened. The third argument -** points to a buffer containing the name of the main database file. If the -** fourth parameter is 1, then the SQL statement that the third parameter -** points to has just been executed. Or, if the fourth parameter is 2, then -** the connection being passed as the second parameter is being closed. The -** third parameter is passed NULL In this case. An example of using this -** configuration option can be seen in the "test_sqllog.c" source file in -** the canonical SQLite source tree.
-** -** [[SQLITE_CONFIG_MMAP_SIZE]] -**- SQLITE_CONFIG_MMAP_SIZE -**
- SQLITE_CONFIG_MMAP_SIZE takes two 64-bit integer (sqlite3_int64) values -** that are the default mmap size limit (the default setting for -** [PRAGMA mmap_size]) and the maximum allowed mmap size limit. -** The default setting can be overridden by each database connection using -** either the [PRAGMA mmap_size] command, or by using the -** [SQLITE_FCNTL_MMAP_SIZE] file control. The maximum allowed mmap size -** cannot be changed at run-time. Nor may the maximum allowed mmap size -** exceed the compile-time maximum mmap size set by the -** [SQLITE_MAX_MMAP_SIZE] compile-time option. -** If either argument to this option is negative, then that argument is -** changed to its compile-time default. ** */ #define SQLITE_CONFIG_SINGLETHREAD 1 /* nil */ #define SQLITE_CONFIG_MULTITHREAD 2 /* nil */ #define SQLITE_CONFIG_SERIALIZED 3 /* nil */ @@ -2263,12 +2182,10 @@ #define SQLITE_CONFIG_LOG 16 /* xFunc, void* */ #define SQLITE_CONFIG_URI 17 /* int */ #define SQLITE_CONFIG_PCACHE2 18 /* sqlite3_pcache_methods2* */ #define SQLITE_CONFIG_GETPCACHE2 19 /* sqlite3_pcache_methods2* */ #define SQLITE_CONFIG_COVERING_INDEX_SCAN 20 /* int */ -#define SQLITE_CONFIG_SQLLOG 21 /* xSqllog, void* */ -#define SQLITE_CONFIG_MMAP_SIZE 22 /* sqlite3_int64, sqlite3_int64 */ /* ** CAPI3REF: Database Connection Configuration Options ** ** These constants are the available integer configuration options that @@ -3098,13 +3015,10 @@ ** SQL statement text as the statement first begins executing. ** ^(Additional sqlite3_trace() callbacks might occur ** as each triggered subprogram is entered. The callbacks for triggers ** contain a UTF-8 SQL comment that identifies the trigger.)^ ** -** The [SQLITE_TRACE_SIZE_LIMIT] compile-time option can be used to limit -** the length of [bound parameter] expansion in the output of sqlite3_trace(). -** ** ^The callback function registered by sqlite3_profile() is invoked ** as each SQL statement finishes. ^The profile callback contains ** the original statement text and an estimate of wall-clock time ** of how long that statement took to run. ^The profile callback ** time is in units of nanoseconds, however the current implementation @@ -3292,11 +3206,11 @@ ** "private". ^Setting it to "shared" is equivalent to setting the ** SQLITE_OPEN_SHAREDCACHE bit in the flags argument passed to ** sqlite3_open_v2(). ^Setting the cache parameter to "private" is ** equivalent to setting the SQLITE_OPEN_PRIVATECACHE bit. ** ^If sqlite3_open_v2() is used and the "cache" parameter is present in -** a URI filename, its value overrides any behavior requested by setting +** a URI filename, its value overrides any behaviour requested by setting ** SQLITE_OPEN_PRIVATECACHE or SQLITE_OPEN_SHAREDCACHE flag. ** ** ** ^Specifying an unknown parameter in the query component of a URI is not an ** error. Future versions of SQLite might understand additional query @@ -3639,12 +3553,11 @@ ** **
-
**
- ** ^If the database schema changes, instead of returning [SQLITE_SCHEMA] as it ** always used to do, [sqlite3_step()] will automatically recompile the SQL -** statement and try to run it again. As many as [SQLITE_MAX_SCHEMA_RETRY] -** retries will occur before sqlite3_step() gives up and returns an error. +** statement and try to run it again. ** ** **
-
** ^When an error occurs, [sqlite3_step()] will return one of the detailed
** [error codes] or [extended error codes]. ^The legacy behavior was that
@@ -3844,13 +3757,10 @@
** for "?NNN" parameters is the value of NNN.
** ^The NNN value must be between 1 and the [sqlite3_limit()]
** parameter [SQLITE_LIMIT_VARIABLE_NUMBER] (default value: 999).
**
** ^The third argument is the value to bind to the parameter.
-** ^If the third parameter to sqlite3_bind_text() or sqlite3_bind_text16()
-** or sqlite3_bind_blob() is a NULL pointer then the fourth parameter
-** is ignored and the end result is the same as sqlite3_bind_null().
**
** ^(In those routines that have a fourth argument, its value is the
** number of bytes in the parameter. To be clear: the value is the
** number of bytes in the value, not the number of characters.)^
** ^If the fourth parameter to sqlite3_bind_text() or sqlite3_bind_text16()
@@ -4614,12 +4524,11 @@
SQLITE_API SQLITE_DEPRECATED int sqlite3_aggregate_count(sqlite3_context*);
SQLITE_API SQLITE_DEPRECATED int sqlite3_expired(sqlite3_stmt*);
SQLITE_API SQLITE_DEPRECATED int sqlite3_transfer_bindings(sqlite3_stmt*, sqlite3_stmt*);
SQLITE_API SQLITE_DEPRECATED int sqlite3_global_recover(void);
SQLITE_API SQLITE_DEPRECATED void sqlite3_thread_cleanup(void);
-SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int64,int),
- void*,sqlite3_int64);
+SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int64,int),void*,sqlite3_int64);
#endif
/*
** CAPI3REF: Obtaining SQL Function Parameter Values
**
@@ -4695,21 +4604,18 @@
** an aggregate query, the xStep() callback of the aggregate function
** implementation is never called and xFinal() is called exactly once.
** In those cases, sqlite3_aggregate_context() might be called for the
** first time from within xFinal().)^
**
-** ^The sqlite3_aggregate_context(C,N) routine returns a NULL pointer
-** when first called if N is less than or equal to zero or if a memory
-** allocate error occurs.
+** ^The sqlite3_aggregate_context(C,N) routine returns a NULL pointer if N is
+** less than or equal to zero or if a memory allocate error occurs.
**
** ^(The amount of space allocated by sqlite3_aggregate_context(C,N) is
** determined by the N parameter on first successful call. Changing the
** value of N in subsequent call to sqlite3_aggregate_context() within
** the same aggregate function instance will not resize the memory
-** allocation.)^ Within the xFinal callback, it is customary to set
-** N=0 in calls to sqlite3_aggregate_context(C,N) so that no
-** pointless memory allocations occur.
+** allocation.)^
**
** ^SQLite automatically frees the memory allocated by
** sqlite3_aggregate_context() when the aggregate query concludes.
**
** The first parameter must be a copy of the
@@ -4803,11 +4709,11 @@
** SQLITE_TRANSIENT value means that the content will likely change in
** the near future and that SQLite should make its own private copy of
** the content before returning.
**
** The typedef is necessary to work around problems in certain
-** C++ compilers.
+** C++ compilers. See ticket #2191.
*/
typedef void (*sqlite3_destructor_type)(void*);
#define SQLITE_STATIC ((sqlite3_destructor_type)0)
#define SQLITE_TRANSIENT ((sqlite3_destructor_type)-1)
@@ -5602,24 +5508,15 @@
** CAPI3REF: Load An Extension
**
** ^This interface loads an SQLite extension library from the named file.
**
** ^The sqlite3_load_extension() interface attempts to load an
-** [SQLite extension] library contained in the file zFile. If
-** the file cannot be loaded directly, attempts are made to load
-** with various operating-system specific extensions added.
-** So for example, if "samplelib" cannot be loaded, then names like
-** "samplelib.so" or "samplelib.dylib" or "samplelib.dll" might
-** be tried also.
+** SQLite extension library contained in the file zFile.
**
** ^The entry point is zProc.
-** ^(zProc may be 0, in which case SQLite will try to come up with an
-** entry point name on its own. It first tries "sqlite3_extension_init".
-** If that does not work, it constructs a name "sqlite3_X_init" where the
-** X is consists of the lower-case equivalent of all ASCII alphabetic
-** characters in the filename from the last "/" to the first following
-** "." and omitting any initial "lib".)^
+** ^zProc may be 0, in which case the name of the entry point
+** defaults to "sqlite3_extension_init".
** ^The sqlite3_load_extension() interface returns
** [SQLITE_OK] on success and [SQLITE_ERROR] if something goes wrong.
** ^If an error occurs and pzErrMsg is not 0, then the
** [sqlite3_load_extension()] interface shall attempt to
** fill *pzErrMsg with error message text stored in memory
@@ -5641,15 +5538,15 @@
/*
** CAPI3REF: Enable Or Disable Extension Loading
**
** ^So as not to open security holes in older applications that are
-** unprepared to deal with [extension loading], and as a means of disabling
-** [extension loading] while evaluating user-entered SQL, the following API
+** unprepared to deal with extension loading, and as a means of disabling
+** extension loading while evaluating user-entered SQL, the following API
** is provided to turn the [sqlite3_load_extension()] mechanism on and off.
**
-** ^Extension loading is off by default.
+** ^Extension loading is off by default. See ticket #1863.
** ^Call the sqlite3_enable_load_extension() routine with onoff==1
** to turn extension loading on and call it with onoff==0 to turn
** it back off again.
*/
SQLITE_API int sqlite3_enable_load_extension(sqlite3 *db, int onoff);
@@ -5657,11 +5554,11 @@
/*
** CAPI3REF: Automatically Load Statically Linked Extensions
**
** ^This interface causes the xEntryPoint() function to be invoked for
** each new [database connection] that is created. The idea here is that
-** xEntryPoint() is the entry point for a statically linked [SQLite extension]
+** xEntryPoint() is the entry point for a statically linked SQLite extension
** that is to be automatically loaded into all new database connections.
**
** ^(Even though the function prototype shows that xEntryPoint() takes
** no arguments and returns void, SQLite invokes xEntryPoint() with three
** arguments and expects and integer result as if the signature of the
@@ -7008,11 +6905,11 @@
** intact. If the requested page is not already in the cache, then the
** cache implementation should use the value of the createFlag
** parameter to help it determined what action to take:
**
**
-**
createFlag Behavior when page is not already in cache +** createFlag Behaviour when page is not already in cache ** 0 Do not allocate a new page. Return NULL. ** 1 Allocate a new page if it easy and convenient to do so. ** Otherwise return NULL. ** 2 Make every effort to allocate a new page. Only return ** NULL if allocating a new page is effectively impossible. @@ -7437,29 +7334,14 @@ ** independence" that SQLite uses internally when comparing identifiers. */ SQLITE_API int sqlite3_stricmp(const char *, const char *); SQLITE_API int sqlite3_strnicmp(const char *, const char *, int); -/* -** CAPI3REF: String Globbing -* -** ^The [sqlite3_strglob(P,X)] interface returns zero if string X matches -** the glob pattern P, and it returns non-zero if string X does not match -** the glob pattern P. ^The definition of glob pattern matching used in -** [sqlite3_strglob(P,X)] is the same as for the "X GLOB P" operator in the -** SQL dialect used by SQLite. ^The sqlite3_strglob(P,X) function is case -** sensitive. -** -** Note that this routine returns zero on a match and non-zero if the strings -** do not match, the same as [sqlite3_stricmp()] and [sqlite3_strnicmp()]. -*/ -SQLITE_API int sqlite3_strglob(const char *zGlob, const char *zStr); - /* ** CAPI3REF: Error Logging Interface ** -** ^The [sqlite3_log()] interface writes a message into the [error log] +** ^The [sqlite3_log()] interface writes a message into the error log ** established by the [SQLITE_CONFIG_LOG] option to [sqlite3_config()]. ** ^If logging is enabled, the zFormat string and subsequent arguments are ** used with [sqlite3_snprintf()] to generate the final output string. ** ** The sqlite3_log() interface is intended for use by extensions such as @@ -7828,11 +7710,11 @@ ** May you do good and not evil. ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* -** This is the header file for the generic hash-table implementation +** This is the header file for the generic hash-table implemenation ** used in SQLite. */ #ifndef _SQLITE_HASH_H_ #define _SQLITE_HASH_H_ @@ -8140,11 +8022,10 @@ ** Provide a default value for SQLITE_TEMP_STORE in case it is not specified ** on the command-line */ #ifndef SQLITE_TEMP_STORE # define SQLITE_TEMP_STORE 1 -# define SQLITE_TEMP_STORE_xc 1 /* Exclude from ctime.c */ #endif /* ** GCC does not define the offsetof() macro so we'll have to do it ** ourselves. @@ -8288,53 +8169,10 @@ # define EIGHT_BYTE_ALIGNMENT(X) ((((char*)(X) - (char*)0)&3)==0) #else # define EIGHT_BYTE_ALIGNMENT(X) ((((char*)(X) - (char*)0)&7)==0) #endif -/* -** Disable MMAP on platforms where it is known to not work -*/ -#if defined(__OpenBSD__) || defined(__QNXNTO__) -# undef SQLITE_MAX_MMAP_SIZE -# define SQLITE_MAX_MMAP_SIZE 0 -#endif - -/* -** Default maximum size of memory used by memory-mapped I/O in the VFS -*/ -#ifdef __APPLE__ -# include -# if TARGET_OS_IPHONE -# undef SQLITE_MAX_MMAP_SIZE -# define SQLITE_MAX_MMAP_SIZE 0 -# endif -#endif -#ifndef SQLITE_MAX_MMAP_SIZE -# if defined(__linux__) \ - || defined(_WIN32) \ - || (defined(__APPLE__) && defined(__MACH__)) \ - || defined(__sun) -# define SQLITE_MAX_MMAP_SIZE 0x7fff0000 /* 2147418112 */ -# else -# define SQLITE_MAX_MMAP_SIZE 0 -# endif -# define SQLITE_MAX_MMAP_SIZE_xc 1 /* exclude from ctime.c */ -#endif - -/* -** The default MMAP_SIZE is zero on all platforms. Or, even if a larger -** default MMAP_SIZE is specified at compile-time, make sure that it does -** not exceed the maximum mmap size. -*/ -#ifndef SQLITE_DEFAULT_MMAP_SIZE -# define SQLITE_DEFAULT_MMAP_SIZE 0 -# define SQLITE_DEFAULT_MMAP_SIZE_xc 1 /* Exclude from ctime.c */ -#endif -#if SQLITE_DEFAULT_MMAP_SIZE>SQLITE_MAX_MMAP_SIZE -# undef SQLITE_DEFAULT_MMAP_SIZE -# define SQLITE_DEFAULT_MMAP_SIZE SQLITE_MAX_MMAP_SIZE -#endif /* ** An instance of the following structure is used to store the busy-handler ** callback for a given sqlite handle. ** @@ -8372,15 +8210,10 @@ ** A convenience macro that returns the number of elements in ** an array. */ #define ArraySize(X) ((int)(sizeof(X)/sizeof(X[0]))) -/* -** Determine if the argument is a power of two -*/ -#define IsPowerOfTwo(X) (((X)&((X)-1))==0) - /* ** The following value as a destructor means to use sqlite3DbFree(). ** The sqlite3DbFree() routine requires two parameters instead of the ** one parameter that destructors normally want. So we have to introduce ** this magic value that the code knows to handle differently. Any @@ -8552,11 +8385,10 @@ #define BTREE_SINGLE 4 /* The file contains at most 1 b-tree */ #define BTREE_UNORDERED 8 /* Use of a hash implementation is OK */ SQLITE_PRIVATE int sqlite3BtreeClose(Btree*); SQLITE_PRIVATE int sqlite3BtreeSetCacheSize(Btree*,int); -SQLITE_PRIVATE int sqlite3BtreeSetMmapLimit(Btree*,sqlite3_int64); SQLITE_PRIVATE int sqlite3BtreeSetSafetyLevel(Btree*,int,int,int); SQLITE_PRIVATE int sqlite3BtreeSyncDisabled(Btree*); SQLITE_PRIVATE int sqlite3BtreeSetPageSize(Btree *p, int nPagesize, int nReserve, int eFix); SQLITE_PRIVATE int sqlite3BtreeGetPageSize(Btree*); SQLITE_PRIVATE int sqlite3BtreeMaxPageCount(Btree*,int); @@ -8607,12 +8439,10 @@ SQLITE_PRIVATE void sqlite3BtreeTripAllCursors(Btree*, int); SQLITE_PRIVATE void sqlite3BtreeGetMeta(Btree *pBtree, int idx, u32 *pValue); SQLITE_PRIVATE int sqlite3BtreeUpdateMeta(Btree*, int idx, u32 value); -SQLITE_PRIVATE int sqlite3BtreeNewDb(Btree *p); - /* ** The second parameter to sqlite3BtreeGetMeta or sqlite3BtreeUpdateMeta ** should be one of the following values. The integer values are assigned ** to constants so that the offset of the corresponding field in an ** SQLite database header may be found using the following formula: @@ -8629,11 +8459,10 @@ #define BTREE_DEFAULT_CACHE_SIZE 3 #define BTREE_LARGEST_ROOT_PAGE 4 #define BTREE_TEXT_ENCODING 5 #define BTREE_USER_VERSION 6 #define BTREE_INCR_VACUUM 7 -#define BTREE_APPLICATION_ID 8 /* ** Values that may be OR'd together to form the second argument of an ** sqlite3BtreeCursorHints() call. */ @@ -9124,11 +8953,11 @@ SQLITE_PRIVATE void sqlite3VdbeUsesBtree(Vdbe*, int); SQLITE_PRIVATE VdbeOp *sqlite3VdbeGetOp(Vdbe*, int); SQLITE_PRIVATE int sqlite3VdbeMakeLabel(Vdbe*); SQLITE_PRIVATE void sqlite3VdbeRunOnlyOnce(Vdbe*); SQLITE_PRIVATE void sqlite3VdbeDelete(Vdbe*); -SQLITE_PRIVATE void sqlite3VdbeClearObject(sqlite3*,Vdbe*); +SQLITE_PRIVATE void sqlite3VdbeDeleteObject(sqlite3*,Vdbe*); SQLITE_PRIVATE void sqlite3VdbeMakeReady(Vdbe*,Parse*); SQLITE_PRIVATE int sqlite3VdbeFinalize(Vdbe*); SQLITE_PRIVATE void sqlite3VdbeResolveLabel(Vdbe*, int); SQLITE_PRIVATE int sqlite3VdbeCurrentAddr(Vdbe*); #ifdef SQLITE_DEBUG @@ -9254,16 +9083,10 @@ #define PAGER_JOURNALMODE_OFF 2 /* Journal omitted. */ #define PAGER_JOURNALMODE_TRUNCATE 3 /* Commit by truncating journal */ #define PAGER_JOURNALMODE_MEMORY 4 /* In-memory journal file */ #define PAGER_JOURNALMODE_WAL 5 /* Use write-ahead logging */ -/* -** Flags that make up the mask passed to sqlite3PagerAcquire(). -*/ -#define PAGER_ACQUIRE_NOCONTENT 0x01 /* Do not load data from disk */ -#define PAGER_ACQUIRE_READONLY 0x02 /* Read-only page is acceptable */ - /* ** The remainder of this file contains the declarations of the functions ** that make up the Pager sub-system API. See source code comments for ** a detailed description of each routine. */ @@ -9284,11 +9107,10 @@ /* Functions used to configure a Pager object. */ SQLITE_PRIVATE void sqlite3PagerSetBusyhandler(Pager*, int(*)(void *), void *); SQLITE_PRIVATE int sqlite3PagerSetPagesize(Pager*, u32*, int); SQLITE_PRIVATE int sqlite3PagerMaxPageCount(Pager*, int); SQLITE_PRIVATE void sqlite3PagerSetCachesize(Pager*, int); -SQLITE_PRIVATE void sqlite3PagerSetMmapLimit(Pager *, sqlite3_int64); SQLITE_PRIVATE void sqlite3PagerShrink(Pager*); SQLITE_PRIVATE void sqlite3PagerSetSafetyLevel(Pager*,int,int,int); SQLITE_PRIVATE int sqlite3PagerLockingMode(Pager *, int); SQLITE_PRIVATE int sqlite3PagerSetJournalMode(Pager *, int); SQLITE_PRIVATE int sqlite3PagerGetJournalMode(Pager*); @@ -9431,12 +9253,10 @@ ** writing this page to the database */ #define PGHDR_NEED_READ 0x008 /* Content is unread */ #define PGHDR_REUSE_UNLIKELY 0x010 /* A hint that reuse is unlikely */ #define PGHDR_DONT_WRITE 0x020 /* Do not write content to disk */ -#define PGHDR_MMAP 0x040 /* This is an mmap page object */ - /* Initialize and shutdown the page cache subsystem */ SQLITE_PRIVATE int sqlite3PcacheInitialize(void); SQLITE_PRIVATE void sqlite3PcacheShutdown(void); /* Page cache buffer management: @@ -9644,10 +9464,18 @@ */ #if !defined(SQLITE_OS_WINRT) # define SQLITE_OS_WINRT 0 #endif +/* +** When compiled for WinCE or WinRT, there is no concept of the current +** directory. + */ +#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT +# define SQLITE_CURDIR 1 +#endif + /* If the SET_FULLSYNC macro is not defined above, then make it ** a no-op */ #ifndef SET_FULLSYNC # define SET_FULLSYNC(x,y) @@ -9796,12 +9624,10 @@ SQLITE_PRIVATE int sqlite3OsDeviceCharacteristics(sqlite3_file *id); SQLITE_PRIVATE int sqlite3OsShmMap(sqlite3_file *,int,int,int,void volatile **); SQLITE_PRIVATE int sqlite3OsShmLock(sqlite3_file *id, int, int, int); SQLITE_PRIVATE void sqlite3OsShmBarrier(sqlite3_file *id); SQLITE_PRIVATE int sqlite3OsShmUnmap(sqlite3_file *id, int); -SQLITE_PRIVATE int sqlite3OsFetch(sqlite3_file *id, i64, int, void **); -SQLITE_PRIVATE int sqlite3OsUnfetch(sqlite3_file *, i64, void *); /* ** Functions for accessing sqlite3_vfs methods */ @@ -10037,15 +9863,14 @@ sqlite3_mutex *mutex; /* Connection mutex */ Db *aDb; /* All backends */ int nDb; /* Number of backends currently in use */ int flags; /* Miscellaneous flags. See below */ i64 lastRowid; /* ROWID of most recent insert (see above) */ - i64 szMmap; /* Default mmap_size setting */ unsigned int openFlags; /* Flags passed to sqlite3_vfs.xOpen() */ int errCode; /* Most recent error code (SQLITE_*) */ int errMask; /* & result codes with this before returning */ - u16 dbOptFlags; /* Flags to enable/disable optimizations */ + u8 dbOptFlags; /* Flags to enable/disable optimizations */ u8 autoCommit; /* The auto-commit flag. */ u8 temp_store; /* 1: file 2: memory 0: default */ u8 mallocFailed; /* True if we have seen a malloc failure */ u8 dfltLockMode; /* Default locking-mode for attached dbs */ signed char nextAutovac; /* Autovac setting after VACUUM if >=0 */ @@ -10158,11 +9983,11 @@ #define SQLITE_NullCallback 0x00000020 /* Invoke the callback once if the */ /* result set is empty */ #define SQLITE_SqlTrace 0x00000040 /* Debug print SQL as it executes */ #define SQLITE_VdbeListing 0x00000080 /* Debug listings of VDBE programs */ #define SQLITE_WriteSchema 0x00000100 /* OK to update SQLITE_MASTER */ -#define SQLITE_VdbeAddopTrace 0x00000200 /* Trace sqlite3VdbeAddOp() calls */ + /* 0x00000200 Unused */ #define SQLITE_IgnoreChecks 0x00000400 /* Do not enforce check constraints */ #define SQLITE_ReadUncommitted 0x0000800 /* For shared-cache mode */ #define SQLITE_LegacyFileFmt 0x00001000 /* Create new databases in format 1 */ #define SQLITE_FullFSync 0x00002000 /* Use full fsync on the backend */ #define SQLITE_CkptFullFSync 0x00004000 /* Use full fsync for checkpoint */ @@ -10186,13 +10011,11 @@ #define SQLITE_FactorOutConst 0x0008 /* Constant factoring */ #define SQLITE_IdxRealAsInt 0x0010 /* Store REAL as INT in indices */ #define SQLITE_DistinctOpt 0x0020 /* DISTINCT using indexes */ #define SQLITE_CoverIdxScan 0x0040 /* Covering index scans */ #define SQLITE_OrderByIdxJoin 0x0080 /* ORDER BY of joins via index */ -#define SQLITE_SubqCoroutine 0x0100 /* Evaluate subqueries as coroutines */ -#define SQLITE_Transitive 0x0200 /* Transitive constraints */ -#define SQLITE_AllOpts 0xffff /* All optimizations */ +#define SQLITE_AllOpts 0x00ff /* All optimizations */ /* ** Macros for testing whether or not optimizations are enabled or disabled. */ #ifndef SQLITE_OMIT_BUILTIN_TEST @@ -10365,11 +10188,23 @@ /* ** A "Collating Sequence" is defined by an instance of the following ** structure. Conceptually, a collating sequence consists of a name and ** a comparison routine that defines the order of that sequence. ** -** If CollSeq.xCmp is NULL, it means that the +** There may two separate implementations of the collation function, one +** that processes text in UTF-8 encoding (CollSeq.xCmp) and another that +** processes text encoded in UTF-16 (CollSeq.xCmp16), using the machine +** native byte order. When a collation sequence is invoked, SQLite selects +** the version that will require the least expensive encoding +** translations, if any. +** +** The CollSeq.pUser member variable is an extra parameter that passed in +** as the first argument to the UTF-8 comparison function, xCmp. +** CollSeq.pUser16 is the equivalent for the UTF-16 comparison function, +** xCmp16. +** +** If both CollSeq.xCmp and CollSeq.xCmp16 are NULL, it means that the ** collating sequence is undefined. Indices built on an undefined ** collating sequence may not be read or written. */ struct CollSeq { char *zName; /* Name of the collating sequence, UTF-8 encoded */ @@ -10699,24 +10534,24 @@ ** and the value of Index.onError indicate the which conflict resolution ** algorithm to employ whenever an attempt is made to insert a non-unique ** element. */ struct Index { - char *zName; /* Name of this index */ - int *aiColumn; /* Which columns are used by this index. 1st is 0 */ - tRowcnt *aiRowEst; /* From ANALYZE: Est. rows selected by each column */ - Table *pTable; /* The SQL table being indexed */ - char *zColAff; /* String defining the affinity of each column */ - Index *pNext; /* The next index associated with the same table */ - Schema *pSchema; /* Schema containing this index */ - u8 *aSortOrder; /* for each column: True==DESC, False==ASC */ - char **azColl; /* Array of collation sequence names for index */ - int tnum; /* DB Page containing root of this index */ - u16 nColumn; /* Number of columns in table used by this index */ - u8 onError; /* OE_Abort, OE_Ignore, OE_Replace, or OE_None */ - unsigned autoIndex:2; /* 1==UNIQUE, 2==PRIMARY KEY, 0==CREATE INDEX */ - unsigned bUnordered:1; /* Use this index for == or IN queries only */ + char *zName; /* Name of this index */ + int *aiColumn; /* Which columns are used by this index. 1st is 0 */ + tRowcnt *aiRowEst; /* Result of ANALYZE: Est. rows selected by each column */ + Table *pTable; /* The SQL table being indexed */ + char *zColAff; /* String defining the affinity of each column */ + Index *pNext; /* The next index associated with the same table */ + Schema *pSchema; /* Schema containing this index */ + u8 *aSortOrder; /* Array of size Index.nColumn. True==DESC, False==ASC */ + char **azColl; /* Array of collation sequence names for index */ + int nColumn; /* Number of columns in the table used by this index */ + int tnum; /* Page containing root of this index in database file */ + u8 onError; /* OE_Abort, OE_Ignore, OE_Replace, or OE_None */ + u8 autoIndex; /* True if is automatically created (ex: by UNIQUE) */ + u8 bUnordered; /* Use this index for == or IN queries only */ #ifdef SQLITE_ENABLE_STAT3 int nSample; /* Number of elements in aSample[] */ tRowcnt avgEq; /* Average nEq value for key values not in aSample */ IndexSample *aSample; /* Samples of the left-most key */ #endif @@ -10893,10 +10728,11 @@ Expr *pRight; /* Right subnode */ union { ExprList *pList; /* Function arguments or in " IN ( IN (
1.0.83.0 - December XX, 2012 (release scheduled)
+-
+
1.0.82.0 - September 3, 2012
Distributing the Binaries (Compact Framework)
Both the System.Data.SQLite.DLL and SQLite.Interop.XXX.DLL files must be deployed on the Compact Framework. The XXX is the build number of - the System.Data.SQLite library (e.g. "086"). The + the System.Data.SQLite library (e.g. "083"). The SQLite.Interop.XXX.DLL file is a fully native assembly compiled for the ARM processor, and System.Data.SQLite is the fully-managed Compact Framework assembly.
Index: Doc/SQLite.NET.chm
==================================================================
--- Doc/SQLite.NET.chm
+++ Doc/SQLite.NET.chm
cannot compute difference between binary files
Index: Externals/Eagle/bin/Eagle.dll
==================================================================
--- Externals/Eagle/bin/Eagle.dll
+++ Externals/Eagle/bin/Eagle.dll
cannot compute difference between binary files
Index: Externals/Eagle/bin/EagleShell.exe
==================================================================
--- Externals/Eagle/bin/EagleShell.exe
+++ Externals/Eagle/bin/EagleShell.exe
cannot compute difference between binary files
Index: Externals/Eagle/bin/EagleShell.exe.mda.config
==================================================================
--- Externals/Eagle/bin/EagleShell.exe.mda.config
+++ Externals/Eagle/bin/EagleShell.exe.mda.config
@@ -11,12 +11,11 @@
* RCS: @(#) $Id: $
*
-->
-
+ -->
Index: Externals/Eagle/lib/Eagle1.0/init.eagle
==================================================================
--- Externals/Eagle/lib/Eagle1.0/init.eagle
+++ Externals/Eagle/lib/Eagle1.0/init.eagle
@@ -141,11 +141,11 @@
proc lappendArgs { args } {
#
# NOTE: This should work properly in both Tcl and Eagle.
#
- set result [list]; eval lappend result $args
+ eval lappend result $args
}
proc getDictionaryValue { dictionary name {default ""} {wrap ""} } {
#
# NOTE: Locate the named value we are interested in. The dictionary must
@@ -637,28 +637,10 @@
if {[llength $args] > 0} then {eval lappend command $args}
return [uplevel 1 $command]
}
- proc lshuffle { list } {
- #
- # NOTE: This code for this algorithm was stolen from the Tcl library
- # struct package and modified to conform with the Eagle style
- # guide.
- #
- set result $list
-
- for {set length [llength $result]} \
- {$length > 1} {lset result $index $element} {
- set index [expr {int(rand() * $length)}]
- set element [lindex $result [incr length -1]]
- lset result $length [lindex $result $index]
- }
-
- return $result
- }
-
proc ldifference { list1 list2 } {
set result [list]
foreach element $list1 {
if {[lsearch -exact $list2 $element] == -1} then {
@@ -996,15 +978,10 @@
unset errors; # dispose
return $code
}
- proc matchEnginePublicKeyToken { publicKeyToken } {
- return [expr {[string length $publicKeyToken] == 0 || \
- $publicKeyToken eq [info engine PublicKeyToken]}]
- }
-
proc matchEngineName { name } {
return [expr {[string length $name] == 0 || \
$name eq [info engine Name]}]
}
@@ -1063,28 +1040,47 @@
#
# NOTE: Next, figure out what type of download is being
# requested.
#
switch -exact -nocase -- $type {
- source -
- setup -
+ source {
+ #
+ # NOTE: Source code download. This may be a RAR or an EXE
+ # file. Append the appropriate file name and then
+ # join all the URI components to form the final URI.
+ #
+ set fileName [appendArgs EagleSource $patchLevel $extension]
+ lappend components $fileName
+
+ set result [list [eval uri join $components] \
+ [file join $directory $fileName]]
+ }
+ setup {
+ #
+ # NOTE: Windows setup download. Always append an ".exe"
+ # extension because we never distribute the setup as
+ # a RAR file. Append the appropriate file name and
+ # then join all the URI components to form the final
+ # URI.
+ #
+ set fileName [appendArgs EagleSetup $patchLevel .exe]
+ lappend components $fileName
+
+ set result [list [eval uri join $components] \
+ [file join $directory $fileName]]
+ }
binary {
#
- # NOTE: Source code, setup, or binary download. This may be
- # a RAR or an EXE file. Append the appropriate file
- # name and then join all the URI components to form the
- # final URI.
- #
- set fileName [appendArgs \
- [info engine] [string totitle $type] $patchLevel \
- [expr {[string tolower $type] eq "setup" ? ".exe" : \
- $extension}]]
-
+ # NOTE: Binary file download. This may be a RAR or an EXE
+ # file. Append the appropriate file name and then
+ # join all the URI components to form the final URI.
+ #
+ set fileName [appendArgs EagleBinary $patchLevel $extension]
lappend components $fileName
- set result [list [eval uri join $components] [file join \
- $directory $fileName]]
+ set result [list [eval uri join $components] \
+ [file join $directory $fileName]]
}
}
}
}
}
@@ -1254,11 +1250,11 @@
# version" is on the first line (for a given public key
# token), followed by development builds, experimental
# builds, etc.
#
if {$protocolId eq "1" && \
- [matchEnginePublicKeyToken $publicKeyToken] && \
+ $publicKeyToken eq [info engine PublicKeyToken] && \
[matchEngineName $name] && \
[matchEngineCulture $culture]} then {
#
# NOTE: Grab the patch level field.
#
@@ -1443,15 +1439,15 @@
# HACK: Mono does not currently support calling the String.Format
# overload that takes a variable number of arguments via
# reflection (Mono bug #636939).
#
if {![isMono]} then {
- set line [string format -verbatim -- [appendArgs "\{0,-" \
- $maxLength "\} = {1}"] $nameString $valueString]
+ set line [string format -verbatim -- "{0,-$maxLength} = {1}" \
+ $nameString $valueString]
} else {
- set line [object invoke String Format [appendArgs "\{0,-" \
- $maxLength "\} = {1}"] $nameString $valueString]
+ set line [object invoke String Format "{0,-$maxLength} = {1}" \
+ $nameString $valueString]
}
puts stdout $line
}
}
@@ -1554,60 +1550,37 @@
# NOTE: This should work properly in both Tcl and Eagle.
#
catch {puts stderr $string}
}
- proc makeVariableFast { name fast } {
- #
- # NOTE: This should work properly in Eagle only.
- #
- catch {
- uplevel 1 [list object invoke -flags +NonPublic \
- Interpreter.GetActive MakeVariableFast $name $fast]
- }
- }
-
- proc findDirectories { pattern } {
- #
- # NOTE: Block non-Windows platforms since this is Windows specific.
- #
- if {$::tcl_platform(platform) ne "windows"} then {
- error "not supported on this operating system"
- }
-
- #
- # NOTE: This should work properly in Eagle only.
- #
- set dir ""; set result [list]
-
- #
- # HACK: Optimize the variable access in this procedure to be
- # as fast as possible.
- #
- makeVariableFast dir true; makeVariableFast result true
-
- foreach dir [split [exec -unicode $::env(ComSpec) /u /c dir \
- /ad /b [appendArgs \" [file nativename $pattern] \"]] \n] {
- set dir [string trim $dir]
-
- if {[string length $dir] > 0} then {
- set dir [getDirResultPath $pattern $dir]
-
- if {[lsearch -variable -exact -nocase result $dir] == -1} then {
- lappend result $dir
- }
- }
- }
-
- foreach dir [split [exec -unicode $::env(ComSpec) /u /c dir \
- /ahd /b [appendArgs \" [file nativename $pattern] \"]] \n] {
- set dir [string trim $dir]
-
- if {[string length $dir] > 0} then {
- set dir [getDirResultPath $pattern $dir]
-
- if {[lsearch -variable -exact -nocase result $dir] == -1} then {
+ proc findDirectories { pattern } {
+ #
+ # NOTE: This should work properly in Eagle only.
+ #
+ set result [list]
+
+ foreach dir [split [exec $::env(ComSpec) /c dir /ad /b \
+ [appendArgs \" [file nativename $pattern] \"]] \n] {
+ set dir [string trim $dir]
+
+ if {[string length $dir] > 0} then {
+ set dir [getDirResultPath $pattern $dir]
+
+ if {[lsearch -exact -nocase $result $dir] == -1} then {
+ lappend result $dir
+ }
+ }
+ }
+
+ foreach dir [split [exec $::env(ComSpec) /c dir /ahd /b \
+ [appendArgs \" [file nativename $pattern] \"]] \n] {
+ set dir [string trim $dir]
+
+ if {[string length $dir] > 0} then {
+ set dir [getDirResultPath $pattern $dir]
+
+ if {[lsearch -exact -nocase $result $dir] == -1} then {
lappend result $dir
}
}
}
@@ -1614,48 +1587,35 @@
return $result
}
proc findFiles { pattern } {
#
- # NOTE: Block non-Windows platforms since this is Windows specific.
- #
- if {$::tcl_platform(platform) ne "windows"} then {
- error "not supported on this operating system"
- }
-
- #
- # NOTE: This should work properly in Eagle only.
- #
- set fileName ""; set result [list]
-
- #
- # HACK: Optimize the variable access in this procedure to be
- # as fast as possible.
- #
- makeVariableFast fileName true; makeVariableFast result true
-
- foreach fileName [split [exec -unicode $::env(ComSpec) /u /c dir \
- /a-d /b [appendArgs \" [file nativename $pattern] \"]] \n] {
- set fileName [string trim $fileName]
-
- if {[string length $fileName] > 0} then {
- set fileName [getDirResultPath $pattern $fileName]
-
- if {[lsearch -variable -exact -nocase result $fileName] == -1} then {
- lappend result $fileName
- }
- }
- }
-
- foreach fileName [split [exec -unicode $::env(ComSpec) /u /c dir \
- /ah-d /b [appendArgs \" [file nativename $pattern] \"]] \n] {
- set fileName [string trim $fileName]
-
- if {[string length $fileName] > 0} then {
- set fileName [getDirResultPath $pattern $fileName]
-
- if {[lsearch -variable -exact -nocase result $fileName] == -1} then {
+ # NOTE: This should work properly in Eagle only.
+ #
+ set result [list]
+
+ foreach fileName [split [exec $::env(ComSpec) /c dir /a-d /b \
+ [appendArgs \" [file nativename $pattern] \"]] \n] {
+ set fileName [string trim $fileName]
+
+ if {[string length $fileName] > 0} then {
+ set fileName [getDirResultPath $pattern $fileName]
+
+ if {[lsearch -exact -nocase $result $fileName] == -1} then {
+ lappend result $fileName
+ }
+ }
+ }
+
+ foreach fileName [split [exec $::env(ComSpec) /c dir /ah-d /b \
+ [appendArgs \" [file nativename $pattern] \"]] \n] {
+ set fileName [string trim $fileName]
+
+ if {[string length $fileName] > 0} then {
+ set fileName [getDirResultPath $pattern $fileName]
+
+ if {[lsearch -exact -nocase $result $fileName] == -1} then {
lappend result $fileName
}
}
}
@@ -1662,48 +1622,35 @@
return $result
}
proc findFilesRecursive { pattern } {
#
- # NOTE: Block non-Windows platforms since this is Windows specific.
- #
- if {$::tcl_platform(platform) ne "windows"} then {
- error "not supported on this operating system"
- }
-
- #
- # NOTE: This should work properly in Eagle only.
- #
- set fileName ""; set result [list]
-
- #
- # HACK: Optimize the variable access in this procedure to be
- # as fast as possible.
- #
- makeVariableFast fileName true; makeVariableFast result true
-
- foreach fileName [split [exec -unicode $::env(ComSpec) /u /c dir \
- /a-d /s /b [appendArgs \" [file nativename $pattern] \"]] \n] {
- set fileName [string trim $fileName]
-
- if {[string length $fileName] > 0} then {
- set fileName [getDirResultPath $pattern $fileName]
-
- if {[lsearch -variable -exact -nocase result $fileName] == -1} then {
- lappend result $fileName
- }
- }
- }
-
- foreach fileName [split [exec -unicode $::env(ComSpec) /u /c dir \
- /ah-d /s /b [appendArgs \" [file nativename $pattern] \"]] \n] {
- set fileName [string trim $fileName]
-
- if {[string length $fileName] > 0} then {
- set fileName [getDirResultPath $pattern $fileName]
-
- if {[lsearch -variable -exact -nocase result $fileName] == -1} then {
+ # NOTE: This should work properly in Eagle only.
+ #
+ set result [list]
+
+ foreach fileName [split [exec $::env(ComSpec) /c dir /a-d /s /b \
+ [appendArgs \" [file nativename $pattern] \"]] \n] {
+ set fileName [string trim $fileName]
+
+ if {[string length $fileName] > 0} then {
+ set fileName [getDirResultPath $pattern $fileName]
+
+ if {[lsearch -exact -nocase $result $fileName] == -1} then {
+ lappend result $fileName
+ }
+ }
+ }
+
+ foreach fileName [split [exec $::env(ComSpec) /c dir /ah-d /s /b \
+ [appendArgs \" [file nativename $pattern] \"]] \n] {
+ set fileName [string trim $fileName]
+
+ if {[string length $fileName] > 0} then {
+ set fileName [getDirResultPath $pattern $fileName]
+
+ if {[lsearch -exact -nocase $result $fileName] == -1} then {
lappend result $fileName
}
}
}
@@ -1757,17 +1704,10 @@
return $result
}
proc findFilesRecursive { pattern } {
- #
- # NOTE: Block non-Windows platforms since this is Windows specific.
- #
- if {$::tcl_platform(platform) ne "windows"} then {
- error "not supported on this operating system"
- }
-
#
# NOTE: This should work properly in Tcl only.
#
set result [list]
@@ -1851,19 +1791,14 @@
#
# NOTE: Exports the necessary commands from this package and import them
# into the global namespace.
#
exportAndImportPackageCommands [namespace current] [list \
- isEagle haveGaruda isMono getEnvironmentVariable combineFlags \
- getCompileInfo getPlatformInfo getPluginPath appendArgs lappendArgs \
- getDictionaryValue getColumnValue getRowColumnValue tqputs tqlog \
- readFile readSharedFile writeFile appendFile appendLogFile \
- appendSharedFile appendSharedLogFile readAsciiFile writeAsciiFile \
- readUnicodeFile writeUnicodeFile getDirResultPath addToPath \
- removeFromPath execShell lshuffle ldifference filter map reduce \
- getLengthModifier debug findDirectories findFiles findFilesRecursive \
- exportAndImportPackageCommands] false false
+ exportAndImportPackageCommands isEagle isMono getEnvironmentVariable \
+ getPluginPath getDictionaryValue getColumnValue getRowColumnValue \
+ appendArgs haveGaruda lappendArgs readFile filter map reduce \
+ getPlatformInfo execShell combineFlags tqputs tqlog] false false
###########################################################################
############################## END Tcl ONLY ###############################
###########################################################################
}
Index: Externals/Eagle/lib/Eagle1.0/safe.eagle
==================================================================
--- Externals/Eagle/lib/Eagle1.0/safe.eagle
+++ Externals/Eagle/lib/Eagle1.0/safe.eagle
@@ -73,11 +73,11 @@
###########################################################################
############################# END Eagle ONLY ##############################
###########################################################################
}
-
+
#
# NOTE: Provide the Eagle "safe" package to the interpreter.
#
package provide Eagle.Safe \
[expr {[isEagle] ? [info engine PatchLevel] : "1.0"}]
Index: Externals/Eagle/lib/Eagle1.0/shell.eagle
==================================================================
--- Externals/Eagle/lib/Eagle1.0/shell.eagle
+++ Externals/Eagle/lib/Eagle1.0/shell.eagle
@@ -45,11 +45,11 @@
###########################################################################
############################## END Tcl ONLY ###############################
###########################################################################
}
-
+
#
# NOTE: Provide the Eagle shell package to the interpreter.
#
package provide Eagle.Shell \
[expr {[isEagle] ? [info engine PatchLevel] : "1.0"}]
Index: Externals/Eagle/lib/Eagle1.0/test.eagle
==================================================================
--- Externals/Eagle/lib/Eagle1.0/test.eagle
+++ Externals/Eagle/lib/Eagle1.0/test.eagle
@@ -297,18 +297,18 @@
# NOTE: Calculate how many whole seconds we need to spin for.
#
set seconds [expr {$milliseconds / 1000}]
#
- # NOTE: Calculate the starting and ending values of [clock seconds].
+ # NOTE: Calculate the value of [clock seconds] now and at the stop time.
#
- set now [clock seconds]; set start $now; set stop [expr {$now + $seconds}]
+ set start [clock seconds]; set stop [expr {$start + $seconds}]
#
# NOTE: Do nothing for X seconds (i.e. except call [clock seconds]).
#
- while {$start <= $now && $now < $stop} {set now [clock seconds]}
+ while {$start <= [clock seconds] && [clock seconds] < $stop} {}
#
# NOTE: Record the final Tcl command count.
#
set after [info cmdcount]
@@ -386,12 +386,12 @@
#
# TODO: Add more support for standard tcltest options here.
#
set options [list -configuration -constraints -exitOnComplete -file \
- -logFile -machine -match -no -notFile -platform -postTest -preTest \
- -randomOrder -skip -stopOnFailure -suffix -suite -tclsh -threshold]
+ -logFile -match -no -notFile -postTest -preTest -skip -stopOnFailure \
+ -suffix -threshold]
foreach {name value} $args {
#
# NOTE: Use the [tqputs] command here just in case the test log file
# has not been setup yet (i.e. by default, this procedure is
@@ -416,37 +416,10 @@
# NOTE: Now, attempt to flush the test log queue, if available.
#
tlog ""
}
- proc getTclShellFileName {} {
- #
- # NOTE: Check the environment variables we know about that
- # may contain the path where the Tcl shell is located.
- #
- foreach name [list Eagle_Tcl_Shell Tcl_Shell] {
- set value [getEnvironmentVariable $name]
-
- #
- # TODO: Possibly add a check if the file actually exists
- # here.
- #
- if {[string length $value] > 0} then {
- #
- # NOTE: *EXTERNAL* Return verbatim, no normalization.
- #
- return $value
- }
- }
-
- #
- # NOTE: None of the environment variables returned anything
- # valid, return the fallback default.
- #
- return tclsh
- }
-
proc getTemporaryPath {} {
#
# NOTE: Build the list of "temporary directory" override
# environment variables to check.
#
@@ -488,22 +461,14 @@
}
}
proc getFiles { directory pattern } {
if {[isEagle]} then {
- set result [list]
-
- foreach fileName [lsort -dictionary [file list $directory $pattern]] {
- if {[file isfile $fileName] && [file readable $fileName]} then {
- lappend result $fileName
- }
- }
-
- return $result
+ return [lsort -dictionary [file list $directory $pattern]]
} else {
return [lsort -dictionary [glob -directory $directory -types \
- {f r} -nocomplain -- $pattern]]
+ {b c f p s} -nocomplain -- $pattern]]
}
}
proc getTestFiles { directories matchFilePatterns skipFilePatterns } {
set result [list]
@@ -604,176 +569,10 @@
proc getTestLog {} {
return [expr {[info exists ::test_log] ? $::test_log : ""}]
}
- proc getTestSuite {} {
- #
- # NOTE: Determine the effective test suite name and return it. If the
- # test suite name cannot be determined, return the default based
- # on whether we are running in Eagle or native Tcl.
- #
- if {[info exists ::test_flags(-suite)] && \
- [string length $::test_flags(-suite)] > 0} then {
- #
- # NOTE: The test suite name has been manually overridden via the test
- # flags; therefore, use it.
- #
- return $::test_flags(-suite)
- } elseif {[info exists ::test_suite]} then {
- #
- # NOTE: Use the test suite name. The default value is set by the test
- # suite prologue; however, this may have been overridden.
- #
- return $::test_suite
- } elseif {[isEagle]} then {
- #
- # NOTE: Use the default test suite name for Eagle.
- #
- return "Eagle Test Suite for Eagle"
- } else {
- #
- # NOTE: Use the default test suite name for native Tcl.
- #
- return "Eagle Test Suite for Tcl"
- }
- }
-
- proc getTestMachine {} {
- #
- # NOTE: Determine the effective test machine and return it. If the
- # test machine cannot be determined, return an empty string.
- #
- if {[info exists ::test_flags(-machine)] && \
- [string length $::test_flags(-machine)] > 0} then {
- #
- # NOTE: The test machine has been manually overridden via the test
- # flags; therefore, use it.
- #
- return $::test_flags(-machine)
- } elseif {[info exists ::test_machine]} then {
- #
- # NOTE: Use the test machine. The default value is set by the test
- # suite prologue; however, this may have been overridden.
- #
- return $::test_machine
- } elseif {[info exists ::tcl_platform(machine)]} then {
- #
- # NOTE: Use the build machine of Eagle itself.
- #
- return $::tcl_platform(machine)
- } else {
- #
- # NOTE: We are missing the machine, return nothing.
- #
- return ""
- }
- }
-
- proc getTestPlatform { {architecture false} } {
- #
- # NOTE: Determine the effective test platform and return it. If the
- # test platform cannot be determined, return an empty string.
- #
- if {[info exists ::test_flags(-platform)] && \
- [string length $::test_flags(-platform)] > 0} then {
- #
- # NOTE: The test platform has been manually overridden via the test
- # flags; therefore, use it.
- #
- return $::test_flags(-platform)
- } elseif {[info exists ::test_platform]} then {
- #
- # NOTE: Use the test platform. The default value is set by the test
- # suite prologue; however, this may have been overridden.
- #
- return $::test_platform
- } else {
- set machine [getTestMachine]
-
- if {[string length $machine] > 0} then {
- #
- # NOTE: Use the machine architecture to figure out the platform
- # and then return it.
- #
- return [machineToPlatform $machine $architecture]
- } else {
- #
- # NOTE: We are missing the machine and we cannot figure out the
- # platform without it; therefore, return nothing.
- #
- return ""
- }
- }
- }
-
- proc getTestConfiguration {} {
- #
- # NOTE: Determine the effective test configuration and return it. If
- # the test configuration cannot be determined, return an empty
- # string.
- #
- if {[info exists ::test_flags(-configuration)] && \
- [string length $::test_flags(-configuration)] > 0} then {
- #
- # NOTE: The test configuration has been manually overridden via the
- # test flags; therefore, use it.
- #
- return $::test_flags(-configuration)
- } elseif {[info exists ::test_configuration]} then {
- #
- # NOTE: Use the test configuration. The default value is set by the
- # test suite prologue; however, this may have been overridden.
- #
- return $::test_configuration
- } elseif {[info exists ::eagle_platform(configuration)]} then {
- #
- # NOTE: Use the build configuration of Eagle itself. This value will
- # most likely be either "Debug" or "Release".
- #
- return $::eagle_platform(configuration)
- } else {
- #
- # NOTE: We are missing the configuration, return nothing.
- #
- return ""
- }
- }
-
- proc getTestSuffix {} {
- #
- # NOTE: Determine the effective test suffix and return it. If
- # the test suffix cannot be determined, return an empty
- # string.
- #
- if {[info exists ::test_flags(-suffix)] && \
- [string length $::test_flags(-suffix)] > 0} then {
- #
- # NOTE: The test suffix has been manually overridden via the
- # test flags; therefore, use it.
- #
- return $::test_flags(-suffix)
- } elseif {[info exists ::test_suffix]} then {
- #
- # NOTE: Use the test suffix. There is no default value for
- # this variable (i.e. by default, it does not exist).
- #
- return $::test_suffix
- } elseif {[info exists ::eagle_platform(text)]} then {
- #
- # NOTE: Use the build text of Eagle itself. This value will
- # typically be "NetFx20" or "NetFx40".
- #
- return $::eagle_platform(text)
- } else {
- #
- # NOTE: We are missing the suffix, return nothing.
- #
- return ""
- }
- }
-
proc testExec { commandName options args } {
set command [list exec]
if {[llength $options] > 0} then {eval lappend command $options}
@@ -817,16 +616,10 @@
[info nameofexecutable] "\" " $args]] \n]
return [uplevel 1 execShell [list $options] $args]
}
- proc isRandomOrder {} {
- return [expr {[info exists ::test_random_order] && \
- [string is boolean -strict $::test_random_order] && \
- $::test_random_order}]
- }
-
proc isStopOnFailure {} {
return [expr {[info exists ::test_stop_on_failure] && \
[string is boolean -strict $::test_stop_on_failure] && \
$::test_stop_on_failure}]
}
@@ -884,11 +677,11 @@
switch [llength $args] {
1 {
#
# NOTE: Only the string to be printed is specified (stdout).
#
- return [tputs $::test_channel [appendArgs [lindex $args 0] \n]]
+ return [tputs $::test_channel [lindex $args 0]]
}
2 {
#
# NOTE: Either -nonewline or channelId has been specified.
#
@@ -1122,23 +915,23 @@
#
set count 0; upvar 1 $statsVarName array
foreach statistic $statistics {
if {$array($statistic,after) > $array($statistic,before)} then {
- incr count; lappend array(statistics,leaked) $statistic
+ incr count
tputs $channel [appendArgs "==== \"" $fileName "\" LEAKED " \
$statistic \n]
if {[info exists array($statistic,before,list)]} then {
tputs $channel [appendArgs "---- " $statistic " BEFORE: " \
- [formatList $array($statistic,before,list)] \n]
+ $array($statistic,before,list) \n]
}
if {[info exists array($statistic,after,list)]} then {
tputs $channel [appendArgs "---- " $statistic " AFTER: " \
- [formatList $array($statistic,after,list)] \n]
+ $array($statistic,after,list) \n]
}
}
}
#
@@ -1288,62 +1081,22 @@
if {[isEagle]} then {
host title $status
}
}
- proc reportTestStatisticCounts { channel statsVarName } {
- upvar 1 $statsVarName array
-
- #
- # NOTE: Were any counts recorded during the testing?
- #
- if {[info exists array(statistics,leaked)]} then {
- #
- # NOTE: Process each leak type in the list, recording any duplicates
- # in the temporary count array.
- #
- foreach statistic $array(statistics,leaked) {
- if {[info exists count($statistic)]} then {
- incr count($statistic)
- } else {
- set count($statistic) 1
- }
- }
-
- #
- # NOTE: Flatten the temporary count array into a dictionary formatted
- # list and then possibly display it (i.e. if it actually contains
- # any data).
- #
- set statistics [array get count]
-
- if {[llength statistics] > 0} then {
- tputs $channel [appendArgs "---- types of leaks detected: " \
- [formatListAsDict $statistics] \n]
- }
- }
- }
-
proc runAllTests { channel path fileNames skipFileNames } {
- #
- # NOTE: Are we configured to run the test files in random order?
- #
- if {[isRandomOrder]} then {
- set fileNames [lshuffle $fileNames]
- }
-
#
# NOTE: Show the exact arguments we received since they may not
# have been displayed by the caller (or anybody else).
#
tputs $channel [appendArgs "---- test run path: \"" $path \"\n]
tputs $channel [appendArgs "---- test run file names: " \
- [formatList [removePathFromFileNames $path $fileNames]] \n]
+ [list [removePathFromFileNames $path $fileNames]] \n]
tputs $channel [appendArgs "---- test run skip file names: " \
- [formatList $skipFileNames] \n]
+ [list $skipFileNames] \n]
#
# NOTE: Keep going unless this becomes true (i.e. if one of the
# test files signals us to stop).
#
@@ -1487,10 +1240,23 @@
#
# NOTE: We evaluated another test file.
#
incr count
+ #
+ # NOTE: In terms of files, not tests, what percent done are we now?
+ #
+ set percent [formatDecimal \
+ [expr {$total != 0 ? 100.0 * ($count / double($total)) : 100}]]
+
+ if {$percent != $lastPercent} then {
+ reportTestPercent $channel $percent \
+ [llength $failed] [llength $leaked]
+
+ set lastPercent $percent
+ }
+
#
# NOTE: Record failed test count after this file.
#
if {[isEagle]} then {
set after $::eagle_tests(failed)
@@ -1503,23 +1269,10 @@
#
if {$after > $before} then {
lappend failed [file tail $fileName]
}
- #
- # NOTE: In terms of files, not tests, what percent done are we now?
- #
- set percent [formatDecimal \
- [expr {$total != 0 ? 100.0 * ($count / double($total)) : 100}]]
-
- if {$percent != $lastPercent} then {
- reportTestPercent $channel $percent \
- [llength $failed] [llength $leaked]
-
- set lastPercent $percent
- }
-
#
# NOTE: Unset the current test file name, it is no longer
# needed.
#
unset -nocomplain ::test_file
@@ -1538,16 +1291,10 @@
# output diagnostics as necessary if they have.
#
reportTestStatistics $channel $fileName leaks leaked
}
} else {
- #
- # NOTE: This entire file has been skipped. Record that fact in the
- # test suite log file.
- #
- tputs $channel [appendArgs "==== \"" $fileName "\" NON_TEST_FILE\n"]
-
#
# NOTE: This file does not actually count towards the total (i.e.
# it contains no actual tests).
#
incr total -1
@@ -1573,16 +1320,10 @@
#
if {$stop} then {
break
}
} else {
- #
- # NOTE: This entire file has been skipped. Record that fact in the
- # test suite log file.
- #
- tputs $channel [appendArgs "==== \"" $fileName "\" SKIPPED\n"]
-
#
# NOTE: This file does not actually count towards the total (i.e.
# it is part of the test suite infrastructure).
#
incr total -1
@@ -1613,20 +1354,16 @@
#
# NOTE: Show the files that had failing and/or leaking tests.
#
if {[llength $failed] > 0} then {
- tputs $channel [appendArgs "---- files with failing tests: " \
- [formatList $failed] \n]
+ tputs $channel [appendArgs "---- files with failing tests: " $failed \n]
}
if {[llength $leaked] > 0} then {
- tputs $channel [appendArgs "---- files with leaking tests: " \
- [formatList $leaked] \n]
+ tputs $channel [appendArgs "---- files with leaking tests: " $leaked \n]
}
-
- reportTestStatisticCounts $channel leaks
}
proc configureTcltest { constraints imports force } {
if {[isEagle]} then {
#
@@ -1978,16 +1715,10 @@
catch {file delete $fileName}
}
}
}
- proc getCommandsForTclShell {} {
- return [testExecTclScript {
- puts -nonewline stdout [info commands]
- }]
- }
-
proc getMachineForTclShell {} {
return [testExecTclScript {
puts -nonewline stdout $tcl_platform(machine)
}]
}
@@ -2003,19 +1734,30 @@
# NOTE: Get the Garuda DLL of the same platform (i.e. machine type)
# as the native Tcl shell.
#
if {[info exists ::base_path]} then {
#
- # NOTE: Get the effective test configuration.
- #
- set configuration [getTestConfiguration]
-
- #
- # NOTE: If there is no effective test configuration available, we
- # cannot continue.
- #
- if {[string length $configuration] == 0} then {
+ # NOTE: If the test configuration is available, use it. Failing that,
+ # use the build configuration of Eagle itself.
+ #
+ if {[info exists ::test_configuration]} then {
+ #
+ # NOTE: Use the test configuration. The default value is "Release",
+ # as set by the test suite prologue; however, this may have
+ # been overridden.
+ #
+ set configuration $::test_configuration
+ } elseif {[info exists ::eagle_platform(configuration)]} then {
+ #
+ # NOTE: Use the build configuration of Eagle itself. This value will
+ # always be "Debug" or "Release".
+ #
+ set configuration $::eagle_platform(configuration)
+ } else {
+ #
+ # NOTE: We are missing the configuration, return nothing.
+ #
return ""
}
#
# NOTE: Build the full path and file name of the Garuda DLL, using
@@ -2220,32 +1962,27 @@
#
# NOTE: We need several of our test related commands in the global
# namespace as well.
#
- exportAndImportPackageCommands [namespace current] [list \
- tputs tlog getSoftwareRegistryKey haveConstraint addConstraint \
- haveOrAddConstraint getConstraints removeConstraint fixConstraints \
- calculateBogoCops calculateRelativePerformance sourceIfValid \
- processTestArguments getTclShellFileName getTemporaryPath getFiles \
- getTestFiles getTestRunId getTestLogId getTestLog getTestSuite \
- getTestMachine getTestPlatform getTestConfiguration getTestSuffix \
- testExec testClrExec execTestShell isRandomOrder isStopOnFailure \
- isExitOnComplete returnInfoScript runTestPrologue runTestEpilogue \
- hookPuts unhookPuts runTest testShim tsource recordTestStatistics \
- reportTestStatistics formatList formatListAsDict pathToRegexp \
- inverseLsearchGlob removePathFromFileNames formatDecimal \
- clearTestPercent reportTestPercent runAllTests configureTcltest \
- machineToPlatform getPassPercentage getSkipPercentage] false false
+ exportAndImportPackageCommands [namespace current] [list addConstraint \
+ calculateRelativePerformance haveConstraint haveOrAddConstraint \
+ processTestArguments getTemporaryPath getTestLog getTestLogId getFiles \
+ getConstraints getTestFiles getTestRunId execTestShell runTestPrologue \
+ runTestEpilogue runTest runAllTests fixConstraints sourceIfValid \
+ isExitOnComplete getPassPercentage getSkipPercentage testExec tlog \
+ returnInfoScript tputs formatDecimal formatList configureTcltest \
+ calculateBogoCops removeConstraint machineToPlatform tsource testShim] \
+ false false
###########################################################################
############################## END Tcl ONLY ###############################
###########################################################################
}
-
+
#
# NOTE: Provide the Eagle test package to the interpreter.
#
package provide Eagle.Test \
[expr {[isEagle] ? [info engine PatchLevel] : "1.0"}]
}
Index: Externals/Eagle/lib/Eagle1.0/vendor.eagle
==================================================================
--- Externals/Eagle/lib/Eagle1.0/vendor.eagle
+++ Externals/Eagle/lib/Eagle1.0/vendor.eagle
@@ -42,15 +42,12 @@
}
incr result
if {!$quiet} then {
- catch {
- tqputs $channel [appendArgs \
- "---- found vendor-specific test override \"" $varName \
- "\" with value \"" [uplevel 1 [list set $varName]] \"\n]
- }
+ tqputs $channel [appendArgs \
+ "---- found vendor-specific test override \"" $varName "\".\n"]
}
}
#
# NOTE: Keep track of the list of test override variables, for later
@@ -110,15 +107,13 @@
[lsearch -exact $::env(EAGLELIBPATH) $dir2] == -1} then {
#
# NOTE: If we have NOT been instructed to be quiet, report now.
#
if {!$quiet} then {
- catch {
- tqputs $channel [appendArgs \
- "---- found vendor-specific test package directory \"" \
- $dir2 "\", adding...\n"]
- }
+ tqputs $channel [appendArgs \
+ "---- found vendor-specific test package directory \"" \
+ $dir2 "\", adding...\n"]
}
#
# NOTE: Append the directory to the necessary environment variable
# so that it will get picked up when Eagle actually rebuilds
@@ -147,14 +142,12 @@
#
# NOTE: If we have NOT been instructed to be quiet, report now.
#
if {!$quiet} then {
- catch {
- tqputs $channel \
- "---- could not find vendor-specific test package directory\n"
- }
+ tqputs $channel \
+ "---- could not find vendor-specific test package directory.\n"
}
#
# NOTE: Directory not found, return failure.
#
@@ -167,14 +160,12 @@
if {$dir ne $testPath} then {
object invoke -flags +NonPublic Interpreter.GetActive TestPath $dir
if {!$quiet} then {
- catch {
- tqputs $channel [appendArgs \
- "---- set interpreter test path to \"" $dir \"\n]
- }
+ tqputs $channel [appendArgs \
+ "---- set interpreter test path to \"" $dir \".\n]
}
}
}
#
@@ -183,20 +174,12 @@
#
checkForTestOverrides stdout [expr {[info exists test_overrides] ? \
$test_overrides : [list binary_directory build_base_directory \
build_directory common_directory connection_flags database_directory \
datetime_format scratch_directory temporary_directory \
- test_configuration test_configurations test_constraints \
- test_machine test_overrides test_platform test_suite test_year \
- test_years test_year_clr_v2 test_year_clr_v4 vendor_directory]}] false
-
- #
- # NOTE: Set the name of the running test suite, if necessary.
- #
- if {![info exists test_suite]} then {
- set test_suite "System.Data.SQLite Test Suite for Eagle"
- }
+ test_configuration test_overrides test_year test_year_clr_v2 \
+ test_year_clr_v4 vendor_directory]}] false
#
# NOTE: This variable will contain the name of the directory containing the
# vendor-specific testing infrastructure. If the variable does not
# already exist, create it; otherwise, it has been overridden and the
Index: Externals/Eagle/lib/Test1.0/constraints.eagle
==================================================================
--- Externals/Eagle/lib/Test1.0/constraints.eagle
+++ Externals/Eagle/lib/Test1.0/constraints.eagle
@@ -18,30 +18,19 @@
# NOTE: Use our own namespace here because even though we do not directly
# support namespaces ourselves, we do not want to pollute the global
# namespace if this script actually ends up being evaluated in Tcl.
#
namespace eval ::Eagle {
- proc getKnownMonoVersions {} {
- #
- # NOTE: This job of this procedure is to return the list of "known"
- # versions of Mono supported by the test suite infrastructure.
- #
- return [list \
- [list 2 0] [list 2 2] [list 2 4] [list 2 6] [list 2 8] [list 2 10] \
- [list 2 11] [list 2 12] [list 3 0] [list 3 1] [list 3 2] [list 3 3] \
- [list 3 4] [list 3 5] [list 3 6]]
- }
-
proc checkForPlatform { channel } {
tputs $channel "---- checking for platform... "
if {[info exists ::tcl_platform(platform)]} then {
addConstraint $::tcl_platform(platform)
tputs $channel [appendArgs $::tcl_platform(platform) \n]
} else {
- tputs $channel unknown\n
+ tputs $channel [appendArgs unknown \n]
}
###########################################################################
if {![isEagle]} then {
@@ -53,16 +42,14 @@
#
# NOTE: Add the necessary constraints for each version of Mono that
# we know about.
#
- foreach monoVersion [getKnownMonoVersions] {
- set constraintVersion [join $monoVersion ""]
-
- addConstraint [appendArgs monoToDo $constraintVersion]
- addConstraint [appendArgs monoBug $constraintVersion]
- addConstraint [appendArgs monoCrash $constraintVersion]
+ foreach version [list 20 22 24 26 28 210 211 212 30] {
+ addConstraint [appendArgs monoToDo $version]
+ addConstraint [appendArgs monoBug $version]
+ addConstraint [appendArgs monoCrash $version]
}
#
# NOTE: Also add just the generic Mono constraints that do not have
# a trailing version.
@@ -72,100 +59,10 @@
}
}
}
}
- proc checkForWindowsVersion { channel } {
- tputs $channel "---- checking for Windows version... "
-
- #
- # NOTE: Are we running on Windows at all?
- #
- if {[info exists ::tcl_platform(platform)] && \
- $::tcl_platform(platform) eq "windows"} then {
- #
- # NOTE: Is the specific OS name and version number available?
- #
- if {[info exists ::tcl_platform(os)] && \
- [string length $::tcl_platform(os)] > 0 && \
- [info exists ::tcl_platform(osVersion)] && \
- [string length $::tcl_platform(osVersion)] > 0 && \
- [regexp -- {^\d+\.\d+$} $::tcl_platform(osVersion)]} then {
- #
- # NOTE: Start out with the OS name, removing all spaces.
- #
- set version [appendArgs \
- [string map [list " " ""] $::tcl_platform(os)] _ \
- $::tcl_platform(osVersion)]
-
- #
- # NOTE: Add constraint containing the OS name and version number.
- #
- addConstraint [appendArgs osVersion. $version]
-
- #
- # NOTE: Show what we found for the OS name and version number.
- #
- tputs $channel [appendArgs "yes (" $::tcl_platform(os) " v" \
- $::tcl_platform(osVersion) ")\n"]
-
- #
- # NOTE: We are done here, return now.
- #
- return
- }
- }
-
- tputs $channel no\n
- }
-
- proc checkForScriptLibrary { channel } {
- tputs $channel "---- checking for script library... "
-
- #
- # NOTE: See if the variable containing the script library location
- # exists.
- #
- if {[info exists ::tcl_library] && \
- [string length $::tcl_library] > 0} then {
- #
- # NOTE: Now see if the script library is external or embedded.
- #
- if {[file isdirectory $::tcl_library]} then {
- #
- # NOTE: Yes, it appears to be a directory name, which should
- # mean that the necessary files are physically contained
- # within it.
- #
- addConstraint tcl_library_external
-
- tputs $channel "yes (external)\n"
-
- #
- # NOTE: We are done here, return now.
- #
- return
- } elseif {[file isfile $::tcl_library]} then {
- #
- # NOTE: Yes, it appears to be a file name, which should mean
- # that the necessary files are physically embedded within
- # it.
- #
- addConstraint tcl_library_embedded
-
- tputs $channel "yes (embedded)\n"
-
- #
- # NOTE: We are done here, return now.
- #
- return
- }
- }
-
- tputs $channel no\n
- }
-
proc checkForVariable { channel name {notEmpty true} {constraint ""} } {
tputs $channel [appendArgs "---- checking for variable \"" $name \
"\"... "]
#
@@ -652,59 +549,20 @@
} else {
tputs $channel no\n
}
}
- proc checkForTestMachine { channel } {
- tputs $channel "---- checking for test machine... "
-
- if {[info exists ::test_machine] && \
- [string length $::test_machine] > 0} then {
- addConstraint [appendArgs machine. $::test_machine]
-
- tputs $channel [appendArgs $::test_machine \n]
- } else {
- tputs $channel unknown\n
- }
- }
-
- proc checkForTestPlatform { channel } {
- tputs $channel "---- checking for test platform... "
-
- if {[info exists ::test_platform] && \
- [string length $::test_platform] > 0} then {
- addConstraint [appendArgs platform. $::test_platform]
-
- tputs $channel [appendArgs $::test_platform \n]
- } else {
- tputs $channel unknown\n
- }
- }
-
proc checkForTestConfiguration { channel } {
- tputs $channel "---- checking for test configuration... "
+ tputs $channel [appendArgs "---- checking for test configuration... "]
if {[info exists ::test_configuration] && \
[string length $::test_configuration] > 0} then {
addConstraint [appendArgs configuration. $::test_configuration]
tputs $channel [appendArgs $::test_configuration \n]
} else {
- tputs $channel unknown\n
- }
- }
-
- proc checkForTestSuffix { channel } {
- tputs $channel "---- checking for test suffix... "
-
- if {[info exists ::test_suffix] && \
- [string length $::test_suffix] > 0} then {
- addConstraint [appendArgs suffix. $::test_suffix]
-
- tputs $channel [appendArgs $::test_suffix \n]
- } else {
- tputs $channel unknown\n
+ tputs $channel [appendArgs unknown \n]
}
}
proc checkForFile { channel name {constraint ""} } {
tputs $channel [appendArgs "---- checking for file \"" $name \
@@ -916,27 +774,10 @@
} else {
tputs $channel no\n
}
}
- proc checkForTip405 { channel } {
- tputs $channel "---- checking for TIP #405... "
-
- #
- # NOTE: Does the interpreter have TIP #405 (i.e. [lmap])?
- #
- catch {lmap} error
-
- if {$error ne "invalid command name \"lmap\""} then {
- addConstraint tip405
-
- tputs $channel yes\n
- } else {
- tputs $channel no\n
- }
- }
-
proc checkForTiming {
channel threshold {constraint ""} {tries 1} {delay 1000}
{asynchronous false} } {
tputs $channel [appendArgs \
"---- checking for precision timing (threshold of " $threshold \
@@ -1025,25 +866,10 @@
} else {
tputs $channel no\n
}
}
- proc checkForStackIntensive { channel } {
- tputs $channel "---- checking for stack intensive testing... "
-
- #
- # NOTE: Are we allowed to do stack intensive testing?
- #
- if {![info exists ::no(stackIntensive)]} then {
- addConstraint stackIntensive
-
- tputs $channel yes\n
- } else {
- tputs $channel no\n
- }
- }
-
proc checkForInteractive { channel } {
tputs $channel "---- checking for interactive user... "
#
# NOTE: Is there an interactive user?
@@ -1055,41 +881,10 @@
} else {
tputs $channel no\n
}
}
- proc checkForInteractiveCommand { channel name } {
- tputs $channel [appendArgs "---- checking for interactive command \"" \
- $name "\"... "]
-
- #
- # NOTE: Currently, only Eagle has "interactive commands".
- #
- if {[isEagle]} then {
- #
- # NOTE: Attempt to query the interactive command names from Eagle.
- #
- if {[catch {object invoke Utility GetInteractiveCommandNames $name \
- false} names] == 0 && \
- [llength $names] > 0} then {
- #
- # NOTE: Yes, it appears that it is available.
- #
- addConstraint [appendArgs interactiveCommand. $name]
-
- tputs $channel yes\n
-
- #
- # NOTE: We are done here, return now.
- #
- return
- }
- }
-
- tputs $channel no\n
- }
-
proc checkForUserInteraction { channel } {
tputs $channel "---- checking for user interaction... "
#
# HACK: For now, do the exact same check as checkForInteractive; however,
@@ -1215,100 +1010,10 @@
} else {
tputs $channel untrusted\n
}
}
- proc checkForManagedDebuggingAssistants { channel } {
- set fileName [file normalize [appendArgs [info nameofexecutable] \
- .mda.config]]
-
- tputs $channel [appendArgs \
- "---- checking for managed debugging assistants enabled via \"" \
- $fileName "\"... "]
-
- if {[file exists $fileName]} then {
- #
- # NOTE: Since the System.Xml assembly may not be loaded, wrap the
- # detection in a [catch] block.
- #
- if {[catch {
- #
- # NOTE: Create and load an XML document based on the data from the
- # MDA configuration file associated with the executable that
- # started this process.
- #
- set document [object create -alias System.Xml.XmlDocument]
- $document LoadXml [readFile $fileName]
-
- #
- # NOTE: Setup the XML namespace manager for use when using XPath
- # to query the XML document.
- #
- set nameTable [$document NameTable]
-
- set namespaceManager [object create \
- -alias System.Xml.XmlNamespaceManager $nameTable]
-
- $namespaceManager AddNamespace mda \
- http://schemas.microsoft.com/CLR/2004/10/mda
-
- #
- # NOTE: Select all nodes underneath the location where they should
- # reside in the MDA configuration XML document.
- #
- set nodes [$document SelectNodes \
- /mda:mdaConfig/mda:assistants/* $namespaceManager]
-
- #
- # NOTE: Populate the local result variable with the names of
- # all the XML nodes found.
- #
- set names [object lmap -alias node $nodes {
- $node Name
- }]
- }] == 0} then {
- #
- # NOTE: Ok, the XML configuration file was loaded and parsed
- # correctly, see if any managed debugging assistants were
- # found enabled within it.
- #
- if {[info exists names] && [llength $names] > 0} then {
- #
- # NOTE: Add a test constraint for each managed debugging
- # assistant that appears to be enabled.
- #
- addConstraint mda
-
- foreach name $names {
- addConstraint [appendArgs mda. $name]
- }
-
- #
- # NOTE: Save the list of managed debugging assistants for
- # later use by the test suite.
- #
- if {![info exists ::no(setMdas)]} then {
- set ::test_mdas $names
- }
-
- #
- # NOTE: Yes, it appears that at least one managed debugging
- # assistant is enabled.
- #
- tputs $channel [appendArgs "yes (" $names ")\n"]
-
- #
- # NOTE: We are done here, return now.
- #
- return
- }
- }
- }
-
- tputs $channel no\n
- }
-
proc checkForStrongName { channel } {
tputs $channel "---- checking for strong name... "
if {[catch {object invoke Interpreter.GetActive GetStrongName} \
strongName] == 0 && \
@@ -1482,42 +1187,10 @@
} else {
tputs $channel no\n
}
}
- proc checkForFrameworkVersion { channel } {
- tputs $channel "---- checking for framework version... "
-
- if {[info exists ::eagle_platform(frameworkVersion)] && \
- [string length $::eagle_platform(frameworkVersion)] > 0} then {
- #
- # NOTE: Get the major and minor portions of the version only.
- #
- set dotVersion [join [lrange [split \
- $::eagle_platform(frameworkVersion) .] 0 1] .]
-
- #
- # NOTE: Now create a version string for use in the constraint name
- # (remove the periods).
- #
- set version [string map [list . ""] $dotVersion]
-
- #
- # NOTE: If the framework version was found, add a test constraint
- # for it now.
- #
- if {[string length $version] > 0} then {
- addConstraint [appendArgs framework $version]
- }
-
- tputs $channel [appendArgs $::eagle_platform(frameworkVersion) \
- " " ( $dotVersion ) \n]
- } else {
- tputs $channel no\n
- }
- }
-
proc checkForRuntimeVersion { channel } {
tputs $channel "---- checking for runtime version... "
if {[info exists ::eagle_platform(runtimeVersion)] && \
[string length $::eagle_platform(runtimeVersion)] > 0} then {
@@ -1532,95 +1205,124 @@
# (remove the periods).
#
set version [string map [list . ""] $dotVersion]
if {[isMono]} then {
- #
- # NOTE: If the runtime version was found, add a test constraint
- # for it now.
- #
if {[string length $version] > 0} then {
#
# NOTE: We are running on Mono. Keep track of the specific
# version for usage in test constraints.
#
addConstraint [appendArgs mono $version]
- addConstraint [appendArgs mono $version OrHigher]
- }
-
- #
- # NOTE: Attempt to parse the version into its major and minor
- # components.
- #
- if {[string length $dotVersion] > 0 && [regexp -- {^(\d+)\.(\d+)$} \
- $dotVersion dummy majorVersion minorVersion]} then {
- #
- # NOTE: This is the list of Mono versions to add test
- # constraints for.
- #
- set monoVersions [list]
-
- #
- # NOTE: Check each Mono version "known" to the test suite.
- #
- foreach monoVersion [getKnownMonoVersions] {
- #
- # NOTE: Check for any Mono major version X or higher.
- #
- if {$majorVersion >= [lindex $monoVersion 0]} then {
- #
- # NOTE: Check for any Mono major/minor version higher
- # than X.Y.
- #
- if {$majorVersion > [lindex $monoVersion 0] || \
- $minorVersion > [lindex $monoVersion 1]} then {
- #
- # NOTE: Add this "known" version of Mono.
- #
- lappend monoVersions $monoVersion
- }
- }
- }
-
- #
- # NOTE: Add the necessary constraints for each version of Mono
- # we should NOT skip bugs for.
- #
- foreach monoVersion $monoVersions {
- set constraintVersion [join $monoVersion ""]
-
- addConstraint [appendArgs mono $constraintVersion OrHigher]
- addConstraint [appendArgs monoToDo $constraintVersion]
- addConstraint [appendArgs monoBug $constraintVersion]
- addConstraint [appendArgs monoCrash $constraintVersion]
- }
- }
- } else {
- #
- # NOTE: If the runtime version was found, add a test constraint
- # for it now.
- #
+ }
+
+ if {[string length $dotVersion] > 0 && \
+ [regexp -- {^(\d+)\.(\d+)$} $dotVersion dummy \
+ majorVersion minorVersion]} then {
+ set monoVersions [list]
+
+ #
+ # NOTE: Check for any Mono version 2.x or higher.
+ #
+ if {$majorVersion >= 2} then {
+ #
+ # NOTE: Check for any Mono version higher than 2.0.
+ #
+ if {$majorVersion > 2 || $minorVersion > 0} then {
+ lappend monoVersions 20
+ }
+
+ #
+ # NOTE: Check for any Mono version higher than 2.2.
+ #
+ if {$majorVersion > 2 || $minorVersion > 2} then {
+ lappend monoVersions 22
+ }
+
+ #
+ # NOTE: Check for any Mono version higher than 2.4.
+ #
+ if {$majorVersion > 2 || $minorVersion > 4} then {
+ lappend monoVersions 24
+ }
+
+ #
+ # NOTE: Check for any Mono version higher than 2.6.
+ #
+ if {$majorVersion > 2 || $minorVersion > 6} then {
+ lappend monoVersions 26
+ }
+
+ #
+ # NOTE: Check for any Mono version higher than 2.8.
+ #
+ if {$majorVersion > 2 || $minorVersion > 8} then {
+ lappend monoVersions 28
+ }
+
+ #
+ # NOTE: Check for any Mono version higher than 2.10.
+ #
+ if {$majorVersion > 2 || $minorVersion > 10} then {
+ lappend monoVersions 210
+ }
+
+ #
+ # NOTE: Check for any Mono version higher than 2.11.
+ #
+ if {$majorVersion > 2 || $minorVersion > 11} then {
+ lappend monoVersions 211
+ }
+
+ #
+ # NOTE: Check for any Mono version higher than 2.12.
+ #
+ if {$majorVersion > 2 || $minorVersion > 12} then {
+ lappend monoVersions 212
+ }
+ }
+
+ #
+ # NOTE: Check for any Mono version 3.x or higher.
+ #
+ if {$majorVersion >= 3} then {
+ #
+ # NOTE: Check for any Mono version higher than 3.0.
+ #
+ if {$majorVersion > 3 || $minorVersion > 0} then {
+ lappend monoVersions 30
+ }
+ }
+
+ #
+ # NOTE: Add the necessary constraints for each version of Mono we
+ # should NOT skip bugs for.
+ #
+ foreach monoVersion $monoVersions {
+ addConstraint [appendArgs monoToDo $monoVersion]
+ addConstraint [appendArgs monoBug $monoVersion]
+ addConstraint [appendArgs monoCrash $monoVersion]
+ }
+ }
+ } else {
if {[string length $version] > 0} then {
#
# NOTE: We are running on the .NET Framework. Keep track of the
# specific version for usage in test constraints.
#
addConstraint [appendArgs dotNet $version]
- addConstraint [appendArgs dotNet $version OrHigher]
}
#
# NOTE: We do not want to skip any Mono bugs on .NET. Add the
# necessary constraints for each version of Mono we know
# about.
#
- foreach monoVersion [getKnownMonoVersions] {
- set constraintVersion [join $monoVersion ""]
-
- addConstraint [appendArgs monoToDo $constraintVersion]
- addConstraint [appendArgs monoBug $constraintVersion]
- addConstraint [appendArgs monoCrash $constraintVersion]
+ foreach monoVersion [list 20 22 24 26 28 210 211 212 30] {
+ addConstraint [appendArgs monoToDo $monoVersion]
+ addConstraint [appendArgs monoBug $monoVersion]
+ addConstraint [appendArgs monoCrash $monoVersion]
}
}
tputs $channel [appendArgs $::eagle_platform(runtimeVersion) \
" " ( $dotVersion ) \n]
@@ -1859,11 +1561,11 @@
} else {
tputs $channel no\n
}
}
- proc checkForDatabase { channel type string } {
+ proc checkForDatabase { channel string } {
tputs $channel "---- checking for database... "
#
# HACK: Disable database connectivity testing on Mono because
# it fails to timeout (unless special test suite hacks
@@ -1871,23 +1573,15 @@
#
if {[info exists ::no(mono)] || ![isMono]} then {
#
# NOTE: Can we access the local database?
#
- if {[catch {sql open -type $type $string} connection] == 0} then {
+ if {[catch {sql open $string} connection] == 0} then {
#
# NOTE: Yes, it appears that we can connect to the local database.
#
- addConstraint database
-
- #
- # NOTE: Also record the test database connection type used as a
- # test constraint.
- #
- if {[string length $type] > 0} then {
- addConstraint [appendArgs database. [string tolower $type]]
- }
+ addConstraint sql
#
# NOTE: Cleanup the database connection we just opened.
#
sql close $connection
@@ -2160,11 +1854,11 @@
[getSoftwareRegistryKey true] {\Microsoft\Windows Installer XML}]
#
# NOTE: The versions of WiX that we support.
#
- set versions [list 3.7 3.6 3.5 3.0]
+ set versions [list 3.6 3.5 3.0]
#
# NOTE: Check each version, stopping when one is found.
#
foreach version $versions {
@@ -2225,13 +1919,11 @@
#
# NOTE: Save the directory for later usage by
# the test itself.
#
- if {![info exists ::no(setWix)]} then {
- set ::test_wix $directory
- }
+ set ::test_wix $directory
#
# NOTE: Show where we found it.
#
tputs $channel [appendArgs "yes (" $version ", via " $where ", \"" \
@@ -2245,37 +1937,10 @@
}
tputs $channel no\n
}
- proc checkForTargetFramework { channel } {
- tputs $channel "---- checking for target framework... "
-
- if {[info exists ::eagle_platform(targetFramework)] && \
- [string length $::eagle_platform(targetFramework)] > 0} then {
- #
- # NOTE: Now create a string for use in the constraint name (remove
- # the invalid characters). For example:
- #
- # ".NETFramework,Version=v2.0" --> "NETFramework.Version.v2.0"
- #
- set targetFramework [string trimleft [string map [list , . = .] \
- $::eagle_platform(targetFramework)] .]
-
- #
- # NOTE: Keep track of the specific target framework for usage in test
- # constraints.
- #
- addConstraint [appendArgs targetFramework. $targetFramework]
-
- tputs $channel [appendArgs $::eagle_platform(targetFramework) \
- " " ( $targetFramework ) \n]
- } else {
- tputs $channel no\n
- }
- }
-
proc checkForNetFx45 { channel } {
tputs $channel "---- checking for .NET Framework 4.5... "
#
# NOTE: Platform must be Windows for this constraint to even be
@@ -2374,13 +2039,11 @@
#
# NOTE: Save the directory for later usage by
# the test itself.
#
- if {![info exists ::no(setVisualStudio)]} then {
- set ::test_visual_studio [file dirname $fileName]
- }
+ set ::test_visual_studio [file dirname $fileName]
}
}
}
if {[llength $visualStudioVersions] > 0} then {
@@ -2499,23 +2162,19 @@
#
# NOTE: We need several of our test constraint related commands in the
# global namespace.
#
- exportAndImportPackageCommands [namespace current] [list \
- getKnownMonoVersions checkForPlatform checkForWindowsVersion \
- checkForScriptLibrary checkForVariable checkForTclOptions \
- checkForWindowsCommandProcessor checkForFossil checkForEagle \
- checkForSymbols checkForLogFile checkForGaruda checkForShell \
- checkForDebug checkForTk checkForVersion checkForCommand \
- checkForTestMachine checkForTestPlatform checkForTestConfiguration \
- checkForTestSuffix checkForFile checkForPathFile checkForNativeCode \
+ exportAndImportPackageCommands [namespace current] [list checkForPlatform \
+ checkForEagle checkForGaruda checkForShell checkForDebug checkForTk \
+ checkForVersion checkForCommand checkForFile checkForNativeCode \
checkForTip127 checkForTip194 checkForTip241 checkForTip285 \
- checkForTip405 checkForTiming checkForPerformance \
- checkForStackIntensive checkForInteractive checkForInteractiveCommand \
- checkForUserInteraction checkForNetwork checkForCompileOption] false \
- false
+ checkForPerformance checkForTiming checkForInteractive checkForSymbols \
+ checkForLogFile checkForNetwork checkForCompileOption \
+ checkForWindowsCommandProcessor checkForUserInteraction \
+ checkForTclOptions checkForTestConfiguration checkForVariable \
+ checkForFossil] false false
###########################################################################
############################## END Tcl ONLY ###############################
###########################################################################
}
Index: Externals/Eagle/lib/Test1.0/epilogue.eagle
==================================================================
--- Externals/Eagle/lib/Test1.0/epilogue.eagle
+++ Externals/Eagle/lib/Test1.0/epilogue.eagle
@@ -158,15 +158,11 @@
$eagle_tests(skipped)}]
if {$passedOrSkipped == $eagle_tests(total)} then {
set exitCode Success
- if {$eagle_tests(total) > 0} then {
- tresult Ok "OVERALL RESULT: SUCCESS\n"
- } else {
- tresult Ok "OVERALL RESULT: NONE\n"
- }
+ tresult Ok "OVERALL RESULT: SUCCESS\n"
} else {
set exitCode Failure
tresult Error "OVERALL RESULT: FAILURE\n"
}
@@ -179,17 +175,12 @@
# set the exit code to success; otherwise, set it to failure.
#
if {$percent >= $test_threshold} then {
set exitCode Success
- if {$eagle_tests(total) > 0} then {
- tresult Ok [appendArgs \
- "OVERALL RESULT: SUCCESS (" $percent "% >= " $test_threshold %)\n]
- } else {
- tresult Ok [appendArgs \
- "OVERALL RESULT: NONE (" $percent "% >= " $test_threshold %)\n]
- }
+ tresult Ok [appendArgs \
+ "OVERALL RESULT: SUCCESS (" $percent "% >= " $test_threshold %)\n]
} else {
set exitCode Failure
tresult Error [appendArgs \
"OVERALL RESULT: FAILURE (" $percent "% < " $test_threshold %)\n]
@@ -258,15 +249,11 @@
$::tcltest::numTests(Skipped)}]
if {$passedOrSkipped == $::tcltest::numTests(Total)} then {
set exitCode 0; # Success.
- if {$::tcltest::numTests(Total) > 0} then {
- tputs $test_channel "OVERALL RESULT: SUCCESS\n"
- } else {
- tputs $test_channel "OVERALL RESULT: NONE\n"
- }
+ tputs $test_channel "OVERALL RESULT: SUCCESS\n"
} else {
set exitCode 1; # Failure.
tputs $test_channel "OVERALL RESULT: FAILURE\n"
}
@@ -279,17 +266,12 @@
# set the exit code to success; otherwise, set it to failure.
#
if {$percent >= $test_threshold} then {
set exitCode 0; # Success.
- if {$::tcltest::numTests(Total) > 0} then {
- tputs $test_channel [appendArgs \
- "OVERALL RESULT: SUCCESS (" $percent "% >= " $test_threshold %)\n]
- } else {
- tputs $test_channel [appendArgs \
- "OVERALL RESULT: NONE (" $percent "% >= " $test_threshold %)\n]
- }
+ tputs $test_channel [appendArgs \
+ "OVERALL RESULT: SUCCESS (" $percent "% >= " $test_threshold %)\n]
} else {
set exitCode 1; # Failure.
tputs $test_channel [appendArgs \
"OVERALL RESULT: FAILURE (" $percent "% < " $test_threshold %)\n]
Index: Externals/Eagle/lib/Test1.0/prologue.eagle
==================================================================
--- Externals/Eagle/lib/Test1.0/prologue.eagle
+++ Externals/Eagle/lib/Test1.0/prologue.eagle
@@ -20,13 +20,13 @@
}
#
# NOTE: Make sure all the variables used by this prologue are unset.
#
- unset -nocomplain pkg_dir pattern exec dummy directory name value expr \
- publicKeyToken encoding memory stack drive server database timeout \
- user password percent checkout timeStamp
+ unset -nocomplain pkg_dir pattern exec dummy directory name value \
+ expr publicKeyToken encoding memory stack drive server database \
+ timeout user password percent checkout timeStamp
#
# NOTE: Set the location of the test suite, if necessary.
#
if {![info exists test_path]} then {
@@ -238,28 +238,23 @@
#############################################################################
#
# NOTE: If command line arguments were supplied, process them now.
#
- set test_flags(-suite) ""; # test suite name, default to empty.
- set test_flags(-machine) ""; # machine architecture, default to empty.
- set test_flags(-platform) ""; # build platform, default to empty.
set test_flags(-configuration) ""; # build configuration, default to empty.
set test_flags(-suffix) ""; # build suffix, default to empty.
set test_flags(-file) [list *.eagle]; # default to running all test files.
set test_flags(-notFile) [list l.*.eagle]; # COMPAT: Tcl.
set test_flags(-match) [list *]; # default to running all tests.
set test_flags(-skip) [list]; # default to skipping no tests.
set test_flags(-constraints) [list]; # default to no manual constraints.
set test_flags(-logFile) ""; # default to using standard log file naming.
set test_flags(-threshold) ""; # default to requiring all tests to pass.
- set test_flags(-randomOrder) ""; # default to deterministic order.
set test_flags(-stopOnFailure) ""; # default to continue on failure.
set test_flags(-exitOnComplete) ""; # default to not exit after complete.
set test_flags(-preTest) ""; # default to not evaluating anything.
set test_flags(-postTest) ""; # default to not evaluating anything.
- set test_flags(-tclsh) ""; # Tcl shell, default to empty.
#
# NOTE: Check for and process any command line arguments.
#
if {[info exists argv]} then {
@@ -274,11 +269,11 @@
#
foreach {name value} $test_flags(-no) {
set no($name) $value
}
- unset -nocomplain name value
+ unset name value
}
if {[info exists test_flags(-logFile)] && \
[string length $test_flags(-logFile)] > 0} then {
#
@@ -294,19 +289,10 @@
# line.
#
set test_threshold $test_flags(-threshold)
}
- if {[info exists test_flags(-randomOrder)] && \
- [string is boolean -strict $test_flags(-randomOrder)]} then {
- #
- # NOTE: Set the test random-order flag to the one provided by the
- # command line.
- #
- set test_random_order $test_flags(-randomOrder)
- }
-
if {[info exists test_flags(-stopOnFailure)] && \
[string is boolean -strict $test_flags(-stopOnFailure)]} then {
#
# NOTE: Set the test stop-on-failure flag to the one provided by the
# command line.
@@ -338,63 +324,25 @@
#
set test_script(post) $test_flags(-postTest)
}
}
- #
- # NOTE: Set the default test suite name, if necessary.
- #
- if {![info exists test_suite]} then {
- set test_suite [getTestSuite]
- }
-
- #
- # NOTE: Set the default test machine (e.g. amd64, intel, etc), if necessary.
- #
- if {![info exists test_machine]} then {
- set test_machine [getTestMachine]
- }
-
- #
- # NOTE: Set the default test platform (e.g. x86, x64, etc), if necessary.
- #
- if {![info exists test_platform]} then {
- set test_platform [getTestPlatform]
- }
-
#
# NOTE: Set the default test configuration (i.e. Debug or Release), if
# necessary.
#
if {![info exists test_configuration]} then {
set test_configuration [getPlatformInfo configuration Release]
}
#
- # NOTE: Set the Tcl shell executable to use for those specialized tests that
- # may require it, if necessary.
+ # NOTE: Set the Tcl shell executable to use for those specialized
+ # tests that may require it, if necessary.
#
if {![info exists test_tclsh]} then {
- #
- # NOTE: When running in Eagle, more complex logic is required to determine
- # the Tcl shell to use for the various tests that require it. Also,
- # this same logic is used with Tcl when it is not running from an
- # instance of the Tcl shell executable.
- #
if {[isEagle] || ![string match tclsh* $bin_file]} then {
- if {[info exists test_flags(-tclsh)] && \
- [string length $test_flags(-tclsh)] > 0} then {
- #
- # NOTE: Use the Tcl shell specified via the command line.
- #
- set test_tclsh $test_flags(-tclsh)
- } else {
- #
- # NOTE: Check for a Tcl shell specified via the environment.
- #
- set test_tclsh [getTclShellFileName]
- }
+ set test_tclsh tclsh
} else {
set test_tclsh $bin_file
}
}
@@ -474,33 +422,17 @@
[getTestRunId] \n]
tputs $test_channel [appendArgs "---- processId: " \
[pid] \n]
- tputs $test_channel [appendArgs "---- test suite: " \
- [expr {[info exists test_suite] ? \
- $test_suite : ""}] \n]
-
tputs $test_channel [appendArgs "---- test channel: " \
$test_channel \n]
- tputs $test_channel [appendArgs "---- test machine: " \
- [expr {[info exists test_machine] ? \
- $test_machine : ""}] \n]
-
- tputs $test_channel [appendArgs "---- test platform: " \
- [expr {[info exists test_platform] ? \
- $test_platform : ""}] \n]
-
tputs $test_channel [appendArgs "---- test configuration: " \
[expr {[info exists test_configuration] ? \
$test_configuration : ""}] \n]
- tputs $test_channel [appendArgs "---- test suffix: " \
- [expr {[info exists test_suffix] ? \
- $test_suffix : ""}] \n]
-
if {[isEagle]} then {
catch {info engine PublicKeyToken} publicKeyToken
if {[string length $publicKeyToken] == 0} then {
#
@@ -515,12 +447,11 @@
#
# BUGBUG: Tcl 8.4 does not like this expression because it contains the
# "ni" operator (and Tcl tries to compile it even though it will
# only actually ever be evaluated in Eagle).
#
- set expr {$publicKeyToken ni \
- "29c6297630be05eb 1e22ec67879739a2 358030063a832bc3"}
+ set expr {$publicKeyToken ni "29c6297630be05eb 1e22ec67879739a2"}
if {[expr $expr]} then {
#
# NOTE: The Eagle core library is strong name signed with a key that is
# not official. This is also not an error, per se; however, it
@@ -591,15 +522,10 @@
tputs $test_channel [appendArgs "---- pass threshold: " \
[expr {[info exists test_threshold] && \
[string is integer -strict $test_threshold] ? \
[appendArgs $test_threshold %] : ""}] \n]
- tputs $test_channel [appendArgs "---- random order: " \
- [expr {[info exists test_random_order] && \
- [string is boolean -strict $test_random_order] ? \
- $test_random_order : ""}] \n]
-
tputs $test_channel [appendArgs "---- stop on failure: " \
[expr {[info exists test_stop_on_failure] && \
[string is boolean -strict $test_stop_on_failure] ? \
$test_stop_on_failure : ""}] \n]
@@ -735,28 +661,20 @@
if {![info exists no(runtime)]} then {
checkForRuntime $test_channel
}
#
- # NOTE: Check the variant and/or version of the CLR that we are
- # currently running on.
+ # NOTE: Check the runtime version (i.e. what version of the runtime
+ # are we currently running on?).
#
if {![info exists no(runtimeVersion)]} then {
checkForRuntimeVersion $test_channel
}
#
- # NOTE: Check the framework version (i.e. regardless of runtime) that
- # we are currently running on.
- #
- if {![info exists no(frameworkVersion)]} then {
- checkForFrameworkVersion $test_channel
- }
-
- #
- # NOTE: Check the image runtime version (i.e. the runtime version that
- # this assembly compiled against).
+ # NOTE: Check the image runtime version (i.e. what version of the
+ # runtime was this assembly compiled against?).
#
if {![info exists no(imageRuntimeVersion)]} then {
checkForImageRuntimeVersion $test_channel
}
@@ -841,48 +759,29 @@
if {![info exists password]} then {
set password [getEnvironmentVariable password]
}
#
- # NOTE: Set the test database connection type, if necessary.
- #
- if {![info exists test_database_type]} then {
- #
- # NOTE: Use the default database connection type.
- #
- set test_database_type Sql; # TODO: Good test default?
- }
-
- #
- # NOTE: Set the test database connection string, if necessary.
+ # NOTE: Set the database connection string, if necessary.
#
if {![info exists test_database]} then {
#
- # NOTE: Mono does not have support for "trusted connections";
- # therefore, we must emit a different connection string
- # when running there.
+ # NOTE: Mono does not have support for trusted connections;
+ # therefore, we must create a slightly different
+ # connection string.
#
set test_database [subst \
{Data Source=${server};Initial Catalog=${database};Connect\
Timeout=${timeout};[expr {[isMono] ? [subst \
{User Id=${user};Password=${password};}] : {Integrated\
- Security=SSPI;}}]}]; # NOTE: Microsoft SQL Server specific.
- } elseif {[info exists test_database_subst]} then {
- #
- # NOTE: The test database connection string must be dynamically
- # post-processed using [subst], per request. This allows
- # the [custom] test database connection string to contain
- # references to the other test database variables setup
- # by this test prologue.
- #
- set test_database [subst $test_database]
+ Security=SSPI;}}]}]
}
#
- # NOTE: Can we access the configured test database?
+ # NOTE: Can we access the local database?
#
- checkForDatabase $test_channel $test_database_type $test_database
+ checkForDatabase $test_channel $test_database
unset password user timeout database server
}
#
@@ -958,21 +857,10 @@
# "debug-4.1".
#
checkForCompileOption $test_channel DEBUGGER
}
- #
- # NOTE: Has application domain management support been enabled (at
- # compile-time)?
- #
- if {![info exists no(compileAppDomains)]} then {
- #
- # NOTE: For test "interp-1.27".
- #
- checkForCompileOption $test_channel APPDOMAINS
- }
-
#
# NOTE: Has isolated interpreter support been enabled (at compile-time)?
#
if {![info exists no(compileIsolatedInterpreters)]} then {
#
@@ -1076,11 +964,11 @@
#
checkForCompileOption $test_channel TCL
}
#
- # NOTE: Has XML support been enabled (at compile-time)?
+ # NOTE: Has xml support been enabled (at compile-time)?
#
if {![info exists no(compileXml)]} then {
#
# NOTE: For tests "commands-1.4", "object-7.3" and "xml-1.1.*".
#
@@ -1139,24 +1027,10 @@
# NOTE: For tests "tclLoad-1.5" and "tclLoad-1.6".
#
checkForCompileOption $test_channel TCL_THREADS
}
- #
- # NOTE: Has GDI+ drawing support been enabled (at compile-time)?
- #
- if {![info exists no(compileDrawing)]} then {
- checkForCompileOption $test_channel DRAWING
- }
-
- #
- # NOTE: Has WinForms support been enabled (at compile-time)?
- #
- if {![info exists no(compileWinForms)]} then {
- checkForCompileOption $test_channel WINFORMS
- }
-
#
# NOTE: Has runtime license checking support been disabled (at
# compile-time). This only applies to third-party plugins
# and applications.
#
@@ -1277,20 +1151,14 @@
checkForObjectMember $test_channel Eagle._Tests.Default \
*TestRemoveNamedFunction*
#
- # NOTE: For test "interp-1.19".
+ # NOTE: For test "interp-1.18".
#
checkForObjectMember $test_channel Eagle._Tests.Default \
*TestAddNamedFunction2*
-
- #
- # NOTE: For tests "function-5.*".
- #
- checkForObjectMember $test_channel Eagle._Tests.Default \
- *TestAddNamedFunction3*
}
#
# NOTE: Has write-box testing support been disabled?
#
@@ -1462,19 +1330,10 @@
# NOTE: For test "object-4.1".
#
checkForObjectMember $test_channel Eagle._Tests.Default \
*TestExpr*
- #
- # NOTE: For test "array-4.1".
- #
- checkForObjectMember $test_channel Eagle._Tests.Default \
- *TestTwoByteArrays*
-
- checkForObjectMember $test_channel Eagle._Tests.Default \
- *TestReturnByteArray*
-
#
# NOTE: For test "object-7.1".
#
checkForObjectMember $test_channel Eagle._Tests.Default \
*TestByRefValueTypeMethod*
@@ -1625,17 +1484,10 @@
# NOTE: For test "object-12.1.*".
#
checkForNetFx45 $test_channel
}
- #
- # NOTE: Has target framework testing support been disabled?
- #
- if {![info exists no(targetFramework)]} then {
- checkForTargetFramework $test_channel
- }
-
#
# NOTE: Has Visual Studio testing support been disabled?
#
if {![info exists no(visualStudio)]} then {
checkForVisualStudio $test_channel
@@ -1656,18 +1508,10 @@
#
if {![info exists no(managedDebugger)]} then {
checkForManagedDebugger $test_channel
}
- #
- # NOTE: Has managed debugging assistants testing support been
- # disabled?
- #
- if {![info exists no(managedDebuggingAssistants)]} then {
- checkForManagedDebuggingAssistants $test_channel
- }
-
#
# NOTE: Has script debugger testing support been disabled?
#
if {![info exists no(scriptDebugger)]} then {
#
@@ -1773,38 +1617,17 @@
#############################################################################
tputs $test_channel [appendArgs \
"---- start of common (Tcl & Eagle) test constraints...\n"]
- #
- # NOTE: Has checking for the test machine been disabled?
- #
- if {![info exists no(testMachine)]} then {
- checkForTestMachine $test_channel
- }
-
- #
- # NOTE: Has checking for the test platform been disabled?
- #
- if {![info exists no(testPlatform)]} then {
- checkForTestPlatform $test_channel
- }
-
#
# NOTE: Has checking for the test configuration been disabled?
#
if {![info exists no(testConfiguration)]} then {
checkForTestConfiguration $test_channel
}
- #
- # NOTE: Has checking for the test suffix been disabled?
- #
- if {![info exists no(testSuffix)]} then {
- checkForTestSuffix $test_channel
- }
-
#
# NOTE: Has checking for the extra files needed by various tests been
# disabled?
#
if {![info exists no(checkForFile)]} then {
@@ -1919,17 +1742,10 @@
#
if {![info exists no(test.xls)]} then {
checkForFile $test_channel [file join $test_path test.xls]
}
- #
- # NOTE: For test "proc-1.9".
- #
- if {![info exists no(testProcs.tcl)]} then {
- checkForFile $test_channel [file join $test_path testProcs.tcl]
- }
-
#
# NOTE: For test "interp-1.10".
#
if {![info exists no(settings.xml)]} then {
checkForFile $test_channel [file join $test_path settings.xml]
@@ -1979,17 +1795,18 @@
#
# NOTE: Did we manage to find the native SQLite library? If not, do we
# at least know the machine type?
#
- if {![haveConstraint file_sqlite3.dll]} then {
+ if {![haveConstraint file_sqlite3.dll] && \
+ [info exists tcl_platform(machine)]} then {
#
# NOTE: Ok, now try to check for the machine specific native SQLite
# library.
#
checkForFile $test_channel [file join $bin_path [machineToPlatform \
- $test_machine true] sqlite3.dll]
+ $tcl_platform(machine) true] sqlite3.dll]
#
# NOTE: Did we manage to find the native SQLite library yet?
#
if {![haveConstraint file_sqlite3.dll]} then {
@@ -1996,11 +1813,11 @@
#
# NOTE: Ok, now try to check for the platform specific native SQLite
# library.
#
checkForFile $test_channel [file join $bin_path [machineToPlatform \
- $test_machine false] sqlite3.dll]
+ $tcl_platform(machine) false] sqlite3.dll]
}
}
}
if {![info exists no(System.Data.SQLite.dll)]} then {
@@ -2018,26 +1835,14 @@
#
if {![info exists no(platform)]} then {
checkForPlatform $test_channel
}
- if {![info exists no(windowsVersion)]} then {
- checkForWindowsVersion $test_channel
- }
-
- if {![info exists no(scriptLibrary)]} then {
- checkForScriptLibrary $test_channel
- }
-
if {![info exists no(tclOptions)]} then {
checkForTclOptions $test_channel
}
- if {![info exists no(stackIntensive)]} then {
- checkForStackIntensive $test_channel
- }
-
if {![info exists no(windowsCommandProcessor)]} then {
checkForWindowsCommandProcessor $test_channel cmd.exe
}
if {![info exists no(fossil)]} then {
@@ -2135,14 +1940,10 @@
if {![info exists no(tip285)]} then {
checkForTip285 $test_channel
}
- if {![info exists no(tip405)]} then {
- checkForTip405 $test_channel
- }
-
#
# NOTE: Has performance testing been disabled?
#
if {![info exists no(performance)]} then {
checkForPerformance $test_channel
@@ -2167,30 +1968,10 @@
#
if {![info exists no(interactive)]} then {
checkForInteractive $test_channel
}
- #
- # NOTE: Has interactive command testing been disabled?
- #
- if {![info exists no(interactiveCommand)]} then {
- #
- # NOTE: For test "debug-1.8".
- #
- checkForInteractiveCommand $test_channel go
-
- #
- # NOTE: For test "debug-1.9".
- #
- checkForInteractiveCommand $test_channel done
-
- #
- # NOTE: For test "object-15.9".
- #
- checkForInteractiveCommand $test_channel args
- }
-
if {![info exists no(userInteraction)]} then {
checkForUserInteraction $test_channel
}
#
@@ -2353,13 +2134,10 @@
tputs $test_channel [appendArgs "---- strongName: " \
[getPlatformInfo strongName ] \n]
tputs $test_channel [appendArgs "---- certificate: " \
[getPlatformInfo certificate ] \n]
-
- tputs $test_channel [appendArgs "---- targetFramework: " \
- [getPlatformInfo targetFramework ] \n]
}
#
# NOTE: Show the current test file name, if any.
#
ADDED Externals/MSVCPP/vcredist_x64_2005_SP1.exe
Index: Externals/MSVCPP/vcredist_x64_2005_SP1.exe
==================================================================
--- /dev/null
+++ Externals/MSVCPP/vcredist_x64_2005_SP1.exe
cannot compute difference between binary files
DELETED Externals/MSVCPP/vcredist_x64_2005_SP1_MFC.exe
Index: Externals/MSVCPP/vcredist_x64_2005_SP1_MFC.exe
==================================================================
--- Externals/MSVCPP/vcredist_x64_2005_SP1_MFC.exe
+++ /dev/null
cannot compute difference between binary files
ADDED Externals/MSVCPP/vcredist_x64_2008_SP1.exe
Index: Externals/MSVCPP/vcredist_x64_2008_SP1.exe
==================================================================
--- /dev/null
+++ Externals/MSVCPP/vcredist_x64_2008_SP1.exe
cannot compute difference between binary files
DELETED Externals/MSVCPP/vcredist_x64_2008_SP1_MFC.exe
Index: Externals/MSVCPP/vcredist_x64_2008_SP1_MFC.exe
==================================================================
--- Externals/MSVCPP/vcredist_x64_2008_SP1_MFC.exe
+++ /dev/null
cannot compute difference between binary files
ADDED Externals/MSVCPP/vcredist_x64_2010_SP1.exe
Index: Externals/MSVCPP/vcredist_x64_2010_SP1.exe
==================================================================
--- /dev/null
+++ Externals/MSVCPP/vcredist_x64_2010_SP1.exe
cannot compute difference between binary files
DELETED Externals/MSVCPP/vcredist_x64_2010_SP1_MFC.exe
Index: Externals/MSVCPP/vcredist_x64_2010_SP1_MFC.exe
==================================================================
--- Externals/MSVCPP/vcredist_x64_2010_SP1_MFC.exe
+++ /dev/null
cannot compute difference between binary files
ADDED Externals/MSVCPP/vcredist_x64_2012_RTM.exe
Index: Externals/MSVCPP/vcredist_x64_2012_RTM.exe
==================================================================
--- /dev/null
+++ Externals/MSVCPP/vcredist_x64_2012_RTM.exe
cannot compute difference between binary files
DELETED Externals/MSVCPP/vcredist_x64_2012_VSU1.exe
Index: Externals/MSVCPP/vcredist_x64_2012_VSU1.exe
==================================================================
--- Externals/MSVCPP/vcredist_x64_2012_VSU1.exe
+++ /dev/null
cannot compute difference between binary files
ADDED Externals/MSVCPP/vcredist_x86_2005_SP1.exe
Index: Externals/MSVCPP/vcredist_x86_2005_SP1.exe
==================================================================
--- /dev/null
+++ Externals/MSVCPP/vcredist_x86_2005_SP1.exe
cannot compute difference between binary files
DELETED Externals/MSVCPP/vcredist_x86_2005_SP1_MFC.exe
Index: Externals/MSVCPP/vcredist_x86_2005_SP1_MFC.exe
==================================================================
--- Externals/MSVCPP/vcredist_x86_2005_SP1_MFC.exe
+++ /dev/null
cannot compute difference between binary files
ADDED Externals/MSVCPP/vcredist_x86_2008_SP1.exe
Index: Externals/MSVCPP/vcredist_x86_2008_SP1.exe
==================================================================
--- /dev/null
+++ Externals/MSVCPP/vcredist_x86_2008_SP1.exe
cannot compute difference between binary files
DELETED Externals/MSVCPP/vcredist_x86_2008_SP1_MFC.exe
Index: Externals/MSVCPP/vcredist_x86_2008_SP1_MFC.exe
==================================================================
--- Externals/MSVCPP/vcredist_x86_2008_SP1_MFC.exe
+++ /dev/null
cannot compute difference between binary files
ADDED Externals/MSVCPP/vcredist_x86_2010_SP1.exe
Index: Externals/MSVCPP/vcredist_x86_2010_SP1.exe
==================================================================
--- /dev/null
+++ Externals/MSVCPP/vcredist_x86_2010_SP1.exe
cannot compute difference between binary files
DELETED Externals/MSVCPP/vcredist_x86_2010_SP1_MFC.exe
Index: Externals/MSVCPP/vcredist_x86_2010_SP1_MFC.exe
==================================================================
--- Externals/MSVCPP/vcredist_x86_2010_SP1_MFC.exe
+++ /dev/null
cannot compute difference between binary files
ADDED Externals/MSVCPP/vcredist_x86_2012_RTM.exe
Index: Externals/MSVCPP/vcredist_x86_2012_RTM.exe
==================================================================
--- /dev/null
+++ Externals/MSVCPP/vcredist_x86_2012_RTM.exe
cannot compute difference between binary files
DELETED Externals/MSVCPP/vcredist_x86_2012_VSU1.exe
Index: Externals/MSVCPP/vcredist_x86_2012_VSU1.exe
==================================================================
--- Externals/MSVCPP/vcredist_x86_2012_VSU1.exe
+++ /dev/null
cannot compute difference between binary files
Index: Membership/Properties/AssemblyInfo.cs
==================================================================
--- Membership/Properties/AssemblyInfo.cs
+++ Membership/Properties/AssemblyInfo.cs
@@ -31,7 +31,7 @@
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
-[assembly: AssemblyVersion("1.0.86.0")]
-[assembly: AssemblyFileVersion("1.0.86.0")]
+[assembly: AssemblyVersion("1.0.83.0")]
+[assembly: AssemblyFileVersion("1.0.83.0")]
DELETED SQLite.Beta.nuspec
Index: SQLite.Beta.nuspec
==================================================================
--- SQLite.Beta.nuspec
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
- System.Data.SQLite.Beta
- System.Data.SQLite (x86/x64) Beta
- 1.0.86.0
- SQLite Development Team
- The official SQLite database engine for both x86 and x64 along with the ADO.NET provider.
- en-US
- http://system.data.sqlite.org/
- http://system.data.sqlite.org/images/sqlite32.png
- http://www.sqlite.org/copyright.html
- sqlite database ado.net provider interop
- Public Domain
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Index: SQLite.Designer/AssemblyInfo.cs
==================================================================
--- SQLite.Designer/AssemblyInfo.cs
+++ SQLite.Designer/AssemblyInfo.cs
@@ -41,7 +41,7 @@
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
-[assembly: AssemblyVersion("1.0.86.0")]
-[assembly: AssemblyFileVersion("1.0.86.0")]
+[assembly: AssemblyVersion("1.0.83.0")]
+[assembly: AssemblyFileVersion("1.0.83.0")]
Index: SQLite.Designer/source.extension.vsixmanifest
==================================================================
--- SQLite.Designer/source.extension.vsixmanifest
+++ SQLite.Designer/source.extension.vsixmanifest
@@ -1,11 +1,11 @@
System.Data.SQLite Designer
http://system.data.sqlite.org/
- 1.0.86.0
+ 1.0.83.0
ADO.NET Data Designer for SQLite
1033
false
Index: SQLite.Interop/SQLite.Interop.2010.vcxproj
==================================================================
--- SQLite.Interop/SQLite.Interop.2010.vcxproj
+++ SQLite.Interop/SQLite.Interop.2010.vcxproj
@@ -6,14 +6,10 @@
* Written by Joe Mistachkin.
* Released to the public domain, use at your own risk!
*
-->
-
- $(MSBuildProjectDirectory)\..
-
-
DebugNativeOnly
x64
Index: SQLite.Interop/SQLite.Interop.2012.vcxproj
==================================================================
--- SQLite.Interop/SQLite.Interop.2012.vcxproj
+++ SQLite.Interop/SQLite.Interop.2012.vcxproj
@@ -6,14 +6,10 @@
* Written by Joe Mistachkin.
* Released to the public domain, use at your own risk!
*
-->
-
- $(MSBuildProjectDirectory)\..
-
-
DebugNativeOnly
x64
Index: SQLite.Interop/SQLite.Interop.Static.2010.vcxproj
==================================================================
--- SQLite.Interop/SQLite.Interop.Static.2010.vcxproj
+++ SQLite.Interop/SQLite.Interop.Static.2010.vcxproj
@@ -6,14 +6,10 @@
* Written by Joe Mistachkin.
* Released to the public domain, use at your own risk!
*
-->
-
- $(MSBuildProjectDirectory)\..
-
-
DebugNativeOnly
x64
Index: SQLite.Interop/SQLite.Interop.Static.2012.vcxproj
==================================================================
--- SQLite.Interop/SQLite.Interop.Static.2012.vcxproj
+++ SQLite.Interop/SQLite.Interop.Static.2012.vcxproj
@@ -6,14 +6,10 @@
* Written by Joe Mistachkin.
* Released to the public domain, use at your own risk!
*
-->
-
- $(MSBuildProjectDirectory)\..
-
-
DebugNativeOnly
x64
Index: SQLite.Interop/props/SQLite.Interop.2005.vsprops
==================================================================
--- SQLite.Interop/props/SQLite.Interop.2005.vsprops
+++ SQLite.Interop/props/SQLite.Interop.2005.vsprops
@@ -17,31 +17,31 @@
Value="2005"
PerformEnvironmentSet="true"
/>
2010
- 086
+ 083
1.0
- 1.0.86.0
- 1,0,86,0
- INTEROP_DEBUG=0x31F;INTEROP_LOG=1;INTEROP_TEST_EXTENSION=1
+ 1.0.83.0
+ 1,0,83,0
+ INTEROP_DEBUG=0x307;INTEROP_TEST_EXTENSION=1
INTEROP_EXTENSION_FUNCTIONS=1;INTEROP_CODEC=1
/ASSEMBLYRESOURCE:..\System.Data.SQLite\SQLiteCommand.bmp,System.Data.SQLite.SQLiteCommand.bmp /ASSEMBLYRESOURCE:..\System.Data.SQLite\SQLiteConnection.bmp,System.Data.SQLite.SQLiteConnection.bmp /ASSEMBLYRESOURCE:..\System.Data.SQLite\SQLiteDataAdapter.bmp,System.Data.SQLite.SQLiteDataAdapter.bmp
$(ProjectDir)..\System.Data.SQLite\System.Data.SQLite.snk
SQLite.Interop
System.Data.SQLite
Index: SQLite.Interop/props/SQLite.Interop.2012.props
==================================================================
--- SQLite.Interop/props/SQLite.Interop.2012.props
+++ SQLite.Interop/props/SQLite.Interop.2012.props
@@ -8,15 +8,15 @@
*
-->
2012
- 086
+ 083
1.0
- 1.0.86.0
- 1,0,86,0
- INTEROP_DEBUG=0x31F;INTEROP_LOG=1;INTEROP_TEST_EXTENSION=1
+ 1.0.83.0
+ 1,0,83,0
+ INTEROP_DEBUG=0x307;INTEROP_TEST_EXTENSION=1
INTEROP_EXTENSION_FUNCTIONS=1;INTEROP_CODEC=1
/ASSEMBLYRESOURCE:..\System.Data.SQLite\SQLiteCommand.bmp,System.Data.SQLite.SQLiteCommand.bmp /ASSEMBLYRESOURCE:..\System.Data.SQLite\SQLiteConnection.bmp,System.Data.SQLite.SQLiteConnection.bmp /ASSEMBLYRESOURCE:..\System.Data.SQLite\SQLiteDataAdapter.bmp,System.Data.SQLite.SQLiteDataAdapter.bmp
$(ProjectDir)..\System.Data.SQLite\System.Data.SQLite.snk
SQLite.Interop
System.Data.SQLite
Index: SQLite.Interop/props/sqlite3.props
==================================================================
--- SQLite.Interop/props/sqlite3.props
+++ SQLite.Interop/props/sqlite3.props
@@ -7,12 +7,12 @@
* Released to the public domain, use at your own risk!
*
-->
- 3.7.17
- 3,7,17
+ 3.7.15
+ 3,7,15
_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;SQLITE_THREADSAFE=1;SQLITE_USE_URI=1;SQLITE_ENABLE_COLUMN_METADATA=1;SQLITE_ENABLE_STAT3=1;SQLITE_ENABLE_FTS3=1;SQLITE_ENABLE_LOAD_EXTENSION=1;SQLITE_ENABLE_RTREE=1;SQLITE_SOUNDEX=1
SQLITE_HAS_CODEC=1
SQLITE_OMIT_WAL=1
SQLITE_DEBUG=1;SQLITE_MEMDEBUG=1;SQLITE_ENABLE_EXPENSIVE_ASSERT=1
SQLITE_WIN32_MALLOC=1
Index: SQLite.Interop/props/sqlite3.vsprops
==================================================================
--- SQLite.Interop/props/sqlite3.vsprops
+++ SQLite.Interop/props/sqlite3.vsprops
@@ -12,16 +12,16 @@
Version="8.00"
Name="sqlite3"
>
#include
#include
-#if !defined(_WIN32_WCE) || defined(HAVE_ERRNO_H)
+#ifndef _WIN32_WCE
#include /* LMH 2007-03-25 */
#else
int errno;
#define strerror(x) ""
#endif
Index: SQLite.Interop/src/core/sqlite3.c
==================================================================
--- SQLite.Interop/src/core/sqlite3.c
+++ SQLite.Interop/src/core/sqlite3.c
@@ -1,8 +1,8 @@
/******************************************************************************
** This file is an amalgamation of many separate C source files from SQLite
-** version 3.7.17. By combining all the individual C code files into this
+** version 3.7.15. By combining all the individual C code files into this
** single large file, the entire code can be compiled as a single translation
** unit. This allows many compilers to do optimizations that would not be
** possible if the files were compiled separately. Performance improvements
** of 5% or more are commonly seen when SQLite is compiled as a single
** translation unit.
@@ -304,14 +304,10 @@
/* Needed for various definitions... */
#ifndef _GNU_SOURCE
# define _GNU_SOURCE
#endif
-#if defined(__OpenBSD__) && !defined(_BSD_SOURCE)
-# define _BSD_SOURCE
-#endif
-
/*
** Include standard header files as necessary
*/
#ifdef HAVE_STDINT_H
#include
@@ -360,15 +356,15 @@
**
** Older versions of SQLite used an optional THREADSAFE macro.
** We support that for legacy.
*/
#if !defined(SQLITE_THREADSAFE)
-# if defined(THREADSAFE)
-# define SQLITE_THREADSAFE THREADSAFE
-# else
-# define SQLITE_THREADSAFE 1 /* IMP: R-07272-22309 */
-# endif
+#if defined(THREADSAFE)
+# define SQLITE_THREADSAFE THREADSAFE
+#else
+# define SQLITE_THREADSAFE 1 /* IMP: R-07272-22309 */
+#endif
#endif
/*
** Powersafe overwrite is on by default. But can be turned off using
** the -DSQLITE_POWERSAFE_OVERWRITE=0 command-line option.
@@ -442,12 +438,11 @@
** if it is already defined or if it is unneeded because we are
** not doing a threadsafe build. Ticket #2681.
**
** See also ticket #2741.
*/
-#if !defined(_XOPEN_SOURCE) && !defined(__DARWIN__) \
- && !defined(__APPLE__) && SQLITE_THREADSAFE
+#if !defined(_XOPEN_SOURCE) && !defined(__DARWIN__) && !defined(__APPLE__) && SQLITE_THREADSAFE
# define _XOPEN_SOURCE 500 /* Needed to enable pthread recursive mutexes */
#endif
/*
** The TCL headers are only needed when compiling the TCL bindings.
@@ -676,13 +671,13 @@
**
** See also: [sqlite3_libversion()],
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
** [sqlite_version()] and [sqlite_source_id()].
*/
-#define SQLITE_VERSION "3.7.17"
-#define SQLITE_VERSION_NUMBER 3007017
-#define SQLITE_SOURCE_ID "2013-05-16 12:41:49 6d45a79fb18dcd305cc41c525060e42f2402bd77"
+#define SQLITE_VERSION "3.7.15"
+#define SQLITE_VERSION_NUMBER 3007015
+#define SQLITE_SOURCE_ID "2012-10-12 18:06:07 de784399ed1f0e27fc875e32719643d19819c8fb"
/*
** CAPI3REF: Run-Time Library Version Numbers
** KEYWORDS: sqlite3_version, sqlite3_sourceid
**
@@ -857,11 +852,11 @@
**
** Applications should [sqlite3_finalize | finalize] all [prepared statements],
** [sqlite3_blob_close | close] all [BLOB handles], and
** [sqlite3_backup_finish | finish] all [sqlite3_backup] objects associated
** with the [sqlite3] object prior to attempting to close the object. ^If
-** sqlite3_close_v2() is called on a [database connection] that still has
+** sqlite3_close() is called on a [database connection] that still has
** outstanding [prepared statements], [BLOB handles], and/or
** [sqlite3_backup] objects then it returns SQLITE_OK but the deallocation
** of resources is deferred until all [prepared statements], [BLOB handles],
** and [sqlite3_backup] objects are also destroyed.
**
@@ -994,12 +989,10 @@
#define SQLITE_NOLFS 22 /* Uses OS features not supported on host */
#define SQLITE_AUTH 23 /* Authorization denied */
#define SQLITE_FORMAT 24 /* Auxiliary database format error */
#define SQLITE_RANGE 25 /* 2nd parameter to sqlite3_bind out of range */
#define SQLITE_NOTADB 26 /* File opened that is not a database file */
-#define SQLITE_NOTICE 27 /* Notifications from sqlite3_log() */
-#define SQLITE_WARNING 28 /* Warnings from sqlite3_log() */
#define SQLITE_ROW 100 /* sqlite3_step() has another row ready */
#define SQLITE_DONE 101 /* sqlite3_step() has finished executing */
/* end-of-error-codes */
/*
@@ -1045,33 +1038,19 @@
#define SQLITE_IOERR_SHMOPEN (SQLITE_IOERR | (18<<8))
#define SQLITE_IOERR_SHMSIZE (SQLITE_IOERR | (19<<8))
#define SQLITE_IOERR_SHMLOCK (SQLITE_IOERR | (20<<8))
#define SQLITE_IOERR_SHMMAP (SQLITE_IOERR | (21<<8))
#define SQLITE_IOERR_SEEK (SQLITE_IOERR | (22<<8))
-#define SQLITE_IOERR_DELETE_NOENT (SQLITE_IOERR | (23<<8))
-#define SQLITE_IOERR_MMAP (SQLITE_IOERR | (24<<8))
#define SQLITE_LOCKED_SHAREDCACHE (SQLITE_LOCKED | (1<<8))
#define SQLITE_BUSY_RECOVERY (SQLITE_BUSY | (1<<8))
#define SQLITE_CANTOPEN_NOTEMPDIR (SQLITE_CANTOPEN | (1<<8))
#define SQLITE_CANTOPEN_ISDIR (SQLITE_CANTOPEN | (2<<8))
#define SQLITE_CANTOPEN_FULLPATH (SQLITE_CANTOPEN | (3<<8))
#define SQLITE_CORRUPT_VTAB (SQLITE_CORRUPT | (1<<8))
#define SQLITE_READONLY_RECOVERY (SQLITE_READONLY | (1<<8))
#define SQLITE_READONLY_CANTLOCK (SQLITE_READONLY | (2<<8))
-#define SQLITE_READONLY_ROLLBACK (SQLITE_READONLY | (3<<8))
#define SQLITE_ABORT_ROLLBACK (SQLITE_ABORT | (2<<8))
-#define SQLITE_CONSTRAINT_CHECK (SQLITE_CONSTRAINT | (1<<8))
-#define SQLITE_CONSTRAINT_COMMITHOOK (SQLITE_CONSTRAINT | (2<<8))
-#define SQLITE_CONSTRAINT_FOREIGNKEY (SQLITE_CONSTRAINT | (3<<8))
-#define SQLITE_CONSTRAINT_FUNCTION (SQLITE_CONSTRAINT | (4<<8))
-#define SQLITE_CONSTRAINT_NOTNULL (SQLITE_CONSTRAINT | (5<<8))
-#define SQLITE_CONSTRAINT_PRIMARYKEY (SQLITE_CONSTRAINT | (6<<8))
-#define SQLITE_CONSTRAINT_TRIGGER (SQLITE_CONSTRAINT | (7<<8))
-#define SQLITE_CONSTRAINT_UNIQUE (SQLITE_CONSTRAINT | (8<<8))
-#define SQLITE_CONSTRAINT_VTAB (SQLITE_CONSTRAINT | (9<<8))
-#define SQLITE_NOTICE_RECOVER_WAL (SQLITE_NOTICE | (1<<8))
-#define SQLITE_NOTICE_RECOVER_ROLLBACK (SQLITE_NOTICE | (2<<8))
/*
** CAPI3REF: Flags For File Open Operations
**
** These bit values are intended for use in the
@@ -1307,13 +1286,10 @@
int (*xShmMap)(sqlite3_file*, int iPg, int pgsz, int, void volatile**);
int (*xShmLock)(sqlite3_file*, int offset, int n, int flags);
void (*xShmBarrier)(sqlite3_file*);
int (*xShmUnmap)(sqlite3_file*, int deleteFlag);
/* Methods above are valid for version 2 */
- int (*xFetch)(sqlite3_file*, sqlite3_int64 iOfst, int iAmt, void **pp);
- int (*xUnfetch)(sqlite3_file*, sqlite3_int64 iOfst, void *p);
- /* Methods above are valid for version 3 */
/* Additional methods may be added in future releases */
};
/*
** CAPI3REF: Standard File Control Opcodes
@@ -1444,43 +1420,22 @@
** any result code other than [SQLITE_OK] or [SQLITE_NOTFOUND], that means
** that the VFS encountered an error while handling the [PRAGMA] and the
** compilation of the PRAGMA fails with an error. ^The [SQLITE_FCNTL_PRAGMA]
** file control occurs at the beginning of pragma statement analysis and so
** it is able to override built-in [PRAGMA] statements.
+**
**
**