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");
}