This resurrects the MySQL driver from the shades of time. However, I'm
pretty sure that there won't be anything like this in 3.0. There is somewhere a DBI-like interface for Postgres, and it makes sense to port the MySQL driver to it since it can't be worse than this. I'm only interested in converting it successfully (and hopefully Glorp too). The MySQL package can be tested by configuring with --enable-mysql-tests; it requires MySQL to be running with a user called 'root' and whose password is, you guessed it, 'root'. Paolo * looking for [hidden email]--2004b/smalltalk--devo--2.2--patch-520 to compare with * comparing to [hidden email]--2004b/smalltalk--devo--2.2--patch-520 M tests/testsuite.at M tests/local.at M tests/testsuite M packages/mysql/package.xml M configure.ac M packages/mysql/MySQL.st M packages/mysql/MySQLTests.st M packages/mysql/mysql-test.st M tests/Makefile.am * modified files --- orig/configure.ac +++ mod/configure.ac @@ -295,7 +295,15 @@ GST_PACKAGE_ENABLE([Iconv], [iconv], [Makefile], [iconv.la]) GST_PACKAGE_ENABLE([Java], [java]) GST_PACKAGE_ENABLE([Digest], [digest], [], [], [Makefile], [digest.la]) + GST_PACKAGE_ENABLE([MySQL], [mysql]) +AC_MSG_CHECKING([whether to run MySQL tests]) +AC_ARG_ENABLE(mysql-tests, +[ --enable-mysql-tests test MySQL bindings, require user "root" with + password "root", plus database "test"], , +[enable_mysql_tests=no]) +AC_SUBST(enable_mysql_tests) + GST_PACKAGE_ENABLE([NCurses], [ncurses], [GST_HAVE_LIB(ncurses, initscr)], @@ -400,6 +408,7 @@ dnl Scripts & data files AC_CONFIG_FILES(gnu-smalltalk.pc) AC_CONFIG_FILES(gst-config, chmod +x gst-config) AC_CONFIG_FILES(tests/gst, chmod +x tests/gst) +AC_CONFIG_FILES(tests/atlocal) AC_CONFIG_FILES(libc.la) dnl Master Makefile --- orig/packages/mysql/MySQL.st +++ mod/packages/mysql/MySQL.st @@ -73,14 +73,14 @@ Object subclass: #JdmMysqlCommand Jdm.JdmConnection subclass: #JdmConnection - instanceVariableNames: 'socket readStream writeStream hashesByProtocol responsePacket clientCapabilities ' + instanceVariableNames: 'socket readStream writeStream hashesByProtocol responsePacket ' classVariableNames: '' poolDictionaries: '' category: 'Mysql-Driver'! Jdm.JdmServerInfo subclass: #JdmServerInfo - instanceVariableNames: 'protocol serverThread hashSeed options ' + instanceVariableNames: 'protocol serverThread charset status hashSeed options ' classVariableNames: '' poolDictionaries: '' category: 'Mysql-Driver'! @@ -113,7 +113,7 @@ Object subclass: #JdmTimestampWriter category: 'Mysql-Driver'! Jdm.JdmColumn subclass: #JdmColumn - instanceVariableNames: '' + instanceVariableNames: 'charset' classVariableNames: '' poolDictionaries: '' category: 'Mysql-Driver'! @@ -159,7 +159,7 @@ nextPutAllNullTerminated: aCollection2 nextPutCommand: aCommand self - nextPut: aCommand command asCharacter; + nextPut: (Character value: aCommand command); nextPutAllNullTerminated: aCommand message! outputPacket @@ -300,9 +300,6 @@ initialize initializeConnection | messageText | - hashesByProtocol := self class dictionaryClass: Dictionary - from: self class protocolHashes. - socket := TCP.Socket remote: connectionSpec host port: connectionSpec port. "socket := [ TCP Socket remote: connectionSpec host port: connectionSpec port ] on: Error @@ -313,7 +310,7 @@ initializeConnection readStream := socket. writeStream := socket. serverInfo := JdmServerInfo on: self. - clientCapabilities := serverInfo protocol = 10 ifTrue: [1] ifFalse: [0]! +! initializeDatabase (self requestPacket writeStream) @@ -322,46 +319,53 @@ initializeDatabase flush. self responsePacket checkStatusOnError: #setDatabase! +oldProtocolHashes + connectionSpec password isEmpty ifTrue: [ ^'' ]. + ^{ self hash2: connectionSpec password seed: self serverInfo hashSeed }! + +newProtocolHashes + connectionSpec password isEmpty ifTrue: [ ^String new: 1 ]. + ^{ self hashSHA1: connectionSpec password seed: self serverInfo hashSeed. + self hash2: connectionSpec password seed: self serverInfo hashSeed }! + initializeUser - | replyStream password | - password := connectionSpec password isEmpty - ifTrue: [''] - ifFalse: - [self - hash: connectionSpec password - seed: self serverInfo hashSeed - for: self serverInfo protocol]. - + | replyStream hashes userSent longPassword | replyStream := self replyPacket writeStream. - - replyStream - nextPutAll: (self class integerAsByteArray: (self clientCapabilities) length: 2) asByteString; - nextPutAll: (self class integerAsByteArray: 65536 length: 3) asByteString; - nextPutAllNullTerminated: connectionSpec user; - nextPutAllNullTerminated: password. - replyStream flush. + serverInfo hashSeed size = 8 + ifTrue: [ + hashes := self oldProtocolHashes. + replyStream + nextPutAll: (self class integerAsByteArray: 1 length: 2) asByteString; + nextPutAll: (self class integerAsByteArray: 65536 length: 3) asByteString; + nextPutAllNullTerminated: connectionSpec user; + nextPutAllNullTerminated: hashes first; + flush ] + ifFalse: [ + hashes := self newProtocolHashes. + replyStream + nextPutAll: (self class integerAsByteArray: 41477 length: 4) asByteString; + nextPutAll: (self class integerAsByteArray: 65536 length: 4) asByteString; + nextPut: 8 asCharacter; + next: 23 put: 0 asCharacter; + nextPutAllNullTerminated: connectionSpec user; + nextPut: hashes first size asCharacter; + nextPutAll: hashes first; + flush. - self responsePacket checkStatusOnError: #authenticate! ! + (self responsePacket isStatus: 254 onError: #authenticate) ifTrue: [ + replyStream := self replyPacket writeStream. + replyStream nextPutAll: hashes second; flush ] ]! ! !JdmConnection methodsFor: 'hashing'! -getHashFor: aProtocol - ^hashesByProtocol at: aProtocol ifAbsent: [nil]! - -hash: aString seed: aSeed for: aProtocol - | aHashMethod | - aHashMethod := self getHashFor: aProtocol. - aHashMethod isNil ifTrue: [^aString]. +hash: aString seed: aSeed for: hashMethod ^self class - perform: aHashMethod + perform: hashMethod with: aString with: aSeed! ! !JdmConnection methodsFor: 'accessing'! -clientCapabilities - ^clientCapabilities! - replyPacket ^(JdmOutputPacket on: writeStream) packetNumber: responsePacket packetNumber + 1! @@ -378,42 +382,44 @@ JdmConnection class instanceVariableNames: ''! -!JdmConnection class methodsFor: 'constants'! - -protocolHashes - ^#(9 #hash1:seed: - 10 #hash2:seed:)! ! - -!JdmConnection class methodsFor: 'hashing'! +!JdmConnection methodsFor: 'hashing'! -hash1: aString seed: aSeed - "This algorithm is for protocol 9." +hashSHA1: aString seed: aSeed + "This algorithm is for MySQL 4.1+." - | hashedString maxValue array num1 num2 | - hashedString := String new: aSeed size. - array := self randomInit1: aString seed: aSeed. - maxValue := array at: 1. - num1 := array at: 2. - num2 := array at: 3. - 1 to: hashedString size - do: - [:index | - | num3 | - num1 := (num1 * 3 + num2) \\ maxValue. - num2 := (num1 + num2 + 33) \\ maxValue. - num3 := (num1 / maxValue * 31) truncated + 64. - hashedString at: index put: num3 asCharacter]. - ^hashedString! + | hashedString hashedStringSeeded result | + "Compute hash1 = SHA1(password), then hash2 = SHA1(hash1). The server + already knows this, as that is what is held in its password table + (preceded with a *)." + + hashedString := SHA1 digestOf: aString. + hashedStringSeeded := SHA1 digestOf: hashedString. + + "Append hash2 to the salt sent by the server and hash that." + hashedStringSeeded := SHA1 digestOf: aSeed, hashedStringSeeded. + + "Finally, XOR the result with SHA1(password). The server takes this, + computes SHA1(salt.`SHA1 stored in DB`), uses the latter result to + undo the XOR, computes again SHA1, and compares that with the SHA1 + stored in the DB." + + result := String new: 20. + 1 to: 20 do: [ :i | + result at: i put: (Character value: + ((hashedString at: i) bitXor: (hashedStringSeeded at: i))) ]. + ^result! -hash2: aString seed: aSeed - "This algorithm is for clientProtocol 10." +hash2: aString seed: longSeed + "This algorithm is for MySQL 3.22+." - | hashedString maxValue result num1 num2 num3 | + | hashedString maxValue result num1 num2 num3 aSeed | + "Reserve a final byte for NULL termination" + aSeed := longSeed copyFrom: 1 to: 8. hashedString := String new: aSeed size. result := self randomInit2: aString seed: aSeed. - maxValue := result at: 1. - num1 := result at: 2. - num2 := result at: 3. + maxValue := 16r3FFFFFFF. + num1 := result at: 1. + num2 := result at: 2. 1 to: hashedString size do: [:index | @@ -424,11 +430,10 @@ hash2: aString seed: aSeed num1 := (num1 * 3 + num2) \\ maxValue. num2 := (num1 + num2 + 33) \\ maxValue. num3 := (num1 / maxValue * 31) truncated. - hashedString inject: 1 - into: - [:index :character | - hashedString at: index put: (character asInteger bitXor: num3) asCharacter. - index + 1]. + hashedString keysAndValuesDo: [:index :character | + hashedString + at: index + put: (character asInteger bitXor: num3) asCharacter]. ^hashedString! hash: aString @@ -450,24 +455,13 @@ hash: aString num3 := num3 + charValue]]. ^Array with: (num1 bitAnd: 2147483647) with: (num2 bitAnd: 2147483647)! -randomInit1: aString seed: aSeed - | result array1 array2 | - result := Array new: 3. - array1 := self hash: aString. - array2 := self hash: aSeed. - result at: 1 put: 16r01FFFFFF. - result at: 2 put: ((array1 at: 1) bitXor: (array2 at: 1)) \\ (result at: 1). - result at: 3 put: (result at: 2) // 2. - ^result! - randomInit2: aString seed: aSeed | result array1 array2 | - result := Array new: 3. + result := Array new: 2. array1 := self hash: aString. array2 := self hash: aSeed. - result at: 1 put: 16r3FFFFFFF. - result at: 2 put: ((array1 at: 1) bitXor: (array2 at: 1)) \\ (result at: 1). - result at: 3 put: ((array1 at: 2) bitXor: (array2 at: 2)) \\ (result at: 1). + result at: 1 put: ((array1 at: 1) bitXor: (array2 at: 1)) \\ 16r3FFFFFFF. + result at: 2 put: ((array1 at: 2) bitXor: (array2 at: 2)) \\ 16r3FFFFFFF. ^result! ! !JdmConnection class methodsFor: 'misc'! @@ -505,7 +499,7 @@ byteArrayAsByteString: ba size := ba size. s := String new: size. 1 to: size do: [:index | - s at: index put: ((ba at: index) asCharacter). + s at: index put: (Character value: (ba at: index)). ]. ^s! ! @@ -573,6 +567,9 @@ initialize !JdmInputPacket methodsFor: 'reading'! +isStatus: anInteger onError: aSymbol + ^(self readStatusOnError: aSymbol) = anInteger! + checkForStatus: anInteger onError: aSymbol (self readStatusOnError: aSymbol) = anInteger ifFalse: [self handleError: aSymbol]! @@ -647,8 +644,7 @@ flush s := JdmConnection byteArrayAsByteString: ba. aString replaceFrom: 1 to: self class sizeSize with: s startingAt: 1. - aString at: self class sizeSize + 1 put: self packetNumber asCharacter. - + aString at: self class sizeSize + 1 put: (Character value: self packetNumber). (self stream) nextPutAll: aString; flush ! ! @@ -761,6 +757,18 @@ initialize !JdmServerInfo methodsFor: 'accessing'! +charset + ^charset! + +charset: anObject + charset := anObject! + +status + ^status! + +status: anObject + status := anObject! + hashSeed ^hashSeed! @@ -794,11 +802,26 @@ readFrom: aResponsePacket readServerVersionFrom: aResponsePacket; readServerThreadFrom: aResponsePacket; readHashSeedFrom: aResponsePacket; - readOptionsFrom: aResponsePacket! + readOptionsFrom: aResponsePacket. + aResponsePacket readStream atEnd ifFalse: [ + self + readCharsetFrom: aResponsePacket; + readStatusFrom: aResponsePacket; + readMoreSeedFrom: aResponsePacket ]! + +readStatusFrom: aResponsePacket + status := (aResponsePacket readStream next: 2) asByteArray asInteger. + aResponsePacket readStream next: 13! + +readCharsetFrom: aResponsePacket + charset := aResponsePacket readStream next value! readHashSeedFrom: aResponsePacket hashSeed := aResponsePacket readStream readNullTerminatedString! +readMoreSeedFrom: aResponsePacket + hashSeed := hashSeed, aResponsePacket readStream readNullTerminatedString! + readOptionsFrom: aResponsePacket options := (aResponsePacket readStream next: 2) asByteArray asInteger! @@ -809,7 +832,9 @@ readServerThreadFrom: aResponsePacket serverThread := (aResponsePacket readStream next: 4) asByteArray asInteger! readServerVersionFrom: aResponsePacket - serverVersion := JdmServerVersion readFrom: aResponsePacket readStream! ! + serverVersion := JdmServerVersion + readFrom: aResponsePacket readStream readNullTerminatedString readStream. +! ! !JdmServerInfo methodsFor: 'validation'! @@ -848,7 +873,7 @@ readFrom: aStream release := Integer readFrom: aStream. aStream next. version := Integer readFrom: aStream. - aStream readNullTerminatedString! ! +! ! !JdmServerVersion class methodsFor: 'instance creation'! @@ -929,12 +954,17 @@ readMysqlTimeFrom: aStream ^Time fromSeconds: 60 * (60 * hour + minute) + second! readMysqlTimestampFrom: aStream - | year month day hour minute second | + | year month day hour minute second separators | year := self readIntegerFrom: aStream next: 4. + separators := aStream peekFor: $-. month := self readIntegerFrom: aStream next: 2. + separators ifTrue: [ aStream next ]. day := self readIntegerFrom: aStream next: 2. + separators ifTrue: [ aStream next ]. hour := self readIntegerFrom: aStream next: 2. + separators ifTrue: [ aStream next ]. minute := self readIntegerFrom: aStream next: 2. + separators ifTrue: [ aStream next ]. second := self readIntegerFrom: aStream next: 2. ^JdmDateTime fromDate: (Date newDay: day monthIndex: month year: year) @@ -982,37 +1012,62 @@ print: anInteger on: aStream next: n !JdmColumn methodsFor: 'reading'! +charset + ^charset +! ! + +!JdmColumn methodsFor: 'reading'! + readDecimalPlaces: aReadStream decimalPlaces := aReadStream next asInteger! readFlags: aReadStream - "Currently the size of both the flags field and decimalPlaces field is specified as a sum of the two. - I am guessing that the size of the flags is more likely to change than that of the decimalPlaces. - Right now I assume that the flags are all bytes but the last and that the last is the decimalPlaces" - - flags := (aReadStream next: aReadStream next asInteger - 1) asByteArray - asInteger! + flags := (aReadStream next: 2) asByteArray asInteger! readFrom: aReadStream - self - readTable: aReadStream; - readName: aReadStream; - readSize: aReadStream; - readType: aReadStream; - readFlags: aReadStream; - readDecimalPlaces: aReadStream! + | length fields | + "can be catalogue, db, table, org table, field (and org field follows) + or table, field, length, type, flags+decimal" + fields := (1 to: 5) collect: [ :i | + aReadStream next: aReadStream next asInteger ]. + aReadStream atEnd ifFalse: [ + table := fields at: 3. + name := fields at: 5. + "org field" + aReadStream next: aReadStream next asInteger. + length := aReadStream next asInteger - 10. + self + readCharset: aReadStream; + readSize: aReadStream; + readType: aReadStream; + readFlags: aReadStream; + readDecimalPlaces: aReadStream. + aReadStream next: length. + ^self ]. + + "MySQL 3.x format." + table := fields at: 1. + name := fields at: 2. + size := (fields at: 3) asByteArray asInteger. + type := (fields at: 4) first asInteger. + self readFlags: (fields at: 5) readStream. + decimalPlaces := (fields at: 5) last asInteger! + + +readCharset: aReadStream + charset := (aReadStream next: 2) asByteArray asInteger! readName: aReadStream name := (aReadStream next: aReadStream next asInteger)! readSize: aReadStream - size := (aReadStream next: aReadStream next asInteger) asByteArray asInteger! + size := (aReadStream next: 4) asByteArray asInteger! readTable: aReadStream table := (aReadStream next: aReadStream next asInteger)! readType: aReadStream - type := (aReadStream next: aReadStream next asInteger) asByteArray asInteger! ! + type := aReadStream next asInteger! ! "-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "! JdmColumn class @@ -1030,8 +1085,11 @@ datetimeType dateType ^10! +oldDecimalType + ^246! + decimalType - ^0! + ^246! doubleType ^5! @@ -1135,23 +1193,20 @@ readFrom: aReadStream checkForEndOrNull: aReadStream "This is a bit unclean...the value 254 has been overloaded in the protocol. When it is the only value in the stream, it indicates there are no more rows. It also indicates that the following - 4 bytes contain the size of the field value. The problem is that there is another condition that + 8 bytes contain the size of the field value. The problem is that there is another condition that produces a single value on the stream...a row with one column whose value is NULL." | endOrNull | - aReadStream size = 1 ifFalse: [^false]. - endOrNull := aReadStream next asInteger. - endOrNull = 254 - ifTrue: - [isEmpty := true. - ^true]. - endOrNull = 251 - ifTrue: - [^true]. - "Unexpected Value" - JdmErrorTable throwException: #invalidQuery - message: 'Unexpected value ' , endOrNull printString. - ^true! + aReadStream size = 1 ifTrue: [ + endOrNull := aReadStream next asInteger. + isEmpty := endOrNull = 254. + ^true ]. + (aReadStream size < 9 and: [ aReadStream peekFor: (Character value: 254) ]) + ifTrue: [ + aReadStream next: aReadStream size - 1. + isEmpty := true. + ^true ]. + ^false ! readFrom: aReadStream (self checkForEndOrNull: aReadStream) ifTrue: [^self]. @@ -1170,7 +1225,9 @@ readSizeFrom: aReadStream aSize := aReadStream next asInteger. aSize < 251 ifTrue: [^aSize]. aSize = 251 ifTrue: [^-1]. - ^(aReadStream next: (aSize bitAnd: 3) + 2) asByteArray asInteger! ! + aSize = 252 ifTrue: [^(aReadStream next: 2) asByteArray asInteger]. + aSize = 253 ifTrue: [^(aReadStream next: 3) asByteArray asInteger]. + aSize = 254 ifTrue: [^(aReadStream next: 8) asByteArray asInteger]! ! !JdmRow methodsFor: 'initialize-release'! @@ -1369,6 +1426,7 @@ buildTypeMap at: JdmColumn longlongType put: #toInteger:column:; at: JdmColumn floatType put: #toFloat:column:; at: JdmColumn doubleType put: #toDouble:column:; + at: JdmColumn oldDecimalType put: #toDouble:column:; at: JdmColumn decimalType put: #toDouble:column:; at: JdmColumn dateType put: #toDate:column:; at: JdmColumn datetimeType put: #toDateTime:column:; @@ -1413,7 +1471,7 @@ asByteString | stream | stream := WriteStream on: String new. 1 to: self size do: [ :x | - stream nextPut: (self basicAt: x) asCharacter]. + stream nextPut: (Character value: (self basicAt: x))]. ^stream contents ! ! --- orig/packages/mysql/MySQLTests.st +++ mod/packages/mysql/MySQLTests.st @@ -29,9 +29,6 @@ | ======================================================================" -Jdm addSubspace: #MySQL! -Namespace current: Jdm.MySQL! - TestCase subclass: #JdmMysqlBaseTestCase instanceVariableNames: 'connection testSupport testProgress ' classVariableNames: '' @@ -127,17 +124,25 @@ createTable Transcript show: 'Creating table: ', testSupport class tableName, '...'. result := connection createStatement executeQuery: testSupport createTable. - Transcript show: ' Done'. + Transcript show: ' Done'; nl. self should: [result type = #update and: [result value = 0]]! ! !JdmMysqlDropTableTestCase methodsFor: 'tests'! +dropTableIfExists + | result | + Transcript show: 'Dropping table: ', testSupport class tableName, '...'. + result := connection createStatement + executeQuery: 'drop table if exists ' , testSupport class tableName. + Transcript show: ' Done'; nl. + self should: [result type = #update and: [result value = 0]]! + dropTable | result | Transcript show: 'Dropping table: ', testSupport class tableName, '...'. result := connection createStatement executeQuery: 'drop table ' , testSupport class tableName. - Transcript show: ' Done'. + Transcript show: ' Done'; nl. self should: [result type = #update and: [result value = 0]]! ! !JdmMysqlDeleteTestCase methodsFor: 'tests'! @@ -148,8 +153,9 @@ deleteRows show: 'Deleting ' , testSupport class numRowsToInsert printString , ' rows...'. result := connection createStatement executeQuery: 'delete from ' , testSupport class tableName. - Transcript show: ' Done'. - self should: [result type = #update and: [result value = 0]]! ! + Transcript show: ' Done'; nl. + "Value is either 0 or numRowsToInsert, depending on the version" + self should: [result type = #update]! ! !JdmMysqlInsertTestCase methodsFor: 'tests'! @@ -169,7 +175,7 @@ insertRows ok := true. testSupport class numRowsToInsert timesRepeat: [ result := self insertRow. - ok := ok and: [result type = #update and: [result value = 1]]. + ok := ok and: [result type = #update "and: [result value = 1]"]. ]. self should: [ ok ]! ! @@ -246,7 +252,7 @@ writeFieldDefinitionFor: aType on: aWrit connectionSpec ^JdmConnectionSpec new initialize; - user: 'utente'; password: ''; + user: 'root'; password: 'root'; host: 'localhost'; database: 'test'; port: 3306; yourself! @@ -498,7 +504,7 @@ resetMysqlTestSupport !JdmMysqlTestSupport class methodsFor: 'constants'! numRowsToInsert - ^500! + ^40! tableName ^'JdmMysqlTestTable'! ! @@ -587,7 +593,7 @@ checkSteps totalSteps = numSteps ifTrue: [Transcript - show: ' Done']! ! + show: ' Done'; nl]! ! !JdmTestProgress methodsFor: 'accessing'! @@ -636,6 +642,7 @@ defaultResolution initialize " super initialize." self name: 'JdmMysql-Test'. + self addTest: (JdmMysqlDropTableTestCase selector: #dropTableIfExists). self addTest: (JdmMysqlCreateTableTestCase selector: #createTable). self addTest: (JdmMysqlInsertTestCase selector: #insertRows). self addTest: (JdmMysqlSelectTestCase selector: #selectRows). @@ -645,7 +652,7 @@ initialize !JdmMysqlTestSuite class methodsFor: 'instance creation'! -new +suite ^super new initialize! ! !JdmMysqlTestSupport methodsFor: 'private'! @@ -941,11 +948,8 @@ resetMysqlTestSupport !JdmMysqlTestSupport class methodsFor: 'constants'! numRowsToInsert - ^500! + ^40! tableName ^'JdmMysqlTestTable'! ! -Namespace current: Smalltalk! - - --- orig/packages/mysql/mysql-test.st +++ mod/packages/mysql/mysql-test.st @@ -5,11 +5,12 @@ | ======================================================================" -| value resultSet statement spec connection | +PackageLoader fileInPackage: #MySQL! +| value resultSet statement spec connection | spec := (Jdm.JdmConnectionSpec new initialize - user: 'root'; password: ''; - host: 'philo'; + user: 'root'; password: 'root'; + host: 'localhost'; database: 'mysql'; port: 3306). --- orig/packages/mysql/package.xml +++ mod/packages/mysql/package.xml @@ -4,8 +4,13 @@ <prereq>DB</prereq> <prereq>TCP</prereq> <prereq>SUnit</prereq> + <prereq>Digest</prereq> <filein>MySQL.st</filein> - <filein>MySQLTests.st</filein> + + <test> + <sunit>Jdm.MySQL.JdmMysqlTestSuite</sunit> + <filein>MySQLTests.st</filein> + </test> <file>MySQL.st</file> <file>MySQLTests.st</file> --- orig/tests/Makefile.am +++ mod/tests/Makefile.am @@ -4,7 +4,7 @@ AUTOTEST = $(AUTOM4TE) --language=autote TESTSUITE = $(srcdir)/testsuite dist_noinst_DATA = \ -local.at testsuite.at $(TESTSUITE) package.m4 \ +atlocal.in local.at testsuite.at $(TESTSUITE) package.m4 \ ackermann.ok ackermann.st arrays.ok arrays.st ary3.ok ary3.st blocks.ok \ blocks.st chars.ok chars.st classes.ok classes.st cobjects.ok cobjects.st \ compiler.ok compiler.st dates.ok dates.st delays.ok delays.st except.ok \ @@ -45,13 +45,13 @@ $(srcdir)/package.m4: $(top_srcdir)/conf echo 'm4_define([AT_PACKAGE_BUGREPORT], [@PACKAGE_BUGREPORT@])'; \ } >'$(srcdir)/package.m4' -check-local: gst atconfig $(TESTSUITE) +check-local: gst atlocal atconfig $(TESTSUITE) $(SHELL) '$(TESTSUITE)' $(TESTSUITEFLAGS) clean-local: -$(SHELL) '$(TESTSUITE)' --clean -installcheck-local: atconfig $(TESTSUITE) +installcheck-local: atlocal atconfig $(TESTSUITE) if test -z "$(DESTDIR)"; then \ $(SHELL) '$(TESTSUITE)' $(TESTSUITEFLAGS) AUTOTEST_PATH=$(bindir); \ fi --- orig/tests/local.at +++ mod/tests/local.at @@ -40,24 +40,26 @@ m4_define([AT_DIFF_TEST], [ AT_CLEANUP ]) -dnl AT_PACKAGE_TEST([PACKAGE], [XFAILS]) -dnl ------------------------------------ +dnl AT_PACKAGE_TEST([PACKAGE], [XFAILS], [CLASSES], [CONDITION]) +dnl ------------------------------------------------------------ m4_define([AT_PACKAGE_TEST], [ AT_SETUP([$1]) AT_KEYWORDS([m4_if([$1], [SUnit], [], [$1 ])SUnit]) $2 - AT_CHECK_GST([-f $abs_top_srcdir/scripts/Test.st --verbose -p $1], [], [], [ignore]) + m4_ifval([$4], [AT_CHECK([$4 || exit 77])]) + AT_CHECK_GST([-f $abs_top_srcdir/scripts/Test.st --verbose -p $1 $3], [], [], [ignore]) AT_CLEANUP ]) -dnl AT_OPTIONAL_PACKAGE_TEST([PACKAGE], [XFAILS]) -dnl --------------------------------------------- +dnl AT_OPTIONAL_PACKAGE_TEST([PACKAGE], [XFAILS], [CLASSES], [CONDITION]) +dnl --------------------------------------------------------------------- dnl Returns exit code 77 (skip) if the package cannot be loaded. m4_define([AT_OPTIONAL_PACKAGE_TEST], [ AT_SETUP([$1]) AT_KEYWORDS([$1 SUnit]) $2 - AT_CHECK_GST([-f $abs_top_srcdir/scripts/Test.st --verbose -p $1 + m4_ifval([$4], [AT_CHECK([$4 || exit 77])]) + AT_CHECK_GST([-f $abs_top_srcdir/scripts/Test.st --verbose -p $1 $3 ret=$? case $ret in 2) exit 77 ;; --- orig/tests/testsuite +++ mod/tests/testsuite @@ -620,7 +620,7 @@ at_times_file=$at_suite_dir/at-times # List of the tested programs. at_tested='gst' # List of the all the test groups. -at_groups_all=' banner-1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 banner-2 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 banner-3 41 42 banner-4 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 banner-5 108 109 110 111 112 113 114 115' +at_groups_all=' banner-1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 banner-2 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 banner-3 41 42 banner-4 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 banner-5 108 109 110 111 112 113 114 115 116' # As many question marks as there are digits in the last test group number. # Used to normalize the test group numbers so that `ls' lists them in # numerical order. @@ -740,7 +740,8 @@ at_help_all="1;testsuite.at:27;arrays.st 112;testsuite.at:146;Digest;Digest SUnit; 113;testsuite.at:147;GDBM;GDBM SUnit; 114;testsuite.at:148;Iconv;Iconv SUnit; -115;testsuite.at:149;ZLib;ZLib SUnit; +115;testsuite.at:149;MySQL;MySQL SUnit; +116;testsuite.at:150;ZLib;ZLib SUnit; " at_prev= @@ -4076,19 +4077,20 @@ _ATEOF + case $AUTOTEST_PATH in tests) image_path="-I $abs_top_builddir/gst.im" ;; *) image_path="" ;; esac - echo "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p SUnit); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode" + echo "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p SUnit ); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode" $at_traceoff -echo "$at_srcdir/testsuite.at:71: { (cd \$abs_top_builddir && gst \$image_path -f \$abs_top_srcdir/scripts/Test.st --verbose -p SUnit); echo exit \$? > retcode; } | tr -d '\\r' | tee stdout; . retcode" +echo "$at_srcdir/testsuite.at:71: { (cd \$abs_top_builddir && gst \$image_path -f \$abs_top_srcdir/scripts/Test.st --verbose -p SUnit ); echo exit \$? > retcode; } | tr -d '\\r' | tee stdout; . retcode" echo testsuite.at:71 >"$at_check_line_file" at_trace_this= if test -n "$at_traceon"; then - case "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p SUnit); echo exit $? > retcode; } | tr -d '\\r' | tee stdout; . retcode" in + case "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p SUnit ); echo exit $? > retcode; } | tr -d '\\r' | tee stdout; . retcode" in *' '*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;; *) at_trace_this=yes ;; @@ -4096,12 +4098,12 @@ if test -n "$at_traceon"; then fi if test -n "$at_trace_this"; then - ( $at_traceon; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p SUnit); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stder1" + ( $at_traceon; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p SUnit ); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stder1" at_status=$? grep '^ *+' "$at_stder1" >&2 grep -v '^ *+' "$at_stder1" >"$at_stderr" else - ( :; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p SUnit); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stderr" + ( :; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p SUnit ); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stderr" at_status=$? fi @@ -4143,19 +4145,20 @@ $at_traceon + case $AUTOTEST_PATH in tests) image_path="-I $abs_top_builddir/gst.im" ;; *) image_path="" ;; esac - echo "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Parser); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode" + echo "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Parser ); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode" $at_traceoff -echo "$at_srcdir/testsuite.at:72: { (cd \$abs_top_builddir && gst \$image_path -f \$abs_top_srcdir/scripts/Test.st --verbose -p Parser); echo exit \$? > retcode; } | tr -d '\\r' | tee stdout; . retcode" +echo "$at_srcdir/testsuite.at:72: { (cd \$abs_top_builddir && gst \$image_path -f \$abs_top_srcdir/scripts/Test.st --verbose -p Parser ); echo exit \$? > retcode; } | tr -d '\\r' | tee stdout; . retcode" echo testsuite.at:72 >"$at_check_line_file" at_trace_this= if test -n "$at_traceon"; then - case "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Parser); echo exit $? > retcode; } | tr -d '\\r' | tee stdout; . retcode" in + case "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Parser ); echo exit $? > retcode; } | tr -d '\\r' | tee stdout; . retcode" in *' '*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;; *) at_trace_this=yes ;; @@ -4163,12 +4166,12 @@ if test -n "$at_traceon"; then fi if test -n "$at_trace_this"; then - ( $at_traceon; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Parser); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stder1" + ( $at_traceon; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Parser ); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stder1" at_status=$? grep '^ *+' "$at_stder1" >&2 grep -v '^ *+' "$at_stder1" >"$at_stderr" else - ( :; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Parser); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stderr" + ( :; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Parser ); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stderr" at_status=$? fi @@ -8583,19 +8586,20 @@ _ATEOF + case $AUTOTEST_PATH in tests) image_path="-I $abs_top_builddir/gst.im" ;; *) image_path="" ;; esac - echo "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Complex); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode" + echo "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Complex ); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode" $at_traceoff -echo "$at_srcdir/testsuite.at:142: { (cd \$abs_top_builddir && gst \$image_path -f \$abs_top_srcdir/scripts/Test.st --verbose -p Complex); echo exit \$? > retcode; } | tr -d '\\r' | tee stdout; . retcode" +echo "$at_srcdir/testsuite.at:142: { (cd \$abs_top_builddir && gst \$image_path -f \$abs_top_srcdir/scripts/Test.st --verbose -p Complex ); echo exit \$? > retcode; } | tr -d '\\r' | tee stdout; . retcode" echo testsuite.at:142 >"$at_check_line_file" at_trace_this= if test -n "$at_traceon"; then - case "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Complex); echo exit $? > retcode; } | tr -d '\\r' | tee stdout; . retcode" in + case "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Complex ); echo exit $? > retcode; } | tr -d '\\r' | tee stdout; . retcode" in *' '*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;; *) at_trace_this=yes ;; @@ -8603,12 +8607,12 @@ if test -n "$at_traceon"; then fi if test -n "$at_trace_this"; then - ( $at_traceon; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Complex); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stder1" + ( $at_traceon; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Complex ); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stder1" at_status=$? grep '^ *+' "$at_stder1" >&2 grep -v '^ *+' "$at_stder1" >"$at_stderr" else - ( :; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Complex); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stderr" + ( :; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Complex ); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stderr" at_status=$? fi @@ -8650,19 +8654,20 @@ $at_traceon + case $AUTOTEST_PATH in tests) image_path="-I $abs_top_builddir/gst.im" ;; *) image_path="" ;; esac - echo "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Continuations); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode" + echo "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Continuations ); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode" $at_traceoff -echo "$at_srcdir/testsuite.at:143: { (cd \$abs_top_builddir && gst \$image_path -f \$abs_top_srcdir/scripts/Test.st --verbose -p Continuations); echo exit \$? > retcode; } | tr -d '\\r' | tee stdout; . retcode" +echo "$at_srcdir/testsuite.at:143: { (cd \$abs_top_builddir && gst \$image_path -f \$abs_top_srcdir/scripts/Test.st --verbose -p Continuations ); echo exit \$? > retcode; } | tr -d '\\r' | tee stdout; . retcode" echo testsuite.at:143 >"$at_check_line_file" at_trace_this= if test -n "$at_traceon"; then - case "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Continuations); echo exit $? > retcode; } | tr -d '\\r' | tee stdout; . retcode" in + case "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Continuations ); echo exit $? > retcode; } | tr -d '\\r' | tee stdout; . retcode" in *' '*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;; *) at_trace_this=yes ;; @@ -8670,12 +8675,12 @@ if test -n "$at_traceon"; then fi if test -n "$at_trace_this"; then - ( $at_traceon; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Continuations); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stder1" + ( $at_traceon; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Continuations ); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stder1" at_status=$? grep '^ *+' "$at_stder1" >&2 grep -v '^ *+' "$at_stder1" >"$at_stderr" else - ( :; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Continuations); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stderr" + ( :; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Continuations ); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stderr" at_status=$? fi @@ -8717,19 +8722,20 @@ $at_traceon + case $AUTOTEST_PATH in tests) image_path="-I $abs_top_builddir/gst.im" ;; *) image_path="" ;; esac - echo "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p DebugTools); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode" + echo "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p DebugTools ); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode" $at_traceoff -echo "$at_srcdir/testsuite.at:144: { (cd \$abs_top_builddir && gst \$image_path -f \$abs_top_srcdir/scripts/Test.st --verbose -p DebugTools); echo exit \$? > retcode; } | tr -d '\\r' | tee stdout; . retcode" +echo "$at_srcdir/testsuite.at:144: { (cd \$abs_top_builddir && gst \$image_path -f \$abs_top_srcdir/scripts/Test.st --verbose -p DebugTools ); echo exit \$? > retcode; } | tr -d '\\r' | tee stdout; . retcode" echo testsuite.at:144 >"$at_check_line_file" at_trace_this= if test -n "$at_traceon"; then - case "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p DebugTools); echo exit $? > retcode; } | tr -d '\\r' | tee stdout; . retcode" in + case "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p DebugTools ); echo exit $? > retcode; } | tr -d '\\r' | tee stdout; . retcode" in *' '*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;; *) at_trace_this=yes ;; @@ -8737,12 +8743,12 @@ if test -n "$at_traceon"; then fi if test -n "$at_trace_this"; then - ( $at_traceon; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p DebugTools); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stder1" + ( $at_traceon; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p DebugTools ); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stder1" at_status=$? grep '^ *+' "$at_stder1" >&2 grep -v '^ *+' "$at_stder1" >"$at_stderr" else - ( :; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p DebugTools); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stderr" + ( :; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p DebugTools ); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stderr" at_status=$? fi @@ -8784,19 +8790,20 @@ $at_traceon + case $AUTOTEST_PATH in tests) image_path="-I $abs_top_builddir/gst.im" ;; *) image_path="" ;; esac - echo "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p DhbNumericalMethods); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode" + echo "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p DhbNumericalMethods ); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode" $at_traceoff -echo "$at_srcdir/testsuite.at:145: { (cd \$abs_top_builddir && gst \$image_path -f \$abs_top_srcdir/scripts/Test.st --verbose -p DhbNumericalMethods); echo exit \$? > retcode; } | tr -d '\\r' | tee stdout; . retcode" +echo "$at_srcdir/testsuite.at:145: { (cd \$abs_top_builddir && gst \$image_path -f \$abs_top_srcdir/scripts/Test.st --verbose -p DhbNumericalMethods ); echo exit \$? > retcode; } | tr -d '\\r' | tee stdout; . retcode" echo testsuite.at:145 >"$at_check_line_file" at_trace_this= if test -n "$at_traceon"; then - case "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p DhbNumericalMethods); echo exit $? > retcode; } | tr -d '\\r' | tee stdout; . retcode" in + case "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p DhbNumericalMethods ); echo exit $? > retcode; } | tr -d '\\r' | tee stdout; . retcode" in *' '*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;; *) at_trace_this=yes ;; @@ -8804,12 +8811,12 @@ if test -n "$at_traceon"; then fi if test -n "$at_trace_this"; then - ( $at_traceon; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p DhbNumericalMethods); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stder1" + ( $at_traceon; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p DhbNumericalMethods ); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stder1" at_status=$? grep '^ *+' "$at_stder1" >&2 grep -v '^ *+' "$at_stder1" >"$at_stderr" else - ( :; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p DhbNumericalMethods); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stderr" + ( :; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p DhbNumericalMethods ); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stderr" at_status=$? fi @@ -8851,19 +8858,20 @@ $at_traceon + case $AUTOTEST_PATH in tests) image_path="-I $abs_top_builddir/gst.im" ;; *) image_path="" ;; esac - echo "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Digest); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode" + echo "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Digest ); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode" $at_traceoff -echo "$at_srcdir/testsuite.at:146: { (cd \$abs_top_builddir && gst \$image_path -f \$abs_top_srcdir/scripts/Test.st --verbose -p Digest); echo exit \$? > retcode; } | tr -d '\\r' | tee stdout; . retcode" +echo "$at_srcdir/testsuite.at:146: { (cd \$abs_top_builddir && gst \$image_path -f \$abs_top_srcdir/scripts/Test.st --verbose -p Digest ); echo exit \$? > retcode; } | tr -d '\\r' | tee stdout; . retcode" echo testsuite.at:146 >"$at_check_line_file" at_trace_this= if test -n "$at_traceon"; then - case "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Digest); echo exit $? > retcode; } | tr -d '\\r' | tee stdout; . retcode" in + case "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Digest ); echo exit $? > retcode; } | tr -d '\\r' | tee stdout; . retcode" in *' '*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;; *) at_trace_this=yes ;; @@ -8871,12 +8879,12 @@ if test -n "$at_traceon"; then fi if test -n "$at_trace_this"; then - ( $at_traceon; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Digest); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stder1" + ( $at_traceon; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Digest ); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stder1" at_status=$? grep '^ *+' "$at_stder1" >&2 grep -v '^ *+' "$at_stder1" >"$at_stderr" else - ( :; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Digest); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stderr" + ( :; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p Digest ); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stderr" at_status=$? fi @@ -8918,6 +8926,7 @@ $at_traceon + case $AUTOTEST_PATH in tests) image_path="-I $abs_top_builddir/gst.im" ;; *) image_path="" ;; @@ -9001,6 +9010,7 @@ $at_traceon + case $AUTOTEST_PATH in tests) image_path="-I $abs_top_builddir/gst.im" ;; *) image_path="" ;; @@ -9071,10 +9081,10 @@ $at_traceon at_status=`cat "$at_status_file"` ;; - 115 ) # 115. testsuite.at:149: ZLib + 115 ) # 115. testsuite.at:149: MySQL at_setup_line='testsuite.at:149' - at_desc="ZLib" - $at_quiet $ECHO_N "115: ZLib $ECHO_C" + at_desc="MySQL" + $at_quiet $ECHO_N "115: MySQL $ECHO_C" at_xfail=no echo "# -*- compilation -*-" >> "$at_group_log" ( @@ -9083,6 +9093,115 @@ $at_traceon + $at_traceoff +echo "$at_srcdir/testsuite.at:149: test \"\$enable_mysql_tests\" = yes || exit 77" +echo testsuite.at:149 >"$at_check_line_file" + +at_trace_this= +if test -n "$at_traceon"; then + case "test \"$enable_mysql_tests\" = yes || exit 77" in + *' +'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;; + *) at_trace_this=yes ;; + esac +fi + +if test -n "$at_trace_this"; then + ( $at_traceon; test "$enable_mysql_tests" = yes || exit 77 ) >"$at_stdout" 2>"$at_stder1" + at_status=$? + grep '^ *+' "$at_stder1" >&2 + grep -v '^ *+' "$at_stder1" >"$at_stderr" +else + ( :; test "$enable_mysql_tests" = yes || exit 77 ) >"$at_stdout" 2>"$at_stderr" + at_status=$? +fi + +at_failed=false +$at_diff "$at_devnull" "$at_stderr" || at_failed=: +$at_diff "$at_devnull" "$at_stdout" || at_failed=: +case $at_status in + 77) echo 77 > "$at_status_file"; exit 77;; + 0) ;; + *) echo "$at_srcdir/testsuite.at:149: exit code was $at_status, expected 0" + at_failed=:;; +esac +if $at_failed; then + + + echo 1 > "$at_status_file" + exit 1 +fi + +$at_traceon + + + case $AUTOTEST_PATH in + tests) image_path="-I $abs_top_builddir/gst.im" ;; + *) image_path="" ;; + esac + + echo "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p MySQL ); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode" + $at_traceoff +echo "$at_srcdir/testsuite.at:149: { (cd \$abs_top_builddir && gst \$image_path -f \$abs_top_srcdir/scripts/Test.st --verbose -p MySQL ); echo exit \$? > retcode; } | tr -d '\\r' | tee stdout; . retcode" +echo testsuite.at:149 >"$at_check_line_file" + +at_trace_this= +if test -n "$at_traceon"; then + case "{ (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p MySQL ); echo exit $? > retcode; } | tr -d '\\r' | tee stdout; . retcode" in + *' +'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;; + *) at_trace_this=yes ;; + esac +fi + +if test -n "$at_trace_this"; then + ( $at_traceon; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p MySQL ); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stder1" + at_status=$? + grep '^ *+' "$at_stder1" >&2 + grep -v '^ *+' "$at_stder1" >"$at_stderr" +else + ( :; { (cd $abs_top_builddir && gst $image_path -f $abs_top_srcdir/scripts/Test.st --verbose -p MySQL ); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode ) >"$at_stdout" 2>"$at_stderr" + at_status=$? +fi + +at_failed=false +$at_diff "$at_devnull" "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +case $at_status in + 77) echo 77 > "$at_status_file"; exit 77;; + 0) ;; + *) echo "$at_srcdir/testsuite.at:149: exit code was $at_status, expected 0" + at_failed=:;; +esac +if $at_failed; then + + + echo 1 > "$at_status_file" + exit 1 +fi + +$at_traceon + + + $at_traceoff + $at_times_p && times >"$at_times_file" + ) 5>&1 2>&1 | eval $at_tee_pipe + at_status=`cat "$at_status_file"` + ;; + + 116 ) # 116. testsuite.at:150: ZLib + at_setup_line='testsuite.at:150' + at_desc="ZLib" + $at_quiet $ECHO_N "116: ZLib $ECHO_C" + at_xfail=no + echo "# -*- compilation -*-" >> "$at_group_log" + ( + echo "116. testsuite.at:150: testing ..." + $at_traceon + + + + case $AUTOTEST_PATH in tests) image_path="-I $abs_top_builddir/gst.im" ;; @@ -9096,13 +9215,13 @@ $at_traceon 0|1) exit $ret ;; esac); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode" $at_traceoff -echo "$at_srcdir/testsuite.at:149: { (cd \$abs_top_builddir && gst \$image_path -f \$abs_top_srcdir/scripts/Test.st --verbose -p ZLib +echo "$at_srcdir/testsuite.at:150: { (cd \$abs_top_builddir && gst \$image_path -f \$abs_top_srcdir/scripts/Test.st --verbose -p ZLib ret=\$? case \$ret in 2) exit 77 ;; 0|1) exit \$ret ;; esac); echo exit \$? > retcode; } | tr -d '\\r' | tee stdout; . retcode" -echo testsuite.at:149 >"$at_check_line_file" +echo testsuite.at:150 >"$at_check_line_file" at_trace_this= if test -n "$at_traceon"; then @@ -9135,7 +9254,7 @@ echo stdout:; cat "$at_stdout" case $at_status in 77) echo 77 > "$at_status_file"; exit 77;; 0) ;; - *) echo "$at_srcdir/testsuite.at:149: exit code was $at_status, expected 0" + *) echo "$at_srcdir/testsuite.at:150: exit code was $at_status, expected 0" at_failed=:;; esac if $at_failed; then --- orig/tests/testsuite.at +++ mod/tests/testsuite.at @@ -146,4 +146,5 @@ AT_PACKAGE_TEST([DhbNumericalMethods]) AT_PACKAGE_TEST([Digest]) AT_OPTIONAL_PACKAGE_TEST([GDBM]) AT_OPTIONAL_PACKAGE_TEST([Iconv]) +AT_PACKAGE_TEST([MySQL], [], [], [test "$enable_mysql_tests" = yes]) AT_OPTIONAL_PACKAGE_TEST([ZLib]) _______________________________________________ help-smalltalk mailing list [hidden email] http://lists.gnu.org/mailman/listinfo/help-smalltalk |
Free forum by Nabble | Edit this page |