From d1ada248ac168f1a595781088ade4d73e5046aa9 Mon Sep 17 00:00:00 2001 From: Zac Spitzer Date: Tue, 18 Jul 2023 15:03:41 +0200 Subject: [PATCH] backport test cleanup from 5.4 --- .github/workflows/main.yml | 4 + test/_setupTestServices.cfc | 213 +++++++++++++++++++++++--- test/_testRunner.cfc | 6 +- test/cache/Memcached.cfc | 18 ++- test/cache/MemcachedV3.cfc | 17 +- test/datasource/H2.cfc | 2 +- test/datasource/HSQLDB.cfc | 12 +- test/datasource/JDBCDrivers.cfc | 2 +- test/extension/S3.cfc | 32 ++-- test/functions/StoreMetaData.cfc | 2 +- test/general/CacheHandler.cfc | 13 +- test/general/Resources.cfc | 2 +- test/jira/Jira2049/Application.cfc | 28 +--- test/jira/Jira2733.cfc | 8 +- test/jira/Jira3053.cfc | 8 +- test/jira/Jira3077.cfc | 8 +- test/jira/Jira3087.cfc | 8 +- test/orm/Hibernate.cfc | 2 +- test/orm/many2many/Application.cfc | 23 +-- test/run-tests.cfm | 60 ++++++-- test/tags/Http.cfc | 4 +- test/tickets/LDEV0359.cfc | 2 +- test/tickets/LDEV0931.cfc | 2 +- test/tickets/LDEV1129.cfc | 17 +- test/tickets/LDEV1176.cfc | 10 +- test/tickets/LDEV1396.cfc | 12 +- test/tickets/LDEV1489.cfc | 30 +++- test/tickets/LDEV1489/Application.cfc | 3 + test/tickets/LDEV1489/test.cfm | 2 +- test/tickets/LDEV2410.cfc | 13 +- test/tickets/_LDEV1774.cfc | 2 +- 31 files changed, 375 insertions(+), 190 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 655a30f4b9..5deb9f6714 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -148,6 +148,7 @@ jobs: S3_ACCESS_KEY_ID: ${{ secrets.S3_ACCESS_ID_TEST }} # s3 tests disabled due to LDEV-4474 #S3_SECRET_KEY: ${{ secrets.S3_SECRET_KEY_TEST }} + S3_BUCKET_PREFIX: lucee-ldev-5- # DO_DEPLOY: ${{ github.event_name == 'push' }} # for uploading successful builds S3_ACCESS_ID_DOWNLOAD: ${{ secrets.S3_ACCESS_ID_DOWNLOAD }} @@ -180,6 +181,9 @@ jobs: with: name: Lucee-${{ steps.cleanrefname.outputs.value }}-junit-test-results-${{ github.run_number }} path: test/reports/*.xml + - name: Remove Lucee build artifacts from local maven cache (avoid growing cache) + run: | + rm -rfv ~/.m2/repository/org/lucee/lucee/ - name: Publish Test Results uses: EnricoMi/publish-unit-test-result-action@v2 if: always() diff --git a/test/_setupTestServices.cfc b/test/_setupTestServices.cfc index 1da05aa158..6cef4509b8 100644 --- a/test/_setupTestServices.cfc +++ b/test/_setupTestServices.cfc @@ -137,7 +137,14 @@ component { "SMTP_SERVER": "localhost", "SMTP_PORT_SECURE": 25, - "SMTP_PORT_INSECURE": 587 + "SMTP_PORT_INSECURE": 587, + + "MEMCACHED_SERVER": "localhost", + // "MEMCACHED_PORT": 11211 // DON'T COMMIT + + "REDIS_SERVER": "localhost", + // "REDIS_PORT": 6379 // DON'T COMMIT + }; } @@ -186,7 +193,9 @@ component { systemOutput( "Service [ #service# ] is [ #verify# ]", true) ; server.test_services[service].valid = true; } catch (e) { - systemOutput( "ERROR Service [ #service# ] threw [ #cfcatch.message# ]", true); + st = test._testRunner::trimJavaStackTrace(cfcatch.stacktrace); + systemOutput( "ERROR Service [ #service# ] threw [ #arrayToList(st, chr(10) )# ]", true); + server.test_services[service].stacktrace = st; } } } @@ -195,15 +204,34 @@ component { public array function reportServiceSkipped () localmode=true { skipped = []; - for (s in server.test_services ){ - service = server.test_services[s]; + for ( s in server.test_services ){ + service = server.test_services[ s ]; if ( !service.valid && service.missedTests gt 0 ){ - ArrayAppend( skipped, "-> Service [#s#] #chr(9)# not available, #chr(9)# #service.missedTests# tests skipped" ); + ArrayAppend( skipped, "-> Service [ #s# ] #chr(9)# not available, #chr(9)# #service.missedTests# tests skipped" ); } } return skipped; } + public array function reportServiceFailed() localmode=true { + failed = []; + for ( s in server.test_services ){ + service = server.test_services[ s ]; + if ( !service.valid and structKeyExists( service, "stacktrace" ) ){ + ArrayAppend( failed, "-> Service [ #s# ] #chr(9)# threw" ); + for ( st in service.stacktrace ) { + ArrayAppend( failed, st ); + } + } + } + return failed; + } + + public boolean function failOnConfiguredServiceError() localmode=true{ + buildCfg = server._getSystemPropOrEnvVars( "LUCEE_BUILD_FAIL_CONFIGURED_SERVICES_FATAL", "", false ); + return buildCfg.LUCEE_BUILD_FAIL_CONFIGURED_SERVICES_FATAL ?: false; + } + public string function verifyDatasource ( struct datasource ) localmode=true{ dbinfo type="Version" datasource="#arguments.datasource#" name="verify"; dbDesc = []; @@ -241,12 +269,63 @@ component { } public function verifyS3 ( s3 ) localmode=true{ - bucketName = "lucee-testsuite"; + bucketName = arguments.s3.BUCKET_PREFIX & lcase(hash(CreateGUID())); base = "s3://#arguments.s3.ACCESS_KEY_ID#:#arguments.s3.SECRET_KEY#@/#bucketName#"; - DirectoryExists( base ); - return "s3 Connection Verified"; + directoryCreate( base ); + directoryDelete( base ); + return "s3 Connection Verified [#bucketName#]"; } + public function verifyMemcached ( memcached ) localmode=true{ + if ( structCount( memcached ) eq 2 ){ + if ( !isRemotePortOpen( memcached.server, memcached.port ) ) + throw "MemCached port closed #memcached.server#:#memcached.port#"; // otherwise the cache keeps trying and logging + try { + testCacheName = "testMemcached"; + application + action="update" + caches="#{ + testMemcached: { + class: 'org.lucee.extension.cache.mc.MemcachedCache' + , bundleName: 'memcached.extension' + , bundleVersion: '4.0.0.10-SNAPSHOT' + , storage: false + , custom: { + "socket_timeout": "3", + "initial_connections": "1", + "alive_check": "true", + "buffer_size": "1", + "max_spare_connections": "32", + "storage_format": "Binary", + "socket_connect_to": "3", + "min_spare_connections": "1", + "maint_thread_sleep": "5", + "failback": "true", + "max_idle_time": "600", + "max_busy_time": "30", + "nagle_alg": "true", + "failover": "false", + "servers": "#memcached.server#:#memcached.port#" + } + , default: '' + } + }#"; + cachePut( id='abcd', value=1234, cacheName=testCacheName ); + valid = !isNull( cacheGet( id:'abcd', cacheName:testCacheName ) ); + application action="update" caches="#{}#"; + if ( !valid ) { + throw "MemCached configured, but not available"; + } else { + return "MemCached connection verified"; + } + } catch (e){ + application action="update" caches="#{}#"; + rethrow; + } + } + throw "not configured"; + } + public function verifyRedis ( redis ) localmode=true{ if ( structCount( redis ) eq 2 ){ return "configured (not tested)"; @@ -254,7 +333,47 @@ component { throw "not configured"; } + public function verifyImap ( imap ) localmode=true{ + imap + action="open" + server = imap.SERVER + username = imap.USERNAME + port = imap.PORT_INSECURE + secure="no" + password = imap.PASSWORD + connection = "testImap"; + imap + action = "close", + connection="testImap"; + + return "configured"; + } + + public function verifyLDAP ( ldap ) localmode=true { + cfldap( server=ldap.server, + port=ldap.port, + timeout=5000, + username=ldap.username, + password=ldap.password, + action="query", + name="local.results", + start=ldap.base_dn, + filter="(objectClass=inetOrgPerson)", + attributes="cn" ); + return "configured"; + } + public function addSupportFunctions() { + server._getTempDir = function ( string prefix="" ) localmode=true{ + if ( len( arguments.prefix ) eq 0 ) { + local.dir = getTempDirectory() & "lucee-tests\" & createGUID(); + } else { + local.dir = getTempDirectory() & "lucee-tests\" & arguments.prefix; + } + if ( !directoryExists( dir ) ) + directoryCreate( dir, true ); + return dir; + }; server._getSystemPropOrEnvVars = function ( string props="", string prefix="", boolean stripPrefix=true, boolean allowEmpty=false ) localmode=true{ st = [=]; keys = arguments.props.split( "," ); @@ -293,7 +412,11 @@ component { server.getDefaultBundleVersion = getDefaultBundleVersion; server.getBundleVersions = getBundleVersions; } - public struct function getTestService( required string service, string dbFile="", boolean verify=false, boolean onlyConfig=false ) localmode=true { + public struct function getTestService( required string service, + string dbFile="", + boolean verify=false, + boolean onlyConfig=false + ) localmode=true { if ( StructKeyExists( server.test_services, arguments.service ) ){ if ( !server.test_services[ arguments.service ].valid ){ //SystemOutput("Warning service: [ #arguments.service# ] is not available", true); @@ -356,15 +479,31 @@ component { DirectoryCreate( tempDb ); arguments.dbFile = tempDb; } - if ( Len( arguments.dbFile ) ){ + if ( len( arguments.dbFile ) ){ return { class: 'org.h2.Driver' , bundleName: 'org.lucee.h2' - , bundleVersion: server.getDefaultBundleVersion('org.lucee.h2', '2.1.214') + , bundleVersion: server.getDefaultBundleVersion('org.lucee.h2', '2.1.214.0001L') , connectionString: 'jdbc:h2:#arguments.dbFile#/datasource/db;MODE=MySQL' }; } break; + case "hsqldb": + if ( arguments.verify ){ + tempDb = "#getTempDirectory()#/hsqldb-#createUUID()#"; + if (! DirectoryExists( tempDb ) ) + DirectoryCreate( tempDb ); + arguments.dbFile = tempDb; + } + if ( len( arguments.dbFile ) ){ + return { + class: 'org.hsqldb.jdbcDriver' + , bundleName: 'org.lucee.hsqldb' + , bundleVersion: server.getDefaultBundleVersion( 'org.lucee.hsqldb', '2.7.2.jdk8' ) + , connectionString: 'jdbc:hsqldb:#arguments.dbFile#/datasource/db;MODE=MySQL' + }; + } + break; case "mongoDB": mongoDB = server._getSystemPropOrEnvVars( "SERVER, PORT, DB", "MONGODB_"); mongoDBcreds = server._getSystemPropOrEnvVars( "USERNAME, PASSWORD", "MONGODB_"); @@ -425,14 +564,26 @@ component { } break; case "s3": - s3 = server._getSystemPropOrEnvVars( "ACCESS_KEY_ID, SECRET_KEY", "S3_" ); + s3 = server._getSystemPropOrEnvVars( "ACCESS_KEY_ID, SECRET_KEY, BUCKET_PREFIX", "S3_" ); return s3; + case "memcached": + memcached = server._getSystemPropOrEnvVars( "SERVER, PORT", "MEMCACHED_" ); + if ( memcached.count() eq 2 ){ + return memcached; + } + break; case "redis": redis = server._getSystemPropOrEnvVars( "SERVER, PORT", "REDIS_" ); if ( redis.count() eq 2 ){ return redis; } break; + case "ldap": + ldap = server._getSystemPropOrEnvVars( "SERVER, PORT, USERNAME, PASSWORD, BASE_DN", "LDAP_" ); + if ( ldap.count() eq 5 ){ + return ldap; + } + break; default: break; } @@ -441,18 +592,18 @@ component { return {}; } - function getDefaultBundleVersion (bundleName, fallbackVersion) cachedWithin="request" { + function getDefaultBundleVersion( bundleName, fallbackVersion ) cachedWithin="request" { var bundles = server.getBundleVersions(); - if (structKeyExists(bundles, arguments.bundleName)){ + if ( structKeyExists( bundles, arguments.bundleName ) ){ //systemOutput(arguments.bundleName & " " & bundles[arguments.bundleName], true) - return bundles[arguments.bundleName]; + return bundles[ arguments.bundleName ]; } else { systemOutput("getDefaultBundleVersion: [" & arguments.bundleName & "] FALLLING BACK TO DEFAULT [" & arguments.fallbackVersion & "]", true) return arguments.fallbackVersion ; } } - function getBundleVersions () cachedWithin="#createTimeSpan(1,0,0,0)#"{ + function getBundleVersions() cachedWithin="#createTimeSpan( 1, 0, 0, 0 )#"{ admin type="server" password="#server.SERVERADMINPASSWORD#" @@ -461,11 +612,37 @@ component { var bundles = {}; loop query=q_bundles { var _bundle = {}; - _bundle.append(q_bundles.headers); - bundles[_bundle['Bundle-SymbolicName']] = _bundle['Bundle-Version']; + _bundle.append( q_bundles.headers ); + bundles[ _bundle[ 'Bundle-SymbolicName' ] ] = _bundle[ 'Bundle-Version' ]; } return bundles; } + + function isTestServiceAllowed( service ){ + if ( len( request.testServices) eq 0 ) + return true; + loop list=request.testServices item="local.testService" { + if ( local.testService eq arguments.service ) + return true; + } + return false; + } + + boolean function isRemotePortOpen( string host, numeric port, numeric timeout=2000 ) { + var socket = createObject( "java", "java.net.Socket").init(); + var address = createObject( "java", "java.net.InetSocketAddress" ).init( + javaCast( "string", arguments.host ), + javaCast( "int", arguments.port ) + ); + + try { + socket.connect( address, javaCast( "int", arguments.timeout )); + socket.close(); + return true; + } catch (e) { + return false; + } + } } diff --git a/test/_testRunner.cfc b/test/_testRunner.cfc index c490e2df6c..0d67039ee1 100644 --- a/test/_testRunner.cfc +++ b/test/_testRunner.cfc @@ -7,7 +7,7 @@ component { local.tab = chr( 9 ); local.stack = []; local.i = find( "/testbox/", arguments.st ); - if ( request.testDebug || i eq 0 ){ // dump it all out + if ( request.testDebug ?: false || i eq 0 ){ // dump it all out arrayAppend( stack, TAB & arguments.st ); return stack; } @@ -18,6 +18,10 @@ component { local.i = len( local.tmp )-i; local.j = find( ")", local.tmp, local.i ); // find the end of the line local.tmp = mid( local.tmp, 1, local.j ); + } else { + // no CFC reference found just, return the whole stack + arrayAppend( stack, TAB & arguments.st ); + return stack; } arrayAppend( stack, TAB & local.tmp ); // now find any Caused By: and output them diff --git a/test/cache/Memcached.cfc b/test/cache/Memcached.cfc index 7d132833be..26afe0b249 100644 --- a/test/cache/Memcached.cfc +++ b/test/cache/Memcached.cfc @@ -16,7 +16,7 @@ * License along with this library. If not, see . * ---> -component extends="org.lucee.cfml.test.LuceeTestCase" { +component extends="org.lucee.cfml.test.LuceeTestCase" labels="memcached"{ variables.cacheName='memcached'; @@ -82,12 +82,16 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { } private string function defineCache(){ - try { + var memcached = server.getDatasource("memcached"); + if ( isEmpty( memcached ) ) + return false; + + //try { application action="update" caches="#{memcached:{ class: 'org.lucee.extension.cache.mc.MemcachedCache' , bundleName: 'memcached.extension' - , bundleVersion: '4.0.0.1-SNAPSHOT' + , bundleVersion: '4.0.0.10-SNAPSHOT' , storage: false , custom: { "socket_timeout":"30", @@ -103,15 +107,15 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { "max_idle_time":"600", "max_busy_time":"30", "nagle_alg":"true", - "failover":"true", - "servers":"localhost:11211" + "failover":"false", + "servers":"#memcached.server#:#memcached.port#" } , default: '' }}#"; cachePut(id='abcd', value=1234, cacheName=variables.cacheName); return !isNull(cacheget(id:'abcd', cacheName:variables.cacheName)); - } - catch(e) {} + //} + //catch(e) {} return false; } diff --git a/test/cache/MemcachedV3.cfc b/test/cache/MemcachedV3.cfc index 2a89e3b246..35cd93272e 100644 --- a/test/cache/MemcachedV3.cfc +++ b/test/cache/MemcachedV3.cfc @@ -16,7 +16,7 @@ * License along with this library. If not, see . * ---> -component extends="org.lucee.cfml.test.LuceeTestCase" { +component extends="org.lucee.cfml.test.LuceeTestCase" labels="memcached" { variables.cacheName='memcached'; @@ -82,7 +82,10 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { } private string function defineCache(){ - try { + var memcached = server.getDatasource("memcached"); + if ( isEmpty( memcached ) ) + return false; + //try { application action="update" caches="#{memcached:{ class: 'org.lucee.extension.io.cache.memcache.MemCacheRaw' @@ -90,7 +93,7 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { , bundleVersion: '3.0.2.29' , storage: false , custom: { - "socket_timeout":"30", + "socket_timeout":"3", "initial_connections":"1", "alive_check":"true", "buffer_size":"1", @@ -103,15 +106,15 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { "max_idle_time":"600", "max_busy_time":"30", "nagle_alg":"true", - "failover":"true", - "servers":"localhost:11211" + "failover":"false", + "servers":"#memcached.server#:#memcached.port#" } , default: '' }}#"; cachePut(id='abcd', value=1234, cacheName=variables.cacheName); return !isNull(cacheget(id:'abcd', cacheName:variables.cacheName)); - } - catch(e) {} + //} + //catch(e) {} return false; } diff --git a/test/datasource/H2.cfc b/test/datasource/H2.cfc index e58ac6a225..fe1490e4b5 100644 --- a/test/datasource/H2.cfc +++ b/test/datasource/H2.cfc @@ -9,7 +9,7 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { testConnection(); } public void function testConnectionLatest(){ - defineDatasource('org.h2'); + defineDatasource('org.lucee.h2',"2.1.214.0001L"); testConnection(); } diff --git a/test/datasource/HSQLDB.cfc b/test/datasource/HSQLDB.cfc index d0bfd72b59..24e7553498 100644 --- a/test/datasource/HSQLDB.cfc +++ b/test/datasource/HSQLDB.cfc @@ -49,12 +49,22 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { } private void function defineDatasource(bundle,version){ + var dbPath = getDirectoryFromPath( getCurrentTemplatePath() ) & "/datasource/"; + var dbFile = "db_" & replace( arguments.bundle & "_" & arguments.version, '.', '_', 'all'); + + var oldFiles = directoryList(path=dbPath, filter="#dbfile#*.*", listinfo="path"); + oldFiles.each( function( oldfile ) { + if ( fileExists( oldFile ) ){ + fileDelete( oldFile ); + } + }); + application action="update" datasource={ class: 'org.hsqldb.jdbcDriver' , bundleName: arguments.bundle , bundleVersion: arguments.version - , connectionString: 'jdbc:hsqldb:file:#getDirectoryFromPath(getCurrentTemplatePath())#/datasource/db#replace(arguments.version,'.','_','all')#' + , connectionString: 'jdbc:hsqldb:file:#dbPath##dbFile#' }; } } diff --git a/test/datasource/JDBCDrivers.cfc b/test/datasource/JDBCDrivers.cfc index be67b0f1f4..4fe4e03f49 100644 --- a/test/datasource/JDBCDrivers.cfc +++ b/test/datasource/JDBCDrivers.cfc @@ -55,7 +55,7 @@ component extends="org.lucee.cfml.test.LuceeTestCase"{ }); it( title='H2',body=function( currentSpec ) { - loadJDBCDriverClass("org.h2","1.3.172"); + loadJDBCDriverClass("org.lucee.h2","2.1.214.0001L"); }); it( title='HSQLDB',body=function( currentSpec ) { diff --git a/test/extension/S3.cfc b/test/extension/S3.cfc index 9b67aca493..826dfe6b66 100644 --- a/test/extension/S3.cfc +++ b/test/extension/S3.cfc @@ -1,9 +1,9 @@ -component extends="org.lucee.cfml.test.LuceeTestCase" { +component extends="org.lucee.cfml.test.LuceeTestCase" labels="s3" { function beforeAll() skip="isNotSupported"{ if(isNotSupported()) return; var s3Details = getCredentials(); - id=lcase(hash(CreateGUID())); + id = s3Details.BUCKET_PREFIX & "s3ext-" & lcase(hash(CreateGUID())); root = "s3://#s3Details.ACCESS_KEY_ID#:#s3Details.SECRET_KEY#@/"; } @@ -15,7 +15,7 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { it(title="create/delete a empty bucket", skip=isNotSupported(), body=function( currentSpec ){ SystemOutput(root,1,1); - var bucketName = "test-create-bucket1-#id#"; + var bucketName = "#id#-1"; var bucketPath=root&bucketName; try { expect(directoryExists(bucketPath)).toBeFalse(); @@ -30,7 +30,7 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { }); it(title="create/delete a bucket with a file", skip=isNotSupported(), body=function( currentSpec ){ - var bucketName = "test-create-bucket2-#id#"; + var bucketName = "#id#-2"; var bucketPath=root&bucketName; try { expect(directoryExists(bucketPath)).toBeFalse(); @@ -55,7 +55,7 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { }); it(title="create/delete a empty folder", skip=isNotSupported(), body=function( currentSpec ){ - var bucketName = "test-create-folder1-#id#"; + var bucketName = "#id#-folder1"; var bucketPath=root&bucketName; var folderPath=bucketPath&"/folder1"; try { @@ -73,7 +73,7 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { }); it(title="create/delete a folder with a file", skip=isNotSupported(), body=function( currentSpec ){ - var bucketName = "test-create-folder2-#id#"; + var bucketName = "#id#-folder2"; var bucketPath=root&bucketName; var folderPath=bucketPath&"/folder1"; try { @@ -100,7 +100,7 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { }); it(title="create/delete a file", skip=isNotSupported(), body=function( currentSpec ){ - var bucketName = "test-create-file-#id#"; + var bucketName = "#id#-file"; var bucketPath=root&bucketName; var filePath=bucketPath&"/foo.txt"; try { @@ -119,7 +119,7 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { it(title="copy a empty bucket", skip=isNotSupported(), body=function( currentSpec ){ SystemOutput(root,1,1); - var bucketName = "test-copy-bucket1-#id#"; + var bucketName = "#id#-b1"; var bucketPathSrc=root&bucketName; var bucketPathTrg=bucketPathSrc&"copied"; try { @@ -151,7 +151,7 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { it(title="copy a bucket with content", skip=isNotSupported(), body=function( currentSpec ){ SystemOutput(root,1,1); - var bucketName = "test-copy-bucket2-#id#"; + var bucketName = "#id#-b2"; var bucketPathSrc=root&bucketName; var folderPathSrc=bucketPathSrc&"/folder1"; var filePathSrc=folderPathSrc&"/foo.txt"; @@ -193,7 +193,7 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { }); it(title="list buckets", skip=isNotSupported(), body=function( currentSpec ){ - var bucketName = "test-list1-#id#"; + var bucketName = "#id#-list1"; var bucketPath=root&bucketName; try { directoryCreate(bucketPath); @@ -213,7 +213,7 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { }); it(title="list content of a bucket", skip=isNotSupported(), body=function( currentSpec ){ - var bucketName = "test-list2-#id#"; + var bucketName = "#id#-list2"; var bucketPath=root&bucketName; var folderPath=bucketPath&"/folder1"; var filePath=folderPath&"/foo.txt"; @@ -232,7 +232,7 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { xit(title="move a bucket with content", skip=isNotSupported(), body=function( currentSpec ){ SystemOutput(root,1,1); - var bucketName = "test-copy-move-#id#"; + var bucketName = "#id#-move"; var bucketPathSrc=root&bucketName; var folderPathSrc=bucketPathSrc&"/folder1"; var filePathSrc=folderPathSrc&"/foo.txt"; @@ -270,7 +270,7 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { }); it(title="file append/write", skip=isNotSupported(), body=function( currentSpec ){ - var bucketName = "test-append-#id#"; + var bucketName = "#id#-append"; var bucketPath=root&bucketName; var filePath=bucketPath&"/foo.txt"; try { @@ -294,7 +294,7 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { it(title="file copy/delete", skip=isNotSupported(), body=function( currentSpec ){ - var bucketName = "test-append-#id#"; + var bucketName = "#id#-append2"; var bucketPathSrc=root&bucketName&"src"; var bucketPathTrg=root&bucketName&"trg"; var filePathSrc=bucketPathSrc&"/foosrc.txt"; @@ -335,7 +335,7 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { it(title="file move/delete", skip=isNotSupported(), body=function( currentSpec ){ - var bucketName = "test-append-#id#"; + var bucketName = "#id#-append-3"; var bucketPathSrc=root&bucketName&"src"; var bucketPathTrg=root&bucketName&"trg"; var filePathSrc=bucketPathSrc&"/foosrc.txt"; @@ -376,7 +376,7 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { it(title="check having a file and directory with the same name", skip=true, body=function( currentSpec ) { if(isNotSupported()) return; - var bucketName = "test-same-#id#"; + var bucketName = "#id#-same"; var base = root & bucketName; if( directoryExists(base)) diff --git a/test/functions/StoreMetaData.cfc b/test/functions/StoreMetaData.cfc index 8dd6a944fb..f9214149d3 100644 --- a/test/functions/StoreMetaData.cfc +++ b/test/functions/StoreMetaData.cfc @@ -44,7 +44,7 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { public function testStoreMetadata() localMode=true { if(!variables.s3Supported) return; - var dir="s3://lucee-testsuite-metadata/object/"; + var dir="s3://" & server.getTestService("s3").bucket_prefix & "metadata-#lcase(hash(CreateGUID()))#/object/"; if(DirectoryExists(dir)) directoryDelete(dir,true); try { assertFalse(DirectoryExists(dir)); diff --git a/test/general/CacheHandler.cfc b/test/general/CacheHandler.cfc index 5f0eb6c4d3..8dda959df1 100644 --- a/test/general/CacheHandler.cfc +++ b/test/general/CacheHandler.cfc @@ -53,18 +53,11 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { } private void function defineDatasource(){ - application action="update" - datasource="#{ - class: 'org.hsqldb.jdbcDriver' - , bundleName: 'org.hsqldb.hsqldb' - , bundleVersion: '2.3.2' - , connectionString: 'jdbc:hsqldb:file:#getDirectoryFromPath(getCurrentTemplatePath())#/cacheHandler/db' - }#"; + var dbFile = getTempDirectory() & "hsqldb-" & listFirst( listLast( getCurrentTemplatePath(), "/\" ), "."); + var ds = server.getDatasource("hsqldb", dbfile); + application action="update" datasource="#ds#"; } - - - public void function testApplicationCFM2(){ uri=createURI("appCFM2/index.cfm"); local.res=_InternalRequest(template:uri); diff --git a/test/general/Resources.cfc b/test/general/Resources.cfc index 510f642584..64e855781c 100755 --- a/test/general/Resources.cfc +++ b/test/general/Resources.cfc @@ -482,7 +482,7 @@ private function assertEqualPaths(string path1, string path2) { private void function test(string label,string root){ var start=getTickCount(); - var dir=arguments.root&"lucee-res-#lcase(hash(CreateGUID()))#/"; + var dir=arguments.root&"lucee-ldev-#lcase(hash(CreateGUID()))#/"; // make sure there are no data from a previous run if(directoryExists(dir)) { diff --git a/test/jira/Jira2049/Application.cfc b/test/jira/Jira2049/Application.cfc index 8d756ea2a5..bf90b71c93 100755 --- a/test/jira/Jira2049/Application.cfc +++ b/test/jira/Jira2049/Application.cfc @@ -24,32 +24,6 @@ component { private struct function getCredencials() { // getting the credetials from the enviroment variables - var mySQL={}; - if( - !isNull(server.system.environment.MYSQL_SERVER) && - !isNull(server.system.environment.MYSQL_USERNAME) && - !isNull(server.system.environment.MYSQL_PASSWORD) && - !isNull(server.system.environment.MYSQL_PORT) && - !isNull(server.system.environment.MYSQL_DATABASE)) { - mySQL.server=server.system.environment.MYSQL_SERVER; - mySQL.username=server.system.environment.MYSQL_USERNAME; - mySQL.password=server.system.environment.MYSQL_PASSWORD; - mySQL.port=server.system.environment.MYSQL_PORT; - mySQL.database=server.system.environment.MYSQL_DATABASE; - } - // getting the credetials from the system variables - else if( - !isNull(server.system.properties.MYSQL_SERVER) && - !isNull(server.system.properties.MYSQL_USERNAME) && - !isNull(server.system.properties.MYSQL_PASSWORD) && - !isNull(server.system.properties.MYSQL_PORT) && - !isNull(server.system.properties.MYSQL_DATABASE)) { - mySQL.server=server.system.properties.MYSQL_SERVER; - mySQL.username=server.system.properties.MYSQL_USERNAME; - mySQL.password=server.system.properties.MYSQL_PASSWORD; - mySQL.port=server.system.properties.MYSQL_PORT; - mySQL.database=server.system.properties.MYSQL_DATABASE; - } - return mysql; + return server.getDatasource("mysql"); } } \ No newline at end of file diff --git a/test/jira/Jira2733.cfc b/test/jira/Jira2733.cfc index c211518f7e..a84e3f1941 100644 --- a/test/jira/Jira2733.cfc +++ b/test/jira/Jira2733.cfc @@ -87,11 +87,9 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { } private string function defineDatasource(){ - application action="update" - datasource="#{ - class: 'org.hsqldb.jdbcDriver' - , connectionString: 'jdbc:hsqldb:file:#getDirectoryFromPath(getCurrentTemplatePath())#/datasource/db' - }#"; + var dbFile = getTempDirectory() & "hsqldb-" & listFirst( listLast( getCurrentTemplatePath(), "/\" ), "."); + var ds = server.getDatasource("hsqldb", dbfile); + application action="update" datasource="#ds#"; } } \ No newline at end of file diff --git a/test/jira/Jira3053.cfc b/test/jira/Jira3053.cfc index 27dbca230d..6901d6457c 100644 --- a/test/jira/Jira3053.cfc +++ b/test/jira/Jira3053.cfc @@ -58,11 +58,9 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { } private string function defineDatasource(){ - application action="update" - datasource="#{ - class: 'org.hsqldb.jdbcDriver' - , connectionString: 'jdbc:hsqldb:file:#getDirectoryFromPath(getCurrentTemplatePath())#/datasource/db' - }#"; + var dbFile = getTempDirectory() & "hsqldb-" & listFirst( listLast( getCurrentTemplatePath(), "/\" ), "."); + var ds = server.getDatasource("hsqldb", dbfile); + application action="update" datasource="#ds#"; } } diff --git a/test/jira/Jira3077.cfc b/test/jira/Jira3077.cfc index 8361f13dd4..cf87bf8564 100644 --- a/test/jira/Jira3077.cfc +++ b/test/jira/Jira3077.cfc @@ -39,11 +39,9 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { } private string function defineDatasource(){ - application action="update" - datasource="#{ - class: 'org.hsqldb.jdbcDriver' - , connectionString: 'jdbc:hsqldb:file:#getDirectoryFromPath(getCurrentTemplatePath())#/datasource/db' - }#"; + var dbFile = getTempDirectory() & "hsqldb-" & listFirst( listLast( getCurrentTemplatePath(), "/\" ), "."); + var ds = server.getDatasource("hsqldb", dbfile); + application action="update" datasource="#ds#"; } public void function testNoSpace() { diff --git a/test/jira/Jira3087.cfc b/test/jira/Jira3087.cfc index 9267a5225a..32938fc1a4 100644 --- a/test/jira/Jira3087.cfc +++ b/test/jira/Jira3087.cfc @@ -39,11 +39,9 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { } private string function defineDatasource(){ - application action="update" - datasource="#{ - class: 'org.hsqldb.jdbcDriver' - , connectionString: 'jdbc:hsqldb:file:#getDirectoryFromPath(getCurrentTemplatePath())#/datasource/db' - }#"; + var dbFile = getTempDirectory() & "hsqldb-" & listFirst( listLast( getCurrentTemplatePath(), "/\" ), "."); + var ds = server.getDatasource("hsqldb", dbfile); + application action="update" datasource="#ds#"; } public void function testNoSpace() { diff --git a/test/orm/Hibernate.cfc b/test/orm/Hibernate.cfc index 1ddc38685f..02cc4e65a2 100644 --- a/test/orm/Hibernate.cfc +++ b/test/orm/Hibernate.cfc @@ -17,7 +17,7 @@ * License along with this library. If not, see . * ---> -component extends="org.lucee.cfml.test.LuceeTestCase" { +component extends="org.lucee.cfml.test.LuceeTestCase" labels="orm" { //public function setUp(){} diff --git a/test/orm/many2many/Application.cfc b/test/orm/many2many/Application.cfc index f6571c1129..f89bf154b5 100755 --- a/test/orm/many2many/Application.cfc +++ b/test/orm/many2many/Application.cfc @@ -2,13 +2,7 @@ this.name = hash(getCurrentTemplatePath()) & getTickCount(); - if(directoryExists("datasource")) { - directoryDelete("datasource",true); - } - this.datasources.test = { - class: "org.h2.Driver" - , connectionString: 'jdbc:h2:#getDirectoryFromPath(getCurrentTemplatePath())#/datasource/db;MODE=MySQL' - }; + this.datasources.test = server.getDatasource("h2", server._getTempDir("orm-many2many") ); this.datasource = 'test'; this.ormEnabled = true; @@ -18,21 +12,6 @@ cfclocation = 'model' } ; - function onRequestEnd() { - var javaIoFile=createObject("java","java.io.File"); - loop array=DirectoryList( - path=getDirectoryFromPath(getCurrentTemplatePath()), - recurse=true, filter="*.db") item="local.path" { - fileDeleteOnExit(javaIoFile,path); - } - } - - private function fileDeleteOnExit(required javaIoFile, required string path) { - var file=javaIoFile.init(arguments.path); - if(!file.isFile())file=javaIoFile.init(expandPath(arguments.path)); - if(file.isFile()) file.deleteOnExit(); - } - diff --git a/test/run-tests.cfm b/test/run-tests.cfm index 03372e15d0..aac62e7643 100644 --- a/test/run-tests.cfm +++ b/test/run-tests.cfm @@ -1,5 +1,6 @@ encodeForHTML("abc"); // test if ESAPI extension exist right away + request._start = getTickCount(); if (execute) { request.basedir = basedir; @@ -371,26 +372,46 @@ Begin Stack Trace JUnitReportFile = resultPath & "junit-test-results-#server.lucee.version#.xml"; FileWrite( JUnitReportFile, jUnitReporter.runReport( results=result, testbox=tb, justReturn=true ) ); - systemOutput("", true ); - systemOutput("", true ); - systemOutput("=============================================================", true ); - systemOutput("TestBox Version: #tb.getVersion()#", true ); - systemOutput("Lucee Version: #server.lucee.version#", true ); - systemOutput("Java Version: #server.java.version#", true ); - systemOutput("Global Stats (#result.getTotalDuration()# ms)", true ); - systemOutput("=============================================================", true ); - systemOutput("->[Bundles/Suites/Specs: #result.getTotalBundles()#/#result.getTotalSuites()#/#result.getTotalSpecs()#]",true); - systemOutput("->[Pass: #result.getTotalPass()#]", true ); - systemOutput("->[Skipped: #result.getTotalSkipped()#]", true ); - systemOutput("->[Failures: #result.getTotalFail()#]", true ); - systemOutput("->[Errors: #result.getTotalError()#]", true ); - systemOutput("->[JUnitReport: #JUnitReportFile#]", true ); - // load errors into an array, so we can dump them out to $GITHUB_STEP_SUMMARY results = []; - results_md = ["## Lucee #server.lucee.version#"]; + results_md = ["## Lucee #server.lucee.version#", ""]; + + systemOutput( NL & NL & "=============================================================", true ); + arrayAppend( results, "Lucee Version: #server.lucee.version#"); + arrayAppend( results, "Java Version: #server.java.version#"); + arrayAppend( results, "TestBox Version: #tb.getVersion()#"); + arrayAppend( results, "Total Execution time: (#NumberFormat( ( getTickCount()-request._start) / 1000 )# s)"); + arrayAppend( results, "Test Execution time: (#NumberFormat( result.getTotalDuration() /1000 )# s)"); + arrayAppend( results, ""); + arrayAppend( results, "=============================================================" & NL); + arrayAppend( results, "-> Bundles/Suites/Specs: #result.getTotalBundles()#/#result.getTotalSuites()#/#result.getTotalSpecs()#"); + arrayAppend( results, "-> Pass: #result.getTotalPass()#"); + arrayAppend( results, "-> Skipped: #result.getTotalSkipped()#"); + arrayAppend( results, "-> Failures: #result.getTotalFail()#"); + arrayAppend( results, "-> Errors: #result.getTotalError()#"); + arrayAppend( results, "-> JUnitReport: #JUnitReportFile#"); + request.testDebug = false; + servicesReport = new test._setupTestServices().reportServiceSkipped(); + for ( service in servicesReport ){ + arrayAppend( results, service ); + } + arrayAppend( results_md, "" ); + loop array=results item="summary"{ + arrayAppend( results_md, summary ); + } + arrayAppend( results_md, "" ); + + failedServices = new test._setupTestServices().reportServiceFailed(); + if ( len( failedServices ) gt 0 ){ + loop array=failedServices item="failure"{ + systemOutput( failure, true ); + arrayAppend( results_md, failure ); + } + arrayAppend( results_md, "" ); + } + if ( structKeyExists( server.system.environment, "GITHUB_STEP_SUMMARY" ) ){ github_commit_base_href= "/" & server.system.environment.GITHUB_REPOSITORY & "/blob/" & server.system.environment.GITHUB_SHA & "/"; @@ -442,6 +463,8 @@ Begin Stack Trace loop array=#results# item="resultLine" { systemOutput( resultLine, (resultLine neq NL) ); } + markdownReport = resultPath & "build-report-#server.lucee.version#.md"; + FileWrite( markdownReport, ArrayToList( results_md, NL ) ); if ( structKeyExists( server.system.environment, "GITHUB_STEP_SUMMARY" ) ){ //systemOutput( server.system.environment.GITHUB_STEP_SUMMARY, true ); fileWrite( server.system.environment.GITHUB_STEP_SUMMARY, ArrayToList( results_md, NL ) ); @@ -459,6 +482,11 @@ Begin Stack Trace if ((result.getTotalFail() + result.getTotalError()) > 0) { throw "TestBox could not successfully execute all testcases: #result.getTotalFail()# tests failed; #result.getTotalError()# tests errored."; } + + if ( len( new test._setupTestServices().reportServiceFailed() ) gt 0 + && new test._setupTestServices().failOnConfiguredServiceError() ) { + throw "ERROR: test service(s) failed"; + } } catch(e){ systemOutput("-------------------------------------------------------", true ); diff --git a/test/tags/Http.cfc b/test/tags/Http.cfc index 894463b16e..87db01533d 100644 --- a/test/tags/Http.cfc +++ b/test/tags/Http.cfc @@ -42,7 +42,7 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { } } - public void function testImplicit(){ + public void function testImplicit() skip=true { var data=chr(228)&chr(246)&chr(252); // äöü data="{aaa:'#data#'}"; http url="https://update.lucee.org/rest/update/provider/echoPut" result="local.res" method="put" throwonerror="no" charset="utf-8"{ @@ -52,7 +52,7 @@ component extends="org.lucee.cfml.test.LuceeTestCase" { assertEquals(data,res.httpRequestData.content); } - public void function testExplicit(){ + public void function testExplicit() skip=true { var data=chr(228)&chr(246)&chr(252); // äöü data="{aaa:'#data#'}"; http url="https://update.lucee.org/rest/update/provider/echoPut" result="local.res" method="put" throwonerror="no" charset="utf-8"{ diff --git a/test/tickets/LDEV0359.cfc b/test/tickets/LDEV0359.cfc index 1fb4acd0c3..32e7726454 100644 --- a/test/tickets/LDEV0359.cfc +++ b/test/tickets/LDEV0359.cfc @@ -8,7 +8,7 @@ component extends="org.lucee.cfml.test.LuceeTestCase"{ function beforeAll() skip="isNotSupported"{ if(isNotSupported()) return; s3Details = getCredentials(); - mitrahsoftBucketName = "lucee-ldev0359-#lcase(hash(CreateGUID()))#"; + mitrahsoftBucketName = lcase( s3Details.bucket_prefix & "0359-#hash( CreateGUID() )#"); base = "s3://#s3Details.ACCESS_KEY_ID#:#s3Details.SECRET_KEY#@"; baseWithBucketName = "s3://#s3Details.ACCESS_KEY_ID#:#s3Details.SECRET_KEY#@/#mitrahsoftBucketName#"; // for skipping rest of the cases, if error occurred. diff --git a/test/tickets/LDEV0931.cfc b/test/tickets/LDEV0931.cfc index c9e6dccbf5..2c3b2bc756 100644 --- a/test/tickets/LDEV0931.cfc +++ b/test/tickets/LDEV0931.cfc @@ -16,7 +16,7 @@ * License along with this library. If not, see . * ---> -component extends="org.lucee.cfml.test.LuceeTestCase" { +component extends="org.lucee.cfml.test.LuceeTestCase" skip=true { public void function testImplicit(){ var data=chr(228)&chr(246)&chr(252); // äöü diff --git a/test/tickets/LDEV1129.cfc b/test/tickets/LDEV1129.cfc index 88038ce38d..d729cebf83 100644 --- a/test/tickets/LDEV1129.cfc +++ b/test/tickets/LDEV1129.cfc @@ -7,16 +7,18 @@ } function beforeAll() skip="isNotSupported"{ - variables.bucketName = lcase("lucee-ldev1129-#CreateGUID()#"); + if ( isNotSupported() ) return; + + var s3Details = getCredentials(); + variables.bucketName = lcase( s3Details.bucket_prefix & "1129-#CreateGUID()#"); var uri = createURI( variables.bucketName ); + if (not directoryExists(uri) ){ Directorycreate(uri); Directorycreate("#uri#/test"); Directorycreate("#uri#/test2"); } - if ( isNotSupported() ) return; - var s3Details = getCredentials(); - + variables.base = "s3://#s3Details.ACCESS_KEY_ID#:#s3Details.SECRET_KEY#@"; variables.baseWithBucketName = "s3://#s3Details.ACCESS_KEY_ID#:#s3Details.SECRET_KEY#@/#bucketName#"; // for skipping rest of the cases, if error occurred. @@ -26,11 +28,14 @@ } function afterAll() skip="isNotSupported"{ - if (isNotSupported()) return; - if (directoryExists(baseWithBucketName) ) + if (!isNull(baseWithBucketName) && directoryExists(baseWithBucketName) ) directoryDelete(baseWithBucketName, true); + if (!isNull(testFolder) && directoryExists(testFolder) ) + directoryDelete(testFolder, true); + if (isNotSupported()) return; } + public function run( testResults , testBox ) { describe( title="Test suite for LDEV-1129 ( checking s3 file operations )", body=function() { aroundEach( function( spec, suite ){ diff --git a/test/tickets/LDEV1176.cfc b/test/tickets/LDEV1176.cfc index 01a0574f61..fbd069e77b 100644 --- a/test/tickets/LDEV1176.cfc +++ b/test/tickets/LDEV1176.cfc @@ -1,4 +1,4 @@ -component extends="org.lucee.cfml.test.LuceeTestCase" labels="s3"{ +component extends="org.lucee.cfml.test.LuceeTestCase" labels="s3" skip="true" { // skip closure function isNotSupported() { variables.s3Details=getCredentials(); @@ -14,7 +14,7 @@ component extends="org.lucee.cfml.test.LuceeTestCase" labels="s3"{ function beforeAll() skip="isNotSupported"{ if(isNotSupported()) return; var s3Details = getCredentials(); - variables.bucketName = lcase("lucee-ldev1176-#hash(CreateGUID())#"); + variables.bucketName = lcase( s3Details.bucket_prefix & "1176-#hash(CreateGUID())#"); variables.base = "s3://#s3Details.ACCESS_KEY_ID#:#s3Details.SECRET_KEY#@"; variables.baseWithBucketName = "s3://#s3Details.ACCESS_KEY_ID#:#s3Details.SECRET_KEY#@/#variables.bucketName#"; // for skipping rest of the cases, if error occurred. @@ -31,8 +31,12 @@ component extends="org.lucee.cfml.test.LuceeTestCase" labels="s3"{ function afterAll() skip="isNotSupported"{ if (isNotSupported()) return; - if( directoryExists( baseWithBucketName ) ) + if( directoryExists( baseWithBucketName ) ){ + try { directoryDelete( baseWithBucketName, true ); + } + catch(e) {} + } } public function run( testResults , testBox ) { diff --git a/test/tickets/LDEV1396.cfc b/test/tickets/LDEV1396.cfc index a0886ccfef..2bc2c8e3ab 100644 --- a/test/tickets/LDEV1396.cfc +++ b/test/tickets/LDEV1396.cfc @@ -8,14 +8,10 @@ function beforeAll() skip="isNotSupported"{ if(isNotSupported()) return; - s3Details = getCredentials(); - mitrahsoftBucketName = "lucee-ldev1396-#lcase(hash(CreateGUID()))#"; - base = "s3://#s3Details.ACCESS_KEY_ID#:#s3Details.SECRET_KEY#@"; + var s3Details = getCredentials(); + var mitrahsoftBucketName = lcase( s3Details.bucket_prefix & "1396-#lcase(hash(CreateGUID()))#" ); + var base = "s3://#s3Details.ACCESS_KEY_ID#:#s3Details.SECRET_KEY#@"; variables.baseWithBucketName = "s3://#s3Details.ACCESS_KEY_ID#:#s3Details.SECRET_KEY#@/#mitrahsoftBucketName#"; - // for skipping rest of the cases, if error occurred. - hasError = false; - // for replacing s3 access keys from error msgs - regEx = "\[[a-zA-Z0-9\:\/\@]+\]"; } function afterAll() skip="isNotSupported"{ @@ -51,7 +47,7 @@ } private function removeFullControl(acl) { - index=0; + var index=0; loop array=acl index="local.i" item="local.el" { if(el.permission=="FULL_CONTROL") local.index=i; diff --git a/test/tickets/LDEV1489.cfc b/test/tickets/LDEV1489.cfc index 2e5bf0805c..ab8ed46cfb 100644 --- a/test/tickets/LDEV1489.cfc +++ b/test/tickets/LDEV1489.cfc @@ -3,15 +3,21 @@ // skip closure function isNotSupported() { variables.s3Details=getCredentials(); - return structIsEmpty(s3Details); + if(structIsEmpty(s3Details)) return true; + if(!isNull(variables.s3Details.ACCESS_KEY_ID) && !isNull(variables.s3Details.SECRET_KEY)) { + variables.supported = true; + } + else + variables.supported = false; + return !variables.supported; } function beforeAll() skip="isNotSupported"{ if(isNotSupported()) return; s3Details = getCredentials(); - mitrahsoftBucketName = lcase("lucee-ldev1489-#lcase(hash(CreateGUID()))#"); + bucketName = lcase( s3Details.bucket_prefix & "1489-#hash(CreateGUID())#"); base = "s3://#s3Details.ACCESS_KEY_ID#:#s3Details.SECRET_KEY#@"; - variables.baseWithBucketName = "s3://#s3Details.ACCESS_KEY_ID#:#s3Details.SECRET_KEY#@/#mitrahsoftBucketName#"; + variables.baseWithBucketName = "s3://#s3Details.ACCESS_KEY_ID#:#s3Details.SECRET_KEY#@/#bucketName#"; // for skipping rest of the cases, if error occurred. hasError = false; // for replacing s3 access keys from error msgs @@ -38,7 +44,7 @@ local.result = _InternalRequest( template:"#uri#/test.cfm", url: { - bucketName: mitrahsoftBucketName + bucketName: bucketName } ); expect(listSort(local.result.filecontent,"textnocase","asc","|")).toBe('READ|WRITE'); @@ -78,7 +84,9 @@ cffile (action="write", file=baseWithBucketName & "/test6.txt", output="Sample s3 text"); var acl = StoreGetACL( baseWithBucketName & "/test6.txt" ); removeFullControl(acl); - expect(acl[1].permission).toBe('READ'); + + if(isNewS3())expect(len(acl)).toBe(0); + else expect(acl[1].permission).toBe('READ'); }); @@ -91,7 +99,7 @@ if(el.permission=="FULL_CONTROL") local.index=i; } - if(index>0)ArrayDeleteAt( acl, index ); + if(index gt 0) ArrayDeleteAt( acl, index ); } // Private functions @@ -104,6 +112,16 @@ var baseURI="/test/#listLast(getDirectoryFromPath(getCurrenttemplatepath()),"\/")#/"; return baseURI&""&calledName; } + + private function isNewS3(){ + qry= extensionlist(false); + loop query=qry { + if(qry.id=="17AB52DE-B300-A94B-E058BD978511E39E") { + if(left(qry.version,1)>=2) return true; + } + } + return false; + } diff --git a/test/tickets/LDEV1489/Application.cfc b/test/tickets/LDEV1489/Application.cfc index 0609b53848..4ccd08012f 100644 --- a/test/tickets/LDEV1489/Application.cfc +++ b/test/tickets/LDEV1489/Application.cfc @@ -2,4 +2,7 @@ component { this.name = "LDEV-1489"; this.s3.acl = "public-read-write"; + public function onRequestStart() { + setting requesttimeout=10; + } } diff --git a/test/tickets/LDEV1489/test.cfm b/test/tickets/LDEV1489/test.cfm index 6bac0a5c2d..8f038d6904 100644 --- a/test/tickets/LDEV1489/test.cfm +++ b/test/tickets/LDEV1489/test.cfm @@ -18,7 +18,7 @@ local.index=i; } - if(index>0)ArrayDeleteAt( acl, index ); + if(index gt 0) ArrayDeleteAt( acl, index ); } private struct function getCredentials() { diff --git a/test/tickets/LDEV2410.cfc b/test/tickets/LDEV2410.cfc index c377cf6d49..6a534ed64d 100644 --- a/test/tickets/LDEV2410.cfc +++ b/test/tickets/LDEV2410.cfc @@ -1,10 +1,6 @@ component extends="org.lucee.cfml.test.LuceeTestCase"{ function beforeAll(){ - variables.base = GetDirectoryFromPath(getcurrentTemplatepath()); - variables.path = base&"LDEV2410\example.txt"; - if(!directoryExists(base&"LDEV2410")){ - directoryCreate(base&'LDEV2410'); - } + variables.path = getTempFile( getTempDirectory(), "ldev2410", "txt" ); } function run( testResults, testBox ){ @@ -24,10 +20,5 @@ component extends="org.lucee.cfml.test.LuceeTestCase"{ }); }); } - - function afterAll(){ - if(directoryExists(base&"LDEV2410")){ - directoryDelete(base&"LDEV2410",true); - } - } + } \ No newline at end of file diff --git a/test/tickets/_LDEV1774.cfc b/test/tickets/_LDEV1774.cfc index c12a178f65..b8cad8a6e7 100644 --- a/test/tickets/_LDEV1774.cfc +++ b/test/tickets/_LDEV1774.cfc @@ -9,7 +9,7 @@ component extends="org.lucee.cfml.test.LuceeTestCase"{ function beforeAll() skip="isNotSupported"{ if(isNotSupported()) return; s3Details = getCredentials(); - variables.mitrahsoftBucketName = "LDEV1774"; + variables.mitrahsoftBucketName = lcase( s3Details.bucket_prefix & "LDEV1774"); variables.baseWithBucketName = "s3://#s3Details.ACCESS_KEY_ID#:#s3Details.SECRET_KEY#@/#variables.mitrahsoftBucketName#"; variables.URI = createURI("LDEV1774"); }