From 7d000c236b0f7b1f13e988e47a96787f728396cd Mon Sep 17 00:00:00 2001 From: Github Actions Date: Thu, 29 Feb 2024 09:59:44 +0000 Subject: [PATCH 01/10] Version bump --- box.json | 2 +- changelog.md | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/box.json b/box.json index 325b920..58554a9 100644 --- a/box.json +++ b/box.json @@ -1,6 +1,6 @@ { "name":"TestBox CLI", - "version":"1.4.0", + "version":"1.5.0", "location":"https://downloads.ortussolutions.com/ortussolutions/commandbox-modules/testbox-cli/@build.version@/testbox-cli-@build.version@.zip", "slug":"testbox-cli", "author":"Ortus Solutions, Corp", diff --git a/changelog.md b/changelog.md index 5135230..fb507c0 100644 --- a/changelog.md +++ b/changelog.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [1.4.0] - 2024-02-29 + ### Added - New Github Actions for testing and releases @@ -115,7 +117,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - New `testbox apidocs` command to open the TestBox API Docs in your browser. - Initial Creation of this project -[Unreleased]: https://github.com/Ortus-Solutions/testbox-cli/compare/v1.3.0...HEAD +[Unreleased]: https://github.com/Ortus-Solutions/testbox-cli/compare/v1.4.0...HEAD + +[1.4.0]: https://github.com/Ortus-Solutions/testbox-cli/compare/v1.3.0...v1.4.0 [1.3.0]: https://github.com/Ortus-Solutions/testbox-cli/compare/v1.2.2...v1.3.0 From 84e7523fd26b49e8b647e0ce3061d9d959da03b1 Mon Sep 17 00:00:00 2001 From: Eric Peterson Date: Fri, 6 Sep 2024 10:36:00 -0600 Subject: [PATCH 02/10] Show debug output when verbose and fail/error --- models/CLIRenderer.cfc | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/models/CLIRenderer.cfc b/models/CLIRenderer.cfc index b8cd486..251e6e5 100644 --- a/models/CLIRenderer.cfc +++ b/models/CLIRenderer.cfc @@ -9,6 +9,9 @@ */ component { + property name="JSONPrettyPrint" inject="provider:JSONPrettyPrint"; + property name='JSONService' inject='JSONService'; + processingdirective pageEncoding="UTF-8"; variables.HEADER_CELL_CHARS = 7; @@ -296,6 +299,18 @@ component { "#repeatString( " ", arguments.level + 2 )#-> Failure: #local.thisSpec.failMessage##chr( 13 )#", COLOR.FAIL ); + + param local.thisSpec.debugBuffer = []; + if ( verbose && !local.thisSpec.debugBuffer.isEmpty() ) { + print.text( repeatString( " ", level + 2 ) ).boldWhiteOnGreenLine( "Debug Buffer:" ); + print.line( + JSONPrettyPrint.formatJSON( + json = local.thisSpec.debugBuffer, + ansiColors = JSONService.getANSIColors() + ).listToArray( chr( 10 ) ) + .map( ( line ) => "#repeatString( " ", level + 2 )##line#" ).toList( chr( 10 ) ) + ).line(); + } } if ( local.thisSpec.status == "error" ) { @@ -340,6 +355,18 @@ component { } } } ); + + param local.thisSpec.debugBuffer = []; + if ( verbose && !local.thisSpec.debugBuffer.isEmpty() ) { + print.text( repeatString( " ", level + 2 ) ).boldWhiteOnGreenLine( "Debug Buffer:" ); + print.line( + JSONPrettyPrint.formatJSON( + json = local.thisSpec.debugBuffer, + ansiColors = JSONService.getANSIColors() + ).listToArray( chr( 10 ) ) + .map( ( line ) => "#repeatString( " ", level + 2 )##line#" ).toList( chr( 10 ) ) + ).line(); + } } } From b67d18d9013e15110d88d68aa2e7fa8bc7645b99 Mon Sep 17 00:00:00 2001 From: Eric Peterson Date: Fri, 6 Sep 2024 10:42:09 -0600 Subject: [PATCH 03/10] FOrmatting --- models/CLIRenderer.cfc | 40 +++++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/models/CLIRenderer.cfc b/models/CLIRenderer.cfc index 251e6e5..1d11910 100644 --- a/models/CLIRenderer.cfc +++ b/models/CLIRenderer.cfc @@ -10,7 +10,7 @@ component { property name="JSONPrettyPrint" inject="provider:JSONPrettyPrint"; - property name='JSONService' inject='JSONService'; + property name="JSONService" inject="JSONService"; processingdirective pageEncoding="UTF-8"; @@ -303,13 +303,18 @@ component { param local.thisSpec.debugBuffer = []; if ( verbose && !local.thisSpec.debugBuffer.isEmpty() ) { print.text( repeatString( " ", level + 2 ) ).boldWhiteOnGreenLine( "Debug Buffer:" ); - print.line( - JSONPrettyPrint.formatJSON( - json = local.thisSpec.debugBuffer, - ansiColors = JSONService.getANSIColors() - ).listToArray( chr( 10 ) ) - .map( ( line ) => "#repeatString( " ", level + 2 )##line#" ).toList( chr( 10 ) ) - ).line(); + print + .line( + JSONPrettyPrint + .formatJSON( + json = local.thisSpec.debugBuffer, + ansiColors = JSONService.getANSIColors() + ) + .listToArray( chr( 10 ) ) + .map( ( line ) => "#repeatString( " ", level + 2 )##line#" ) + .toList( chr( 10 ) ) + ) + .line(); } } @@ -359,13 +364,18 @@ component { param local.thisSpec.debugBuffer = []; if ( verbose && !local.thisSpec.debugBuffer.isEmpty() ) { print.text( repeatString( " ", level + 2 ) ).boldWhiteOnGreenLine( "Debug Buffer:" ); - print.line( - JSONPrettyPrint.formatJSON( - json = local.thisSpec.debugBuffer, - ansiColors = JSONService.getANSIColors() - ).listToArray( chr( 10 ) ) - .map( ( line ) => "#repeatString( " ", level + 2 )##line#" ).toList( chr( 10 ) ) - ).line(); + print + .line( + JSONPrettyPrint + .formatJSON( + json = local.thisSpec.debugBuffer, + ansiColors = JSONService.getANSIColors() + ) + .listToArray( chr( 10 ) ) + .map( ( line ) => "#repeatString( " ", level + 2 )##line#" ) + .toList( chr( 10 ) ) + ) + .line(); } } } From ded9792ab5affd5b03e78c5653111c299a14a8b1 Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Mon, 9 Sep 2024 21:52:51 +0200 Subject: [PATCH 04/10] ### Bugs - Using the `useTestBoxLocal` was not working correctly and re-downloading TestBox every time ### Added - Updated the `run` command with tons of docs - Mutually exclusive options for `run` command which never existed before for `bundles` and `directory` --- changelog.md | 9 +++++++++ commands/testbox/run.cfc | 39 ++++++++++++++++++++++++++++----------- 2 files changed, 37 insertions(+), 11 deletions(-) diff --git a/changelog.md b/changelog.md index fb507c0..21e1de9 100644 --- a/changelog.md +++ b/changelog.md @@ -9,6 +9,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Bugs + +- Using the `useTestBoxLocal` was not working correctly and re-downloading TestBox every time + +### Added + +- Updated the `run` command with tons of docs +- Mutually exclusive options for `run` command which never existed before for `bundles` and `directory` + ## [1.4.0] - 2024-02-29 ### Added diff --git a/commands/testbox/run.cfc b/commands/testbox/run.cfc index 11b5ff9..8fdfa7f 100644 --- a/commands/testbox/run.cfc +++ b/commands/testbox/run.cfc @@ -81,16 +81,16 @@ component { * Ability to execute TestBox tests * * @runner The URL or shortname of the runner to use, if it uses a short name we look in your box.json - * @bundles The path or list of paths of the spec bundle CFCs to run and test - * @directory The directory mapping to test: directory = the path to the directory using dot notation (myapp.testing.specs) - * @recurse Recurse the directory mapping or not, by default it does - * @reporter The type of reporter to use for the results, by default is uses our 'simple' report. You can pass in a core reporter string type or a class path to the reporter to use. + * @bundles The path or list of paths of the spec bundle CFCs to run and test ONLY + * @directory The directory to use to discover test bundles and specs to test. Mutually exclusive with bundles. Example: directory=tests.specs + * @recurse Recurse the directory mapping or not. Defaults to true. + * @reporter The type of reporter to use for the results, by default is uses our 'json' reporter. You can pass in a core reporter string type or a class path to the reporter to use. * @labels The list of labels that a suite or spec must have in order to execute. * @excludes The list of labels that a suite or spec must not have in order to execute. * @options Add adhoc URL options to the runner as options:name=value options:name2=value2 - * @testBundles A list or array of bundle names that are the ones that will be executed ONLY! - * @testSuites A list of suite names that are the ones that will be executed ONLY! - * @testSpecs A list of test names that are the ones that will be executed ONLY! + * @testBundles A list or array of bundle names that are the ones that will be focused on for execution based on the bundles or directory arguments. + * @testSuites A list of suite names that are the ones that will be focused on for execution based on the bundles or directory arguments. + * @testSpecs A list of test names that are the ones that will be focused on for execution based on the bundles or directory arguments. * @outputFile We will store the results in this output file as well as presenting it to you. * @outputFormats A list of output reporter to produce using the runner's JSON results only. Available formats are: json,xml,junit,antjunit,simple,dot,doc,min,mintext,doc,text,tap,codexwiki * @verbose Display extra details including passing and skipped tests. @@ -240,9 +240,20 @@ component { /** * Add runner options to URL * + * We pass in ALL the arguments from the run method and we will build out the URL from the options. + * * @return The incorporated options and testing URL to hit */ private function addRunnerOptions(){ + // Mutex options: If we have a directory, we can't have bundles + if ( len( arguments.directory ) ) { + arguments[ "bundles" ] = ""; + } + // Mutex options: If we have bundles, we can't have directory + if ( len( arguments.bundles ) ) { + arguments[ "directory" ] = ""; + } + // Get testbox options from package descriptor var boxOptions = packageService.readPackageDescriptor( getCWD() ).testbox; @@ -272,6 +283,7 @@ component { var extraOptions = boxOptions.options ?: {}; // Add in command-specific options extraOptions.append( arguments.options ); + // Append to URL. for ( var opt in extraOptions ) { arguments.testboxURL &= "&#encodeForURL( opt )#=#encodeForURL( extraOptions[ opt ] )#"; @@ -421,15 +433,20 @@ component { * @testboxUseLocal Use a local version of TestBox or in the execution path. Defaults to true, else it tries to download it */ private function ensureTestBox( boolean testboxUseLocal = true ){ - // Where it should go in module + // Where it should go in the module installed locally var testBoxPath = variables.moduleConfig.path & "/testbox"; var modulePath = variables.moduleConfig.path; - // Check if installed locally - if ( arguments.testboxUseLocal ) { - testBoxPath = resolvePath( "testbox" ); + // If using local, check if we have a local version first + if( arguments.testboxUseLocal ){ + // Check if we have a local version + var localTestBoxPath = resolvePath( "testbox" ); + if( directoryExists( localTestBoxPath ) ){ + testBoxPath = localTestBoxPath; + } } + // If we don't have one by here, then download it if ( !directoryExists( testBoxPath ) ) { variables.print .blackOnWheat1( " WARN " ) From 16cabb76e5c96462888ae35aca7ee95f1e53e0df Mon Sep 17 00:00:00 2001 From: lmajano Date: Mon, 9 Sep 2024 19:53:48 +0000 Subject: [PATCH 05/10] Apply cfformat changes --- commands/testbox/run.cfc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/commands/testbox/run.cfc b/commands/testbox/run.cfc index 8fdfa7f..5da1318 100644 --- a/commands/testbox/run.cfc +++ b/commands/testbox/run.cfc @@ -247,7 +247,7 @@ component { private function addRunnerOptions(){ // Mutex options: If we have a directory, we can't have bundles if ( len( arguments.directory ) ) { - arguments[ "bundles" ] = ""; + arguments[ "bundles" ] = ""; } // Mutex options: If we have bundles, we can't have directory if ( len( arguments.bundles ) ) { @@ -438,10 +438,10 @@ component { var modulePath = variables.moduleConfig.path; // If using local, check if we have a local version first - if( arguments.testboxUseLocal ){ + if ( arguments.testboxUseLocal ) { // Check if we have a local version var localTestBoxPath = resolvePath( "testbox" ); - if( directoryExists( localTestBoxPath ) ){ + if ( directoryExists( localTestBoxPath ) ) { testBoxPath = localTestBoxPath; } } From a5776c63a6626dcaa0a08ca0665bc790d17e1f7c Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Mon, 9 Sep 2024 21:57:55 +0200 Subject: [PATCH 06/10] - TestBox run should use webroot when resolving testbox location in ensureTestBox() --- changelog.md | 1 + commands/testbox/run.cfc | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/changelog.md b/changelog.md index 21e1de9..043515b 100644 --- a/changelog.md +++ b/changelog.md @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Bugs - Using the `useTestBoxLocal` was not working correctly and re-downloading TestBox every time +- TestBox run should use webroot when resolving testbox location in ensureTestBox() ### Added diff --git a/commands/testbox/run.cfc b/commands/testbox/run.cfc index 8fdfa7f..1387448 100644 --- a/commands/testbox/run.cfc +++ b/commands/testbox/run.cfc @@ -436,11 +436,13 @@ component { // Where it should go in the module installed locally var testBoxPath = variables.moduleConfig.path & "/testbox"; var modulePath = variables.moduleConfig.path; + var serverDetails = variables.serverService.resolveServerDetails( {} ); + var serverInfo = serverDetails.serverInfo; // If using local, check if we have a local version first if( arguments.testboxUseLocal ){ // Check if we have a local version - var localTestBoxPath = resolvePath( "testbox" ); + var localTestBoxPath = resolvePath( "testbox", serverInfo.webroot ); if( directoryExists( localTestBoxPath ) ){ testBoxPath = localTestBoxPath; } From 2851fc71049063a0332c5078b74162959932ba27 Mon Sep 17 00:00:00 2001 From: lmajano Date: Mon, 9 Sep 2024 19:59:35 +0000 Subject: [PATCH 07/10] Apply cfformat changes --- commands/testbox/run.cfc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/commands/testbox/run.cfc b/commands/testbox/run.cfc index 880a4a1..dad75dc 100644 --- a/commands/testbox/run.cfc +++ b/commands/testbox/run.cfc @@ -434,8 +434,8 @@ component { */ private function ensureTestBox( boolean testboxUseLocal = true ){ // Where it should go in the module installed locally - var testBoxPath = variables.moduleConfig.path & "/testbox"; - var modulePath = variables.moduleConfig.path; + var testBoxPath = variables.moduleConfig.path & "/testbox"; + var modulePath = variables.moduleConfig.path; var serverDetails = variables.serverService.resolveServerDetails( {} ); var serverInfo = serverDetails.serverInfo; @@ -443,7 +443,7 @@ component { if ( arguments.testboxUseLocal ) { // Check if we have a local version var localTestBoxPath = resolvePath( "testbox", serverInfo.webroot ); - if( directoryExists( localTestBoxPath ) ){ + if ( directoryExists( localTestBoxPath ) ) { testBoxPath = localTestBoxPath; } } From c67720d4b25bf430b8777d7906d8b918203f8c0a Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Mon, 9 Sep 2024 23:09:04 +0200 Subject: [PATCH 08/10] - Bundle `displayName` now showing up on the reports --- changelog.md | 1 + models/CLIRenderer.cfc | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/changelog.md b/changelog.md index 043515b..1f3a3fb 100644 --- a/changelog.md +++ b/changelog.md @@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- Bundle `displayName` now showing up on the reports - Updated the `run` command with tons of docs - Mutually exclusive options for `run` command which never existed before for `bundles` and `directory` diff --git a/models/CLIRenderer.cfc b/models/CLIRenderer.cfc index 1d11910..ca0f2c5 100644 --- a/models/CLIRenderer.cfc +++ b/models/CLIRenderer.cfc @@ -57,7 +57,7 @@ component { arguments.print .line() .line( - "#getIndicator( thisStatus )##thisBundle.path# (#thisBundle.totalDuration# ms)", + "#getIndicator( thisStatus )##thisBundle.name# (#thisBundle.totalDuration# ms)", thisColor ) .line( From 16ba9bf0203f37a1cc987555ce4573d150a75dc7 Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Tue, 17 Sep 2024 19:11:04 +0200 Subject: [PATCH 09/10] ### Added - Internal refactoring for reuse of commands - BoxLang support for all generation commands and templates - You can now also use `--boxlang` to generate templates in BoxLang explicitly without detection - Bundle `displayName` now showing up on the reports - Updated the `run` command with tons of docs - Mutually exclusive options for `run` command which never existed before for `bundles` and `directory` ### Bugs - Using the `useTestBoxLocal` was not working correctly and re-downloading TestBox every time - TestBox run should use webroot when resolving testbox location in ensureTestBox() --- ModuleConfig.cfc | 2 +- README.md | 15 + build/SetupTemplate.cfc | 71 - changelog.md | 13 +- commands/testbox/apidocs.cfc | 1 - commands/testbox/create/bdd.cfc | 19 +- commands/testbox/create/unit.cfc | 16 +- commands/testbox/docs.cfc | 1 - commands/testbox/generate/browser.cfc | 16 +- commands/testbox/generate/harness.cfc | 16 +- commands/testbox/generate/module.cfc | 10 +- commands/testbox/generate/visualizer.cfc | 9 +- commands/testbox/run.cfc | 103 +- commands/testbox/watch.cfc | 7 +- models/BaseCommand.cfc | 150 + .../{testbox/test-visualizer => bx}/bdd.txt | 24 +- templates/bx/browser/Application.bx | 29 + templates/bx/browser/index.bxm | 187 + templates/bx/module/ModuleConfig.bx | 64 + templates/bx/runner/Application.bx | 29 + templates/bx/runner/index.bxm | 193 + templates/bx/tests/Application.bx | 31 + templates/bx/tests/results/TEST.properties | 14 + templates/bx/tests/results/latestrun.log | 1 + templates/bx/tests/results/report.txt | 27 + templates/bx/tests/runner.bxm | 25 + templates/bx/tests/specs/BDDTest.bx | 125 + templates/bx/tests/specs/MyFirstSpec.bx | 15 + .../tests/specs/integration}/.gitkeep | 0 templates/bx/tests/specs/unit/.gitkeep | 0 templates/bx/tests/test.xml | 137 + templates/bx/unit.txt | 32 + templates/{testbox => cfml}/bdd.txt | 0 .../browser}/Application.cfc | 3 +- templates/cfml/browser/index.cfm | 190 + .../{testbox => cfml}/module/ModuleConfig.cfc | 0 .../runner}/Application.cfc | 6 +- templates/cfml/runner/index.cfm | 196 + templates/cfml/tests/Application.cfc | 22 + templates/cfml/tests/integration/.gitkeep | 0 templates/cfml/tests/results/TEST.properties | 11 + templates/cfml/tests/results/latestrun.log | 1 + .../test-harness => cfml/tests}/runner.cfm | 4 +- .../tests}/specs/BDDTest.cfc | 45 +- templates/cfml/tests/specs/MyFirstSpec.cfc | 15 + .../test-harness => cfml/tests}/test.xml | 0 templates/cfml/tests/unit/.gitkeep | 0 templates/{testbox => cfml}/unit.txt | 0 .../testbox/test-browser/TestBoxLogo125.png | Bin 7091 -> 0 bytes templates/testbox/test-browser/index.cfm | 135 - templates/testbox/test-visualizer/index.html | 556 -- templates/testbox/test-visualizer/main.css | 7615 ----------------- .../testbox/test-visualizer/test-results.json | 1619 ---- 53 files changed, 1610 insertions(+), 10190 deletions(-) delete mode 100644 build/SetupTemplate.cfc create mode 100644 models/BaseCommand.cfc rename templates/{testbox/test-visualizer => bx}/bdd.txt (55%) create mode 100644 templates/bx/browser/Application.bx create mode 100644 templates/bx/browser/index.bxm create mode 100644 templates/bx/module/ModuleConfig.bx create mode 100644 templates/bx/runner/Application.bx create mode 100644 templates/bx/runner/index.bxm create mode 100644 templates/bx/tests/Application.bx create mode 100644 templates/bx/tests/results/TEST.properties create mode 100644 templates/bx/tests/results/latestrun.log create mode 100644 templates/bx/tests/results/report.txt create mode 100644 templates/bx/tests/runner.bxm create mode 100644 templates/bx/tests/specs/BDDTest.bx create mode 100644 templates/bx/tests/specs/MyFirstSpec.bx rename templates/{testbox/test-harness/resources => bx/tests/specs/integration}/.gitkeep (100%) create mode 100644 templates/bx/tests/specs/unit/.gitkeep create mode 100755 templates/bx/tests/test.xml create mode 100644 templates/bx/unit.txt rename templates/{testbox => cfml}/bdd.txt (100%) rename templates/{testbox/test-harness => cfml/browser}/Application.cfc (80%) create mode 100644 templates/cfml/browser/index.cfm rename templates/{testbox => cfml}/module/ModuleConfig.cfc (100%) rename templates/{testbox/test-browser => cfml/runner}/Application.cfc (66%) create mode 100644 templates/cfml/runner/index.cfm create mode 100644 templates/cfml/tests/Application.cfc create mode 100644 templates/cfml/tests/integration/.gitkeep create mode 100644 templates/cfml/tests/results/TEST.properties create mode 100644 templates/cfml/tests/results/latestrun.log rename templates/{testbox/test-harness => cfml/tests}/runner.cfm (94%) rename templates/{testbox/test-harness => cfml/tests}/specs/BDDTest.cfc (73%) create mode 100644 templates/cfml/tests/specs/MyFirstSpec.cfc rename templates/{testbox/test-harness => cfml/tests}/test.xml (100%) mode change 100644 => 100755 create mode 100644 templates/cfml/tests/unit/.gitkeep rename templates/{testbox => cfml}/unit.txt (100%) delete mode 100644 templates/testbox/test-browser/TestBoxLogo125.png delete mode 100644 templates/testbox/test-browser/index.cfm delete mode 100644 templates/testbox/test-visualizer/index.html delete mode 100644 templates/testbox/test-visualizer/main.css delete mode 100644 templates/testbox/test-visualizer/test-results.json diff --git a/ModuleConfig.cfc b/ModuleConfig.cfc index 6949a3d..5d2bc4d 100644 --- a/ModuleConfig.cfc +++ b/ModuleConfig.cfc @@ -10,7 +10,7 @@ component { this.name = "TestBox CLI"; this.version = "@build.version@+@build.number@"; - this.cfmapping = "testbox-cli"; + this.cfmapping = "testboxCLI"; function configure(){ settings = { templatesPath : modulePath & "/templates" } diff --git a/README.md b/README.md index ecd7aa1..ade654f 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,21 @@ box install testbox-cli You can use the CLI for many things like generating tests, harnesses, running tests and more. Please remember that you can always get help on any command by using the `--help` flag. +## BoxLang Generation Support + +The CLI will try to detect if you are running a BoxLang server or are in a BoxLang project using the following discovery techniques in order to determine if the command generators should use the BoxLang language or CFML. + +- Is the server running in the current directory a BoxLang server +- Do you have a `testbox.runner=boxlang` in your `box.json` file +- Do you have the `language=boxlang` in your `box.json` file + +## CFML Generation Support + +The CLI will try to detect if you are running a CFML server or are in a CFML project using the following discovery techniques in order to determine if the command generators should use the CFML language or BoxLang. + +- Is the server running in the current directory a CFML (Lucee or Adobe) server +- Do you have a `language=cfml` in your `box.json` file + ---- ## Credits & Contributions diff --git a/build/SetupTemplate.cfc b/build/SetupTemplate.cfc deleted file mode 100644 index 92ff899..0000000 --- a/build/SetupTemplate.cfc +++ /dev/null @@ -1,71 +0,0 @@ -/** - * Setup the Module Template according to your needs - */ -component { - - /** - * Constructor - */ - function init(){ - // Setup Pathing - variables.cwd = getCWD().reReplace( "\.$", "" ); - return this; - } - - /** - * Setup the module template - */ - function run(){ - // remove old .git - // directoryDelete( variables.cwd & ".git", true ); - - // Create new git repo - // command( "!git init" ).run(); - - var moduleName = ask( "What is the human readable name of your module?" ); - if ( !len( moduleName ) ) { - error( "Module Name is required" ); - } - var moduleSlug = ask( "What is the slug for your module?" ); - if ( !len( moduleSlug ) ) { - error( "Module Slug is required" ); - } - var moduleDescription = ask( "Short description of your module?" ); - if ( !len( moduleDescription ) ) { - error( "Module Description is required" ); - } - - command( "tokenReplace" ) - .params( - path = "/#variables.cwd#/**", - token = "@MODULE_NAME@", - replacement = moduleName - ) - .run(); - - command( "tokenReplace" ) - .params( - path = "/#variables.cwd#/**", - token = "@MODULE_SLUG@", - replacement = moduleSlug - ) - .run(); - - command( "tokenReplace" ) - .params( - path = "/#variables.cwd#/**", - token = "@MODULE_DESCRIPTION@", - replacement = moduleDescription - ) - .run(); - - // Finalize Message - print - .line() - .boldMagentaLine( - "Your module template is now ready for development! Just add the github origin, commit some code and Go rock it!" - ) - .toConsole(); - } - -} diff --git a/changelog.md b/changelog.md index 1f3a3fb..6e8c9f1 100644 --- a/changelog.md +++ b/changelog.md @@ -9,17 +9,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -### Bugs - -- Using the `useTestBoxLocal` was not working correctly and re-downloading TestBox every time -- TestBox run should use webroot when resolving testbox location in ensureTestBox() - ### Added +- Internal refactoring for reuse of commands +- BoxLang support for all generation commands and templates +- You can now also use `--boxlang` to generate templates in BoxLang explicitly without detection - Bundle `displayName` now showing up on the reports - Updated the `run` command with tons of docs - Mutually exclusive options for `run` command which never existed before for `bundles` and `directory` +### Bugs + +- Using the `useTestBoxLocal` was not working correctly and re-downloading TestBox every time +- TestBox run should use webroot when resolving testbox location in ensureTestBox() + ## [1.4.0] - 2024-02-29 ### Added diff --git a/commands/testbox/apidocs.cfc b/commands/testbox/apidocs.cfc index 014d8fe..7beccf9 100644 --- a/commands/testbox/apidocs.cfc +++ b/commands/testbox/apidocs.cfc @@ -16,7 +16,6 @@ component { **/ function run(){ var docsUri = "https://apidocs.ortussolutions.com/##/testbox"; - command( "browse" ).params( uri: docsUri ).run(); } diff --git a/commands/testbox/create/bdd.cfc b/commands/testbox/create/bdd.cfc index 7b25d77..9641d9b 100644 --- a/commands/testbox/create/bdd.cfc +++ b/commands/testbox/create/bdd.cfc @@ -7,20 +7,23 @@ * {code} * **/ -component { - - property name="settings" inject="box:modulesettings:testbox-cli"; +component extends="testboxCLI.models.BaseCommand"{ /** - * @name.hint Name of the BDD spec to create without the .cfc. For packages, specify name as 'myPackage/myBDDSpec' - * @open.hint Open the file once it is created - * @directory.hint The base directory to create your BDD spec in and creates the directory if it does not exist. + * @name Name of the BDD spec to create without the .cfc. For packages, specify name as 'myPackage/myBDDSpec' + * @open Open the file once it is created + * @directory The base directory to create your BDD spec in and creates the directory if it does not exist. + * @boxlang Is this a boxlang project? else it is a CFML project **/ function run( required name, boolean open = false, - directory = getCWD() + directory = getCWD(), + boolean boxlang = isBoxLangProject( getCWD() ) ){ + isBoxLangProject(); + return; + // Allow dot-delimited paths arguments.name = replace( arguments.name, ".", "/", "all" ); @@ -46,7 +49,7 @@ component { print.line(); // Read in Templates - var BDDContent = fileRead( "#variables.settings.templatesPath#/testbox/bdd.txt" ); + var BDDContent = fileRead( "#variables.settings.templatesPath#/#arguments.boxlang ? 'bx' : 'cfml'#/bdd.txt" ); // Write out BDD Spec var BDDPath= "#arguments.directory#/#name#.cfc"; diff --git a/commands/testbox/create/unit.cfc b/commands/testbox/create/unit.cfc index 70c97d0..196de57 100644 --- a/commands/testbox/create/unit.cfc +++ b/commands/testbox/create/unit.cfc @@ -7,19 +7,19 @@ * {code} * **/ -component { - - property name="settings" inject="box:modulesettings:testbox-cli"; + component extends="testboxCLI.models.BaseCommand"{ /** - * @name.hint Name of the xUnit bundle to create without the .cfc. For packages, specify name as 'myPackage/MyTest' - * @open.hint Open the file once it is created - * @directory.hint The base directory to create your CFC in and creates the directory if it does not exist. + * @name Name of the xUnit bundle to create without the .cfc. For packages, specify name as 'myPackage/MyTest' + * @open Open the file once it is created + * @directory The base directory to create your CFC in and creates the directory if it does not exist. + * @boxlang Is this a boxlang project? else it is a CFML project **/ function run( required name, boolean open = false, - directory = getCWD() + directory = getCWD(), + boolean boxlang = isBoxLangProject( getCWD() ) ){ // Allow dot-delimited paths arguments.name = replace( arguments.name, ".", "/", "all" ); @@ -46,7 +46,7 @@ component { print.line(); // Read in Templates - var content = fileRead( "#variables.settings.templatesPath#/testbox/unit.txt" ); + var content = fileRead( "#variables.settings.templatesPath#/#arguments.boxlang ? 'bx' : 'cfml'#/unit.txt" ); // Write out BDD Spec var thisPath= "#arguments.directory#/#name#.cfc"; diff --git a/commands/testbox/docs.cfc b/commands/testbox/docs.cfc index f056b7c..e708b31 100644 --- a/commands/testbox/docs.cfc +++ b/commands/testbox/docs.cfc @@ -21,7 +21,6 @@ component { **/ function run( string search = "" ){ var docsUri = "https://testbox.ortusbooks.com" & ( search.len() ? "?q=#search#" : "" ); - command( "browse" ).params( uri: docsUri ).run(); } diff --git a/commands/testbox/generate/browser.cfc b/commands/testbox/generate/browser.cfc index 9594288..c25d5b8 100644 --- a/commands/testbox/generate/browser.cfc +++ b/commands/testbox/generate/browser.cfc @@ -11,24 +11,26 @@ * testbox create browser C:\myApp * {code} */ -component { - - property name="settings" inject="box:modulesettings:testbox-cli"; +component extends="testboxCLI.models.BaseCommand"{ /** * @directory The base directory to create your test browser + * @boxlang Is this a boxlang project? else it is a CFML project */ - function run( string directory = getCWD() ){ + function run( + string directory = getCWD(), + boolean boxlang = isBoxLangProject( getCWD() ) + ){ // This will make each directory canonical and absolute - arguments.directory = resolvePath( arguments.directory & "/tests/test-browser" ); + arguments.directory = resolvePath( arguments.directory & "/tests/browser" ); // Validate directory if ( !directoryExists( arguments.directory ) ) { directoryCreate( arguments.directory ); - // Copy template + // Copy template from testbox source directoryCopy( - "#variables.settings.templatesPath#/testbox/test-browser/", + "#variables.settings.templatesPath#/#arguments.boxlang ? 'bx' : 'cfml'#/browser/", arguments.directory, true ); diff --git a/commands/testbox/generate/harness.cfc b/commands/testbox/generate/harness.cfc index a201dae..a965908 100644 --- a/commands/testbox/generate/harness.cfc +++ b/commands/testbox/generate/harness.cfc @@ -11,14 +11,16 @@ * testbox create harness C:\myApp * {code} */ -component { - - property name="settings" inject="box:modulesettings:testbox-cli"; +component extends="testboxCLI.models.BaseCommand"{ /** - * @directory The base directory to create your test harness + * @directory The base directory to create your test browser + * @boxlang Is this a boxlang project? else it is a CFML project */ - function run( string directory = getCWD() ){ + function run( + string directory = getCWD(), + boolean boxlang = isBoxLangProject( getCWD() ) + ){ // This will make each directory canonical and absolute arguments.directory = resolvePath( arguments.directory & "/tests" ); @@ -26,9 +28,9 @@ component { if ( !directoryExists( arguments.directory ) ) { directoryCreate( arguments.directory ); - // Copy template + // Copy template from testbox source directoryCopy( - "#variables.settings.templatesPath#/testbox/test-harness/", + "#variables.settings.templatesPath#/#arguments.boxlang ? 'bx' : 'cfml'#/tests/", arguments.directory, true ); diff --git a/commands/testbox/generate/module.cfc b/commands/testbox/generate/module.cfc index a502163..c57e8eb 100644 --- a/commands/testbox/generate/module.cfc +++ b/commands/testbox/generate/module.cfc @@ -11,17 +11,17 @@ * testbox create module myModule tests/resources/modules * {code} */ -component { - - property name="settings" inject="box:modulesettings:testbox-cli"; +component extends="testboxCLI.models.BaseCommand"{ /** * @name The name of the module * @rootDirectory Where to create the module, by default it will be in the same folder as you call the command + * @boxlang Is this a boxlang project? else it is a CFML project */ function run( required name, - string rootDirectory = getCWD() + string rootDirectory = getCWD(), + boolean boxlang = isBoxLangProject( getCWD() ) ){ var moduleDirectory = resolvePath( arguments.rootDirectory ) & "/" & arguments.name; @@ -31,7 +31,7 @@ component { // Copy template directoryCopy( - "#variables.settings.templatesPath#/testbox/module/", + "#variables.settings.templatesPath#/#arguments.boxlang ? 'bx' : 'cfml'#/module/", moduleDirectory, true ); diff --git a/commands/testbox/generate/visualizer.cfc b/commands/testbox/generate/visualizer.cfc index c60fccb..902d920 100644 --- a/commands/testbox/generate/visualizer.cfc +++ b/commands/testbox/generate/visualizer.cfc @@ -11,9 +11,7 @@ * testbox create visualizer C:\myApp * {code} */ -component { - - property name="settings" inject="box:modulesettings:testbox-cli"; +component extends="testboxCLI.models.BaseCommand"{ /** * @directory The base directory to create your test visualizer @@ -22,13 +20,16 @@ component { // This will make each directory canonical and absolute arguments.directory = resolvePath( arguments.directory & "/tests/test-visualizer" ); + // Make sure we have the latest TestBox for assets + ensureTestBox( false ); + // Validate directory if ( !directoryExists( arguments.directory ) ) { directoryCreate( arguments.directory ); // Copy template directoryCopy( - "#variables.settings.templatesPath#/testbox/test-visualizer/", + expandPath( "/testbox/test-visualizer" ), arguments.directory, true ); diff --git a/commands/testbox/run.cfc b/commands/testbox/run.cfc index dad75dc..3a710b6 100644 --- a/commands/testbox/run.cfc +++ b/commands/testbox/run.cfc @@ -54,14 +54,11 @@ * {code} * **/ -component { +component extends="testboxCLI.models.BaseCommand"{ // DI - property name="packageService" inject="PackageService"; property name="testingService" inject="TestingService@testbox-cli"; property name="CLIRenderer" inject="CLIRenderer@testbox-cli"; - property name="serverService" inject="ServerService"; - property name="moduleConfig" inject="box:moduleConfig:testbox-cli"; // Default Runner Options variables.RUNNER_OPTIONS = { @@ -372,102 +369,4 @@ component { } } - /** - * Discover the testbox runner URL from - * 1) Passed argument - * 2) box.json descriptor - * 3) Current server descriptor - * - * @runner The runner argument - */ - private function discoverRunnerUrl( runner ){ - // If a URL is passed, used it as an override - if ( left( arguments.runner, 4 ) == "http" || left( arguments.runner, 1 ) == "/" ) { - if ( !find( "?", arguments.runner ) ) { - arguments.runner &= "?"; - } - return arguments.runner; - } - - // Get Runner from the box.json - var runnerUrl = variables.testingService.getTestBoxRunner( getCWD(), arguments.runner ); - - // Validate runner - if ( !len( runnerUrl ) ) { - var boxJSON = variables.packageService.readPackageDescriptor( getCWD() ); - var boxJSONRunner = boxJSON.testbox.runner ?: ""; - return error( - "[#arguments.runner#] it not a valid runner in your box.json. Runners found are: #boxJSONRunner.toString()#" - ); - } - - // Resolve relative URI, and match to the server defined in this package - if ( left( runnerUrl, 1 ) == "/" ) { - var serverDetails = variables.serverService.resolveServerDetails( {} ); - var serverInfo = serverDetails.serverInfo; - - if ( serverDetails.serverIsNew ) { - error( - "The test runner we found [#runnerUrl#] looks like partial URI, but we can't find any servers in this directory. Please give us a full URL." - ); - } else { - runnerUrl = ( serverInfo.SSLEnable ? "https://" : "http://" ) & "#serverInfo.host#:#serverInfo.port##runnerUrl#"; - } - } - - // If we failed to find a URL, throw an error - if ( left( runnerUrl, 4 ) != "http" ) { - return error( "[#runnerUrl#] it not a valid URL, or does not match a runner slug in your box.json." ); - } - - if ( !find( "?", runnerUrl ) ) { - runnerUrl &= "?"; - } - - return runnerUrl; - } - - /** - * Ensure that TestBox is installed - * - * @testboxUseLocal Use a local version of TestBox or in the execution path. Defaults to true, else it tries to download it - */ - private function ensureTestBox( boolean testboxUseLocal = true ){ - // Where it should go in the module installed locally - var testBoxPath = variables.moduleConfig.path & "/testbox"; - var modulePath = variables.moduleConfig.path; - var serverDetails = variables.serverService.resolveServerDetails( {} ); - var serverInfo = serverDetails.serverInfo; - - // If using local, check if we have a local version first - if ( arguments.testboxUseLocal ) { - // Check if we have a local version - var localTestBoxPath = resolvePath( "testbox", serverInfo.webroot ); - if ( directoryExists( localTestBoxPath ) ) { - testBoxPath = localTestBoxPath; - } - } - - // If we don't have one by here, then download it - if ( !directoryExists( testBoxPath ) ) { - variables.print - .blackOnWheat1( " WARN " ) - .line( " Uh-oh, TestBox could not be found locally [#testBoxPath#] or in the CLI path." ) - .green1onDodgerBlue2( " INFO " ) - .line( " We will install a local version in the CLI path [#modulePath#] for you." ) - .line() - .toConsole(); - - command( "install" ).params( "testbox", modulePath ).run(); - testBoxPath = modulePath & "/testbox" - } - - // Add our mapping - variables.fileSystemUtil.createMapping( "/testbox", testBoxPath ); - // variables.print - // .green1onDodgerBlue2( " INFO " ) - // .line( " Created [/testbox] mapping at [#testBoxPath#]" ) - // .toConsole(); - } - } diff --git a/commands/testbox/watch.cfc b/commands/testbox/watch.cfc index a5aea22..1efa58d 100644 --- a/commands/testbox/watch.cfc +++ b/commands/testbox/watch.cfc @@ -28,10 +28,7 @@ * This command will run in the foreground until you stop it. When you are ready to shut down the watcher, press Ctrl+C. * **/ -component { - - // DI - property name="packageService" inject="PackageService"; +component extends="testboxCLI.models.BaseCommand" { variables.WATCH_DELAY = 500; variables.PATHS = "**.cfc"; @@ -65,7 +62,7 @@ component { string testSpecs ){ // Get testbox options from package descriptor - var boxOptions = variables.packageService.readPackageDescriptor( getCWD() ).testbox; + var boxOptions = getTestBoxDescriptor( getCWD() ); var getOptionsWatchers = function(){ // Return to List diff --git a/models/BaseCommand.cfc b/models/BaseCommand.cfc new file mode 100644 index 0000000..91f750c --- /dev/null +++ b/models/BaseCommand.cfc @@ -0,0 +1,150 @@ +component{ + + // Global Injections + property name="settings" inject="box:modulesettings:testbox-cli"; + property name="moduleConfig" inject="box:moduleConfig:testbox-cli"; + property name="serverService" inject="serverService"; + property name="packageService" inject="PackageService"; + + /** + * Ensure that TestBox is installed + * + * @testboxUseLocal Use a local version of TestBox or in the execution path. Defaults to true, else it tries to download it + */ + private function ensureTestBox( boolean testboxUseLocal = true ){ + // Where it should go in the module installed locally + var testBoxPath = variables.moduleConfig.path & "/testbox"; + var modulePath = variables.moduleConfig.path; + var serverDetails = variables.serverService.resolveServerDetails( {} ); + var serverInfo = serverDetails.serverInfo; + + // If using local, check if we have a local version first + if ( arguments.testboxUseLocal ) { + // Check if we have a local version + var localTestBoxPath = resolvePath( "testbox", serverInfo.webroot ); + if ( directoryExists( localTestBoxPath ) ) { + testBoxPath = localTestBoxPath; + } + } + + // If we don't have one by here, then download it + if ( !directoryExists( testBoxPath ) ) { + variables.print + .blackOnWheat1( " WARN " ) + .line( " Uh-oh, TestBox could not be found locally [#testBoxPath#] or in the CLI path." ) + .green1onDodgerBlue2( " INFO " ) + .line( " We will install a local version in the CLI path [#modulePath#] for you." ) + .line() + .toConsole(); + + command( "install" ).params( "testbox", modulePath ).run(); + testBoxPath = modulePath & "/testbox" + } + + // Add our mapping + variables.fileSystemUtil.createMapping( "/testbox", testBoxPath ); + // variables.print + // .green1onDodgerBlue2( " INFO " ) + // .line( " Created [/testbox] mapping at [#testBoxPath#]" ) + // .toConsole(); + } + + /** + * Discover the testbox runner URL from + * 1) Passed argument + * 2) box.json descriptor + * 3) Current server descriptor + * + * @runner The runner argument + */ + private function discoverRunnerUrl( runner ){ + // If a URL is passed, used it as an override + if ( left( arguments.runner, 4 ) == "http" || left( arguments.runner, 1 ) == "/" ) { + if ( !find( "?", arguments.runner ) ) { + arguments.runner &= "?"; + } + return arguments.runner; + } + + // Get Runner from the box.json + var runnerUrl = variables.testingService.getTestBoxRunner( getCWD(), arguments.runner ); + + // Validate runner + if ( !len( runnerUrl ) ) { + var boxJSON = variables.packageService.readPackageDescriptor( getCWD() ); + var boxJSONRunner = boxJSON.testbox.runner ?: ""; + return error( + "[#arguments.runner#] it not a valid runner in your box.json. Runners found are: #boxJSONRunner.toString()#" + ); + } + + // Resolve relative URI, and match to the server defined in this package + if ( left( runnerUrl, 1 ) == "/" ) { + var serverDetails = variables.serverService.resolveServerDetails( {} ); + var serverInfo = serverDetails.serverInfo; + + if ( serverDetails.serverIsNew ) { + error( + "The test runner we found [#runnerUrl#] looks like partial URI, but we can't find any servers in this directory. Please give us a full URL." + ); + } else { + runnerUrl = ( serverInfo.SSLEnable ? "https://" : "http://" ) & "#serverInfo.host#:#serverInfo.port##runnerUrl#"; + } + } + + // If we failed to find a URL, throw an error + if ( left( runnerUrl, 4 ) != "http" ) { + return error( "[#runnerUrl#] it not a valid URL, or does not match a runner slug in your box.json." ); + } + + if ( !find( "?", runnerUrl ) ) { + runnerUrl &= "?"; + } + + return runnerUrl; + } + + /** + * Get the testbox descriptor from the package descriptor + * + * @cwd The current working directory + */ + private function getTestBoxDescriptor( required cwd ){ + return variables.packageService.readPackageDescriptor( getCWD() ).testbox; + } + + /** + * Determines if we are running on a BoxLang server + * or using the BoxLang runner. + * + * @cwd The current working directory + * + * @return boolean + */ + private function isBoxLangProject( required cwd ){ + // Detect if it's a BoxLang server first. + var serverInfo = variables.serverService.resolveServerDetails( {} ).serverInfo; + if( serverInfo.cfengine.findNoCase( "boxlang" ) ){ + return true; + } + + // Detect if you have the BoxLang runner set. + var boxOptions = variables.packageService.readPackageDescriptor( arguments.cwd ); + if( + boxOptions.testbox.keyExists( "runner" ) + && isSimpleValue( boxOptions.testbox.runner ) + && boxOptions.testbox.runner == "boxlang" + ){ + return true; + } + + // Language mode + if( boxOptions.keyExists( "language" ) && boxOptions.language == "boxlang" ){ + return true; + } + + // We don't know. + return false; + } + +} diff --git a/templates/testbox/test-visualizer/bdd.txt b/templates/bx/bdd.txt similarity index 55% rename from templates/testbox/test-visualizer/bdd.txt rename to templates/bx/bdd.txt index 66a1a5d..8a76466 100644 --- a/templates/testbox/test-visualizer/bdd.txt +++ b/templates/bx/bdd.txt @@ -1,34 +1,30 @@ /** * My BDD Test */ -component extends="testbox.system.BaseSpec"{ +class extends="testbox.system.BaseSpec"{ /*********************************** LIFE CYCLE Methods ***********************************/ // executes before all suites+specs in the run() method function beforeAll(){ + } // executes after all suites+specs in the run() method function afterAll(){ + } /*********************************** BDD SUITES ***********************************/ - function run(){ - - describe( "My test Suite", function(){ - - it( "should do something", function(){ - expect( false ).toBeTrue(); - }); - - it( "should do something else", function(){ - expect( false ).toBeTrue(); - }); + function run( testResults, testBox ){ + describe( "My First Suite", () => { - }); + it( "A Spec", () => { + fail( 'implement' ); + }) + }) } -} \ No newline at end of file +} diff --git a/templates/bx/browser/Application.bx b/templates/bx/browser/Application.bx new file mode 100644 index 0000000..98a12e9 --- /dev/null +++ b/templates/bx/browser/Application.bx @@ -0,0 +1,29 @@ +/** + * Copyright Since 2005 Ortus Solutions, Corp + * www.ortussolutions.com + * ************************************************************************************* + */ +class { + this.name = "Test Browser"; + + // The mapping to easily access the tests + this.mappings[ "/tests" ] = getDirectoryFromPath( getCurrentTemplatePath() ); + // The mapping to easily access the root application usually the parent folder + this.mappings[ "/root" ] = expandPath( "/../" ); + + // Any application settings go here + + /** + * Executes BEFORE any runner or test requested. + */ + boolean function onRequestStart( String targetPage ){ + return true; + } + + /** + * Executes AFTER any runner or test requested. + */ + void function onRequestEnd( String targetPage ){ + } + +} diff --git a/templates/bx/browser/index.bxm b/templates/bx/browser/index.bxm new file mode 100644 index 0000000..77d6df2 --- /dev/null +++ b/templates/bx/browser/index.bxm @@ -0,0 +1,187 @@ + + // GLOBAL VARIABLES + ASSETS_DIR = expandPath( "/testbox/system/reports/assets" ); + TESTBOX_VERSION = new testBox.system.TestBox().getVersion(); + // TEST LOCATIONS -> UPDATE AS YOU SEE FIT + rootMapping = "/tests/"; + + // Local Variables + rootPath = expandPath( rootMapping ); + targetPath = rootPath; + + // Incoming Navigation + param name="url.path" default=""; + if( len( url.path ) ){ + targetPath = getCanonicalPath( rootpath & "/" & url.path ); + // Avoid traversals, reset to root + if( !findNoCase( rootpath, targetPath ) ){ + targetPath = rootpath; + } + } + + // Get the actual execution path + executePath = rootMapping & ( len( url.path ) ? "/#url.path#" : "/" ); + // Execute an incoming path + if( !isNull( url.action ) ){ + if( directoryExists( targetPath ) ){ + writeOutput( "#new testbox.system.TestBox( directory=executePath ).run()#" ); + } else { + writeOutput( "

Invalid Directory: #encodeForHTML( targetPath )#

" ); + } + abort; + } + + // Get the tests to navigate + qResults = directoryList( targetPath, false, "query", "", "name" ); + + // Calculate the back navigation path + if( len( url.path ) ){ + backPath = url.path.listToArray( "/\" ); + backPath.pop(); + backPath = backPath.toList( "/" ); + } +
+ + + + + + TestBox Browser + + + + + + + + + + + +
+ + +
+
+ +
+ v#TESTBOX_VERSION# +
+ + + +
+
+ + +
+
+

Availble Test Runners:

+

+ Below is a listing of the runners matching the "runner*.(cfm|bxm)" pattern. +

+ + + + + class="btn btn-success btn-sm my-1 mx-1" + + class="btn btn-info btn-sm my-1 mx-1" + + > + #runners.name# + + +
+
+ + +
+
+
+ +

TestBox Test Browser:

+

+ Below is a listing of the files and folders starting from your root #rootMapping#. You can click on individual tests in order to execute them + or click on the Run All button on your left and it will execute a directory runner from the visible folder. +

+ +
+ #targetPath.replace( rootPath, "" )# + + + + + + +
+
+
+ + + + + + + + + + &##x271A; #qResults.name# + +
+ + + #qResults.name# + +
+ + + data-bx="true" + class="btn btn-success btn-sm my-1" + + data-bx="false" + class="btn btn-info btn-sm my-1" +
+ href="#executePath & "/" & qResults.name#?method=runRemote" + target="_blank" + > + #qResults.name# + +
+ +
+
+
+
+
+
+ + + +
diff --git a/templates/bx/module/ModuleConfig.bx b/templates/bx/module/ModuleConfig.bx new file mode 100644 index 0000000..331aa52 --- /dev/null +++ b/templates/bx/module/ModuleConfig.bx @@ -0,0 +1,64 @@ +/** + * A TestBox Module + */ +class{ + + function configure(){ + settings = { + + }; + } + + function onLoad(){ + + } + + function onUnload(){ + + } + + function onBundleStart( target, testResults ){ + + } + + function onBundleEnd( target, testResults ){ + + } + + function onSuiteStart( target, testResults, suite ){ + + } + + function onSuiteEnd( target, testResults, suite ){ + + } + + function onSuiteError( exception, target, testResults, suite ){ + + } + + function onSuiteSkipped( target, testResults, suite ){ + + } + + function onSpecStart( target, testResults, suite, spec ){ + + } + + function onSpecEnd( target, testResults, suite, spec ){ + + } + + function onSpecSkipped( spec, specStats, suite, suiteSpecs, testResults ){ + + } + + function onSpecFailure( exception, spec, specStats, suite, suiteSpecs, testResults ){ + + } + + function onSpecError( exception, spec, specStats, suite, suiteSpecs, testResults ){ + + } + +} diff --git a/templates/bx/runner/Application.bx b/templates/bx/runner/Application.bx new file mode 100644 index 0000000..4c84b2a --- /dev/null +++ b/templates/bx/runner/Application.bx @@ -0,0 +1,29 @@ +/** + * Copyright Since 2005 Ortus Solutions, Corp + * www.ortussolutions.com + * ************************************************************************************* + */ +class { + this.name = "Global Test Runner"; + + // The mapping to easily access the tests + this.mappings[ "/tests" ] = getDirectoryFromPath( getCurrentTemplatePath() ); + // The mapping to easily access the root application usually the parent folder + this.mappings[ "/root" ] = expandPath( "/../" ); + + // Any application settings go here + + /** + * Executes BEFORE any runner or test requested. + */ + boolean function onRequestStart( String targetPage ){ + return true; + } + + /** + * Executes AFTER any runner or test requested. + */ + void function onRequestEnd( String targetPage ){ + } + +} diff --git a/templates/bx/runner/index.bxm b/templates/bx/runner/index.bxm new file mode 100644 index 0000000..ddae1fd --- /dev/null +++ b/templates/bx/runner/index.bxm @@ -0,0 +1,193 @@ + + + + + + + + + + + + + + + + + + + + + + // create reporters + reporters = [ "ANTJunit", "Console", "Codexwiki", "Doc", "Dot", "JSON", "JUnit", "Min", "Raw", "Simple", "Tap", "Text", "XML" ]; + ASSETS_DIR = expandPath( "/testbox/system/reports/assets" ); + + if( url.opt_run ){ + // Include the TestBox HTML Runner + include "/testbox/system/runners/HTMLRunner.cfm"; + abort; + } + + + + + + + + TestBox Runner + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+
+
+ + + +

TestBox Global Runner

+

Please use the form below to run test bundle(s), directories and more.

+
+ + +
+
+ + +
+
+ checked="true" /> + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ checked="true" /> + +
+
+
+ + +
+
+
+ checked="true" /> + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+ + +
+ +
+
+
+
+ + +
+ + + + +
diff --git a/templates/bx/tests/Application.bx b/templates/bx/tests/Application.bx new file mode 100644 index 0000000..a80f9e6 --- /dev/null +++ b/templates/bx/tests/Application.bx @@ -0,0 +1,31 @@ +/** + * Copyright Since 2005 Ortus Solutions, Corp + * www.ortussolutions.com + * ************************************************************************************* + * This is the test harness application file that will be executed by the TestBox in isolation + * to a root application. Usually you mimic your application's Application.bx settings here. + */ +class { + this.name = "My Test Harness"; + + // The mapping to easily access the tests + this.mappings[ "/tests" ] = getDirectoryFromPath( getCurrentTemplatePath() ); + // The mapping to easily access the root application usually the parent folder + this.mappings[ "/root" ] = expandPath( "/../" ); + + // Any application settings go here + + /** + * Executes BEFORE any runner or test requested. + */ + boolean function onRequestStart( String targetPage ){ + return true; + } + + /** + * Executes AFTER any runner or test requested. + */ + void function onRequestEnd( String targetPage ){ + } + +} diff --git a/templates/bx/tests/results/TEST.properties b/templates/bx/tests/results/TEST.properties new file mode 100644 index 0000000..d617011 --- /dev/null +++ b/templates/bx/tests/results/TEST.properties @@ -0,0 +1,14 @@ +# TestBox Summary Report +test.datetime=2024-09-17T16:15:31.178216+02:00 +test.passed=true +test.labels= +test.excludes= +test.bundles=tests.specs.BDDTest +test.directory= +total.bundles=1 +total.suites=1 +total.specs=6 +total.pass=4 +total.fail=0 +total.error=0 +total.skipped=2 \ No newline at end of file diff --git a/templates/bx/tests/results/latestrun.log b/templates/bx/tests/results/latestrun.log new file mode 100644 index 0000000..91110be --- /dev/null +++ b/templates/bx/tests/results/latestrun.log @@ -0,0 +1 @@ +Tests ran at Sep 17, 2024, 4:15:31 PM \ No newline at end of file diff --git a/templates/bx/tests/results/report.txt b/templates/bx/tests/results/report.txt new file mode 100644 index 0000000..2a38aa1 --- /dev/null +++ b/templates/bx/tests/results/report.txt @@ -0,0 +1,27 @@ +█▓▒▒░░░ TestBox v@build.version@+@build.number@ ░░░▒▒▓█ +_____________________________________________________________ +  +√tests.specs.BDDTest (776 ms) +[Passed: 4] [Failed: 0] [Errors: 0] [Skipped: 2] [Suites/Specs: 1/6] +  +( √ ) A spec +    ( √ ) can test for equality (182 ms) +    ( √ ) can have more than one expectation to test (120 ms) +    ( √ ) can have negative expectations (150 ms) +    ( - ) can have tests that can be skipped easily like this one by prefixing it with x (127 ms) +    ( - ) can have tests that execute if the right environment exists (Windows Only) (4 ms) +    ( √ ) can have tests that execute if the right environment exists (Mac Only) (57 ms) +  +  +================================================================================= +Final Stats +================================================================================= +  +[Passed: 4] [Failed: 0] [Errors: 0] [Skipped: 2] [Bundles/Suites/Specs: 1/1/6] +  +TestBox:        v@build.version@+@build.number@ +Duration:       1167 ms +CFML Engine:    BoxLang 1.0.0-snapshot+2143 +Labels:         None +  +√ Passed    - Skipped    !! Exception/Error    X Failure \ No newline at end of file diff --git a/templates/bx/tests/runner.bxm b/templates/bx/tests/runner.bxm new file mode 100644 index 0000000..b19a394 --- /dev/null +++ b/templates/bx/tests/runner.bxm @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/templates/bx/tests/specs/BDDTest.bx b/templates/bx/tests/specs/BDDTest.bx new file mode 100644 index 0000000..6ac8094 --- /dev/null +++ b/templates/bx/tests/specs/BDDTest.bx @@ -0,0 +1,125 @@ +/** + * My first spec file + */ +class extends="testbox.system.BaseSpec" { + + /** + * You can prepare variables here that will be available to all specs in this spec file + */ + property testbox; + property foo; + property salvador; + + /*********************************** LIFE CYCLE Methods ***********************************/ + + /** + * Executes BEFORE all suites in this spec file + */ + function beforeAll(){ + variables.salvador = 1; + } + + /** + * Executes AFTER all suites in this spec file + */ + function afterAll(){ + // do cleanup here + } + + /*********************************** BDD SUITES ***********************************/ + + function run(){ + /** + * describe() starts a suite group of spec tests. It is the main BDD construct. + * You can also use the aliases: story(), feature(), scenario(), given(), when() + * to create fluent chains of human-readable expressions. + * + * Arguments: + * + * @title Required: The title of the suite, Usually how you want to name the desired behavior + * @body Required: A closure that will resemble the tests to execute. + * @labels The list or array of labels this suite group belongs to + * @asyncAll If you want to parallelize the execution of the defined specs in this suite group. + * @skip A flag that tells TestBox to skip this suite group from testing if true + * @focused A flag that tells TestBox to only run this suite and no other + */ + describe( "A spec", () => { + /** + * -------------------------------------------------------------------------- + * Runs before each spec in THIS suite group or nested groups + * -------------------------------------------------------------------------- + */ + beforeEach( () => { + testbox = 0; + testbox++; + } ); + + /** + * -------------------------------------------------------------------------- + * Runs after each spec in THIS suite group or nested groups + * -------------------------------------------------------------------------- + */ + afterEach( () => { + foo = 0; + } ); + + /** + * it() describes a spec to test. Usually the title is prefixed with the suite name to create an expression. + * You can also use the aliases: then(), test() to create fluent chains of human-readable expressions. + * + * Arguments: + * + * @title The title of this spec + * @body The closure that represents the test + * @labels The list or array of labels this spec belongs to + * @skip A flag or a closure that tells TestBox to skip this spec test from testing if true. If this is a closure it must return boolean. + * @data A struct of data you would like to bind into the spec so it can be later passed into the executing body function + * @focused A flag that tells TestBox to only run this spec and no other + */ + it( "can test for equality", () => { + expect( testbox ).toBe( 1 ); + } ); + + it( "can have more than one expectation to test", () => { + testbox = testbox * 8; + // type checks + expect( testbox ).toBeTypeOf( "numeric" ); + // dynamic type methods + expect( testbox ).toBeNumeric(); + // delta ranges + expect( testbox ).toBeCloseTo( expected = 10, delta = 2 ); + } ); + + it( "can have negative expectations", () => { + testbox = testbox * 8; + // type checks + expect( testbox ).notToBeTypeOf( "usdate" ); + // dynamic type methods + expect( testbox ).notToBeArray(); + // delta ranges + expect( testbox ).notToBeCloseTo( expected = 10, delta = 2 ); + } ); + + xit( "can have tests that can be skipped easily like this one by prefixing it with x", () => { + fail( "xit() this should skip" ); + } ); + + it( + title = "can have tests that execute if the right environment exists (Windows Only)", + body = () => { + expect( server.os.name ).toInclude( "Windows" ); + }, + skip = ( !isWindows() ) + ); + + it( + title = "can have tests that execute if the right environment exists (Mac Only)", + body = () => { + expect( server.os.name ).toInclude( "Mac" ); + }, + skip = ( !isMac() ) + ); + } ); + } + +} diff --git a/templates/bx/tests/specs/MyFirstSpec.bx b/templates/bx/tests/specs/MyFirstSpec.bx new file mode 100644 index 0000000..48878a9 --- /dev/null +++ b/templates/bx/tests/specs/MyFirstSpec.bx @@ -0,0 +1,15 @@ +class extends="testbox.system.BaseSpec"{ + + function run(){ + describe( "My First Test", ()=>{ + test( "it can add", ()=>{ + expect( sum( 1, 2 ) ).toBe( 3 ) + } ) + } ) + } + + private function sum( a, b ){ + return a + b + } + +} diff --git a/templates/testbox/test-harness/resources/.gitkeep b/templates/bx/tests/specs/integration/.gitkeep similarity index 100% rename from templates/testbox/test-harness/resources/.gitkeep rename to templates/bx/tests/specs/integration/.gitkeep diff --git a/templates/bx/tests/specs/unit/.gitkeep b/templates/bx/tests/specs/unit/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/templates/bx/tests/test.xml b/templates/bx/tests/test.xml new file mode 100755 index 0000000..8153d70 --- /dev/null +++ b/templates/bx/tests/test.xml @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tests ran at ${start.TODAY} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/templates/bx/unit.txt b/templates/bx/unit.txt new file mode 100644 index 0000000..d0610d0 --- /dev/null +++ b/templates/bx/unit.txt @@ -0,0 +1,32 @@ +/** +* My xUnit Test +*/ +class extends="testbox.system.BaseSpec"{ + +/*********************************** LIFE CYCLE Methods ***********************************/ + + // executes before all test cases + function beforeTests(){ + } + + // executes after all test cases + function afterTests(){ + } + + // executes before every test case + function setup( currentMethod ){ + } + + // executes after every test case + function teardown( currentMethod ){ + } + +/*********************************** TEST CASES BELOW ***********************************/ + + @Test + @DisplayName "A beautiful xUnit Test" + function myMethodTest(){ + fail( "implement it" ) + } + +} diff --git a/templates/testbox/bdd.txt b/templates/cfml/bdd.txt similarity index 100% rename from templates/testbox/bdd.txt rename to templates/cfml/bdd.txt diff --git a/templates/testbox/test-harness/Application.cfc b/templates/cfml/browser/Application.cfc similarity index 80% rename from templates/testbox/test-harness/Application.cfc rename to templates/cfml/browser/Application.cfc index a42890a..bfc3bee 100644 --- a/templates/testbox/test-harness/Application.cfc +++ b/templates/cfml/browser/Application.cfc @@ -5,13 +5,12 @@ */ component { - this.name = "A TestBox Runner Suite " & hash( getCurrentTemplatePath() ); + this.name = "A TestBox Browser"; // any other application.cfc stuff goes below: this.sessionManagement = true; // any mappings go here, we create one that points to the root called test. this.mappings[ "/tests" ] = getDirectoryFromPath( getCurrentTemplatePath() ); - this.mappings[ "/root" ] = expandPath( "/" ); // any orm definitions go here. diff --git a/templates/cfml/browser/index.cfm b/templates/cfml/browser/index.cfm new file mode 100644 index 0000000..485e396 --- /dev/null +++ b/templates/cfml/browser/index.cfm @@ -0,0 +1,190 @@ + + // No cf debugging + cfsetting( showdebugoutput="false" ); + // GLOBAL VARIABLES + ASSETS_DIR = expandPath( "/testbox/system/reports/assets" ); + TESTBOX_VERSION = new testBox.system.TestBox().getVersion(); + // TEST LOCATIONS -> UPDATE AS YOU SEE FIT + rootMapping = "/tests/specs"; + + // Local Variables + rootPath = expandPath( rootMapping ); + targetPath = rootPath; + + // Incoming Navigation + param name="url.path" default=""; + if( len( url.path ) ){ + targetPath = getCanonicalPath( rootpath & "/" & url.path ); + // Avoid traversals, reset to root + if( !findNoCase( rootpath, targetPath ) ){ + targetPath = rootpath; + } + } + + // Get the actual execution path + executePath = rootMapping & ( len( url.path ) ? "/#url.path#" : "/" ); + // Execute an incoming path + if( !isNull( url.action ) ){ + if( directoryExists( targetPath ) ){ + writeOutput( "#new testbox.system.TestBox( directory=executePath ).run()#" ); + } else { + writeOutput( "

Invalid Directory: #encodeForHTML( targetPath )#

" ); + } + abort; + } + + // Get the tests to navigate + qResults = directoryList( targetPath, false, "query", "", "name" ); + + // Calculate the back navigation path + if( len( url.path ) ){ + backPath = url.path.listToArray( "/\" ); + backPath.pop(); + backPath = backPath.toList( "/" ); + } +
+ + + + + + TestBox Browser + + + + + + + + + + + +
+ + +
+
+ +
+ v#TESTBOX_VERSION# +
+ + + +
+
+ + +
+
+

Availble Test Runners:

+

+ Below is a listing of the runners matching the "runner*.(cfm|bxm)" pattern. +

+ + + + + class="btn btn-success btn-sm my-1 mx-1" + + class="btn btn-info btn-sm my-1 mx-1" + + > + #runners.name# + + +
+
+ + +
+
+
+ +

TestBox Test Browser:

+

+ Below is a listing of the files and folders starting from your root #rootMapping#. You can click on individual tests in order to execute them + or click on the Run All button on your left and it will execute a directory runner from the visible folder. +

+ +
+ #targetPath.replace( rootPath, "" )# + + + + + + +
+
+
+ + + + + + + + + + &##x271A; #qResults.name# + +
+ + + #qResults.name# + +
+ + + data-bx="true" + class="btn btn-success btn-sm my-1" + + data-bx="false" + class="btn btn-info btn-sm my-1" +
+ href="#executePath & "/" & qResults.name#?method=runRemote" + target="_blank" + > + #qResults.name# + +
+ + +
+
+
+
+
+
+ + + +
diff --git a/templates/testbox/module/ModuleConfig.cfc b/templates/cfml/module/ModuleConfig.cfc similarity index 100% rename from templates/testbox/module/ModuleConfig.cfc rename to templates/cfml/module/ModuleConfig.cfc diff --git a/templates/testbox/test-browser/Application.cfc b/templates/cfml/runner/Application.cfc similarity index 66% rename from templates/testbox/test-browser/Application.cfc rename to templates/cfml/runner/Application.cfc index f7e0094..1aabd49 100644 --- a/templates/testbox/test-browser/Application.cfc +++ b/templates/cfml/runner/Application.cfc @@ -1,11 +1,11 @@ /** * Copyright Since 2005 Ortus Solutions, Corp - * www.coldbox.org | www.luismajano.com | www.ortussolutions.com | www.gocontentbox.org - ************************************************************************************** + * www.ortussolutions.com + * ************************************************************************************* */ component { - this.name = "A TestBox Browser"; + this.name = "A TestBox Global Runner"; // any other application.cfc stuff goes below: this.sessionManagement = true; diff --git a/templates/cfml/runner/index.cfm b/templates/cfml/runner/index.cfm new file mode 100644 index 0000000..f06be9b --- /dev/null +++ b/templates/cfml/runner/index.cfm @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + + + + + + + // create reporters + reporters = [ "ANTJunit", "Console", "Codexwiki", "Doc", "Dot", "JSON", "JUnit", "Min", "Raw", "Simple", "Tap", "Text", "XML" ]; + ASSETS_DIR = expandPath( "/testbox/system/reports/assets" ); + + if( url.opt_run ){ + // Include the TestBox HTML Runner + include "/testbox/system/runners/HTMLRunner.cfm"; + abort; + } + + + + + + + + + TestBox Runner + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+
+
+ + + +

TestBox Global Runner

+

Please use the form below to run test bundle(s), directories and more.

+
+ + +
+
+ + +
+
+ checked="true" /> + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ checked="true" /> + +
+
+
+ + +
+
+
+ checked="true" /> + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+ + +
+ +
+
+
+
+ + +
+ + + + +
diff --git a/templates/cfml/tests/Application.cfc b/templates/cfml/tests/Application.cfc new file mode 100644 index 0000000..a821add --- /dev/null +++ b/templates/cfml/tests/Application.cfc @@ -0,0 +1,22 @@ +/** + * Copyright Since 2005 Ortus Solutions, Corp + * www.ortussolutions.com + * ************************************************************************************* + */ +component { + + this.name = "A TestBox Runner Suite"; + // any other application.cfc stuff goes below: + this.sessionManagement = true; + + // any mappings go here, we create one that points to the root called test. + this.mappings[ "/tests" ] = getDirectoryFromPath( getCurrentTemplatePath() ); + + // any orm definitions go here. + + // request start + public boolean function onRequestStart( String targetPage ){ + return true; + } + +} diff --git a/templates/cfml/tests/integration/.gitkeep b/templates/cfml/tests/integration/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/templates/cfml/tests/results/TEST.properties b/templates/cfml/tests/results/TEST.properties new file mode 100644 index 0000000..3bb4488 --- /dev/null +++ b/templates/cfml/tests/results/TEST.properties @@ -0,0 +1,11 @@ +test.passed=true +test.labels= +test.bundles= +test.directory=test.specs +total.bundles=1 +total.suites=1 +total.specs=7 +total.pass=4 +total.fail=0 +total.error=0 +total.skipped=3 \ No newline at end of file diff --git a/templates/cfml/tests/results/latestrun.log b/templates/cfml/tests/results/latestrun.log new file mode 100644 index 0000000..29ee286 --- /dev/null +++ b/templates/cfml/tests/results/latestrun.log @@ -0,0 +1 @@ +Tests ran at 12-23-2013 04:21:49 PM \ No newline at end of file diff --git a/templates/testbox/test-harness/runner.cfm b/templates/cfml/tests/runner.cfm similarity index 94% rename from templates/testbox/test-harness/runner.cfm rename to templates/cfml/tests/runner.cfm index 182a20c..bcddd28 100644 --- a/templates/testbox/test-harness/runner.cfm +++ b/templates/cfml/tests/runner.cfm @@ -10,13 +10,13 @@ - + - + diff --git a/templates/testbox/test-harness/specs/BDDTest.cfc b/templates/cfml/tests/specs/BDDTest.cfc similarity index 73% rename from templates/testbox/test-harness/specs/BDDTest.cfc rename to templates/cfml/tests/specs/BDDTest.cfc index d784b36..313eb65 100644 --- a/templates/testbox/test-harness/specs/BDDTest.cfc +++ b/templates/cfml/tests/specs/BDDTest.cfc @@ -3,13 +3,25 @@ */ component extends="testbox.system.BaseSpec" { + /** + * You can prepare variables here that will be available to all specs in this spec file + */ + property testbox; + property foo; + property salvador; + /*********************************** LIFE CYCLE Methods ***********************************/ + /** + * Executes BEFORE all suites in this spec file + */ function beforeAll(){ - // setup the entire test bundle here variables.salvador = 1; } + /** + * Executes AFTER all suites in this spec file + */ function afterAll(){ // do cleanup here } @@ -29,10 +41,9 @@ component extends="testbox.system.BaseSpec" { * @labels The list or array of labels this suite group belongs to * @asyncAll If you want to parallelize the execution of the defined specs in this suite group. * @skip A flag that tells TestBox to skip this suite group from testing if true - * @focused A flag that tells TestBox to only run this suite and no other + * @focused A flag that tells TestBox to only run this suite and no other */ describe( "A spec", () => { - /** * -------------------------------------------------------------------------- * Runs before each spec in THIS suite group or nested groups @@ -54,15 +65,15 @@ component extends="testbox.system.BaseSpec" { /** * it() describes a spec to test. Usually the title is prefixed with the suite name to create an expression. - * You can also use the aliases: then() to create fluent chains of human-readable expressions. + * You can also use the aliases: then(), test() to create fluent chains of human-readable expressions. * * Arguments: * - * @title The title of this spec - * @body The closure that represents the test - * @labels The list or array of labels this spec belongs to - * @skip A flag or a closure that tells TestBox to skip this spec test from testing if true. If this is a closure it must return boolean. - * @data A struct of data you would like to bind into the spec so it can be later passed into the executing body function + * @title The title of this spec + * @body The closure that represents the test + * @labels The list or array of labels this spec belongs to + * @skip A flag or a closure that tells TestBox to skip this spec test from testing if true. If this is a closure it must return boolean. + * @data A struct of data you would like to bind into the spec so it can be later passed into the executing body function * @focused A flag that tells TestBox to only run this spec and no other */ it( "can test for equality", () => { @@ -94,25 +105,21 @@ component extends="testbox.system.BaseSpec" { } ); it( - title = "can have tests that execute if the right environment exists (lucee only)", + title = "can have tests that execute if the right environment exists (Windows Only)", body = () => { - expect( server ).toHaveKey( "lucee" ); + expect( server.os.name ).toInclude( "Windows" ); }, - skip = ( !isLucee() ) + skip = ( !isWindows() ) ); it( - title = "can have tests that execute if the right environment exists (Adobe only)", + title = "can have tests that execute if the right environment exists (Mac Only)", body = () => { - expect( server ).notToHaveKey( "lucee" ); + expect( server.os.name ).toInclude( "Mac" ); }, - skip = ( isLucee() ) + skip = ( !isMac() ) ); } ); } - private function isLucee(){ - return ( structKeyExists( server, "lucee" ) ); - } - } diff --git a/templates/cfml/tests/specs/MyFirstSpec.cfc b/templates/cfml/tests/specs/MyFirstSpec.cfc new file mode 100644 index 0000000..2cc96ca --- /dev/null +++ b/templates/cfml/tests/specs/MyFirstSpec.cfc @@ -0,0 +1,15 @@ +component extends="testbox.system.BaseSpec"{ + + function run(){ + describe( "My First Test", ()=>{ + test( "it can add", ()=>{ + expect( sum( 1, 2 ) ).toBe( 3 ) + } ) + } ) + } + + private function sum( a, b ){ + return a + b + } + +} diff --git a/templates/testbox/test-harness/test.xml b/templates/cfml/tests/test.xml old mode 100644 new mode 100755 similarity index 100% rename from templates/testbox/test-harness/test.xml rename to templates/cfml/tests/test.xml diff --git a/templates/cfml/tests/unit/.gitkeep b/templates/cfml/tests/unit/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/templates/testbox/unit.txt b/templates/cfml/unit.txt similarity index 100% rename from templates/testbox/unit.txt rename to templates/cfml/unit.txt diff --git a/templates/testbox/test-browser/TestBoxLogo125.png b/templates/testbox/test-browser/TestBoxLogo125.png deleted file mode 100644 index de1e5a428ab6caf0aff3a686d2842ed5b5d07265..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7091 zcmZ8mWl$VEw8a-^kpjhCiY-#Kz~b&uC@w`>+$plSw79#wEe-{W6e|S^Y;h+C5GB_iwRuE^<}R(I zi-}17m>;7MZ7dhX5AH}vI7I(tt2p1JdCKWdzj{50{bmp)iVd63Kz>*cjE+`{rHq##nw;4VzxkD!@Vg|T zK0%dk6`l$IEq>GNx9YwEaSBUG!k{vm-1kMns|XMPK9S3!!s4a=PsliMJFTgyQ3w0= zYNuZaOV8ufjE#@4=+6;<4X?mS=HlR}COCCo;{;FNqkSe2LnZ)mi;0OD&n2@<)e?(y zaM*)R2^HYSP+T)4xV5b z5@hZgwu^y=I-MxnF5b9%K-Hpl*<}Ca9otA~%#NM@O1#&$WT6rZ$u>$$_km+?WsA6- zT!mxN+zPi4F58%l$8q%DqC#RUf8uK{kck)#tc#Z96*T(yMa00m!ZEp)v^70Q z6A2g9b;mjbBZls~HCMZH41iH~U+>1M{gI}xR+OGhBN9wMPZamqOtQhyp;zv8PbgJ@ zL^L(|3}G~!c)sn)lUb=z8ZPn&h6M1$(tjGpW6E)V%h!ZD#G1T5vD%x5yJ6Q#qvA^P zWve7{weWn`g zc&@wrC6(ZDbgrj(cA3*#ked^Q<+&H9E6KeKt~3< z^0@VU?RIpdkQ-CiBipvfOWK1oy2Ekvxq;TzlBc;zfv%=?|8AjF)_^#H1!pK^E+HEd zoD|N0H@u8GYuL1Ik9U>6E3K2|^=t}ed-$<;wr{G2!okOYaeWd-ojr2=xoNvXcW0jm zhAfbLADq-xHbTovg|B059JB1Cpew7GjLs=oZxBEEaT9Q*pID82eX^<%GB~#Cds9$R z5Y*S#cOE9R!SZW8it*XILx6$vn$AIxTvM_z7>HR=U!R~!*E@MJzTLMZuQgrrR{!~& zt4{m|x0_Z!(URYaKNHB(^miIH{9CF1PhKF3^dJy>)(D*k;@trpQBNa^dGpajxa6Z> zwR)69C?N~+U^x2WN)td~PF?lO1>QKt4H3_w;?@e!Y$IJQYq4qeZyk-8awT61vAH^y zlqS@v1S3MYaXCp_(WCYU+GtH6g)KuzPStZb$AHe*?XPy+fkyZoK1{Ih!A7cYjF48G8K;?A?WaLKc|W2!8sjMLhsv1K#IH3Ind zy9*dR=Es(?TORfAxH@?8RVUF@tOkQGUXY8y(IfT_b4Omp_YKH^QlJh_NuG$yMsgRW z#iXhoYF+58iFyCGMm`};Ocws4IdC&1UB*zSHBgi~*_);9=}A>R{}u}eC+Uk9%r}gX zWw|UxoSpvnXL*Lqb_XuAl2TCL6DWDYZ15qO1@r>@QextPvzHz>w7WoS^&5BoyK;kH zG<8e0T;*4v>zU!)Z1XuPBd!HX`OBOlJ`BD!|kv@6hNCgs3aGA>eO8ez{H08|e zbLVgRbfWV3-A?cicTZ^8!I0JCcg)R$g^?0|IqioqFzFV90P*5lHgB0^8H0!39*S$2 zu+@ol!)S7jT{%Ii&!9f}onNY(4fz@m*hA#i)QnYPrP^@jJ?0;>?!JKsdA_wuq0H~) zggl%dVM2fzVRZdY7E4g^cg?4^5}&+8z15zA`~cVTzQ@eoaR5>4LOkl)o%b0y za(9^Qyx7+|AY1H>+hm|Eo__azL@opqlT>OmEhFNevfUKVR-i!UWv8iT=ZpgeR*@&! zM=j*QC-{49Y_E&ws<*1kxxM`E-KBCx;W20`fBgA_W=bshL%sjVcR$YbQCiWI>gRVG z3vBrtz9LI>3#Qx?20Y#YvFYRNV{Mu?&ANd)$*M#EGXs@TI{H)}R>&i888cM# zP}|U9OD&M17({C!$Ve4haKVlgH9drOeORDWl)9u4YxS3S^V1w$V2Hqj_X+NJIJTfs zwXE$pql_dalVn6yq>!!3ZJ#WA9mtx{8Nfki;)}IXOR0#D4jZSSNd#5FPb2cdnCEbf zK{rdGvC!o(Z-`_17#cHO9cB z_-1wWf)kL?^{P=9XS(jNB%8d{8(ANPO~FNosSzp((2gi+@rm;2eE3?fUtkf@|W#*raMP% zO?HD`+{2^&OlXBYf~nb|pv+Ws3k{~`Bk%Loe8s8<-j6*N!{~MFwi-G2M+bSkQh~B@ ztI{qP6z7t@uPqvAeJuL&bfI4-QOLC|h3uK^F!WBk(#ShkEV|p01hhz4n3+ zF6qbS6MkjYE-AHS^4g;WPWC!0-sexJ1y@2K`42=K?$?t~Ar>|2C%wfSLP`3X1ADnf z#q^2Nbeydta2{quZHnh@9NxA)=?xKm!sm;&?`bEV)d-{h%%^fp}CgD-sw_4)u(o>r_5>z-jLpax$3mZ5|Gf3 zlYg77)K=CXnLLt;k zujtHm3M-It1{ooq8VT!kb~D*=K$QN3D55qybj8N3220S6Q@!0x2MLJ2_- z>VJv^q0*4E_y5X_X6R26_aEmYQp4bCL%!#qmD5*Dsccp{4 z2=8Vd$X|0QQHUm;9y{LZb4sZw{`}j`y0ghQ`rQIYs7{6)QesmCA{lZL|ADK55?mjQ ziBaErB6Y7oZ3> zjiinY*_nr=)VnYXK;&iQu~VYW49%hdo$5G)B`?MwUYV8)f5G-Eq_7KBYzYXu-vqzX zyNTEaf8_IrFZ;O0IgF4)tR}oi^e{<(8hX6H&;U%X;!JF(-F)IKzKF>b-mt)POZ$bm zoS4~ve%p7ri_duR1pDeXQ@C#5Lda8x^qALO$hCsOKrqN5VUqw>Y{D{;yG(c#YWu}$ zqd80eYhPK{=zM*{*Bf>b+Tl#z zPV|rK7a4}l%-i2!-*C2eDhL1$t5JnKVMXti7N1!C++B}x${KyiouN*i zk#{P%Ck>)!7I~(Nr7S%=6cYEe6BzEbB%5@f6Wd^!_>GW>i9?GCt?x7A z_DCm80B>`XjFH{=iqTdgE()J+CfcOV%3tu6O6PHuVl!SeUeeThd<(hrJK1@m^cduH zx4upO+kbXLYUu>lC)JxiZ>q7#L_`y5LyFA5E6efl0Q*26+P7npzpUL_c2oKhw~1e( z_2h|$wBGc@v7k9`n!{2HKx#M=;&Z+y+q+R+4=?Qj?ermgjN}at1n2I-1e2)( zqs-@p!T!j%G8S&37@-~c!~Eqfvg0|uj&r8{#wvb%w2;WlWMAUE3%>O>8u{nzV&!Ow z-qupS!KA;Sv~g+Z)nH4RDdC1pVstprTn)^fTdJKR_*CTOi#0}i^;NSMR+0A%*t^k~U>K(HAg*nj==vqZ7CiC)o@@-on5WwGp)a7;m!`AeJBL6p-Y} z5WA`Hk}e;cO>BD2KIH9gzKUPZ94x*A4jsflNMppgrf-te@!WsCk-Q6BSjIR%SWy1m zWWb*OXwwp!GCZ?NwDKK$om_S#Gu=XCv{z`I)<1B@1xoHqNU#DC`Z~Mg-##|b(q(k< zAY{fDa2ep=>cj4(mh|Nb&p?Ng*!O|(HlTE0h`w~=%ZHj_#{-Lt&x3zACpW!713WOP z23@}av?^5&GHJPnKKiYVPvn1=z=r%uQ-2d9eu_0oSf2fL-kmK5Je*?>2b`*}1e^q* zScJ;QQZh!LC;kQR90fZb=$YxELrQc7{qQWG&mwMFeANmvl~dUnYsT|%q>ANZ=gl++ ziUw6c*?%~1?i7{O1}VB^7-77ef>%ngVydhB-9q!qItg+%?_)LPuL}-C4)5bXH|Zta zGnF#CHJnQ|HT8}lD;k9%!L z<4C8?itJg2S0jzD**9Ve&095Z?*u}!-&b!b7wU~Nzd8Jh2x5_I5%~#n==0R5_4&Ru zdD<@Be_Nn}#;e}wu7|&+R)U;P@OobC7OlG{;7Og~iB2v`a_45pQt@oRTwOIQ+ zemtm^kDGtNkbU|`7*kDdqn*cGw1Mb#-|#AJ%aWc%HjsineOV6i!Wv#szr6w^a*(kb zt$y6GV-}|35~J1(2J+jnY@MTrc|8U1g(Q}&o^jqanHAXm28^Uqehn?hr3@_%Am}p- zj50pY`}@3kN&a_zNK5t-Gc0I;WWF)t)W`~ku_`^HcVpoMi+hYW9r7BZd+f&YpoVEvrE+ft6Plw3$hX0?O16{j{o@ts7aeC16KWR#-sqP!Pct2JU+ z3w*~t7PQFX%O%=csy!S7a)SxPm>9u~(=Bdy7}Ccy$8#6sL-kMFs}>a;iJt%kwzY8; znJFLI?v1vbB`bdTHZi-Mm&`7-n=YZg4_lmFF@tWODOT}QVG&VKq&kgoA zROl7iA`)u+%ua^2rgvtQUy#wk=Tn2}d!ym;aT=U|I9qeq^PXt5Ya`?1&s|Vf?GVvB z{Y9h?A3m@m!BLlk?z1DbMZ8c|5DUWRu4FB>Y-OFn%j;~e{elH7c69f=Q5Z$Eq5mha z!6Q6{smcqCOW!_WL}7e9=rA3h*>w@_KsE{9(WUa33<~dnzK~3DQ@bD?1@DLbL<1Sk zU2)+@TA?Lq#tJqZ^*_@>eE2=@M^rO=PLe*it`az)H3m58mp%i^e=T8=NBNei_D1+l zbOz7#GUP9{FjYb9*WM@xT+^F>n>czy*6-r`L#a15#p$Ei+F84apXI^(Ek9c1$Krk4 z8WQ5Da~?6OIQyW^Ak!H;F>GP5M`S-QDLEFEe!s{gwgYmRTT}x&o()~IQ||zU;PU>Z z5AAuoiL*SJsQ3y?Vs`}fNA(vs-yfqv5B^Sb`n{%Wq6IR#xtqZcZ|oj8*Wx-%wHF=< zg#0Ayqp9(Kk*ujzDV*}T2vcnaD^!a7EcCE_=CM!>p2TNnn8)_%-#g1Q(_Xvu$wpl* z5Y+J`wJWST4Qxnes5-o12ZSzert5llHWJM zPC?7RL7^RJChpZnLLB3b4N<}Ts+&34tLV7x#MVDSewN2avHwha#ti6ayr4n8LV8zfp} zG0l^Efi;@~*J<}3+m}A+cmJSQ>hU+G=GxO;bBHbSaX#rWb57_fj(}TYdb% zu-0EuMCoA?*j3aq&aT2O8x>#ljT-?X?R$f{%`RXDUP{=>d9cSc^hvPnUQMFypauKh z4wbX)k{VSN0n-av`wKdVZhwUlF=SExON@}2LIt!0_cAery;ITTx;}OhuHp5p{-%as z$oVt;G+2N&+3jWkGc!6#v0C7S>7QGioAntE)d=oOvS7@&yk_Ka;59bw1ejcBc?6PjrejMbJ0 z%)&&O{6|*MCMtXd&!MyZj&6!uuChn@$o|AoY%S7M=Llp6!0cWJgsE8JDVL^B{zIk{ ziXoCvq3Q^cD#8H@NIHqaG>fXV5ojb#Z9bvfz1I7OVL;q2IkR_WikqV^bwPkI;D?zn z35-&g^1O3xx=qV$(<&eEYtTg%Mvi*tLz`234I}%{en1cEbiIq-4h#?1z1c!}L7-8G z@CDov?yz^}W^acUUb|C2NI0W)m)9JwVjG*qb_X+VCW=ioq}Dzwx18>Skyw$F z5&obSDg3T(W5bk{^?5m)t&-lk z4l0DRebUp!TbN2*>)YfW+X8842AXo5*EjZ_iFFsm-tO0*SLZpjaCq-U1X4CKU$r~o zaeDjyK-DU9CM?A^XHZTY6CW0Cu&p2YI4Pgf)?~Tg49<*z(;U*T4Fd!8$F43qpn>nF z)ICgALmOMnDr(~T*MSvsyy@CsLX|8iXa$R-Hbz zxhz-t)-rzVz&uT{GvlDAXh`JstvB-#hKTqI0_C}_(91yC`G=8=1Bik-E|P~ydIyw8 zj{OTWNNYtvjH)6fK%P{lS$LnyHEWIo8TRi+(dP)-Fz zZ+W8s6@gQ{6|~M>m@0DWunM!`c#+YyqDWgZbZWCj%d0R`^W-`?qpD3zd_~~RFX53L z90;v-h&Z}Oe8&xf7kw#xn5sCjDkcelvHjyKo+dAg>n@z=<547U0o{l-Ckh2F{6{!A zDC*VbuDX!$Ba8XJalMDs8`s_r^$w<7otzZdD4Tn_CQWS~QR}b-mGwHNbZAP+Er+n3 znBgZ7vQMCqBFsWe6Ait0@64vic%p&g_9F4Y7PYu|q)l!=J;T+h_jUW+>fYJPo_i;Y z7FOIeRyw5?XWN#=64C^9$sb4X*LPV#=ZDnTWqTc_iQ+Fk8?fOz(G0kIX9#!_G3~46 zDD!TpuaJE%&53$S$Xw<*!>6)|qb%ZeT<3v*oy!Q;lrve45Ea)g`Y3^*Dfq)bs6jqJ zlm9voc;%hC6AV2#&}w{)q`0Kzs>atlCatd0xGkKr<`j_31b7^W`xqdg`@Wx zC7M8x5Nst^{;Lx+wH$;wcxOpAqfP?wnSp!#L66FSm=y0MDs1By0fJUi+~#oC7z%RI zq4XzRX@syo4Wz8XlvdD4WfOCR_2#9IqeL6Wsbq|v#l!!`WW|_w7%=dq6%bEW^8X1h a1b6Tw+K0~ZGQ - - - - - - - - - - - - - - - - - - - - - - - - - - - - #testbox.init( directory=rootMapping & url.path ).run()# - -

Invalid incoming directory: #rootMapping & url.path#

-
- - -
- - - - - - - - - - - - - - - - - - - TestBox Browser - - - - - - - - - - - - - - -
-
-
- -
- v#testbox.getVersion()# -
- -
-
- - -
-
-

Availble Test Runners:

-

- Below is a listing of the runners matching the "runner*.cfm" pattern. -

- - - - #runners.name# - -
-
- -
-
-
- -

TestBox Test Browser:

-

- Below is a listing of the files and folders starting from your root #rootPath#. You can click on individual tests in order to execute them - or click on the Run All button on your left and it will execute a directory runner from the visible folder. -

- -
- Contents: #executePath# - -

-
- - - - - - - - #qResults.name#
- - target="_blank"
>#qResults.name#
- - target="_blank">#qResults.name#
- - #qResults.name#
- - -
-
-
-
-
-
- - - -
\ No newline at end of file diff --git a/templates/testbox/test-visualizer/index.html b/templates/testbox/test-visualizer/index.html deleted file mode 100644 index e0ead5d..0000000 --- a/templates/testbox/test-visualizer/index.html +++ /dev/null @@ -1,556 +0,0 @@ - - - - - - Test Visualizer - - - - - - - - - - -
-
-
-
- - v@build.version@+@build.number@ -
-
-
- -
- - -
-
-
-
-
-
- Loading... -
-
-
-
-
-
-
-
-
- - diff --git a/templates/testbox/test-visualizer/main.css b/templates/testbox/test-visualizer/main.css deleted file mode 100644 index c6b3f85..0000000 --- a/templates/testbox/test-visualizer/main.css +++ /dev/null @@ -1,7615 +0,0 @@ -/* Overriden Styles */ -/*! - * Bootstrap v4.3.1 (https://getbootstrap.com/) - * Copyright 2011-2019 The Bootstrap Authors - * Copyright 2011-2019 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - :root { - --blue: #007bff; - --indigo: #6610f2; - --purple: #6f42c1; - --pink: #e83e8c; - --red: #dc3545; - --orange: #fd7e14; - --yellow: #ffc107; - --green: #28a745; - --teal: #20c997; - --cyan: #17a2b8; - --white: #fff; - --gray: #6c757d; - --gray-dark: #343a40; - --primary: #3A9ABF; - --secondary: #6C757D; - --success: #75CC39; - --info: #17a2b8; - --warning: #FDC02E; - --danger: #D93749; - --light: #f8f9fa; - --dark: #343a40; - --breakpoint-xs: 0; - --breakpoint-sm: 576px; - --breakpoint-md: 768px; - --breakpoint-lg: 992px; - --breakpoint-xl: 1200px; - --font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; } - - *, - *::before, - *::after { - box-sizing: border-box; } - - html { - font-family: sans-serif; - line-height: 1.15; - -webkit-text-size-adjust: 100%; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } - - article, aside, figcaption, figure, footer, header, hgroup, main, nav, section { - display: block; } - - body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - font-size: .80rem; - font-weight: 400; - line-height: 1.5; - color: #212529; - text-align: left; - background-color: #fff; } - - [tabindex="-1"]:focus { - outline: 0 !important; } - - hr { - box-sizing: content-box; - height: 0; - overflow: visible; } - - h1, h2, h3, h4, h5, h6 { - margin-top: 0; - margin-bottom: 0; } - - p { - margin-top: 0; - margin-bottom: 1rem; } - - abbr[title], - abbr[data-original-title] { - text-decoration: underline; - text-decoration: underline dotted; - cursor: help; - border-bottom: 0; - text-decoration-skip-ink: none; } - - address { - margin-bottom: 1rem; - font-style: normal; - line-height: inherit; } - - ol, - ul, - dl { - margin-top: 0; - margin-bottom: 1rem; } - - ol ol, - ul ul, - ol ul, - ul ol { - margin-bottom: 0; } - - dt { - font-weight: 700; } - - dd { - margin-bottom: .5rem; - margin-left: 0; } - - blockquote { - margin: 0 0 1rem; } - - b, - strong { - font-weight: bolder; } - - small { - font-size: 80%; } - - sub, - sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; } - - sub { - bottom: -.25em; } - - sup { - top: -.5em; } - - a { - color: #3A9ABF; - text-decoration: none; - background-color: transparent; } - a:hover { - color: #286b84; - text-decoration: underline; } - - a:not([href]):not([tabindex]) { - color: inherit; - text-decoration: none; } - a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus { - color: inherit; - text-decoration: none; } - a:not([href]):not([tabindex]):focus { - outline: 0; } - - pre, - code, - kbd, - samp { - font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - font-size: 1em; } - - pre { - margin-top: 0; - margin-bottom: 1rem; - overflow: auto; } - - figure { - margin: 0 0 1rem; } - - img { - vertical-align: middle; - border-style: none; } - - svg { - overflow: hidden; - vertical-align: middle; } - - table { - border-collapse: collapse; } - - caption { - padding-top: 0.75rem; - padding-bottom: 0.75rem; - color: #6c757d; - text-align: left; - caption-side: bottom; } - - th { - text-align: inherit; } - - label { - display: inline-block; - margin-bottom: 0.5rem; } - - button { - border-radius: 0; } - - button:focus { - outline: 1px dotted; - outline: 5px auto -webkit-focus-ring-color; } - - input, - button, - select, - optgroup, - textarea { - margin: 0; - font-family: inherit; - font-size: inherit; - line-height: inherit; } - - button, - input { - overflow: visible; } - - button, - select { - text-transform: none; } - - select { - word-wrap: normal; } - - button, - [type="button"], - [type="reset"], - [type="submit"] { - -webkit-appearance: button; } - - button:not(:disabled), - [type="button"]:not(:disabled), - [type="reset"]:not(:disabled), - [type="submit"]:not(:disabled) { - cursor: pointer; } - - button::-moz-focus-inner, - [type="button"]::-moz-focus-inner, - [type="reset"]::-moz-focus-inner, - [type="submit"]::-moz-focus-inner { - padding: 0; - border-style: none; } - - input[type="radio"], - input[type="checkbox"] { - box-sizing: border-box; - padding: 0; } - - input[type="date"], - input[type="time"], - input[type="datetime-local"], - input[type="month"] { - -webkit-appearance: listbox; } - - textarea { - overflow: auto; - resize: vertical; } - - fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0; } - - legend { - display: block; - width: 100%; - max-width: 100%; - padding: 0; - margin-bottom: .5rem; - font-size: 1.5rem; - line-height: inherit; - color: inherit; - white-space: normal; } - - progress { - vertical-align: baseline; } - - [type="number"]::-webkit-inner-spin-button, - [type="number"]::-webkit-outer-spin-button { - height: auto; } - - [type="search"] { - outline-offset: -2px; - -webkit-appearance: none; } - - [type="search"]::-webkit-search-decoration { - -webkit-appearance: none; } - - ::-webkit-file-upload-button { - font: inherit; - -webkit-appearance: button; } - - output { - display: inline-block; } - - summary { - display: list-item; - cursor: pointer; } - - template { - display: none; } - - [hidden] { - display: none !important; } - - h1, h2, h3, h4, h5, h6, - .h1, .h2, .h3, .h4, .h5, .h6 { - margin-bottom: 0; - font-weight: 500; - line-height: 1.2; } - - h1, .h1 { - font-size: 2rem; } - - h2, .h2 { - font-size: 1.5rem; } - - h3, .h3 { - font-size: 1.25rem; } - - h4, .h4 { - font-size: 1rem; } - - h5, .h5 { - font-size: .85rem; } - - h6, .h6 { - font-size: .5rem; } - - .lead { - font-size: 1.25rem; - font-weight: 300; } - - .display-1 { - font-size: 6rem; - font-weight: 300; - line-height: 1.2; } - - .display-2 { - font-size: 5.5rem; - font-weight: 300; - line-height: 1.2; } - - .display-3 { - font-size: 4.5rem; - font-weight: 300; - line-height: 1.2; } - - .display-4 { - font-size: 3.5rem; - font-weight: 300; - line-height: 1.2; } - - hr { - margin-top: 1rem; - margin-bottom: 1rem; - border: 0; - border-top: 1px solid rgba(0, 0, 0, 0.1); } - - small, - .small { - font-size: 80%; - font-weight: 400; } - - mark, - .mark { - padding: 0.2em; - background-color: #fcf8e3; } - - .list-unstyled { - padding-left: 0; - list-style: none; } - - .list-inline { - padding-left: 0; - list-style: none; } - - .list-inline-item { - display: inline-block; } - .list-inline-item:not(:last-child) { - margin-right: 0.5rem; } - - .initialism { - font-size: 90%; - text-transform: uppercase; } - - .blockquote { - margin-bottom: 1rem; - font-size: 1.25rem; } - - .blockquote-footer { - display: block; - font-size: 80%; - color: #6c757d; } - .blockquote-footer::before { - content: "\2014\00A0"; } - - .img-fluid { - max-width: 100%; - height: auto; } - - .img-thumbnail { - padding: 0.25rem; - background-color: #fff; - border: 1px solid #dee2e6; - border-radius: 0.25rem; - max-width: 100%; - height: auto; } - - .figure { - display: inline-block; } - - .figure-img { - margin-bottom: 0.5rem; - line-height: 1; } - - .figure-caption { - font-size: 90%; - color: #6c757d; } - - code { - font-size: 87.5%; - color: #e83e8c; - word-break: break-word; } - a > code { - color: inherit; } - - kbd { - padding: 0.2rem 0.4rem; - font-size: 87.5%; - color: #fff; - background-color: #212529; - border-radius: 0.2rem; } - kbd kbd { - padding: 0; - font-size: 100%; - font-weight: 700; } - - pre { - display: block; - font-size: 87.5%; - color: #212529; } - pre code { - font-size: inherit; - color: inherit; - word-break: normal; } - - .pre-scrollable { - max-height: 340px; - overflow-y: scroll; } - - .container { - width: 100%; - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; } - @media (min-width: 576px) { - .container { - max-width: 540px; } } - @media (min-width: 768px) { - .container { - max-width: 720px; } } - @media (min-width: 992px) { - .container { - max-width: 960px; } } - @media (min-width: 1200px) { - .container { - max-width: 1140px; } } - - .container-fluid { - width: 100%; - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; } - - .row { - display: flex; - flex-wrap: wrap; - margin-right: -15px; - margin-left: -15px; } - - .no-gutters { - margin-right: 0; - margin-left: 0; } - .no-gutters > .col, - .no-gutters > [class*="col-"] { - padding-right: 0; - padding-left: 0; } - - .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, - .col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, - .col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, - .col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, - .col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl, - .col-xl-auto { - position: relative; - width: 100%; - padding-right: 15px; - padding-left: 15px; } - - .col { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; } - - .col-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; } - - .col-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; } - - .col-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; } - - .col-3 { - flex: 0 0 25%; - max-width: 25%; } - - .col-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; } - - .col-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; } - - .col-6 { - flex: 0 0 50%; - max-width: 50%; } - - .col-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; } - - .col-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; } - - .col-9 { - flex: 0 0 75%; - max-width: 75%; } - - .col-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; } - - .col-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; } - - .col-12 { - flex: 0 0 100%; - max-width: 100%; } - - .order-first { - order: -1; } - - .order-last { - order: 13; } - - .order-0 { - order: 0; } - - .order-1 { - order: 1; } - - .order-2 { - order: 2; } - - .order-3 { - order: 3; } - - .order-4 { - order: 4; } - - .order-5 { - order: 5; } - - .order-6 { - order: 6; } - - .order-7 { - order: 7; } - - .order-8 { - order: 8; } - - .order-9 { - order: 9; } - - .order-10 { - order: 10; } - - .order-11 { - order: 11; } - - .order-12 { - order: 12; } - - .offset-1 { - margin-left: 8.3333333333%; } - - .offset-2 { - margin-left: 16.6666666667%; } - - .offset-3 { - margin-left: 25%; } - - .offset-4 { - margin-left: 33.3333333333%; } - - .offset-5 { - margin-left: 41.6666666667%; } - - .offset-6 { - margin-left: 50%; } - - .offset-7 { - margin-left: 58.3333333333%; } - - .offset-8 { - margin-left: 66.6666666667%; } - - .offset-9 { - margin-left: 75%; } - - .offset-10 { - margin-left: 83.3333333333%; } - - .offset-11 { - margin-left: 91.6666666667%; } - - @media (min-width: 576px) { - .col-sm { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; } - - .col-sm-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; } - - .col-sm-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; } - - .col-sm-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; } - - .col-sm-3 { - flex: 0 0 25%; - max-width: 25%; } - - .col-sm-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; } - - .col-sm-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; } - - .col-sm-6 { - flex: 0 0 50%; - max-width: 50%; } - - .col-sm-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; } - - .col-sm-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; } - - .col-sm-9 { - flex: 0 0 75%; - max-width: 75%; } - - .col-sm-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; } - - .col-sm-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; } - - .col-sm-12 { - flex: 0 0 100%; - max-width: 100%; } - - .order-sm-first { - order: -1; } - - .order-sm-last { - order: 13; } - - .order-sm-0 { - order: 0; } - - .order-sm-1 { - order: 1; } - - .order-sm-2 { - order: 2; } - - .order-sm-3 { - order: 3; } - - .order-sm-4 { - order: 4; } - - .order-sm-5 { - order: 5; } - - .order-sm-6 { - order: 6; } - - .order-sm-7 { - order: 7; } - - .order-sm-8 { - order: 8; } - - .order-sm-9 { - order: 9; } - - .order-sm-10 { - order: 10; } - - .order-sm-11 { - order: 11; } - - .order-sm-12 { - order: 12; } - - .offset-sm-0 { - margin-left: 0; } - - .offset-sm-1 { - margin-left: 8.3333333333%; } - - .offset-sm-2 { - margin-left: 16.6666666667%; } - - .offset-sm-3 { - margin-left: 25%; } - - .offset-sm-4 { - margin-left: 33.3333333333%; } - - .offset-sm-5 { - margin-left: 41.6666666667%; } - - .offset-sm-6 { - margin-left: 50%; } - - .offset-sm-7 { - margin-left: 58.3333333333%; } - - .offset-sm-8 { - margin-left: 66.6666666667%; } - - .offset-sm-9 { - margin-left: 75%; } - - .offset-sm-10 { - margin-left: 83.3333333333%; } - - .offset-sm-11 { - margin-left: 91.6666666667%; } } - @media (min-width: 768px) { - .col-md { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; } - - .col-md-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; } - - .col-md-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; } - - .col-md-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; } - - .col-md-3 { - flex: 0 0 25%; - max-width: 25%; } - - .col-md-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; } - - .col-md-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; } - - .col-md-6 { - flex: 0 0 50%; - max-width: 50%; } - - .col-md-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; } - - .col-md-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; } - - .col-md-9 { - flex: 0 0 75%; - max-width: 75%; } - - .col-md-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; } - - .col-md-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; } - - .col-md-12 { - flex: 0 0 100%; - max-width: 100%; } - - .order-md-first { - order: -1; } - - .order-md-last { - order: 13; } - - .order-md-0 { - order: 0; } - - .order-md-1 { - order: 1; } - - .order-md-2 { - order: 2; } - - .order-md-3 { - order: 3; } - - .order-md-4 { - order: 4; } - - .order-md-5 { - order: 5; } - - .order-md-6 { - order: 6; } - - .order-md-7 { - order: 7; } - - .order-md-8 { - order: 8; } - - .order-md-9 { - order: 9; } - - .order-md-10 { - order: 10; } - - .order-md-11 { - order: 11; } - - .order-md-12 { - order: 12; } - - .offset-md-0 { - margin-left: 0; } - - .offset-md-1 { - margin-left: 8.3333333333%; } - - .offset-md-2 { - margin-left: 16.6666666667%; } - - .offset-md-3 { - margin-left: 25%; } - - .offset-md-4 { - margin-left: 33.3333333333%; } - - .offset-md-5 { - margin-left: 41.6666666667%; } - - .offset-md-6 { - margin-left: 50%; } - - .offset-md-7 { - margin-left: 58.3333333333%; } - - .offset-md-8 { - margin-left: 66.6666666667%; } - - .offset-md-9 { - margin-left: 75%; } - - .offset-md-10 { - margin-left: 83.3333333333%; } - - .offset-md-11 { - margin-left: 91.6666666667%; } } - @media (min-width: 992px) { - .col-lg { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; } - - .col-lg-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; } - - .col-lg-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; } - - .col-lg-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; } - - .col-lg-3 { - flex: 0 0 25%; - max-width: 25%; } - - .col-lg-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; } - - .col-lg-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; } - - .col-lg-6 { - flex: 0 0 50%; - max-width: 50%; } - - .col-lg-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; } - - .col-lg-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; } - - .col-lg-9 { - flex: 0 0 75%; - max-width: 75%; } - - .col-lg-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; } - - .col-lg-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; } - - .col-lg-12 { - flex: 0 0 100%; - max-width: 100%; } - - .order-lg-first { - order: -1; } - - .order-lg-last { - order: 13; } - - .order-lg-0 { - order: 0; } - - .order-lg-1 { - order: 1; } - - .order-lg-2 { - order: 2; } - - .order-lg-3 { - order: 3; } - - .order-lg-4 { - order: 4; } - - .order-lg-5 { - order: 5; } - - .order-lg-6 { - order: 6; } - - .order-lg-7 { - order: 7; } - - .order-lg-8 { - order: 8; } - - .order-lg-9 { - order: 9; } - - .order-lg-10 { - order: 10; } - - .order-lg-11 { - order: 11; } - - .order-lg-12 { - order: 12; } - - .offset-lg-0 { - margin-left: 0; } - - .offset-lg-1 { - margin-left: 8.3333333333%; } - - .offset-lg-2 { - margin-left: 16.6666666667%; } - - .offset-lg-3 { - margin-left: 25%; } - - .offset-lg-4 { - margin-left: 33.3333333333%; } - - .offset-lg-5 { - margin-left: 41.6666666667%; } - - .offset-lg-6 { - margin-left: 50%; } - - .offset-lg-7 { - margin-left: 58.3333333333%; } - - .offset-lg-8 { - margin-left: 66.6666666667%; } - - .offset-lg-9 { - margin-left: 75%; } - - .offset-lg-10 { - margin-left: 83.3333333333%; } - - .offset-lg-11 { - margin-left: 91.6666666667%; } } - @media (min-width: 1200px) { - .col-xl { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; } - - .col-xl-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; } - - .col-xl-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; } - - .col-xl-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; } - - .col-xl-3 { - flex: 0 0 25%; - max-width: 25%; } - - .col-xl-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; } - - .col-xl-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; } - - .col-xl-6 { - flex: 0 0 50%; - max-width: 50%; } - - .col-xl-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; } - - .col-xl-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; } - - .col-xl-9 { - flex: 0 0 75%; - max-width: 75%; } - - .col-xl-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; } - - .col-xl-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; } - - .col-xl-12 { - flex: 0 0 100%; - max-width: 100%; } - - .order-xl-first { - order: -1; } - - .order-xl-last { - order: 13; } - - .order-xl-0 { - order: 0; } - - .order-xl-1 { - order: 1; } - - .order-xl-2 { - order: 2; } - - .order-xl-3 { - order: 3; } - - .order-xl-4 { - order: 4; } - - .order-xl-5 { - order: 5; } - - .order-xl-6 { - order: 6; } - - .order-xl-7 { - order: 7; } - - .order-xl-8 { - order: 8; } - - .order-xl-9 { - order: 9; } - - .order-xl-10 { - order: 10; } - - .order-xl-11 { - order: 11; } - - .order-xl-12 { - order: 12; } - - .offset-xl-0 { - margin-left: 0; } - - .offset-xl-1 { - margin-left: 8.3333333333%; } - - .offset-xl-2 { - margin-left: 16.6666666667%; } - - .offset-xl-3 { - margin-left: 25%; } - - .offset-xl-4 { - margin-left: 33.3333333333%; } - - .offset-xl-5 { - margin-left: 41.6666666667%; } - - .offset-xl-6 { - margin-left: 50%; } - - .offset-xl-7 { - margin-left: 58.3333333333%; } - - .offset-xl-8 { - margin-left: 66.6666666667%; } - - .offset-xl-9 { - margin-left: 75%; } - - .offset-xl-10 { - margin-left: 83.3333333333%; } - - .offset-xl-11 { - margin-left: 91.6666666667%; } } - .table { - width: 100%; - margin-bottom: 1rem; - color: #212529; } - .table th, - .table td { - padding: 0.75rem; - vertical-align: top; - border-top: 1px solid #dee2e6; } - .table thead th { - vertical-align: bottom; - border-bottom: 2px solid #dee2e6; } - .table tbody + tbody { - border-top: 2px solid #dee2e6; } - - .table-sm th, - .table-sm td { - padding: 0.3rem; } - - .table-bordered { - border: 1px solid #dee2e6; } - .table-bordered th, - .table-bordered td { - border: 1px solid #dee2e6; } - .table-bordered thead th, - .table-bordered thead td { - border-bottom-width: 2px; } - - .table-borderless th, - .table-borderless td, - .table-borderless thead th, - .table-borderless tbody + tbody { - border: 0; } - - .table-striped tbody tr:nth-of-type(odd) { - background-color: rgba(0, 0, 0, 0.05); } - - .table-hover tbody tr:hover { - color: #212529; - background-color: rgba(0, 0, 0, 0.075); } - - .table-primary, - .table-primary > th, - .table-primary > td { - background-color: #c8e3ed; } - .table-primary th, - .table-primary td, - .table-primary thead th, - .table-primary tbody + tbody { - border-color: #99cade; } - - .table-hover .table-primary:hover { - background-color: #b5d9e7; } - .table-hover .table-primary:hover > td, - .table-hover .table-primary:hover > th { - background-color: #b5d9e7; } - - .table-secondary, - .table-secondary > th, - .table-secondary > td { - background-color: #d6d8db; } - .table-secondary th, - .table-secondary td, - .table-secondary thead th, - .table-secondary tbody + tbody { - border-color: #b3b7bb; } - - .table-hover .table-secondary:hover { - background-color: #c8cbcf; } - .table-hover .table-secondary:hover > td, - .table-hover .table-secondary:hover > th { - background-color: #c8cbcf; } - - .table-success, - .table-success > th, - .table-success > td { - background-color: #d8f1c8; } - .table-success th, - .table-success td, - .table-success thead th, - .table-success tbody + tbody { - border-color: #b7e498; } - - .table-hover .table-success:hover { - background-color: #caecb4; } - .table-hover .table-success:hover > td, - .table-hover .table-success:hover > th { - background-color: #caecb4; } - - .table-info, - .table-info > th, - .table-info > td { - background-color: #bee5eb; } - .table-info th, - .table-info td, - .table-info thead th, - .table-info tbody + tbody { - border-color: #86cfda; } - - .table-hover .table-info:hover { - background-color: #abdde5; } - .table-hover .table-info:hover > td, - .table-hover .table-info:hover > th { - background-color: #abdde5; } - - .table-warning, - .table-warning > th, - .table-warning > td { - background-color: #feedc4; } - .table-warning th, - .table-warning td, - .table-warning thead th, - .table-warning tbody + tbody { - border-color: #fede92; } - - .table-hover .table-warning:hover { - background-color: #fee5ab; } - .table-hover .table-warning:hover > td, - .table-hover .table-warning:hover > th { - background-color: #fee5ab; } - - .table-danger, - .table-danger > th, - .table-danger > td { - background-color: #f4c7cc; } - .table-danger th, - .table-danger td, - .table-danger thead th, - .table-danger tbody + tbody { - border-color: #eb97a0; } - - .table-hover .table-danger:hover { - background-color: #f0b2b9; } - .table-hover .table-danger:hover > td, - .table-hover .table-danger:hover > th { - background-color: #f0b2b9; } - - .table-light, - .table-light > th, - .table-light > td { - background-color: #fdfdfe; } - .table-light th, - .table-light td, - .table-light thead th, - .table-light tbody + tbody { - border-color: #fbfcfc; } - - .table-hover .table-light:hover { - background-color: #ececf6; } - .table-hover .table-light:hover > td, - .table-hover .table-light:hover > th { - background-color: #ececf6; } - - .table-dark, - .table-dark > th, - .table-dark > td { - background-color: #c6c8ca; } - .table-dark th, - .table-dark td, - .table-dark thead th, - .table-dark tbody + tbody { - border-color: #95999c; } - - .table-hover .table-dark:hover { - background-color: #b9bbbe; } - .table-hover .table-dark:hover > td, - .table-hover .table-dark:hover > th { - background-color: #b9bbbe; } - - .table-active, - .table-active > th, - .table-active > td { - background-color: rgba(0, 0, 0, 0.075); } - - .table-hover .table-active:hover { - background-color: rgba(0, 0, 0, 0.075); } - .table-hover .table-active:hover > td, - .table-hover .table-active:hover > th { - background-color: rgba(0, 0, 0, 0.075); } - - .table .thead-dark th { - color: #fff; - background-color: #343a40; - border-color: #454d55; } - .table .thead-light th { - color: #495057; - background-color: #e9ecef; - border-color: #dee2e6; } - - .table-dark { - color: #fff; - background-color: #343a40; } - .table-dark th, - .table-dark td, - .table-dark thead th { - border-color: #454d55; } - .table-dark.table-bordered { - border: 0; } - .table-dark.table-striped tbody tr:nth-of-type(odd) { - background-color: rgba(255, 255, 255, 0.05); } - .table-dark.table-hover tbody tr:hover { - color: #fff; - background-color: rgba(255, 255, 255, 0.075); } - - @media (max-width: 575.98px) { - .table-responsive-sm { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; } - .table-responsive-sm > .table-bordered { - border: 0; } } - @media (max-width: 767.98px) { - .table-responsive-md { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; } - .table-responsive-md > .table-bordered { - border: 0; } } - @media (max-width: 991.98px) { - .table-responsive-lg { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; } - .table-responsive-lg > .table-bordered { - border: 0; } } - @media (max-width: 1199.98px) { - .table-responsive-xl { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; } - .table-responsive-xl > .table-bordered { - border: 0; } } - .table-responsive { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; } - .table-responsive > .table-bordered { - border: 0; } - - .form-control { - display: block; - width: 100%; - height: calc(1.5em + 0.75rem + 2px); - padding: 0.375rem 0.75rem; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #495057; - background-color: #fff; - background-clip: padding-box; - border: 1px solid #ced4da; - border-radius: 0.25rem; - transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .form-control { - transition: none; } } - .form-control::-ms-expand { - background-color: transparent; - border: 0; } - .form-control:focus { - color: #495057; - background-color: #fff; - border-color: #99cce0; - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } - .form-control::placeholder { - color: #6c757d; - opacity: 1; } - .form-control:disabled, .form-control[readonly] { - background-color: #e9ecef; - opacity: 1; } - - select.form-control:focus::-ms-value { - color: #495057; - background-color: #fff; } - - .form-control-file, - .form-control-range { - display: block; - width: 100%; } - - .col-form-label { - padding-top: calc(0.375rem + 1px); - padding-bottom: calc(0.375rem + 1px); - margin-bottom: 0; - font-size: inherit; - line-height: 1.5; } - - .col-form-label-lg { - padding-top: calc(0.5rem + 1px); - padding-bottom: calc(0.5rem + 1px); - font-size: 1.25rem; - line-height: 1.5; } - - .col-form-label-sm { - padding-top: calc(0.25rem + 1px); - padding-bottom: calc(0.25rem + 1px); - font-size: 0.875rem; - line-height: 1.5; } - - .form-control-plaintext { - display: block; - width: 100%; - padding-top: 0.375rem; - padding-bottom: 0.375rem; - margin-bottom: 0; - line-height: 1.5; - color: #212529; - background-color: transparent; - border: solid transparent; - border-width: 1px 0; } - .form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { - padding-right: 0; - padding-left: 0; } - - .form-control-sm { - height: calc(1.5em + 0.5rem + 2px); - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; - border-radius: 0.2rem; } - - .form-control-lg { - height: calc(1.5em + 1rem + 2px); - padding: 0.5rem 1rem; - font-size: 1.25rem; - line-height: 1.5; - border-radius: 0.3rem; } - - select.form-control[size], select.form-control[multiple] { - height: auto; } - - textarea.form-control { - height: auto; } - - .form-group { - margin-bottom: 1rem; } - - .form-text { - display: block; - margin-top: 0.25rem; } - - .form-row { - display: flex; - flex-wrap: wrap; - margin-right: -5px; - margin-left: -5px; } - .form-row > .col, - .form-row > [class*="col-"] { - padding-right: 5px; - padding-left: 5px; } - - .form-check { - position: relative; - display: block; - padding-left: 1.25rem; } - - .form-check-input { - position: absolute; - margin-top: 0.3rem; - margin-left: -1.25rem; } - .form-check-input:disabled ~ .form-check-label { - color: #6c757d; } - - .form-check-label { - margin-bottom: 0; } - - .form-check-inline { - display: inline-flex; - align-items: center; - padding-left: 0; - margin-right: 0.75rem; } - .form-check-inline .form-check-input { - position: static; - margin-top: 0; - margin-right: 0.3125rem; - margin-left: 0; } - - .valid-feedback { - display: none; - width: 100%; - margin-top: 0.25rem; - font-size: 80%; - color: #75CC39; } - - .valid-tooltip { - position: absolute; - top: 100%; - z-index: 5; - display: none; - max-width: 100%; - padding: 0.25rem 0.5rem; - margin-top: .1rem; - font-size: 0.875rem; - line-height: 1.5; - color: #212529; - background-color: rgba(117, 204, 57, 0.9); - border-radius: 0.25rem; } - - .was-validated .form-control:valid, .form-control.is-valid { - border-color: #75CC39; - padding-right: calc(1.5em + 0.75rem); - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2375CC39' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); - background-repeat: no-repeat; - background-position: center right calc(0.375em + 0.1875rem); - background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } - .was-validated .form-control:valid:focus, .form-control.is-valid:focus { - border-color: #75CC39; - box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.25); } - .was-validated .form-control:valid ~ .valid-feedback, - .was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback, - .form-control.is-valid ~ .valid-tooltip { - display: block; } - - .was-validated textarea.form-control:valid, textarea.form-control.is-valid { - padding-right: calc(1.5em + 0.75rem); - background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); } - - .was-validated .custom-select:valid, .custom-select.is-valid { - border-color: #75CC39; - padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem); - background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2375CC39' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } - .was-validated .custom-select:valid:focus, .custom-select.is-valid:focus { - border-color: #75CC39; - box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.25); } - .was-validated .custom-select:valid ~ .valid-feedback, - .was-validated .custom-select:valid ~ .valid-tooltip, .custom-select.is-valid ~ .valid-feedback, - .custom-select.is-valid ~ .valid-tooltip { - display: block; } - - .was-validated .form-control-file:valid ~ .valid-feedback, - .was-validated .form-control-file:valid ~ .valid-tooltip, .form-control-file.is-valid ~ .valid-feedback, - .form-control-file.is-valid ~ .valid-tooltip { - display: block; } - - .was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { - color: #75CC39; } - .was-validated .form-check-input:valid ~ .valid-feedback, - .was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback, - .form-check-input.is-valid ~ .valid-tooltip { - display: block; } - - .was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label { - color: #75CC39; } - .was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before { - border-color: #75CC39; } - .was-validated .custom-control-input:valid ~ .valid-feedback, - .was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback, - .custom-control-input.is-valid ~ .valid-tooltip { - display: block; } - .was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before { - border-color: #91d662; - background-color: #91d662; } - .was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.25); } - .was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before { - border-color: #75CC39; } - - .was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label { - border-color: #75CC39; } - .was-validated .custom-file-input:valid ~ .valid-feedback, - .was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback, - .custom-file-input.is-valid ~ .valid-tooltip { - display: block; } - .was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label { - border-color: #75CC39; - box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.25); } - - .invalid-feedback { - display: none; - width: 100%; - margin-top: 0.25rem; - font-size: 80%; - color: #D93749; } - - .invalid-tooltip { - position: absolute; - top: 100%; - z-index: 5; - display: none; - max-width: 100%; - padding: 0.25rem 0.5rem; - margin-top: .1rem; - font-size: 0.875rem; - line-height: 1.5; - color: #fff; - background-color: rgba(217, 55, 73, 0.9); - border-radius: 0.25rem; } - - .was-validated .form-control:invalid, .form-control.is-invalid { - border-color: #D93749; - padding-right: calc(1.5em + 0.75rem); - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D93749' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23D93749' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E"); - background-repeat: no-repeat; - background-position: center right calc(0.375em + 0.1875rem); - background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } - .was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { - border-color: #D93749; - box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.25); } - .was-validated .form-control:invalid ~ .invalid-feedback, - .was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback, - .form-control.is-invalid ~ .invalid-tooltip { - display: block; } - - .was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { - padding-right: calc(1.5em + 0.75rem); - background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); } - - .was-validated .custom-select:invalid, .custom-select.is-invalid { - border-color: #D93749; - padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem); - background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D93749' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23D93749' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } - .was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus { - border-color: #D93749; - box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.25); } - .was-validated .custom-select:invalid ~ .invalid-feedback, - .was-validated .custom-select:invalid ~ .invalid-tooltip, .custom-select.is-invalid ~ .invalid-feedback, - .custom-select.is-invalid ~ .invalid-tooltip { - display: block; } - - .was-validated .form-control-file:invalid ~ .invalid-feedback, - .was-validated .form-control-file:invalid ~ .invalid-tooltip, .form-control-file.is-invalid ~ .invalid-feedback, - .form-control-file.is-invalid ~ .invalid-tooltip { - display: block; } - - .was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { - color: #D93749; } - .was-validated .form-check-input:invalid ~ .invalid-feedback, - .was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback, - .form-check-input.is-invalid ~ .invalid-tooltip { - display: block; } - - .was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label { - color: #D93749; } - .was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before { - border-color: #D93749; } - .was-validated .custom-control-input:invalid ~ .invalid-feedback, - .was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback, - .custom-control-input.is-invalid ~ .invalid-tooltip { - display: block; } - .was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before { - border-color: #e16270; - background-color: #e16270; } - .was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.25); } - .was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before { - border-color: #D93749; } - - .was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label { - border-color: #D93749; } - .was-validated .custom-file-input:invalid ~ .invalid-feedback, - .was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback, - .custom-file-input.is-invalid ~ .invalid-tooltip { - display: block; } - .was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label { - border-color: #D93749; - box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.25); } - - .form-inline { - display: flex; - flex-flow: row wrap; - align-items: center; } - .form-inline .form-check { - width: 100%; } - @media (min-width: 576px) { - .form-inline label { - display: flex; - align-items: center; - justify-content: center; - margin-bottom: 0; } - .form-inline .form-group { - display: flex; - flex: 0 0 auto; - flex-flow: row wrap; - align-items: center; - margin-bottom: 0; } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; } - .form-inline .form-control-plaintext { - display: inline-block; } - .form-inline .input-group, - .form-inline .custom-select { - width: auto; } - .form-inline .form-check { - display: flex; - align-items: center; - justify-content: center; - width: auto; - padding-left: 0; } - .form-inline .form-check-input { - position: relative; - flex-shrink: 0; - margin-top: 0; - margin-right: 0.25rem; - margin-left: 0; } - .form-inline .custom-control { - align-items: center; - justify-content: center; } - .form-inline .custom-control-label { - margin-bottom: 0; } } - - .btn { - cursor: pointer; - display: inline-block; - font-weight: 400; - color: #212529; - text-align: center; - vertical-align: middle; - user-select: none; - background-color: transparent; - border: 1px solid transparent; - padding: 0.375rem 0.75rem; - font-size: 1rem; - line-height: 1.5; - border-radius: 0.25rem; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .btn { - transition: none; } } - .btn:hover { - color: #212529; - text-decoration: none; } - .btn:focus, .btn.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } - .btn.disabled, .btn:disabled { - opacity: 0.65; } - - a.btn.disabled, - fieldset:disabled a.btn { - pointer-events: none; } - - .btn-primary { - color: #fff; - background-color: #3A9ABF; - border-color: #3A9ABF; } - .btn-primary:hover { - color: #fff; - background-color: #3182a2; - border-color: #2e7a98; } - .btn-primary:focus, .btn-primary.focus { - box-shadow: 0 0 0 0.2rem rgba(88, 169, 201, 0.5); } - .btn-primary.disabled, .btn-primary:disabled { - color: #fff; - background-color: #3A9ABF; - border-color: #3A9ABF; } - .btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active, .show > .btn-primary.dropdown-toggle { - color: #fff; - background-color: #2e7a98; - border-color: #2b738e; } - .btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus, .show > .btn-primary.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(88, 169, 201, 0.5); } - - .btn-secondary { - color: #fff; - background-color: #6C757D; - border-color: #6C757D; } - .btn-secondary:hover { - color: #fff; - background-color: #5a6268; - border-color: #545b62; } - .btn-secondary:focus, .btn-secondary.focus { - box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5); } - .btn-secondary.disabled, .btn-secondary:disabled { - color: #fff; - background-color: #6C757D; - border-color: #6C757D; } - .btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active, .show > .btn-secondary.dropdown-toggle { - color: #fff; - background-color: #545b62; - border-color: #4e555b; } - .btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus, .show > .btn-secondary.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5); } - - .btn-success { - color: #212529; - background-color: #75CC39; - border-color: #75CC39; } - .btn-success:hover { - color: #fff; - background-color: #63b12e; - border-color: #5ea72b; } - .btn-success:focus, .btn-success.focus { - box-shadow: 0 0 0 0.2rem rgba(104, 179, 55, 0.5); } - .btn-success.disabled, .btn-success:disabled { - color: #212529; - background-color: #75CC39; - border-color: #75CC39; } - .btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active, .show > .btn-success.dropdown-toggle { - color: #fff; - background-color: #5ea72b; - border-color: #589d28; } - .btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus, .show > .btn-success.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(104, 179, 55, 0.5); } - - .btn-info { - color: #fff; - background-color: #17a2b8; - border-color: #17a2b8; } - .btn-info:hover { - color: #fff; - background-color: #138496; - border-color: #117a8b; } - .btn-info:focus, .btn-info.focus { - box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5); } - .btn-info.disabled, .btn-info:disabled { - color: #fff; - background-color: #17a2b8; - border-color: #17a2b8; } - .btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active, .show > .btn-info.dropdown-toggle { - color: #fff; - background-color: #117a8b; - border-color: #10707f; } - .btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus, .show > .btn-info.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5); } - - .btn-warning { - color: #212529; - background-color: #FDC02E; - border-color: #FDC02E; } - .btn-warning:hover { - color: #212529; - background-color: #fdb508; - border-color: #f6ae02; } - .btn-warning:focus, .btn-warning.focus { - box-shadow: 0 0 0 0.2rem rgba(220, 169, 45, 0.5); } - .btn-warning.disabled, .btn-warning:disabled { - color: #212529; - background-color: #FDC02E; - border-color: #FDC02E; } - .btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active, .show > .btn-warning.dropdown-toggle { - color: #212529; - background-color: #f6ae02; - border-color: #e9a502; } - .btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus, .show > .btn-warning.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(220, 169, 45, 0.5); } - - .btn-danger { - color: #fff; - background-color: #D93749; - border-color: #D93749; } - .btn-danger:hover { - color: #fff; - background-color: #c42537; - border-color: #ba2334; } - .btn-danger:focus, .btn-danger.focus { - box-shadow: 0 0 0 0.2rem rgba(223, 85, 100, 0.5); } - .btn-danger.disabled, .btn-danger:disabled { - color: #fff; - background-color: #D93749; - border-color: #D93749; } - .btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active, .show > .btn-danger.dropdown-toggle { - color: #fff; - background-color: #ba2334; - border-color: #af2131; } - .btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus, .show > .btn-danger.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(223, 85, 100, 0.5); } - - .btn-light { - color: #212529; - background-color: #f8f9fa; - border-color: #f8f9fa; } - .btn-light:hover { - color: #212529; - background-color: #e2e6ea; - border-color: #dae0e5; } - .btn-light:focus, .btn-light.focus { - box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); } - .btn-light.disabled, .btn-light:disabled { - color: #212529; - background-color: #f8f9fa; - border-color: #f8f9fa; } - .btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active, .show > .btn-light.dropdown-toggle { - color: #212529; - background-color: #dae0e5; - border-color: #d3d9df; } - .btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus, .show > .btn-light.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); } - - .btn-dark { - color: #fff; - background-color: #343a40; - border-color: #343a40; } - .btn-dark:hover { - color: #fff; - background-color: #23272b; - border-color: #1d2124; } - .btn-dark:focus, .btn-dark.focus { - box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5); } - .btn-dark.disabled, .btn-dark:disabled { - color: #fff; - background-color: #343a40; - border-color: #343a40; } - .btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active, .show > .btn-dark.dropdown-toggle { - color: #fff; - background-color: #1d2124; - border-color: #171a1d; } - .btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus, .show > .btn-dark.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5); } - - .btn-outline-primary { - color: #3A9ABF; - border-color: #3A9ABF; } - .btn-outline-primary:hover { - color: #fff; - background-color: #3A9ABF; - border-color: #3A9ABF; } - .btn-outline-primary:focus, .btn-outline-primary.focus { - box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.5); } - .btn-outline-primary.disabled, .btn-outline-primary:disabled { - color: #3A9ABF; - background-color: transparent; } - .btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active, .show > .btn-outline-primary.dropdown-toggle { - color: #fff; - background-color: #3A9ABF; - border-color: #3A9ABF; } - .btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-primary.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.5); } - - .btn-outline-secondary { - color: #6C757D; - border-color: #6C757D; } - .btn-outline-secondary:hover { - color: #fff; - background-color: #6C757D; - border-color: #6C757D; } - .btn-outline-secondary:focus, .btn-outline-secondary.focus { - box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); } - .btn-outline-secondary.disabled, .btn-outline-secondary:disabled { - color: #6C757D; - background-color: transparent; } - .btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active, .show > .btn-outline-secondary.dropdown-toggle { - color: #fff; - background-color: #6C757D; - border-color: #6C757D; } - .btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-secondary.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); } - - .btn-outline-success { - color: #75CC39; - border-color: #75CC39; } - .btn-outline-success:hover { - color: #212529; - background-color: #75CC39; - border-color: #75CC39; } - .btn-outline-success:focus, .btn-outline-success.focus { - box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.5); } - .btn-outline-success.disabled, .btn-outline-success:disabled { - color: #75CC39; - background-color: transparent; } - .btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active, .show > .btn-outline-success.dropdown-toggle { - color: #212529; - background-color: #75CC39; - border-color: #75CC39; } - .btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-success.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.5); } - - .btn-outline-info { - color: #17a2b8; - border-color: #17a2b8; } - .btn-outline-info:hover { - color: #fff; - background-color: #17a2b8; - border-color: #17a2b8; } - .btn-outline-info:focus, .btn-outline-info.focus { - box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } - .btn-outline-info.disabled, .btn-outline-info:disabled { - color: #17a2b8; - background-color: transparent; } - .btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active, .show > .btn-outline-info.dropdown-toggle { - color: #fff; - background-color: #17a2b8; - border-color: #17a2b8; } - .btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-info.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } - - .btn-outline-warning { - color: #FDC02E; - border-color: #FDC02E; } - .btn-outline-warning:hover { - color: #212529; - background-color: #FDC02E; - border-color: #FDC02E; } - .btn-outline-warning:focus, .btn-outline-warning.focus { - box-shadow: 0 0 0 0.2rem rgba(253, 192, 46, 0.5); } - .btn-outline-warning.disabled, .btn-outline-warning:disabled { - color: #FDC02E; - background-color: transparent; } - .btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active, .show > .btn-outline-warning.dropdown-toggle { - color: #212529; - background-color: #FDC02E; - border-color: #FDC02E; } - .btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-warning.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(253, 192, 46, 0.5); } - - .btn-outline-danger { - color: #D93749; - border-color: #D93749; } - .btn-outline-danger:hover { - color: #fff; - background-color: #D93749; - border-color: #D93749; } - .btn-outline-danger:focus, .btn-outline-danger.focus { - box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.5); } - .btn-outline-danger.disabled, .btn-outline-danger:disabled { - color: #D93749; - background-color: transparent; } - .btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active, .show > .btn-outline-danger.dropdown-toggle { - color: #fff; - background-color: #D93749; - border-color: #D93749; } - .btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-danger.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.5); } - - .btn-outline-light { - color: #f8f9fa; - border-color: #f8f9fa; } - .btn-outline-light:hover { - color: #212529; - background-color: #f8f9fa; - border-color: #f8f9fa; } - .btn-outline-light:focus, .btn-outline-light.focus { - box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); } - .btn-outline-light.disabled, .btn-outline-light:disabled { - color: #f8f9fa; - background-color: transparent; } - .btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active, .show > .btn-outline-light.dropdown-toggle { - color: #212529; - background-color: #f8f9fa; - border-color: #f8f9fa; } - .btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-light.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); } - - .btn-outline-dark { - color: #343a40; - border-color: #343a40; } - .btn-outline-dark:hover { - color: #fff; - background-color: #343a40; - border-color: #343a40; } - .btn-outline-dark:focus, .btn-outline-dark.focus { - box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); } - .btn-outline-dark.disabled, .btn-outline-dark:disabled { - color: #343a40; - background-color: transparent; } - .btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active, .show > .btn-outline-dark.dropdown-toggle { - color: #fff; - background-color: #343a40; - border-color: #343a40; } - .btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-dark.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); } - - .btn-link { - font-weight: 400; - color: #3A9ABF; - text-decoration: none; } - .btn-link:hover { - color: #286b84; - text-decoration: underline; } - .btn-link:focus, .btn-link.focus { - text-decoration: underline; - box-shadow: none; } - .btn-link:disabled, .btn-link.disabled { - color: #6c757d; - pointer-events: none; } - - .btn-lg, .btn-group-lg > .btn { - padding: 0.5rem 1rem; - font-size: 1.25rem; - line-height: 1.5; - border-radius: 0.3rem; } - - .btn-sm, .btn-group-sm > .btn { - padding: 0.25rem 0.5rem; - font-size: 0.75rem; - line-height: 1.5; - border-radius: 0.2rem; } - - .btn-block { - display: block; - width: 100%; } - .btn-block + .btn-block { - margin-top: 0.5rem; } - - input[type="submit"].btn-block, - input[type="reset"].btn-block, - input[type="button"].btn-block { - width: 100%; } - - .fade { - transition: opacity 0.15s linear; } - @media (prefers-reduced-motion: reduce) { - .fade { - transition: none; } } - .fade:not(.show) { - opacity: 0; } - - .collapse:not(.show) { - display: none; } - - .collapsing { - position: relative; - height: 0; - overflow: hidden; - transition: height 0.35s ease; } - @media (prefers-reduced-motion: reduce) { - .collapsing { - transition: none; } } - - .dropup, - .dropright, - .dropdown, - .dropleft { - position: relative; } - - .dropdown-toggle { - white-space: nowrap; } - .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid; - border-right: 0.3em solid transparent; - border-bottom: 0; - border-left: 0.3em solid transparent; } - .dropdown-toggle:empty::after { - margin-left: 0; } - - .dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 10rem; - padding: 0.5rem 0; - margin: 0.125rem 0 0; - font-size: 1rem; - color: #212529; - text-align: left; - list-style: none; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 0.25rem; } - - .dropdown-menu-left { - right: auto; - left: 0; } - - .dropdown-menu-right { - right: 0; - left: auto; } - - @media (min-width: 576px) { - .dropdown-menu-sm-left { - right: auto; - left: 0; } - - .dropdown-menu-sm-right { - right: 0; - left: auto; } } - @media (min-width: 768px) { - .dropdown-menu-md-left { - right: auto; - left: 0; } - - .dropdown-menu-md-right { - right: 0; - left: auto; } } - @media (min-width: 992px) { - .dropdown-menu-lg-left { - right: auto; - left: 0; } - - .dropdown-menu-lg-right { - right: 0; - left: auto; } } - @media (min-width: 1200px) { - .dropdown-menu-xl-left { - right: auto; - left: 0; } - - .dropdown-menu-xl-right { - right: 0; - left: auto; } } - .dropup .dropdown-menu { - top: auto; - bottom: 100%; - margin-top: 0; - margin-bottom: 0.125rem; } - .dropup .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0; - border-right: 0.3em solid transparent; - border-bottom: 0.3em solid; - border-left: 0.3em solid transparent; } - .dropup .dropdown-toggle:empty::after { - margin-left: 0; } - - .dropright .dropdown-menu { - top: 0; - right: auto; - left: 100%; - margin-top: 0; - margin-left: 0.125rem; } - .dropright .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid transparent; - border-right: 0; - border-bottom: 0.3em solid transparent; - border-left: 0.3em solid; } - .dropright .dropdown-toggle:empty::after { - margin-left: 0; } - .dropright .dropdown-toggle::after { - vertical-align: 0; } - - .dropleft .dropdown-menu { - top: 0; - right: 100%; - left: auto; - margin-top: 0; - margin-right: 0.125rem; } - .dropleft .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; } - .dropleft .dropdown-toggle::after { - display: none; } - .dropleft .dropdown-toggle::before { - display: inline-block; - margin-right: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid transparent; - border-right: 0.3em solid; - border-bottom: 0.3em solid transparent; } - .dropleft .dropdown-toggle:empty::after { - margin-left: 0; } - .dropleft .dropdown-toggle::before { - vertical-align: 0; } - - .dropdown-menu[x-placement^="top"], .dropdown-menu[x-placement^="right"], .dropdown-menu[x-placement^="bottom"], .dropdown-menu[x-placement^="left"] { - right: auto; - bottom: auto; } - - .dropdown-divider { - height: 0; - margin: 0.5rem 0; - overflow: hidden; - border-top: 1px solid #e9ecef; } - - .dropdown-item { - display: block; - width: 100%; - padding: 0.25rem 1.5rem; - clear: both; - font-weight: 400; - color: #212529; - text-align: inherit; - white-space: nowrap; - background-color: transparent; - border: 0; } - .dropdown-item:hover, .dropdown-item:focus { - color: #16181b; - text-decoration: none; - background-color: #f8f9fa; } - .dropdown-item.active, .dropdown-item:active { - color: #fff; - text-decoration: none; - background-color: #3A9ABF; } - .dropdown-item.disabled, .dropdown-item:disabled { - color: #6c757d; - pointer-events: none; - background-color: transparent; } - - .dropdown-menu.show { - display: block; } - - .dropdown-header { - display: block; - padding: 0.5rem 1.5rem; - margin-bottom: 0; - font-size: 0.875rem; - color: #6c757d; - white-space: nowrap; } - - .dropdown-item-text { - display: block; - padding: 0.25rem 1.5rem; - color: #212529; } - - .btn-group, - .btn-group-vertical { - position: relative; - display: inline-flex; - vertical-align: middle; } - .btn-group > .btn, - .btn-group-vertical > .btn { - position: relative; - flex: 1 1 auto; } - .btn-group > .btn:hover, - .btn-group-vertical > .btn:hover { - z-index: 1; } - .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, - .btn-group-vertical > .btn:focus, - .btn-group-vertical > .btn:active, - .btn-group-vertical > .btn.active { - z-index: 1; } - - .btn-toolbar { - display: flex; - flex-wrap: wrap; - justify-content: flex-start; } - .btn-toolbar .input-group { - width: auto; } - - .btn-group > .btn:not(:first-child), - .btn-group > .btn-group:not(:first-child) { - margin-left: -1px; } - .btn-group > .btn:not(:last-child):not(.dropdown-toggle), - .btn-group > .btn-group:not(:last-child) > .btn { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - .btn-group > .btn:not(:first-child), - .btn-group > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - - .dropdown-toggle-split { - padding-right: 0.5625rem; - padding-left: 0.5625rem; } - .dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropright .dropdown-toggle-split::after { - margin-left: 0; } - .dropleft .dropdown-toggle-split::before { - margin-right: 0; } - - .btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { - padding-right: 0.375rem; - padding-left: 0.375rem; } - - .btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { - padding-right: 0.75rem; - padding-left: 0.75rem; } - - .btn-group-vertical { - flex-direction: column; - align-items: flex-start; - justify-content: center; } - .btn-group-vertical > .btn, - .btn-group-vertical > .btn-group { - width: 100%; } - .btn-group-vertical > .btn:not(:first-child), - .btn-group-vertical > .btn-group:not(:first-child) { - margin-top: -1px; } - .btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), - .btn-group-vertical > .btn-group:not(:last-child) > .btn { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; } - .btn-group-vertical > .btn:not(:first-child), - .btn-group-vertical > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-top-right-radius: 0; } - - .btn-group-toggle > .btn, - .btn-group-toggle > .btn-group > .btn { - margin-bottom: 0; } - .btn-group-toggle > .btn input[type="radio"], - .btn-group-toggle > .btn input[type="checkbox"], - .btn-group-toggle > .btn-group > .btn input[type="radio"], - .btn-group-toggle > .btn-group > .btn input[type="checkbox"] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; } - - .input-group { - position: relative; - display: flex; - flex-wrap: wrap; - align-items: stretch; - width: 100%; } - .input-group > .form-control, - .input-group > .form-control-plaintext, - .input-group > .custom-select, - .input-group > .custom-file { - position: relative; - flex: 1 1 auto; - width: 1%; - margin-bottom: 0; } - .input-group > .form-control + .form-control, - .input-group > .form-control + .custom-select, - .input-group > .form-control + .custom-file, - .input-group > .form-control-plaintext + .form-control, - .input-group > .form-control-plaintext + .custom-select, - .input-group > .form-control-plaintext + .custom-file, - .input-group > .custom-select + .form-control, - .input-group > .custom-select + .custom-select, - .input-group > .custom-select + .custom-file, - .input-group > .custom-file + .form-control, - .input-group > .custom-file + .custom-select, - .input-group > .custom-file + .custom-file { - margin-left: -1px; } - .input-group > .form-control:focus, - .input-group > .custom-select:focus, - .input-group > .custom-file .custom-file-input:focus ~ .custom-file-label { - z-index: 3; } - .input-group > .custom-file .custom-file-input:focus { - z-index: 4; } - .input-group > .form-control:not(:last-child), - .input-group > .custom-select:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - .input-group > .form-control:not(:first-child), - .input-group > .custom-select:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - .input-group > .custom-file { - display: flex; - align-items: center; } - .input-group > .custom-file:not(:last-child) .custom-file-label, .input-group > .custom-file:not(:last-child) .custom-file-label::after { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - .input-group > .custom-file:not(:first-child) .custom-file-label { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - - .input-group-prepend, - .input-group-append { - display: flex; } - .input-group-prepend .btn, - .input-group-append .btn { - position: relative; - z-index: 2; } - .input-group-prepend .btn:focus, - .input-group-append .btn:focus { - z-index: 3; } - .input-group-prepend .btn + .btn, - .input-group-prepend .btn + .input-group-text, - .input-group-prepend .input-group-text + .input-group-text, - .input-group-prepend .input-group-text + .btn, - .input-group-append .btn + .btn, - .input-group-append .btn + .input-group-text, - .input-group-append .input-group-text + .input-group-text, - .input-group-append .input-group-text + .btn { - margin-left: -1px; } - - .input-group-prepend { - margin-right: -1px; } - - .input-group-append { - margin-left: -1px; } - - .input-group-text { - display: flex; - align-items: center; - padding: 0.375rem 0.75rem; - margin-bottom: 0; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #495057; - text-align: center; - white-space: nowrap; - background-color: #e9ecef; - border: 1px solid #ced4da; - border-radius: 0.25rem; } - .input-group-text input[type="radio"], - .input-group-text input[type="checkbox"] { - margin-top: 0; } - - .input-group-lg > .form-control:not(textarea), - .input-group-lg > .custom-select { - height: calc(1.5em + 1rem + 2px); } - - .input-group-lg > .form-control, - .input-group-lg > .custom-select, - .input-group-lg > .input-group-prepend > .input-group-text, - .input-group-lg > .input-group-append > .input-group-text, - .input-group-lg > .input-group-prepend > .btn, - .input-group-lg > .input-group-append > .btn { - padding: 0.5rem 1rem; - font-size: 1.25rem; - line-height: 1.5; - border-radius: 0.3rem; } - - .input-group-sm > .form-control:not(textarea), - .input-group-sm > .custom-select { - height: calc(1.5em + 0.5rem + 2px); } - - .input-group-sm > .form-control, - .input-group-sm > .custom-select, - .input-group-sm > .input-group-prepend > .input-group-text, - .input-group-sm > .input-group-append > .input-group-text, - .input-group-sm > .input-group-prepend > .btn, - .input-group-sm > .input-group-append > .btn { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; - border-radius: 0.2rem; } - - .input-group-lg > .custom-select, - .input-group-sm > .custom-select { - padding-right: 1.75rem; } - - .input-group > .input-group-prepend > .btn, - .input-group > .input-group-prepend > .input-group-text, - .input-group > .input-group-append:not(:last-child) > .btn, - .input-group > .input-group-append:not(:last-child) > .input-group-text, - .input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), - .input-group > .input-group-append:last-child > .input-group-text:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - - .input-group > .input-group-append > .btn, - .input-group > .input-group-append > .input-group-text, - .input-group > .input-group-prepend:not(:first-child) > .btn, - .input-group > .input-group-prepend:not(:first-child) > .input-group-text, - .input-group > .input-group-prepend:first-child > .btn:not(:first-child), - .input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - - .custom-control { - position: relative; - display: block; - min-height: 1.5rem; - padding-left: 1.5rem; } - - .custom-control-inline { - display: inline-flex; - margin-right: 1rem; } - - .custom-control-input { - position: absolute; - z-index: -1; - opacity: 0; } - .custom-control-input:checked ~ .custom-control-label::before { - color: #fff; - border-color: #3A9ABF; - background-color: #3A9ABF; } - .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } - .custom-control-input:focus:not(:checked) ~ .custom-control-label::before { - border-color: #99cce0; } - .custom-control-input:not(:disabled):active ~ .custom-control-label::before { - color: #fff; - background-color: #c0e0ec; - border-color: #c0e0ec; } - .custom-control-input:disabled ~ .custom-control-label { - color: #6c757d; } - .custom-control-input:disabled ~ .custom-control-label::before { - background-color: #e9ecef; } - - .custom-control-label { - position: relative; - margin-bottom: 0; - vertical-align: top; } - .custom-control-label::before { - position: absolute; - top: 0.25rem; - left: -1.5rem; - display: block; - width: 1rem; - height: 1rem; - pointer-events: none; - content: ""; - background-color: #fff; - border: #adb5bd solid 1px; } - .custom-control-label::after { - position: absolute; - top: 0.25rem; - left: -1.5rem; - display: block; - width: 1rem; - height: 1rem; - content: ""; - background: no-repeat 50% / 50% 50%; } - - .custom-checkbox .custom-control-label::before { - border-radius: 0.25rem; } - .custom-checkbox .custom-control-input:checked ~ .custom-control-label::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e"); } - .custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before { - border-color: #3A9ABF; - background-color: #3A9ABF; } - .custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e"); } - .custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before { - background-color: rgba(58, 154, 191, 0.5); } - .custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before { - background-color: rgba(58, 154, 191, 0.5); } - - .custom-radio .custom-control-label::before { - border-radius: 50%; } - .custom-radio .custom-control-input:checked ~ .custom-control-label::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); } - .custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before { - background-color: rgba(58, 154, 191, 0.5); } - - .custom-switch { - padding-left: 2.25rem; } - .custom-switch .custom-control-label::before { - left: -2.25rem; - width: 1.75rem; - pointer-events: all; - border-radius: 0.5rem; } - .custom-switch .custom-control-label::after { - top: calc(0.25rem + 2px); - left: calc(-2.25rem + 2px); - width: calc(1rem - 4px); - height: calc(1rem - 4px); - background-color: #adb5bd; - border-radius: 0.5rem; - transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .custom-switch .custom-control-label::after { - transition: none; } } - .custom-switch .custom-control-input:checked ~ .custom-control-label::after { - background-color: #fff; - transform: translateX(0.75rem); } - .custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before { - background-color: rgba(58, 154, 191, 0.5); } - - .custom-select { - display: inline-block; - width: 100%; - height: calc(1.5em + 0.75rem + 2px); - padding: 0.375rem 1.75rem 0.375rem 0.75rem; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #495057; - vertical-align: middle; - background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px; - background-color: #fff; - border: 1px solid #ced4da; - border-radius: 0.25rem; - appearance: none; } - .custom-select:focus { - border-color: #99cce0; - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } - .custom-select:focus::-ms-value { - color: #495057; - background-color: #fff; } - .custom-select[multiple], .custom-select[size]:not([size="1"]) { - height: auto; - padding-right: 0.75rem; - background-image: none; } - .custom-select:disabled { - color: #6c757d; - background-color: #e9ecef; } - .custom-select::-ms-expand { - display: none; } - - .custom-select-sm { - height: calc(1.5em + 0.5rem + 2px); - padding-top: 0.25rem; - padding-bottom: 0.25rem; - padding-left: 0.5rem; - font-size: 0.875rem; } - - .custom-select-lg { - height: calc(1.5em + 1rem + 2px); - padding-top: 0.5rem; - padding-bottom: 0.5rem; - padding-left: 1rem; - font-size: 1.25rem; } - - .custom-file { - position: relative; - display: inline-block; - width: 100%; - height: calc(1.5em + 0.75rem + 2px); - margin-bottom: 0; } - - .custom-file-input { - position: relative; - z-index: 2; - width: 100%; - height: calc(1.5em + 0.75rem + 2px); - margin: 0; - opacity: 0; } - .custom-file-input:focus ~ .custom-file-label { - border-color: #99cce0; - box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } - .custom-file-input:disabled ~ .custom-file-label { - background-color: #e9ecef; } - .custom-file-input:lang(en) ~ .custom-file-label::after { - content: "Browse"; } - .custom-file-input ~ .custom-file-label[data-browse]::after { - content: attr(data-browse); } - - .custom-file-label { - position: absolute; - top: 0; - right: 0; - left: 0; - z-index: 1; - height: calc(1.5em + 0.75rem + 2px); - padding: 0.375rem 0.75rem; - font-weight: 400; - line-height: 1.5; - color: #495057; - background-color: #fff; - border: 1px solid #ced4da; - border-radius: 0.25rem; } - .custom-file-label::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - z-index: 3; - display: block; - height: calc(1.5em + 0.75rem); - padding: 0.375rem 0.75rem; - line-height: 1.5; - color: #495057; - content: "Browse"; - background-color: #e9ecef; - border-left: inherit; - border-radius: 0 0.25rem 0.25rem 0; } - - .custom-range { - width: 100%; - height: calc(1rem + 0.4rem); - padding: 0; - background-color: transparent; - appearance: none; } - .custom-range:focus { - outline: none; } - .custom-range:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } - .custom-range:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } - .custom-range:focus::-ms-thumb { - box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } - .custom-range::-moz-focus-outer { - border: 0; } - .custom-range::-webkit-slider-thumb { - width: 1rem; - height: 1rem; - margin-top: -0.25rem; - background-color: #3A9ABF; - border: 0; - border-radius: 1rem; - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - appearance: none; } - @media (prefers-reduced-motion: reduce) { - .custom-range::-webkit-slider-thumb { - transition: none; } } - .custom-range::-webkit-slider-thumb:active { - background-color: #c0e0ec; } - .custom-range::-webkit-slider-runnable-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: #dee2e6; - border-color: transparent; - border-radius: 1rem; } - .custom-range::-moz-range-thumb { - width: 1rem; - height: 1rem; - background-color: #3A9ABF; - border: 0; - border-radius: 1rem; - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - appearance: none; } - @media (prefers-reduced-motion: reduce) { - .custom-range::-moz-range-thumb { - transition: none; } } - .custom-range::-moz-range-thumb:active { - background-color: #c0e0ec; } - .custom-range::-moz-range-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: #dee2e6; - border-color: transparent; - border-radius: 1rem; } - .custom-range::-ms-thumb { - width: 1rem; - height: 1rem; - margin-top: 0; - margin-right: 0.2rem; - margin-left: 0.2rem; - background-color: #3A9ABF; - border: 0; - border-radius: 1rem; - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - appearance: none; } - @media (prefers-reduced-motion: reduce) { - .custom-range::-ms-thumb { - transition: none; } } - .custom-range::-ms-thumb:active { - background-color: #c0e0ec; } - .custom-range::-ms-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: transparent; - border-color: transparent; - border-width: 0.5rem; } - .custom-range::-ms-fill-lower { - background-color: #dee2e6; - border-radius: 1rem; } - .custom-range::-ms-fill-upper { - margin-right: 15px; - background-color: #dee2e6; - border-radius: 1rem; } - .custom-range:disabled::-webkit-slider-thumb { - background-color: #adb5bd; } - .custom-range:disabled::-webkit-slider-runnable-track { - cursor: default; } - .custom-range:disabled::-moz-range-thumb { - background-color: #adb5bd; } - .custom-range:disabled::-moz-range-track { - cursor: default; } - .custom-range:disabled::-ms-thumb { - background-color: #adb5bd; } - - .custom-control-label::before, - .custom-file-label, - .custom-select { - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .custom-control-label::before, - .custom-file-label, - .custom-select { - transition: none; } } - - .nav { - display: flex; - flex-wrap: wrap; - padding-left: 0; - margin-bottom: 0; - list-style: none; } - - .nav-link { - display: block; - padding: 0.5rem 1rem; } - .nav-link:hover, .nav-link:focus { - text-decoration: none; } - .nav-link.disabled { - color: #6c757d; - pointer-events: none; - cursor: default; } - - .nav-tabs { - border-bottom: 1px solid #dee2e6; } - .nav-tabs .nav-item { - margin-bottom: -1px; } - .nav-tabs .nav-link { - border: 1px solid transparent; - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; } - .nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { - border-color: #e9ecef #e9ecef #dee2e6; } - .nav-tabs .nav-link.disabled { - color: #6c757d; - background-color: transparent; - border-color: transparent; } - .nav-tabs .nav-link.active, - .nav-tabs .nav-item.show .nav-link { - color: #495057; - background-color: #fff; - border-color: #dee2e6 #dee2e6 #fff; } - .nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-left-radius: 0; - border-top-right-radius: 0; } - - .nav-pills .nav-link { - border-radius: 0.25rem; } - .nav-pills .nav-link.active, - .nav-pills .show > .nav-link { - color: #fff; - background-color: #3A9ABF; } - - .nav-fill .nav-item { - flex: 1 1 auto; - text-align: center; } - - .nav-justified .nav-item { - flex-basis: 0; - flex-grow: 1; - text-align: center; } - - .tab-content > .tab-pane { - display: none; } - .tab-content > .active { - display: block; } - - .navbar { - position: relative; - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: space-between; - padding: 0.5rem 1rem; } - .navbar > .container, - .navbar > .container-fluid { - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: space-between; } - - .navbar-brand { - display: inline-block; - padding-top: 0.3125rem; - padding-bottom: 0.3125rem; - margin-right: 1rem; - font-size: 1.25rem; - line-height: inherit; - white-space: nowrap; } - .navbar-brand:hover, .navbar-brand:focus { - text-decoration: none; } - - .navbar-nav { - display: flex; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; - list-style: none; } - .navbar-nav .nav-link { - padding-right: 0; - padding-left: 0; } - .navbar-nav .dropdown-menu { - position: static; - float: none; } - - .navbar-text { - display: inline-block; - padding-top: 0.5rem; - padding-bottom: 0.5rem; } - - .navbar-collapse { - flex-basis: 100%; - flex-grow: 1; - align-items: center; } - - .navbar-toggler { - padding: 0.25rem 0.75rem; - font-size: 1.25rem; - line-height: 1; - background-color: transparent; - border: 1px solid transparent; - border-radius: 0.25rem; } - .navbar-toggler:hover, .navbar-toggler:focus { - text-decoration: none; } - - .navbar-toggler-icon { - display: inline-block; - width: 1.5em; - height: 1.5em; - vertical-align: middle; - content: ""; - background: no-repeat center center; - background-size: 100% 100%; } - - @media (max-width: 575.98px) { - .navbar-expand-sm > .container, - .navbar-expand-sm > .container-fluid { - padding-right: 0; - padding-left: 0; } } - @media (min-width: 576px) { - .navbar-expand-sm { - flex-flow: row nowrap; - justify-content: flex-start; } - .navbar-expand-sm .navbar-nav { - flex-direction: row; } - .navbar-expand-sm .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-sm .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; } - .navbar-expand-sm > .container, - .navbar-expand-sm > .container-fluid { - flex-wrap: nowrap; } - .navbar-expand-sm .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand-sm .navbar-toggler { - display: none; } } - @media (max-width: 767.98px) { - .navbar-expand-md > .container, - .navbar-expand-md > .container-fluid { - padding-right: 0; - padding-left: 0; } } - @media (min-width: 768px) { - .navbar-expand-md { - flex-flow: row nowrap; - justify-content: flex-start; } - .navbar-expand-md .navbar-nav { - flex-direction: row; } - .navbar-expand-md .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-md .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; } - .navbar-expand-md > .container, - .navbar-expand-md > .container-fluid { - flex-wrap: nowrap; } - .navbar-expand-md .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand-md .navbar-toggler { - display: none; } } - @media (max-width: 991.98px) { - .navbar-expand-lg > .container, - .navbar-expand-lg > .container-fluid { - padding-right: 0; - padding-left: 0; } } - @media (min-width: 992px) { - .navbar-expand-lg { - flex-flow: row nowrap; - justify-content: flex-start; } - .navbar-expand-lg .navbar-nav { - flex-direction: row; } - .navbar-expand-lg .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-lg .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; } - .navbar-expand-lg > .container, - .navbar-expand-lg > .container-fluid { - flex-wrap: nowrap; } - .navbar-expand-lg .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand-lg .navbar-toggler { - display: none; } } - @media (max-width: 1199.98px) { - .navbar-expand-xl > .container, - .navbar-expand-xl > .container-fluid { - padding-right: 0; - padding-left: 0; } } - @media (min-width: 1200px) { - .navbar-expand-xl { - flex-flow: row nowrap; - justify-content: flex-start; } - .navbar-expand-xl .navbar-nav { - flex-direction: row; } - .navbar-expand-xl .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-xl .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; } - .navbar-expand-xl > .container, - .navbar-expand-xl > .container-fluid { - flex-wrap: nowrap; } - .navbar-expand-xl .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand-xl .navbar-toggler { - display: none; } } - .navbar-expand { - flex-flow: row nowrap; - justify-content: flex-start; } - .navbar-expand > .container, - .navbar-expand > .container-fluid { - padding-right: 0; - padding-left: 0; } - .navbar-expand .navbar-nav { - flex-direction: row; } - .navbar-expand .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; } - .navbar-expand > .container, - .navbar-expand > .container-fluid { - flex-wrap: nowrap; } - .navbar-expand .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand .navbar-toggler { - display: none; } - - .navbar-light .navbar-brand { - color: rgba(0, 0, 0, 0.9); } - .navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus { - color: rgba(0, 0, 0, 0.9); } - .navbar-light .navbar-nav .nav-link { - color: rgba(0, 0, 0, 0.5); } - .navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus { - color: rgba(0, 0, 0, 0.7); } - .navbar-light .navbar-nav .nav-link.disabled { - color: rgba(0, 0, 0, 0.3); } - .navbar-light .navbar-nav .show > .nav-link, - .navbar-light .navbar-nav .active > .nav-link, - .navbar-light .navbar-nav .nav-link.show, - .navbar-light .navbar-nav .nav-link.active { - color: rgba(0, 0, 0, 0.9); } - .navbar-light .navbar-toggler { - color: rgba(0, 0, 0, 0.5); - border-color: rgba(0, 0, 0, 0.1); } - .navbar-light .navbar-toggler-icon { - background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); } - .navbar-light .navbar-text { - color: rgba(0, 0, 0, 0.5); } - .navbar-light .navbar-text a { - color: rgba(0, 0, 0, 0.9); } - .navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus { - color: rgba(0, 0, 0, 0.9); } - - .navbar-dark .navbar-brand { - color: #fff; } - .navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus { - color: #fff; } - .navbar-dark .navbar-nav .nav-link { - color: rgba(255, 255, 255, 0.5); } - .navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus { - color: rgba(255, 255, 255, 0.75); } - .navbar-dark .navbar-nav .nav-link.disabled { - color: rgba(255, 255, 255, 0.25); } - .navbar-dark .navbar-nav .show > .nav-link, - .navbar-dark .navbar-nav .active > .nav-link, - .navbar-dark .navbar-nav .nav-link.show, - .navbar-dark .navbar-nav .nav-link.active { - color: #fff; } - .navbar-dark .navbar-toggler { - color: rgba(255, 255, 255, 0.5); - border-color: rgba(255, 255, 255, 0.1); } - .navbar-dark .navbar-toggler-icon { - background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); } - .navbar-dark .navbar-text { - color: rgba(255, 255, 255, 0.5); } - .navbar-dark .navbar-text a { - color: #fff; } - .navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus { - color: #fff; } - - .card { - position: relative; - display: flex; - flex-direction: column; - min-width: 0; - word-wrap: break-word; - background-color: #fff; - background-clip: border-box; - border: 1px solid rgba(0, 0, 0, 0.125); - border-radius: 0.25rem; } - .card > hr { - margin-right: 0; - margin-left: 0; } - .card > .list-group:first-child .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; } - .card > .list-group:last-child .list-group-item:last-child { - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; } - - .card-body { - flex: 1 1 auto; - padding: 1.25rem; } - - .card-title { - margin-bottom: 0.75rem; } - - .card-subtitle { - margin-top: -0.375rem; - margin-bottom: 0; } - - .card-text:last-child { - margin-bottom: 0; } - - .card-link:hover { - text-decoration: none; } - .card-link + .card-link { - margin-left: 1.25rem; } - - .card-header { - padding: 0.75rem 1.25rem; - margin-bottom: 0; - background-color: rgba(0, 0, 0, 0.03); - border-bottom: 1px solid rgba(0, 0, 0, 0.125); } - .card-header:first-child { - border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; } - .card-header + .list-group .list-group-item:first-child { - border-top: 0; } - - .card-footer { - padding: 0.75rem 1.25rem; - background-color: rgba(0, 0, 0, 0.03); - border-top: 1px solid rgba(0, 0, 0, 0.125); } - .card-footer:last-child { - border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px); } - - .card-header-tabs { - margin-right: -0.625rem; - margin-bottom: -0.75rem; - margin-left: -0.625rem; - border-bottom: 0; } - - .card-header-pills { - margin-right: -0.625rem; - margin-left: -0.625rem; } - - .card-img-overlay { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - padding: 1.25rem; } - - .card-img { - width: 100%; - border-radius: calc(0.25rem - 1px); } - - .card-img-top { - width: 100%; - border-top-left-radius: calc(0.25rem - 1px); - border-top-right-radius: calc(0.25rem - 1px); } - - .card-img-bottom { - width: 100%; - border-bottom-right-radius: calc(0.25rem - 1px); - border-bottom-left-radius: calc(0.25rem - 1px); } - - .card-deck { - display: flex; - flex-direction: column; } - .card-deck .card { - margin-bottom: 15px; } - @media (min-width: 576px) { - .card-deck { - flex-flow: row wrap; - margin-right: -15px; - margin-left: -15px; } - .card-deck .card { - display: flex; - flex: 1 0 0%; - flex-direction: column; - margin-right: 15px; - margin-bottom: 0; - margin-left: 15px; } } - - .card-group { - display: flex; - flex-direction: column; } - .card-group > .card { - margin-bottom: 15px; } - @media (min-width: 576px) { - .card-group { - flex-flow: row wrap; } - .card-group > .card { - flex: 1 0 0%; - margin-bottom: 0; } - .card-group > .card + .card { - margin-left: 0; - border-left: 0; } - .card-group > .card:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - .card-group > .card:not(:last-child) .card-img-top, - .card-group > .card:not(:last-child) .card-header { - border-top-right-radius: 0; } - .card-group > .card:not(:last-child) .card-img-bottom, - .card-group > .card:not(:last-child) .card-footer { - border-bottom-right-radius: 0; } - .card-group > .card:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - .card-group > .card:not(:first-child) .card-img-top, - .card-group > .card:not(:first-child) .card-header { - border-top-left-radius: 0; } - .card-group > .card:not(:first-child) .card-img-bottom, - .card-group > .card:not(:first-child) .card-footer { - border-bottom-left-radius: 0; } } - - .card-columns .card { - margin-bottom: 0.75rem; } - @media (min-width: 576px) { - .card-columns { - column-count: 3; - column-gap: 1.25rem; - orphans: 1; - widows: 1; } - .card-columns .card { - display: inline-block; - width: 100%; } } - - .accordion > .card { - overflow: hidden; } - .accordion > .card:not(:first-of-type) .card-header:first-child { - border-radius: 0; } - .accordion > .card:not(:first-of-type):not(:last-of-type) { - border-bottom: 0; - border-radius: 0; } - .accordion > .card:first-of-type { - border-bottom: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; } - .accordion > .card:last-of-type { - border-top-left-radius: 0; - border-top-right-radius: 0; } - .accordion > .card .card-header { - margin-bottom: -1px; } - - .breadcrumb { - display: flex; - flex-wrap: wrap; - padding: 0.75rem 1rem; - margin-bottom: 1rem; - list-style: none; - background-color: #e9ecef; - border-radius: 0.25rem; } - - .breadcrumb-item + .breadcrumb-item { - padding-left: 0.5rem; } - .breadcrumb-item + .breadcrumb-item::before { - display: inline-block; - padding-right: 0.5rem; - color: #6c757d; - content: "/"; } - .breadcrumb-item + .breadcrumb-item:hover::before { - text-decoration: underline; } - .breadcrumb-item + .breadcrumb-item:hover::before { - text-decoration: none; } - .breadcrumb-item.active { - color: #6c757d; } - - .pagination { - display: flex; - padding-left: 0; - list-style: none; - border-radius: 0.25rem; } - - .page-link { - position: relative; - display: block; - padding: 0.5rem 0.75rem; - margin-left: -1px; - line-height: 1.25; - color: #3A9ABF; - background-color: #fff; - border: 1px solid #dee2e6; } - .page-link:hover { - z-index: 2; - color: #286b84; - text-decoration: none; - background-color: #e9ecef; - border-color: #dee2e6; } - .page-link:focus { - z-index: 2; - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } - - .page-item:first-child .page-link { - margin-left: 0; - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; } - .page-item:last-child .page-link { - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; } - .page-item.active .page-link { - z-index: 1; - color: #fff; - background-color: #3A9ABF; - border-color: #3A9ABF; } - .page-item.disabled .page-link { - color: #6c757d; - pointer-events: none; - cursor: auto; - background-color: #fff; - border-color: #dee2e6; } - - .pagination-lg .page-link { - padding: 0.75rem 1.5rem; - font-size: 1.25rem; - line-height: 1.5; } - .pagination-lg .page-item:first-child .page-link { - border-top-left-radius: 0.3rem; - border-bottom-left-radius: 0.3rem; } - .pagination-lg .page-item:last-child .page-link { - border-top-right-radius: 0.3rem; - border-bottom-right-radius: 0.3rem; } - - .pagination-sm .page-link { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; } - .pagination-sm .page-item:first-child .page-link { - border-top-left-radius: 0.2rem; - border-bottom-left-radius: 0.2rem; } - .pagination-sm .page-item:last-child .page-link { - border-top-right-radius: 0.2rem; - border-bottom-right-radius: 0.2rem; } - - .badge { - display: inline-block; - padding: 0.25em 0.4em; - font-size: 75%; - font-weight: 700; - line-height: 1; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: 0.25rem; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .badge { - transition: none; } } - a.badge:hover, a.badge:focus { - text-decoration: none; } - .badge:empty { - display: none; } - - .btn .badge { - position: relative; - top: -1px; } - - .badge-pill { - padding-right: 0.6em; - padding-left: 0.6em; - border-radius: 10rem; } - - .badge-primary { - color: #fff; - background-color: #3A9ABF; } - a.badge-primary:hover, a.badge-primary:focus { - color: #fff; - background-color: #2e7a98; } - a.badge-primary:focus, a.badge-primary.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.5); } - - .badge-secondary { - color: #fff; - background-color: #6C757D; } - a.badge-secondary:hover, a.badge-secondary:focus { - color: #fff; - background-color: #545b62; } - a.badge-secondary:focus, a.badge-secondary.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); } - - .badge-success { - color: #212529; - background-color: #75CC39; } - a.badge-success:hover, a.badge-success:focus { - color: #212529; - background-color: #5ea72b; } - a.badge-success:focus, a.badge-success.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.5); } - - .badge-info { - color: #fff; - background-color: #17a2b8; } - a.badge-info:hover, a.badge-info:focus { - color: #fff; - background-color: #117a8b; } - a.badge-info:focus, a.badge-info.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } - - .badge-warning { - color: #212529; - background-color: #FDC02E; } - a.badge-warning:hover, a.badge-warning:focus { - color: #212529; - background-color: #f6ae02; } - a.badge-warning:focus, a.badge-warning.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(253, 192, 46, 0.5); } - - .badge-danger { - color: #fff; - background-color: #D93749; } - a.badge-danger:hover, a.badge-danger:focus { - color: #fff; - background-color: #ba2334; } - a.badge-danger:focus, a.badge-danger.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.5); } - - .badge-light { - color: #212529; - background-color: #f8f9fa; } - a.badge-light:hover, a.badge-light:focus { - color: #212529; - background-color: #dae0e5; } - a.badge-light:focus, a.badge-light.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); } - - .badge-dark { - color: #fff; - background-color: #343a40; } - a.badge-dark:hover, a.badge-dark:focus { - color: #fff; - background-color: #1d2124; } - a.badge-dark:focus, a.badge-dark.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); } - - .jumbotron { - padding: 2rem 1rem; - margin-bottom: 2rem; - background-color: #e9ecef; - border-radius: 0.3rem; } - @media (min-width: 576px) { - .jumbotron { - padding: 4rem 2rem; } } - - .jumbotron-fluid { - padding-right: 0; - padding-left: 0; - border-radius: 0; } - - .alert { - position: relative; - padding: 0.75rem 1.25rem; - margin-bottom: 1rem; - border: 1px solid transparent; - border-radius: 0.25rem; } - - .alert-heading { - color: inherit; } - - .alert-link { - font-weight: 700; } - - .alert-dismissible { - padding-right: 4rem; } - .alert-dismissible .close { - position: absolute; - top: 0; - right: 0; - padding: 0.75rem 1.25rem; - color: inherit; } - - .alert-primary { - color: #1e5063; - background-color: #d8ebf2; - border-color: #c8e3ed; } - .alert-primary hr { - border-top-color: #b5d9e7; } - .alert-primary .alert-link { - color: #12303c; } - - .alert-secondary { - color: #383d41; - background-color: #e2e3e5; - border-color: #d6d8db; } - .alert-secondary hr { - border-top-color: #c8cbcf; } - .alert-secondary .alert-link { - color: #202326; } - - .alert-success { - color: #3d6a1e; - background-color: #e3f5d7; - border-color: #d8f1c8; } - .alert-success hr { - border-top-color: #caecb4; } - .alert-success .alert-link { - color: #264213; } - - .alert-info { - color: #0c5460; - background-color: #d1ecf1; - border-color: #bee5eb; } - .alert-info hr { - border-top-color: #abdde5; } - .alert-info .alert-link { - color: #062c33; } - - .alert-warning { - color: #846418; - background-color: #fff2d5; - border-color: #feedc4; } - .alert-warning hr { - border-top-color: #fee5ab; } - .alert-warning .alert-link { - color: #594310; } - - .alert-danger { - color: #711d26; - background-color: #f7d7db; - border-color: #f4c7cc; } - .alert-danger hr { - border-top-color: #f0b2b9; } - .alert-danger .alert-link { - color: #481318; } - - .alert-light { - color: #818182; - background-color: #fefefe; - border-color: #fdfdfe; } - .alert-light hr { - border-top-color: #ececf6; } - .alert-light .alert-link { - color: #686868; } - - .alert-dark { - color: #1b1e21; - background-color: #d6d8d9; - border-color: #c6c8ca; } - .alert-dark hr { - border-top-color: #b9bbbe; } - .alert-dark .alert-link { - color: #040505; } - - @keyframes progress-bar-stripes { - from { - background-position: 1rem 0; } - to { - background-position: 0 0; } } - .progress { - display: flex; - height: 1rem; - overflow: hidden; - font-size: 0.75rem; - background-color: #e9ecef; - border-radius: 0.25rem; } - - .progress-bar { - display: flex; - flex-direction: column; - justify-content: center; - color: #fff; - text-align: center; - white-space: nowrap; - background-color: #3A9ABF; - transition: width 0.6s ease; } - @media (prefers-reduced-motion: reduce) { - .progress-bar { - transition: none; } } - - .progress-bar-striped { - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-size: 1rem 1rem; } - - .progress-bar-animated { - animation: progress-bar-stripes 1s linear infinite; } - @media (prefers-reduced-motion: reduce) { - .progress-bar-animated { - animation: none; } } - - .media { - display: flex; - align-items: flex-start; } - - .media-body { - flex: 1; } - - .list-group { - display: flex; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; } - - .list-group-item-action { - width: 100%; - color: #495057; - text-align: inherit; } - .list-group-item-action:hover, .list-group-item-action:focus { - z-index: 1; - color: #495057; - text-decoration: none; - background-color: #f8f9fa; } - .list-group-item-action:active { - color: #212529; - background-color: #e9ecef; } - - .list-group-item { - position: relative; - display: block; - padding: 0.25rem 0.5rem; - margin-bottom: -1px; - background-color: #fff; - border: 1px solid rgba(0, 0, 0, 0.125); } - .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; } - .list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; } - .list-group-item.disabled, .list-group-item:disabled { - color: #6c757d; - pointer-events: none; - background-color: #fff; } - .list-group-item.active { - z-index: 2; - color: #fff; - background-color: #3A9ABF; - border-color: #3A9ABF; } - - .list-group-horizontal { - flex-direction: row; } - .list-group-horizontal .list-group-item { - margin-right: -1px; - margin-bottom: 0; } - .list-group-horizontal .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; } - .list-group-horizontal .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0; } - - @media (min-width: 576px) { - .list-group-horizontal-sm { - flex-direction: row; } - .list-group-horizontal-sm .list-group-item { - margin-right: -1px; - margin-bottom: 0; } - .list-group-horizontal-sm .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; } - .list-group-horizontal-sm .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0; } } - @media (min-width: 768px) { - .list-group-horizontal-md { - flex-direction: row; } - .list-group-horizontal-md .list-group-item { - margin-right: -1px; - margin-bottom: 0; } - .list-group-horizontal-md .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; } - .list-group-horizontal-md .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0; } } - @media (min-width: 992px) { - .list-group-horizontal-lg { - flex-direction: row; } - .list-group-horizontal-lg .list-group-item { - margin-right: -1px; - margin-bottom: 0; } - .list-group-horizontal-lg .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; } - .list-group-horizontal-lg .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0; } } - @media (min-width: 1200px) { - .list-group-horizontal-xl { - flex-direction: row; } - .list-group-horizontal-xl .list-group-item { - margin-right: -1px; - margin-bottom: 0; } - .list-group-horizontal-xl .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; } - .list-group-horizontal-xl .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0; } } - .list-group-flush .list-group-item { - border-right: 0; - border-left: 0; - border-radius: 0; } - .list-group-flush .list-group-item:last-child { - margin-bottom: -1px; } - .list-group-flush:first-child .list-group-item:first-child { - border-top: 0; } - .list-group-flush:last-child .list-group-item:last-child { - margin-bottom: 0; - border-bottom: 0; } - - .list-group-item-primary { - color: #1e5063; - background-color: #c8e3ed; } - .list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { - color: #1e5063; - background-color: #b5d9e7; } - .list-group-item-primary.list-group-item-action.active { - color: #fff; - background-color: #1e5063; - border-color: #1e5063; } - - .list-group-item-secondary { - color: #383d41; - background-color: #d6d8db; } - .list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { - color: #383d41; - background-color: #c8cbcf; } - .list-group-item-secondary.list-group-item-action.active { - color: #fff; - background-color: #383d41; - border-color: #383d41; } - - .list-group-item-success { - color: #3d6a1e; - background-color: #d8f1c8; } - .list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { - color: #3d6a1e; - background-color: #caecb4; } - .list-group-item-success.list-group-item-action.active { - color: #fff; - background-color: #3d6a1e; - border-color: #3d6a1e; } - - .list-group-item-info { - color: #0c5460; - background-color: #bee5eb; } - .list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { - color: #0c5460; - background-color: #abdde5; } - .list-group-item-info.list-group-item-action.active { - color: #fff; - background-color: #0c5460; - border-color: #0c5460; } - - .list-group-item-warning { - color: #846418; - background-color: #feedc4; } - .list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { - color: #846418; - background-color: #fee5ab; } - .list-group-item-warning.list-group-item-action.active { - color: #fff; - background-color: #846418; - border-color: #846418; } - - .list-group-item-danger { - color: #711d26; - background-color: #f4c7cc; } - .list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { - color: #711d26; - background-color: #f0b2b9; } - .list-group-item-danger.list-group-item-action.active { - color: #fff; - background-color: #711d26; - border-color: #711d26; } - - .list-group-item-light { - color: #818182; - background-color: #fdfdfe; } - .list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { - color: #818182; - background-color: #ececf6; } - .list-group-item-light.list-group-item-action.active { - color: #fff; - background-color: #818182; - border-color: #818182; } - - .list-group-item-dark { - color: #1b1e21; - background-color: #c6c8ca; } - .list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { - color: #1b1e21; - background-color: #b9bbbe; } - .list-group-item-dark.list-group-item-action.active { - color: #fff; - background-color: #1b1e21; - border-color: #1b1e21; } - - .close { - float: right; - font-size: 1.5rem; - font-weight: 700; - line-height: 1; - color: #000; - text-shadow: 0 1px 0 #fff; - opacity: .5; } - .close:hover { - color: #000; - text-decoration: none; } - .close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus { - opacity: .75; } - - button.close { - padding: 0; - background-color: transparent; - border: 0; - appearance: none; } - - a.close.disabled { - pointer-events: none; } - - .toast { - max-width: 350px; - overflow: hidden; - font-size: 0.875rem; - background-color: rgba(255, 255, 255, 0.85); - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.1); - box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1); - backdrop-filter: blur(10px); - opacity: 0; - border-radius: 0.25rem; } - .toast:not(:last-child) { - margin-bottom: 0.75rem; } - .toast.showing { - opacity: 1; } - .toast.show { - display: block; - opacity: 1; } - .toast.hide { - display: none; } - - .toast-header { - display: flex; - align-items: center; - padding: 0.25rem 0.75rem; - color: #6c757d; - background-color: rgba(255, 255, 255, 0.85); - background-clip: padding-box; - border-bottom: 1px solid rgba(0, 0, 0, 0.05); } - - .toast-body { - padding: 0.75rem; } - - .modal-open { - overflow: hidden; } - .modal-open .modal { - overflow-x: hidden; - overflow-y: auto; } - - .modal { - position: fixed; - top: 0; - left: 0; - z-index: 1050; - display: none; - width: 100%; - height: 100%; - overflow: hidden; - outline: 0; } - - .modal-dialog { - position: relative; - width: auto; - margin: 0.5rem; - pointer-events: none; } - .modal.fade .modal-dialog { - transition: transform 0.3s ease-out; - transform: translate(0, -50px); } - @media (prefers-reduced-motion: reduce) { - .modal.fade .modal-dialog { - transition: none; } } - .modal.show .modal-dialog { - transform: none; } - - .modal-dialog-scrollable { - display: flex; - max-height: calc(100% - 1rem); } - .modal-dialog-scrollable .modal-content { - max-height: calc(100vh - 1rem); - overflow: hidden; } - .modal-dialog-scrollable .modal-header, - .modal-dialog-scrollable .modal-footer { - flex-shrink: 0; } - .modal-dialog-scrollable .modal-body { - overflow-y: auto; } - - .modal-dialog-centered { - display: flex; - align-items: center; - min-height: calc(100% - 1rem); } - .modal-dialog-centered::before { - display: block; - height: calc(100vh - 1rem); - content: ""; } - .modal-dialog-centered.modal-dialog-scrollable { - flex-direction: column; - justify-content: center; - height: 100%; } - .modal-dialog-centered.modal-dialog-scrollable .modal-content { - max-height: none; } - .modal-dialog-centered.modal-dialog-scrollable::before { - content: none; } - - .modal-content { - position: relative; - display: flex; - flex-direction: column; - width: 100%; - pointer-events: auto; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 0.3rem; - outline: 0; } - - .modal-backdrop { - position: fixed; - top: 0; - left: 0; - z-index: 1040; - width: 100vw; - height: 100vh; - background-color: #000; } - .modal-backdrop.fade { - opacity: 0; } - .modal-backdrop.show { - opacity: 0.5; } - - .modal-header { - display: flex; - align-items: flex-start; - justify-content: space-between; - padding: 1rem 1rem; - border-bottom: 1px solid #dee2e6; - border-top-left-radius: 0.3rem; - border-top-right-radius: 0.3rem; } - .modal-header .close { - padding: 1rem 1rem; - margin: -1rem -1rem -1rem auto; } - - .modal-title { - margin-bottom: 0; - line-height: 1.5; } - - .modal-body { - position: relative; - flex: 1 1 auto; - padding: 1rem; } - - .modal-footer { - display: flex; - align-items: center; - justify-content: flex-end; - padding: 1rem; - border-top: 1px solid #dee2e6; - border-bottom-right-radius: 0.3rem; - border-bottom-left-radius: 0.3rem; } - .modal-footer > :not(:first-child) { - margin-left: .25rem; } - .modal-footer > :not(:last-child) { - margin-right: .25rem; } - - .modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; } - - @media (min-width: 576px) { - .modal-dialog { - max-width: 500px; - margin: 1.75rem auto; } - - .modal-dialog-scrollable { - max-height: calc(100% - 3.5rem); } - .modal-dialog-scrollable .modal-content { - max-height: calc(100vh - 3.5rem); } - - .modal-dialog-centered { - min-height: calc(100% - 3.5rem); } - .modal-dialog-centered::before { - height: calc(100vh - 3.5rem); } - - .modal-sm { - max-width: 300px; } } - @media (min-width: 992px) { - .modal-lg, - .modal-xl { - max-width: 800px; } } - @media (min-width: 1200px) { - .modal-xl { - max-width: 1140px; } } - .tooltip { - position: absolute; - z-index: 1070; - display: block; - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - font-style: normal; - font-weight: 400; - line-height: 1.5; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - white-space: normal; - line-break: auto; - font-size: 0.875rem; - word-wrap: break-word; - opacity: 0; } - .tooltip.show { - opacity: 0.9; } - .tooltip .arrow { - position: absolute; - display: block; - width: 0.8rem; - height: 0.4rem; } - .tooltip .arrow::before { - position: absolute; - content: ""; - border-color: transparent; - border-style: solid; } - - .bs-tooltip-top, .bs-tooltip-auto[x-placement^="top"] { - padding: 0.4rem 0; } - .bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^="top"] .arrow { - bottom: 0; } - .bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^="top"] .arrow::before { - top: 0; - border-width: 0.4rem 0.4rem 0; - border-top-color: #000; } - - .bs-tooltip-right, .bs-tooltip-auto[x-placement^="right"] { - padding: 0 0.4rem; } - .bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^="right"] .arrow { - left: 0; - width: 0.4rem; - height: 0.8rem; } - .bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^="right"] .arrow::before { - right: 0; - border-width: 0.4rem 0.4rem 0.4rem 0; - border-right-color: #000; } - - .bs-tooltip-bottom, .bs-tooltip-auto[x-placement^="bottom"] { - padding: 0.4rem 0; } - .bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^="bottom"] .arrow { - top: 0; } - .bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^="bottom"] .arrow::before { - bottom: 0; - border-width: 0 0.4rem 0.4rem; - border-bottom-color: #000; } - - .bs-tooltip-left, .bs-tooltip-auto[x-placement^="left"] { - padding: 0 0.4rem; } - .bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^="left"] .arrow { - right: 0; - width: 0.4rem; - height: 0.8rem; } - .bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^="left"] .arrow::before { - left: 0; - border-width: 0.4rem 0 0.4rem 0.4rem; - border-left-color: #000; } - - .tooltip-inner { - max-width: 200px; - padding: 0.25rem 0.5rem; - color: #fff; - text-align: center; - background-color: #000; - border-radius: 0.25rem; } - - .popover { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: block; - max-width: 276px; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - font-style: normal; - font-weight: 400; - line-height: 1.5; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - white-space: normal; - line-break: auto; - font-size: 0.875rem; - word-wrap: break-word; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 0.3rem; } - .popover .arrow { - position: absolute; - display: block; - width: 1rem; - height: 0.5rem; - margin: 0 0.3rem; } - .popover .arrow::before, .popover .arrow::after { - position: absolute; - display: block; - content: ""; - border-color: transparent; - border-style: solid; } - - .bs-popover-top, .bs-popover-auto[x-placement^="top"] { - margin-bottom: 0.5rem; } - .bs-popover-top > .arrow, .bs-popover-auto[x-placement^="top"] > .arrow { - bottom: calc((0.5rem + 1px) * -1); } - .bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^="top"] > .arrow::before { - bottom: 0; - border-width: 0.5rem 0.5rem 0; - border-top-color: rgba(0, 0, 0, 0.25); } - .bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^="top"] > .arrow::after { - bottom: 1px; - border-width: 0.5rem 0.5rem 0; - border-top-color: #fff; } - - .bs-popover-right, .bs-popover-auto[x-placement^="right"] { - margin-left: 0.5rem; } - .bs-popover-right > .arrow, .bs-popover-auto[x-placement^="right"] > .arrow { - left: calc((0.5rem + 1px) * -1); - width: 0.5rem; - height: 1rem; - margin: 0.3rem 0; } - .bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^="right"] > .arrow::before { - left: 0; - border-width: 0.5rem 0.5rem 0.5rem 0; - border-right-color: rgba(0, 0, 0, 0.25); } - .bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^="right"] > .arrow::after { - left: 1px; - border-width: 0.5rem 0.5rem 0.5rem 0; - border-right-color: #fff; } - - .bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"] { - margin-top: 0.5rem; } - .bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^="bottom"] > .arrow { - top: calc((0.5rem + 1px) * -1); } - .bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^="bottom"] > .arrow::before { - top: 0; - border-width: 0 0.5rem 0.5rem 0.5rem; - border-bottom-color: rgba(0, 0, 0, 0.25); } - .bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^="bottom"] > .arrow::after { - top: 1px; - border-width: 0 0.5rem 0.5rem 0.5rem; - border-bottom-color: #fff; } - .bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^="bottom"] .popover-header::before { - position: absolute; - top: 0; - left: 50%; - display: block; - width: 1rem; - margin-left: -0.5rem; - content: ""; - border-bottom: 1px solid #f7f7f7; } - - .bs-popover-left, .bs-popover-auto[x-placement^="left"] { - margin-right: 0.5rem; } - .bs-popover-left > .arrow, .bs-popover-auto[x-placement^="left"] > .arrow { - right: calc((0.5rem + 1px) * -1); - width: 0.5rem; - height: 1rem; - margin: 0.3rem 0; } - .bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^="left"] > .arrow::before { - right: 0; - border-width: 0.5rem 0 0.5rem 0.5rem; - border-left-color: rgba(0, 0, 0, 0.25); } - .bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^="left"] > .arrow::after { - right: 1px; - border-width: 0.5rem 0 0.5rem 0.5rem; - border-left-color: #fff; } - - .popover-header { - padding: 0.5rem 0.75rem; - margin-bottom: 0; - font-size: 1rem; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-top-left-radius: calc(0.3rem - 1px); - border-top-right-radius: calc(0.3rem - 1px); } - .popover-header:empty { - display: none; } - - .popover-body { - padding: 0.5rem 0.75rem; - color: #212529; } - - .carousel { - position: relative; } - - .carousel.pointer-event { - touch-action: pan-y; } - - .carousel-inner { - position: relative; - width: 100%; - overflow: hidden; } - .carousel-inner::after { - display: block; - clear: both; - content: ""; } - - .carousel-item { - position: relative; - display: none; - float: left; - width: 100%; - margin-right: -100%; - backface-visibility: hidden; - transition: transform 0.6s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .carousel-item { - transition: none; } } - - .carousel-item.active, - .carousel-item-next, - .carousel-item-prev { - display: block; } - - .carousel-item-next:not(.carousel-item-left), - .active.carousel-item-right { - transform: translateX(100%); } - - .carousel-item-prev:not(.carousel-item-right), - .active.carousel-item-left { - transform: translateX(-100%); } - - .carousel-fade .carousel-item { - opacity: 0; - transition-property: opacity; - transform: none; } - .carousel-fade .carousel-item.active, - .carousel-fade .carousel-item-next.carousel-item-left, - .carousel-fade .carousel-item-prev.carousel-item-right { - z-index: 1; - opacity: 1; } - .carousel-fade .active.carousel-item-left, - .carousel-fade .active.carousel-item-right { - z-index: 0; - opacity: 0; - transition: 0s 0.6s opacity; } - @media (prefers-reduced-motion: reduce) { - .carousel-fade .active.carousel-item-left, - .carousel-fade .active.carousel-item-right { - transition: none; } } - - .carousel-control-prev, - .carousel-control-next { - position: absolute; - top: 0; - bottom: 0; - z-index: 1; - display: flex; - align-items: center; - justify-content: center; - width: 15%; - color: #fff; - text-align: center; - opacity: 0.5; - transition: opacity 0.15s ease; } - @media (prefers-reduced-motion: reduce) { - .carousel-control-prev, - .carousel-control-next { - transition: none; } } - .carousel-control-prev:hover, .carousel-control-prev:focus, - .carousel-control-next:hover, - .carousel-control-next:focus { - color: #fff; - text-decoration: none; - outline: 0; - opacity: 0.9; } - - .carousel-control-prev { - left: 0; } - - .carousel-control-next { - right: 0; } - - .carousel-control-prev-icon, - .carousel-control-next-icon { - display: inline-block; - width: 20px; - height: 20px; - background: no-repeat 50% / 100% 100%; } - - .carousel-control-prev-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e"); } - - .carousel-control-next-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e"); } - - .carousel-indicators { - position: absolute; - right: 0; - bottom: 0; - left: 0; - z-index: 15; - display: flex; - justify-content: center; - padding-left: 0; - margin-right: 15%; - margin-left: 15%; - list-style: none; } - .carousel-indicators li { - box-sizing: content-box; - flex: 0 1 auto; - width: 30px; - height: 3px; - margin-right: 3px; - margin-left: 3px; - text-indent: -999px; - cursor: pointer; - background-color: #fff; - background-clip: padding-box; - border-top: 10px solid transparent; - border-bottom: 10px solid transparent; - opacity: .5; - transition: opacity 0.6s ease; } - @media (prefers-reduced-motion: reduce) { - .carousel-indicators li { - transition: none; } } - .carousel-indicators .active { - opacity: 1; } - - .carousel-caption { - position: absolute; - right: 15%; - bottom: 20px; - left: 15%; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #fff; - text-align: center; } - - @keyframes spinner-border { - to { - transform: rotate(360deg); } } - .spinner-border { - display: inline-block; - width: 2rem; - height: 2rem; - vertical-align: text-bottom; - border: 0.25em solid currentColor; - border-right-color: transparent; - border-radius: 50%; - animation: spinner-border .75s linear infinite; } - - .spinner-border-sm { - width: 1rem; - height: 1rem; - border-width: 0.2em; } - - @keyframes spinner-grow { - 0% { - transform: scale(0); } - 50% { - opacity: 1; } } - .spinner-grow { - display: inline-block; - width: 2rem; - height: 2rem; - vertical-align: text-bottom; - background-color: currentColor; - border-radius: 50%; - opacity: 0; - animation: spinner-grow .75s linear infinite; } - - .spinner-grow-sm { - width: 1rem; - height: 1rem; } - - .align-baseline { - vertical-align: baseline !important; } - - .align-top { - vertical-align: top !important; } - - .align-middle { - vertical-align: middle !important; } - - .align-bottom { - vertical-align: bottom !important; } - - .align-text-bottom { - vertical-align: text-bottom !important; } - - .align-text-top { - vertical-align: text-top !important; } - - .bg-primary { - background-color: #3A9ABF !important; } - - a.bg-primary:hover, a.bg-primary:focus, - button.bg-primary:hover, - button.bg-primary:focus { - background-color: #2e7a98 !important; } - - .bg-secondary { - background-color: #6C757D !important; } - - a.bg-secondary:hover, a.bg-secondary:focus, - button.bg-secondary:hover, - button.bg-secondary:focus { - background-color: #545b62 !important; } - - .bg-success { - background-color: #75CC39 !important; } - - a.bg-success:hover, a.bg-success:focus, - button.bg-success:hover, - button.bg-success:focus { - background-color: #5ea72b !important; } - - .bg-info { - background-color: #17a2b8 !important; } - - a.bg-info:hover, a.bg-info:focus, - button.bg-info:hover, - button.bg-info:focus { - background-color: #117a8b !important; } - - .bg-warning { - background-color: #FDC02E !important; } - - a.bg-warning:hover, a.bg-warning:focus, - button.bg-warning:hover, - button.bg-warning:focus { - background-color: #f6ae02 !important; } - - .bg-danger { - background-color: #D93749 !important; } - - a.bg-danger:hover, a.bg-danger:focus, - button.bg-danger:hover, - button.bg-danger:focus { - background-color: #ba2334 !important; } - - .bg-light { - background-color: #f8f9fa !important; } - - a.bg-light:hover, a.bg-light:focus, - button.bg-light:hover, - button.bg-light:focus { - background-color: #dae0e5 !important; } - - .bg-dark { - background-color: #343a40 !important; } - - a.bg-dark:hover, a.bg-dark:focus, - button.bg-dark:hover, - button.bg-dark:focus { - background-color: #1d2124 !important; } - - .bg-white { - background-color: #fff !important; } - - .bg-transparent { - background-color: transparent !important; } - - .border { - border: 1px solid #dee2e6 !important; } - - .border-top { - border-top: 1px solid #dee2e6 !important; } - - .border-right { - border-right: 1px solid #dee2e6 !important; } - - .border-bottom { - border-bottom: 1px solid #dee2e6 !important; } - - .border-left { - border-left: 1px solid #dee2e6 !important; } - - .border-0 { - border: 0 !important; } - - .border-top-0 { - border-top: 0 !important; } - - .border-right-0 { - border-right: 0 !important; } - - .border-bottom-0 { - border-bottom: 0 !important; } - - .border-left-0 { - border-left: 0 !important; } - - .border-primary { - border-color: #3A9ABF !important; } - - .border-secondary { - border-color: #6C757D !important; } - - .border-success { - border-color: #75CC39 !important; } - - .border-info { - border-color: #17a2b8 !important; } - - .border-warning { - border-color: #FDC02E !important; } - - .border-danger { - border-color: #D93749 !important; } - - .border-light { - border-color: #f8f9fa !important; } - - .border-dark { - border-color: #343a40 !important; } - - .border-white { - border-color: #fff !important; } - - .rounded-sm { - border-radius: 0.2rem !important; } - - .rounded { - border-radius: 0.25rem !important; } - - .rounded-top { - border-top-left-radius: 0.25rem !important; - border-top-right-radius: 0.25rem !important; } - - .rounded-right { - border-top-right-radius: 0.25rem !important; - border-bottom-right-radius: 0.25rem !important; } - - .rounded-bottom { - border-bottom-right-radius: 0.25rem !important; - border-bottom-left-radius: 0.25rem !important; } - - .rounded-left { - border-top-left-radius: 0.25rem !important; - border-bottom-left-radius: 0.25rem !important; } - - .rounded-lg { - border-radius: 0.3rem !important; } - - .rounded-circle { - border-radius: 50% !important; } - - .rounded-pill { - border-radius: 50rem !important; } - - .rounded-0 { - border-radius: 0 !important; } - - .clearfix::after { - display: block; - clear: both; - content: ""; } - - .d-none { - display: none !important; } - - .d-inline { - display: inline !important; } - - .d-inline-block { - display: inline-block !important; } - - .d-block { - display: block !important; } - - .d-table { - display: table !important; } - - .d-table-row { - display: table-row !important; } - - .d-table-cell { - display: table-cell !important; } - - .d-flex { - display: flex !important; } - - .d-inline-flex { - display: inline-flex !important; } - - @media (min-width: 576px) { - .d-sm-none { - display: none !important; } - - .d-sm-inline { - display: inline !important; } - - .d-sm-inline-block { - display: inline-block !important; } - - .d-sm-block { - display: block !important; } - - .d-sm-table { - display: table !important; } - - .d-sm-table-row { - display: table-row !important; } - - .d-sm-table-cell { - display: table-cell !important; } - - .d-sm-flex { - display: flex !important; } - - .d-sm-inline-flex { - display: inline-flex !important; } } - @media (min-width: 768px) { - .d-md-none { - display: none !important; } - - .d-md-inline { - display: inline !important; } - - .d-md-inline-block { - display: inline-block !important; } - - .d-md-block { - display: block !important; } - - .d-md-table { - display: table !important; } - - .d-md-table-row { - display: table-row !important; } - - .d-md-table-cell { - display: table-cell !important; } - - .d-md-flex { - display: flex !important; } - - .d-md-inline-flex { - display: inline-flex !important; } } - @media (min-width: 992px) { - .d-lg-none { - display: none !important; } - - .d-lg-inline { - display: inline !important; } - - .d-lg-inline-block { - display: inline-block !important; } - - .d-lg-block { - display: block !important; } - - .d-lg-table { - display: table !important; } - - .d-lg-table-row { - display: table-row !important; } - - .d-lg-table-cell { - display: table-cell !important; } - - .d-lg-flex { - display: flex !important; } - - .d-lg-inline-flex { - display: inline-flex !important; } } - @media (min-width: 1200px) { - .d-xl-none { - display: none !important; } - - .d-xl-inline { - display: inline !important; } - - .d-xl-inline-block { - display: inline-block !important; } - - .d-xl-block { - display: block !important; } - - .d-xl-table { - display: table !important; } - - .d-xl-table-row { - display: table-row !important; } - - .d-xl-table-cell { - display: table-cell !important; } - - .d-xl-flex { - display: flex !important; } - - .d-xl-inline-flex { - display: inline-flex !important; } } - @media print { - .d-print-none { - display: none !important; } - - .d-print-inline { - display: inline !important; } - - .d-print-inline-block { - display: inline-block !important; } - - .d-print-block { - display: block !important; } - - .d-print-table { - display: table !important; } - - .d-print-table-row { - display: table-row !important; } - - .d-print-table-cell { - display: table-cell !important; } - - .d-print-flex { - display: flex !important; } - - .d-print-inline-flex { - display: inline-flex !important; } } - .embed-responsive { - position: relative; - display: block; - width: 100%; - padding: 0; - overflow: hidden; } - .embed-responsive::before { - display: block; - content: ""; } - .embed-responsive .embed-responsive-item, - .embed-responsive iframe, - .embed-responsive embed, - .embed-responsive object, - .embed-responsive video { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 100%; - height: 100%; - border: 0; } - - .embed-responsive-21by9::before { - padding-top: 42.8571428571%; } - - .embed-responsive-16by9::before { - padding-top: 56.25%; } - - .embed-responsive-4by3::before { - padding-top: 75%; } - - .embed-responsive-1by1::before { - padding-top: 100%; } - - .flex-row { - flex-direction: row !important; } - - .flex-column { - flex-direction: column !important; } - - .flex-row-reverse { - flex-direction: row-reverse !important; } - - .flex-column-reverse { - flex-direction: column-reverse !important; } - - .flex-wrap { - flex-wrap: wrap !important; } - - .flex-nowrap { - flex-wrap: nowrap !important; } - - .flex-wrap-reverse { - flex-wrap: wrap-reverse !important; } - - .flex-fill { - flex: 1 1 auto !important; } - - .flex-grow-0 { - flex-grow: 0 !important; } - - .flex-grow-1 { - flex-grow: 1 !important; } - - .flex-shrink-0 { - flex-shrink: 0 !important; } - - .flex-shrink-1 { - flex-shrink: 1 !important; } - - .justify-content-start { - justify-content: flex-start !important; } - - .justify-content-end { - justify-content: flex-end !important; } - - .justify-content-center { - justify-content: center !important; } - - .justify-content-between { - justify-content: space-between !important; } - - .justify-content-around { - justify-content: space-around !important; } - - .align-items-start { - align-items: flex-start !important; } - - .align-items-end { - align-items: flex-end !important; } - - .align-items-center { - align-items: center !important; } - - .align-items-baseline { - align-items: baseline !important; } - - .align-items-stretch { - align-items: stretch !important; } - - .align-content-start { - align-content: flex-start !important; } - - .align-content-end { - align-content: flex-end !important; } - - .align-content-center { - align-content: center !important; } - - .align-content-between { - align-content: space-between !important; } - - .align-content-around { - align-content: space-around !important; } - - .align-content-stretch { - align-content: stretch !important; } - - .align-self-auto { - align-self: auto !important; } - - .align-self-start { - align-self: flex-start !important; } - - .align-self-end { - align-self: flex-end !important; } - - .align-self-center { - align-self: center !important; } - - .align-self-baseline { - align-self: baseline !important; } - - .align-self-stretch { - align-self: stretch !important; } - - @media (min-width: 576px) { - .flex-sm-row { - flex-direction: row !important; } - - .flex-sm-column { - flex-direction: column !important; } - - .flex-sm-row-reverse { - flex-direction: row-reverse !important; } - - .flex-sm-column-reverse { - flex-direction: column-reverse !important; } - - .flex-sm-wrap { - flex-wrap: wrap !important; } - - .flex-sm-nowrap { - flex-wrap: nowrap !important; } - - .flex-sm-wrap-reverse { - flex-wrap: wrap-reverse !important; } - - .flex-sm-fill { - flex: 1 1 auto !important; } - - .flex-sm-grow-0 { - flex-grow: 0 !important; } - - .flex-sm-grow-1 { - flex-grow: 1 !important; } - - .flex-sm-shrink-0 { - flex-shrink: 0 !important; } - - .flex-sm-shrink-1 { - flex-shrink: 1 !important; } - - .justify-content-sm-start { - justify-content: flex-start !important; } - - .justify-content-sm-end { - justify-content: flex-end !important; } - - .justify-content-sm-center { - justify-content: center !important; } - - .justify-content-sm-between { - justify-content: space-between !important; } - - .justify-content-sm-around { - justify-content: space-around !important; } - - .align-items-sm-start { - align-items: flex-start !important; } - - .align-items-sm-end { - align-items: flex-end !important; } - - .align-items-sm-center { - align-items: center !important; } - - .align-items-sm-baseline { - align-items: baseline !important; } - - .align-items-sm-stretch { - align-items: stretch !important; } - - .align-content-sm-start { - align-content: flex-start !important; } - - .align-content-sm-end { - align-content: flex-end !important; } - - .align-content-sm-center { - align-content: center !important; } - - .align-content-sm-between { - align-content: space-between !important; } - - .align-content-sm-around { - align-content: space-around !important; } - - .align-content-sm-stretch { - align-content: stretch !important; } - - .align-self-sm-auto { - align-self: auto !important; } - - .align-self-sm-start { - align-self: flex-start !important; } - - .align-self-sm-end { - align-self: flex-end !important; } - - .align-self-sm-center { - align-self: center !important; } - - .align-self-sm-baseline { - align-self: baseline !important; } - - .align-self-sm-stretch { - align-self: stretch !important; } } - @media (min-width: 768px) { - .flex-md-row { - flex-direction: row !important; } - - .flex-md-column { - flex-direction: column !important; } - - .flex-md-row-reverse { - flex-direction: row-reverse !important; } - - .flex-md-column-reverse { - flex-direction: column-reverse !important; } - - .flex-md-wrap { - flex-wrap: wrap !important; } - - .flex-md-nowrap { - flex-wrap: nowrap !important; } - - .flex-md-wrap-reverse { - flex-wrap: wrap-reverse !important; } - - .flex-md-fill { - flex: 1 1 auto !important; } - - .flex-md-grow-0 { - flex-grow: 0 !important; } - - .flex-md-grow-1 { - flex-grow: 1 !important; } - - .flex-md-shrink-0 { - flex-shrink: 0 !important; } - - .flex-md-shrink-1 { - flex-shrink: 1 !important; } - - .justify-content-md-start { - justify-content: flex-start !important; } - - .justify-content-md-end { - justify-content: flex-end !important; } - - .justify-content-md-center { - justify-content: center !important; } - - .justify-content-md-between { - justify-content: space-between !important; } - - .justify-content-md-around { - justify-content: space-around !important; } - - .align-items-md-start { - align-items: flex-start !important; } - - .align-items-md-end { - align-items: flex-end !important; } - - .align-items-md-center { - align-items: center !important; } - - .align-items-md-baseline { - align-items: baseline !important; } - - .align-items-md-stretch { - align-items: stretch !important; } - - .align-content-md-start { - align-content: flex-start !important; } - - .align-content-md-end { - align-content: flex-end !important; } - - .align-content-md-center { - align-content: center !important; } - - .align-content-md-between { - align-content: space-between !important; } - - .align-content-md-around { - align-content: space-around !important; } - - .align-content-md-stretch { - align-content: stretch !important; } - - .align-self-md-auto { - align-self: auto !important; } - - .align-self-md-start { - align-self: flex-start !important; } - - .align-self-md-end { - align-self: flex-end !important; } - - .align-self-md-center { - align-self: center !important; } - - .align-self-md-baseline { - align-self: baseline !important; } - - .align-self-md-stretch { - align-self: stretch !important; } } - @media (min-width: 992px) { - .flex-lg-row { - flex-direction: row !important; } - - .flex-lg-column { - flex-direction: column !important; } - - .flex-lg-row-reverse { - flex-direction: row-reverse !important; } - - .flex-lg-column-reverse { - flex-direction: column-reverse !important; } - - .flex-lg-wrap { - flex-wrap: wrap !important; } - - .flex-lg-nowrap { - flex-wrap: nowrap !important; } - - .flex-lg-wrap-reverse { - flex-wrap: wrap-reverse !important; } - - .flex-lg-fill { - flex: 1 1 auto !important; } - - .flex-lg-grow-0 { - flex-grow: 0 !important; } - - .flex-lg-grow-1 { - flex-grow: 1 !important; } - - .flex-lg-shrink-0 { - flex-shrink: 0 !important; } - - .flex-lg-shrink-1 { - flex-shrink: 1 !important; } - - .justify-content-lg-start { - justify-content: flex-start !important; } - - .justify-content-lg-end { - justify-content: flex-end !important; } - - .justify-content-lg-center { - justify-content: center !important; } - - .justify-content-lg-between { - justify-content: space-between !important; } - - .justify-content-lg-around { - justify-content: space-around !important; } - - .align-items-lg-start { - align-items: flex-start !important; } - - .align-items-lg-end { - align-items: flex-end !important; } - - .align-items-lg-center { - align-items: center !important; } - - .align-items-lg-baseline { - align-items: baseline !important; } - - .align-items-lg-stretch { - align-items: stretch !important; } - - .align-content-lg-start { - align-content: flex-start !important; } - - .align-content-lg-end { - align-content: flex-end !important; } - - .align-content-lg-center { - align-content: center !important; } - - .align-content-lg-between { - align-content: space-between !important; } - - .align-content-lg-around { - align-content: space-around !important; } - - .align-content-lg-stretch { - align-content: stretch !important; } - - .align-self-lg-auto { - align-self: auto !important; } - - .align-self-lg-start { - align-self: flex-start !important; } - - .align-self-lg-end { - align-self: flex-end !important; } - - .align-self-lg-center { - align-self: center !important; } - - .align-self-lg-baseline { - align-self: baseline !important; } - - .align-self-lg-stretch { - align-self: stretch !important; } } - @media (min-width: 1200px) { - .flex-xl-row { - flex-direction: row !important; } - - .flex-xl-column { - flex-direction: column !important; } - - .flex-xl-row-reverse { - flex-direction: row-reverse !important; } - - .flex-xl-column-reverse { - flex-direction: column-reverse !important; } - - .flex-xl-wrap { - flex-wrap: wrap !important; } - - .flex-xl-nowrap { - flex-wrap: nowrap !important; } - - .flex-xl-wrap-reverse { - flex-wrap: wrap-reverse !important; } - - .flex-xl-fill { - flex: 1 1 auto !important; } - - .flex-xl-grow-0 { - flex-grow: 0 !important; } - - .flex-xl-grow-1 { - flex-grow: 1 !important; } - - .flex-xl-shrink-0 { - flex-shrink: 0 !important; } - - .flex-xl-shrink-1 { - flex-shrink: 1 !important; } - - .justify-content-xl-start { - justify-content: flex-start !important; } - - .justify-content-xl-end { - justify-content: flex-end !important; } - - .justify-content-xl-center { - justify-content: center !important; } - - .justify-content-xl-between { - justify-content: space-between !important; } - - .justify-content-xl-around { - justify-content: space-around !important; } - - .align-items-xl-start { - align-items: flex-start !important; } - - .align-items-xl-end { - align-items: flex-end !important; } - - .align-items-xl-center { - align-items: center !important; } - - .align-items-xl-baseline { - align-items: baseline !important; } - - .align-items-xl-stretch { - align-items: stretch !important; } - - .align-content-xl-start { - align-content: flex-start !important; } - - .align-content-xl-end { - align-content: flex-end !important; } - - .align-content-xl-center { - align-content: center !important; } - - .align-content-xl-between { - align-content: space-between !important; } - - .align-content-xl-around { - align-content: space-around !important; } - - .align-content-xl-stretch { - align-content: stretch !important; } - - .align-self-xl-auto { - align-self: auto !important; } - - .align-self-xl-start { - align-self: flex-start !important; } - - .align-self-xl-end { - align-self: flex-end !important; } - - .align-self-xl-center { - align-self: center !important; } - - .align-self-xl-baseline { - align-self: baseline !important; } - - .align-self-xl-stretch { - align-self: stretch !important; } } - .float-left { - float: left !important; } - - .float-right { - float: right !important; } - - .float-none { - float: none !important; } - - @media (min-width: 576px) { - .float-sm-left { - float: left !important; } - - .float-sm-right { - float: right !important; } - - .float-sm-none { - float: none !important; } } - @media (min-width: 768px) { - .float-md-left { - float: left !important; } - - .float-md-right { - float: right !important; } - - .float-md-none { - float: none !important; } } - @media (min-width: 992px) { - .float-lg-left { - float: left !important; } - - .float-lg-right { - float: right !important; } - - .float-lg-none { - float: none !important; } } - @media (min-width: 1200px) { - .float-xl-left { - float: left !important; } - - .float-xl-right { - float: right !important; } - - .float-xl-none { - float: none !important; } } - .overflow-auto { - overflow: auto !important; } - - .overflow-hidden { - overflow: hidden !important; } - - .position-static { - position: static !important; } - - .position-relative { - position: relative !important; } - - .position-absolute { - position: absolute !important; } - - .position-fixed { - position: fixed !important; } - - .position-sticky { - position: sticky !important; } - - .fixed-top { - position: fixed; - top: 0; - right: 0; - left: 0; - z-index: 1030; } - - .fixed-bottom { - position: fixed; - right: 0; - bottom: 0; - left: 0; - z-index: 1030; } - - @supports (position: sticky) { - .sticky-top { - position: sticky; - top: 0; - z-index: 1020; } } - - .sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border: 0; } - - .sr-only-focusable:active, .sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - overflow: visible; - clip: auto; - white-space: normal; } - - .shadow-sm { - box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; } - - .shadow { - box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; } - - .shadow-lg { - box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; } - - .shadow-none { - box-shadow: none !important; } - - .w-25 { - width: 25% !important; } - - .w-50 { - width: 50% !important; } - - .w-75 { - width: 75% !important; } - - .w-100 { - width: 100% !important; } - - .w-auto { - width: auto !important; } - - .h-25 { - height: 25% !important; } - - .h-50 { - height: 50% !important; } - - .h-75 { - height: 75% !important; } - - .h-100 { - height: 100% !important; } - - .h-auto { - height: auto !important; } - - .mw-100 { - max-width: 100% !important; } - - .mh-100 { - max-height: 100% !important; } - - .min-vw-100 { - min-width: 100vw !important; } - - .min-vh-100 { - min-height: 100vh !important; } - - .vw-100 { - width: 100vw !important; } - - .vh-100 { - height: 100vh !important; } - - .stretched-link::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1; - pointer-events: auto; - content: ""; - background-color: rgba(0, 0, 0, 0); } - - .m-0 { - margin: 0 !important; } - - .mt-0, - .my-0 { - margin-top: 0 !important; } - - .mr-0, - .mx-0 { - margin-right: 0 !important; } - - .mb-0, - .my-0 { - margin-bottom: 0 !important; } - - .ml-0, - .mx-0 { - margin-left: 0 !important; } - - .m-1 { - margin: 0.25rem !important; } - - .mt-1, - .my-1 { - margin-top: 0.25rem !important; } - - .mr-1, - .mx-1 { - margin-right: 0.25rem !important; } - - .mb-1, - .my-1 { - margin-bottom: 0.25rem !important; } - - .ml-1, - .mx-1 { - margin-left: 0.25rem !important; } - - .m-2 { - margin: 0.5rem !important; } - - .mt-2, - .my-2 { - margin-top: 0.5rem !important; } - - .mr-2, - .mx-2 { - margin-right: 0.5rem !important; } - - .mb-2, - .my-2 { - margin-bottom: 0.5rem !important; } - - .ml-2, - .mx-2 { - margin-left: 0.5rem !important; } - - .m-3 { - margin: 1rem !important; } - - .mt-3, - .my-3 { - margin-top: 1rem !important; } - - .mr-3, - .mx-3 { - margin-right: 1rem !important; } - - .mb-3, - .my-3 { - margin-bottom: 1rem !important; } - - .ml-3, - .mx-3 { - margin-left: 1rem !important; } - - .m-4 { - margin: 1.5rem !important; } - - .mt-4, - .my-4 { - margin-top: 1.5rem !important; } - - .mr-4, - .mx-4 { - margin-right: 1.5rem !important; } - - .mb-4, - .my-4 { - margin-bottom: 1.5rem !important; } - - .ml-4, - .mx-4 { - margin-left: 1.5rem !important; } - - .m-5 { - margin: 3rem !important; } - - .mt-5, - .my-5 { - margin-top: 3rem !important; } - - .mr-5, - .mx-5 { - margin-right: 3rem !important; } - - .mb-5, - .my-5 { - margin-bottom: 3rem !important; } - - .ml-5, - .mx-5 { - margin-left: 3rem !important; } - - .p-0 { - padding: 0 !important; } - - .pt-0, - .py-0 { - padding-top: 0 !important; } - - .pr-0, - .px-0 { - padding-right: 0 !important; } - - .pb-0, - .py-0 { - padding-bottom: 0 !important; } - - .pl-0, - .px-0 { - padding-left: 0 !important; } - - .p-1 { - padding: 0.25rem !important; } - - .pt-1, - .py-1 { - padding-top: 0.25rem !important; } - - .pr-1, - .px-1 { - padding-right: 0.25rem !important; } - - .pb-1, - .py-1 { - padding-bottom: 0.25rem !important; } - - .pl-1, - .px-1 { - padding-left: 0.25rem !important; } - - .p-2 { - padding: 0.5rem !important; } - - .pt-2, - .py-2 { - padding-top: 0.5rem !important; } - - .pr-2, - .px-2 { - padding-right: 0.5rem !important; } - - .pb-2, - .py-2 { - padding-bottom: 0.5rem !important; } - - .pl-2, - .px-2 { - padding-left: 0.5rem !important; } - - .p-3 { - padding: 1rem !important; } - - .pt-3, - .py-3 { - padding-top: 1rem !important; } - - .pr-3, - .px-3 { - padding-right: 1rem !important; } - - .pb-3, - .py-3 { - padding-bottom: 1rem !important; } - - .pl-3, - .px-3 { - padding-left: 1rem !important; } - - .p-4 { - padding: 1.5rem !important; } - - .pt-4, - .py-4 { - padding-top: 1.5rem !important; } - - .pr-4, - .px-4 { - padding-right: 1.5rem !important; } - - .pb-4, - .py-4 { - padding-bottom: 1.5rem !important; } - - .pl-4, - .px-4 { - padding-left: 1.5rem !important; } - - .p-5 { - padding: 3rem !important; } - - .pt-5, - .py-5 { - padding-top: 3rem !important; } - - .pr-5, - .px-5 { - padding-right: 3rem !important; } - - .pb-5, - .py-5 { - padding-bottom: 3rem !important; } - - .pl-5, - .px-5 { - padding-left: 3rem !important; } - - .m-n1 { - margin: -0.25rem !important; } - - .mt-n1, - .my-n1 { - margin-top: -0.25rem !important; } - - .mr-n1, - .mx-n1 { - margin-right: -0.25rem !important; } - - .mb-n1, - .my-n1 { - margin-bottom: -0.25rem !important; } - - .ml-n1, - .mx-n1 { - margin-left: -0.25rem !important; } - - .m-n2 { - margin: -0.5rem !important; } - - .mt-n2, - .my-n2 { - margin-top: -0.5rem !important; } - - .mr-n2, - .mx-n2 { - margin-right: -0.5rem !important; } - - .mb-n2, - .my-n2 { - margin-bottom: -0.5rem !important; } - - .ml-n2, - .mx-n2 { - margin-left: -0.5rem !important; } - - .m-n3 { - margin: -1rem !important; } - - .mt-n3, - .my-n3 { - margin-top: -1rem !important; } - - .mr-n3, - .mx-n3 { - margin-right: -1rem !important; } - - .mb-n3, - .my-n3 { - margin-bottom: -1rem !important; } - - .ml-n3, - .mx-n3 { - margin-left: -1rem !important; } - - .m-n4 { - margin: -1.5rem !important; } - - .mt-n4, - .my-n4 { - margin-top: -1.5rem !important; } - - .mr-n4, - .mx-n4 { - margin-right: -1.5rem !important; } - - .mb-n4, - .my-n4 { - margin-bottom: -1.5rem !important; } - - .ml-n4, - .mx-n4 { - margin-left: -1.5rem !important; } - - .m-n5 { - margin: -3rem !important; } - - .mt-n5, - .my-n5 { - margin-top: -3rem !important; } - - .mr-n5, - .mx-n5 { - margin-right: -3rem !important; } - - .mb-n5, - .my-n5 { - margin-bottom: -3rem !important; } - - .ml-n5, - .mx-n5 { - margin-left: -3rem !important; } - - .m-auto { - margin: auto !important; } - - .mt-auto, - .my-auto { - margin-top: auto !important; } - - .mr-auto, - .mx-auto { - margin-right: auto !important; } - - .mb-auto, - .my-auto { - margin-bottom: auto !important; } - - .ml-auto, - .mx-auto { - margin-left: auto !important; } - - @media (min-width: 576px) { - .m-sm-0 { - margin: 0 !important; } - - .mt-sm-0, - .my-sm-0 { - margin-top: 0 !important; } - - .mr-sm-0, - .mx-sm-0 { - margin-right: 0 !important; } - - .mb-sm-0, - .my-sm-0 { - margin-bottom: 0 !important; } - - .ml-sm-0, - .mx-sm-0 { - margin-left: 0 !important; } - - .m-sm-1 { - margin: 0.25rem !important; } - - .mt-sm-1, - .my-sm-1 { - margin-top: 0.25rem !important; } - - .mr-sm-1, - .mx-sm-1 { - margin-right: 0.25rem !important; } - - .mb-sm-1, - .my-sm-1 { - margin-bottom: 0.25rem !important; } - - .ml-sm-1, - .mx-sm-1 { - margin-left: 0.25rem !important; } - - .m-sm-2 { - margin: 0.5rem !important; } - - .mt-sm-2, - .my-sm-2 { - margin-top: 0.5rem !important; } - - .mr-sm-2, - .mx-sm-2 { - margin-right: 0.5rem !important; } - - .mb-sm-2, - .my-sm-2 { - margin-bottom: 0.5rem !important; } - - .ml-sm-2, - .mx-sm-2 { - margin-left: 0.5rem !important; } - - .m-sm-3 { - margin: 1rem !important; } - - .mt-sm-3, - .my-sm-3 { - margin-top: 1rem !important; } - - .mr-sm-3, - .mx-sm-3 { - margin-right: 1rem !important; } - - .mb-sm-3, - .my-sm-3 { - margin-bottom: 1rem !important; } - - .ml-sm-3, - .mx-sm-3 { - margin-left: 1rem !important; } - - .m-sm-4 { - margin: 1.5rem !important; } - - .mt-sm-4, - .my-sm-4 { - margin-top: 1.5rem !important; } - - .mr-sm-4, - .mx-sm-4 { - margin-right: 1.5rem !important; } - - .mb-sm-4, - .my-sm-4 { - margin-bottom: 1.5rem !important; } - - .ml-sm-4, - .mx-sm-4 { - margin-left: 1.5rem !important; } - - .m-sm-5 { - margin: 3rem !important; } - - .mt-sm-5, - .my-sm-5 { - margin-top: 3rem !important; } - - .mr-sm-5, - .mx-sm-5 { - margin-right: 3rem !important; } - - .mb-sm-5, - .my-sm-5 { - margin-bottom: 3rem !important; } - - .ml-sm-5, - .mx-sm-5 { - margin-left: 3rem !important; } - - .p-sm-0 { - padding: 0 !important; } - - .pt-sm-0, - .py-sm-0 { - padding-top: 0 !important; } - - .pr-sm-0, - .px-sm-0 { - padding-right: 0 !important; } - - .pb-sm-0, - .py-sm-0 { - padding-bottom: 0 !important; } - - .pl-sm-0, - .px-sm-0 { - padding-left: 0 !important; } - - .p-sm-1 { - padding: 0.25rem !important; } - - .pt-sm-1, - .py-sm-1 { - padding-top: 0.25rem !important; } - - .pr-sm-1, - .px-sm-1 { - padding-right: 0.25rem !important; } - - .pb-sm-1, - .py-sm-1 { - padding-bottom: 0.25rem !important; } - - .pl-sm-1, - .px-sm-1 { - padding-left: 0.25rem !important; } - - .p-sm-2 { - padding: 0.5rem !important; } - - .pt-sm-2, - .py-sm-2 { - padding-top: 0.5rem !important; } - - .pr-sm-2, - .px-sm-2 { - padding-right: 0.5rem !important; } - - .pb-sm-2, - .py-sm-2 { - padding-bottom: 0.5rem !important; } - - .pl-sm-2, - .px-sm-2 { - padding-left: 0.5rem !important; } - - .p-sm-3 { - padding: 1rem !important; } - - .pt-sm-3, - .py-sm-3 { - padding-top: 1rem !important; } - - .pr-sm-3, - .px-sm-3 { - padding-right: 1rem !important; } - - .pb-sm-3, - .py-sm-3 { - padding-bottom: 1rem !important; } - - .pl-sm-3, - .px-sm-3 { - padding-left: 1rem !important; } - - .p-sm-4 { - padding: 1.5rem !important; } - - .pt-sm-4, - .py-sm-4 { - padding-top: 1.5rem !important; } - - .pr-sm-4, - .px-sm-4 { - padding-right: 1.5rem !important; } - - .pb-sm-4, - .py-sm-4 { - padding-bottom: 1.5rem !important; } - - .pl-sm-4, - .px-sm-4 { - padding-left: 1.5rem !important; } - - .p-sm-5 { - padding: 3rem !important; } - - .pt-sm-5, - .py-sm-5 { - padding-top: 3rem !important; } - - .pr-sm-5, - .px-sm-5 { - padding-right: 3rem !important; } - - .pb-sm-5, - .py-sm-5 { - padding-bottom: 3rem !important; } - - .pl-sm-5, - .px-sm-5 { - padding-left: 3rem !important; } - - .m-sm-n1 { - margin: -0.25rem !important; } - - .mt-sm-n1, - .my-sm-n1 { - margin-top: -0.25rem !important; } - - .mr-sm-n1, - .mx-sm-n1 { - margin-right: -0.25rem !important; } - - .mb-sm-n1, - .my-sm-n1 { - margin-bottom: -0.25rem !important; } - - .ml-sm-n1, - .mx-sm-n1 { - margin-left: -0.25rem !important; } - - .m-sm-n2 { - margin: -0.5rem !important; } - - .mt-sm-n2, - .my-sm-n2 { - margin-top: -0.5rem !important; } - - .mr-sm-n2, - .mx-sm-n2 { - margin-right: -0.5rem !important; } - - .mb-sm-n2, - .my-sm-n2 { - margin-bottom: -0.5rem !important; } - - .ml-sm-n2, - .mx-sm-n2 { - margin-left: -0.5rem !important; } - - .m-sm-n3 { - margin: -1rem !important; } - - .mt-sm-n3, - .my-sm-n3 { - margin-top: -1rem !important; } - - .mr-sm-n3, - .mx-sm-n3 { - margin-right: -1rem !important; } - - .mb-sm-n3, - .my-sm-n3 { - margin-bottom: -1rem !important; } - - .ml-sm-n3, - .mx-sm-n3 { - margin-left: -1rem !important; } - - .m-sm-n4 { - margin: -1.5rem !important; } - - .mt-sm-n4, - .my-sm-n4 { - margin-top: -1.5rem !important; } - - .mr-sm-n4, - .mx-sm-n4 { - margin-right: -1.5rem !important; } - - .mb-sm-n4, - .my-sm-n4 { - margin-bottom: -1.5rem !important; } - - .ml-sm-n4, - .mx-sm-n4 { - margin-left: -1.5rem !important; } - - .m-sm-n5 { - margin: -3rem !important; } - - .mt-sm-n5, - .my-sm-n5 { - margin-top: -3rem !important; } - - .mr-sm-n5, - .mx-sm-n5 { - margin-right: -3rem !important; } - - .mb-sm-n5, - .my-sm-n5 { - margin-bottom: -3rem !important; } - - .ml-sm-n5, - .mx-sm-n5 { - margin-left: -3rem !important; } - - .m-sm-auto { - margin: auto !important; } - - .mt-sm-auto, - .my-sm-auto { - margin-top: auto !important; } - - .mr-sm-auto, - .mx-sm-auto { - margin-right: auto !important; } - - .mb-sm-auto, - .my-sm-auto { - margin-bottom: auto !important; } - - .ml-sm-auto, - .mx-sm-auto { - margin-left: auto !important; } } - @media (min-width: 768px) { - .m-md-0 { - margin: 0 !important; } - - .mt-md-0, - .my-md-0 { - margin-top: 0 !important; } - - .mr-md-0, - .mx-md-0 { - margin-right: 0 !important; } - - .mb-md-0, - .my-md-0 { - margin-bottom: 0 !important; } - - .ml-md-0, - .mx-md-0 { - margin-left: 0 !important; } - - .m-md-1 { - margin: 0.25rem !important; } - - .mt-md-1, - .my-md-1 { - margin-top: 0.25rem !important; } - - .mr-md-1, - .mx-md-1 { - margin-right: 0.25rem !important; } - - .mb-md-1, - .my-md-1 { - margin-bottom: 0.25rem !important; } - - .ml-md-1, - .mx-md-1 { - margin-left: 0.25rem !important; } - - .m-md-2 { - margin: 0.5rem !important; } - - .mt-md-2, - .my-md-2 { - margin-top: 0.5rem !important; } - - .mr-md-2, - .mx-md-2 { - margin-right: 0.5rem !important; } - - .mb-md-2, - .my-md-2 { - margin-bottom: 0.5rem !important; } - - .ml-md-2, - .mx-md-2 { - margin-left: 0.5rem !important; } - - .m-md-3 { - margin: 1rem !important; } - - .mt-md-3, - .my-md-3 { - margin-top: 1rem !important; } - - .mr-md-3, - .mx-md-3 { - margin-right: 1rem !important; } - - .mb-md-3, - .my-md-3 { - margin-bottom: 1rem !important; } - - .ml-md-3, - .mx-md-3 { - margin-left: 1rem !important; } - - .m-md-4 { - margin: 1.5rem !important; } - - .mt-md-4, - .my-md-4 { - margin-top: 1.5rem !important; } - - .mr-md-4, - .mx-md-4 { - margin-right: 1.5rem !important; } - - .mb-md-4, - .my-md-4 { - margin-bottom: 1.5rem !important; } - - .ml-md-4, - .mx-md-4 { - margin-left: 1.5rem !important; } - - .m-md-5 { - margin: 3rem !important; } - - .mt-md-5, - .my-md-5 { - margin-top: 3rem !important; } - - .mr-md-5, - .mx-md-5 { - margin-right: 3rem !important; } - - .mb-md-5, - .my-md-5 { - margin-bottom: 3rem !important; } - - .ml-md-5, - .mx-md-5 { - margin-left: 3rem !important; } - - .p-md-0 { - padding: 0 !important; } - - .pt-md-0, - .py-md-0 { - padding-top: 0 !important; } - - .pr-md-0, - .px-md-0 { - padding-right: 0 !important; } - - .pb-md-0, - .py-md-0 { - padding-bottom: 0 !important; } - - .pl-md-0, - .px-md-0 { - padding-left: 0 !important; } - - .p-md-1 { - padding: 0.25rem !important; } - - .pt-md-1, - .py-md-1 { - padding-top: 0.25rem !important; } - - .pr-md-1, - .px-md-1 { - padding-right: 0.25rem !important; } - - .pb-md-1, - .py-md-1 { - padding-bottom: 0.25rem !important; } - - .pl-md-1, - .px-md-1 { - padding-left: 0.25rem !important; } - - .p-md-2 { - padding: 0.5rem !important; } - - .pt-md-2, - .py-md-2 { - padding-top: 0.5rem !important; } - - .pr-md-2, - .px-md-2 { - padding-right: 0.5rem !important; } - - .pb-md-2, - .py-md-2 { - padding-bottom: 0.5rem !important; } - - .pl-md-2, - .px-md-2 { - padding-left: 0.5rem !important; } - - .p-md-3 { - padding: 1rem !important; } - - .pt-md-3, - .py-md-3 { - padding-top: 1rem !important; } - - .pr-md-3, - .px-md-3 { - padding-right: 1rem !important; } - - .pb-md-3, - .py-md-3 { - padding-bottom: 1rem !important; } - - .pl-md-3, - .px-md-3 { - padding-left: 1rem !important; } - - .p-md-4 { - padding: 1.5rem !important; } - - .pt-md-4, - .py-md-4 { - padding-top: 1.5rem !important; } - - .pr-md-4, - .px-md-4 { - padding-right: 1.5rem !important; } - - .pb-md-4, - .py-md-4 { - padding-bottom: 1.5rem !important; } - - .pl-md-4, - .px-md-4 { - padding-left: 1.5rem !important; } - - .p-md-5 { - padding: 3rem !important; } - - .pt-md-5, - .py-md-5 { - padding-top: 3rem !important; } - - .pr-md-5, - .px-md-5 { - padding-right: 3rem !important; } - - .pb-md-5, - .py-md-5 { - padding-bottom: 3rem !important; } - - .pl-md-5, - .px-md-5 { - padding-left: 3rem !important; } - - .m-md-n1 { - margin: -0.25rem !important; } - - .mt-md-n1, - .my-md-n1 { - margin-top: -0.25rem !important; } - - .mr-md-n1, - .mx-md-n1 { - margin-right: -0.25rem !important; } - - .mb-md-n1, - .my-md-n1 { - margin-bottom: -0.25rem !important; } - - .ml-md-n1, - .mx-md-n1 { - margin-left: -0.25rem !important; } - - .m-md-n2 { - margin: -0.5rem !important; } - - .mt-md-n2, - .my-md-n2 { - margin-top: -0.5rem !important; } - - .mr-md-n2, - .mx-md-n2 { - margin-right: -0.5rem !important; } - - .mb-md-n2, - .my-md-n2 { - margin-bottom: -0.5rem !important; } - - .ml-md-n2, - .mx-md-n2 { - margin-left: -0.5rem !important; } - - .m-md-n3 { - margin: -1rem !important; } - - .mt-md-n3, - .my-md-n3 { - margin-top: -1rem !important; } - - .mr-md-n3, - .mx-md-n3 { - margin-right: -1rem !important; } - - .mb-md-n3, - .my-md-n3 { - margin-bottom: -1rem !important; } - - .ml-md-n3, - .mx-md-n3 { - margin-left: -1rem !important; } - - .m-md-n4 { - margin: -1.5rem !important; } - - .mt-md-n4, - .my-md-n4 { - margin-top: -1.5rem !important; } - - .mr-md-n4, - .mx-md-n4 { - margin-right: -1.5rem !important; } - - .mb-md-n4, - .my-md-n4 { - margin-bottom: -1.5rem !important; } - - .ml-md-n4, - .mx-md-n4 { - margin-left: -1.5rem !important; } - - .m-md-n5 { - margin: -3rem !important; } - - .mt-md-n5, - .my-md-n5 { - margin-top: -3rem !important; } - - .mr-md-n5, - .mx-md-n5 { - margin-right: -3rem !important; } - - .mb-md-n5, - .my-md-n5 { - margin-bottom: -3rem !important; } - - .ml-md-n5, - .mx-md-n5 { - margin-left: -3rem !important; } - - .m-md-auto { - margin: auto !important; } - - .mt-md-auto, - .my-md-auto { - margin-top: auto !important; } - - .mr-md-auto, - .mx-md-auto { - margin-right: auto !important; } - - .mb-md-auto, - .my-md-auto { - margin-bottom: auto !important; } - - .ml-md-auto, - .mx-md-auto { - margin-left: auto !important; } } - @media (min-width: 992px) { - .m-lg-0 { - margin: 0 !important; } - - .mt-lg-0, - .my-lg-0 { - margin-top: 0 !important; } - - .mr-lg-0, - .mx-lg-0 { - margin-right: 0 !important; } - - .mb-lg-0, - .my-lg-0 { - margin-bottom: 0 !important; } - - .ml-lg-0, - .mx-lg-0 { - margin-left: 0 !important; } - - .m-lg-1 { - margin: 0.25rem !important; } - - .mt-lg-1, - .my-lg-1 { - margin-top: 0.25rem !important; } - - .mr-lg-1, - .mx-lg-1 { - margin-right: 0.25rem !important; } - - .mb-lg-1, - .my-lg-1 { - margin-bottom: 0.25rem !important; } - - .ml-lg-1, - .mx-lg-1 { - margin-left: 0.25rem !important; } - - .m-lg-2 { - margin: 0.5rem !important; } - - .mt-lg-2, - .my-lg-2 { - margin-top: 0.5rem !important; } - - .mr-lg-2, - .mx-lg-2 { - margin-right: 0.5rem !important; } - - .mb-lg-2, - .my-lg-2 { - margin-bottom: 0.5rem !important; } - - .ml-lg-2, - .mx-lg-2 { - margin-left: 0.5rem !important; } - - .m-lg-3 { - margin: 1rem !important; } - - .mt-lg-3, - .my-lg-3 { - margin-top: 1rem !important; } - - .mr-lg-3, - .mx-lg-3 { - margin-right: 1rem !important; } - - .mb-lg-3, - .my-lg-3 { - margin-bottom: 1rem !important; } - - .ml-lg-3, - .mx-lg-3 { - margin-left: 1rem !important; } - - .m-lg-4 { - margin: 1.5rem !important; } - - .mt-lg-4, - .my-lg-4 { - margin-top: 1.5rem !important; } - - .mr-lg-4, - .mx-lg-4 { - margin-right: 1.5rem !important; } - - .mb-lg-4, - .my-lg-4 { - margin-bottom: 1.5rem !important; } - - .ml-lg-4, - .mx-lg-4 { - margin-left: 1.5rem !important; } - - .m-lg-5 { - margin: 3rem !important; } - - .mt-lg-5, - .my-lg-5 { - margin-top: 3rem !important; } - - .mr-lg-5, - .mx-lg-5 { - margin-right: 3rem !important; } - - .mb-lg-5, - .my-lg-5 { - margin-bottom: 3rem !important; } - - .ml-lg-5, - .mx-lg-5 { - margin-left: 3rem !important; } - - .p-lg-0 { - padding: 0 !important; } - - .pt-lg-0, - .py-lg-0 { - padding-top: 0 !important; } - - .pr-lg-0, - .px-lg-0 { - padding-right: 0 !important; } - - .pb-lg-0, - .py-lg-0 { - padding-bottom: 0 !important; } - - .pl-lg-0, - .px-lg-0 { - padding-left: 0 !important; } - - .p-lg-1 { - padding: 0.25rem !important; } - - .pt-lg-1, - .py-lg-1 { - padding-top: 0.25rem !important; } - - .pr-lg-1, - .px-lg-1 { - padding-right: 0.25rem !important; } - - .pb-lg-1, - .py-lg-1 { - padding-bottom: 0.25rem !important; } - - .pl-lg-1, - .px-lg-1 { - padding-left: 0.25rem !important; } - - .p-lg-2 { - padding: 0.5rem !important; } - - .pt-lg-2, - .py-lg-2 { - padding-top: 0.5rem !important; } - - .pr-lg-2, - .px-lg-2 { - padding-right: 0.5rem !important; } - - .pb-lg-2, - .py-lg-2 { - padding-bottom: 0.5rem !important; } - - .pl-lg-2, - .px-lg-2 { - padding-left: 0.5rem !important; } - - .p-lg-3 { - padding: 1rem !important; } - - .pt-lg-3, - .py-lg-3 { - padding-top: 1rem !important; } - - .pr-lg-3, - .px-lg-3 { - padding-right: 1rem !important; } - - .pb-lg-3, - .py-lg-3 { - padding-bottom: 1rem !important; } - - .pl-lg-3, - .px-lg-3 { - padding-left: 1rem !important; } - - .p-lg-4 { - padding: 1.5rem !important; } - - .pt-lg-4, - .py-lg-4 { - padding-top: 1.5rem !important; } - - .pr-lg-4, - .px-lg-4 { - padding-right: 1.5rem !important; } - - .pb-lg-4, - .py-lg-4 { - padding-bottom: 1.5rem !important; } - - .pl-lg-4, - .px-lg-4 { - padding-left: 1.5rem !important; } - - .p-lg-5 { - padding: 3rem !important; } - - .pt-lg-5, - .py-lg-5 { - padding-top: 3rem !important; } - - .pr-lg-5, - .px-lg-5 { - padding-right: 3rem !important; } - - .pb-lg-5, - .py-lg-5 { - padding-bottom: 3rem !important; } - - .pl-lg-5, - .px-lg-5 { - padding-left: 3rem !important; } - - .m-lg-n1 { - margin: -0.25rem !important; } - - .mt-lg-n1, - .my-lg-n1 { - margin-top: -0.25rem !important; } - - .mr-lg-n1, - .mx-lg-n1 { - margin-right: -0.25rem !important; } - - .mb-lg-n1, - .my-lg-n1 { - margin-bottom: -0.25rem !important; } - - .ml-lg-n1, - .mx-lg-n1 { - margin-left: -0.25rem !important; } - - .m-lg-n2 { - margin: -0.5rem !important; } - - .mt-lg-n2, - .my-lg-n2 { - margin-top: -0.5rem !important; } - - .mr-lg-n2, - .mx-lg-n2 { - margin-right: -0.5rem !important; } - - .mb-lg-n2, - .my-lg-n2 { - margin-bottom: -0.5rem !important; } - - .ml-lg-n2, - .mx-lg-n2 { - margin-left: -0.5rem !important; } - - .m-lg-n3 { - margin: -1rem !important; } - - .mt-lg-n3, - .my-lg-n3 { - margin-top: -1rem !important; } - - .mr-lg-n3, - .mx-lg-n3 { - margin-right: -1rem !important; } - - .mb-lg-n3, - .my-lg-n3 { - margin-bottom: -1rem !important; } - - .ml-lg-n3, - .mx-lg-n3 { - margin-left: -1rem !important; } - - .m-lg-n4 { - margin: -1.5rem !important; } - - .mt-lg-n4, - .my-lg-n4 { - margin-top: -1.5rem !important; } - - .mr-lg-n4, - .mx-lg-n4 { - margin-right: -1.5rem !important; } - - .mb-lg-n4, - .my-lg-n4 { - margin-bottom: -1.5rem !important; } - - .ml-lg-n4, - .mx-lg-n4 { - margin-left: -1.5rem !important; } - - .m-lg-n5 { - margin: -3rem !important; } - - .mt-lg-n5, - .my-lg-n5 { - margin-top: -3rem !important; } - - .mr-lg-n5, - .mx-lg-n5 { - margin-right: -3rem !important; } - - .mb-lg-n5, - .my-lg-n5 { - margin-bottom: -3rem !important; } - - .ml-lg-n5, - .mx-lg-n5 { - margin-left: -3rem !important; } - - .m-lg-auto { - margin: auto !important; } - - .mt-lg-auto, - .my-lg-auto { - margin-top: auto !important; } - - .mr-lg-auto, - .mx-lg-auto { - margin-right: auto !important; } - - .mb-lg-auto, - .my-lg-auto { - margin-bottom: auto !important; } - - .ml-lg-auto, - .mx-lg-auto { - margin-left: auto !important; } } - @media (min-width: 1200px) { - .m-xl-0 { - margin: 0 !important; } - - .mt-xl-0, - .my-xl-0 { - margin-top: 0 !important; } - - .mr-xl-0, - .mx-xl-0 { - margin-right: 0 !important; } - - .mb-xl-0, - .my-xl-0 { - margin-bottom: 0 !important; } - - .ml-xl-0, - .mx-xl-0 { - margin-left: 0 !important; } - - .m-xl-1 { - margin: 0.25rem !important; } - - .mt-xl-1, - .my-xl-1 { - margin-top: 0.25rem !important; } - - .mr-xl-1, - .mx-xl-1 { - margin-right: 0.25rem !important; } - - .mb-xl-1, - .my-xl-1 { - margin-bottom: 0.25rem !important; } - - .ml-xl-1, - .mx-xl-1 { - margin-left: 0.25rem !important; } - - .m-xl-2 { - margin: 0.5rem !important; } - - .mt-xl-2, - .my-xl-2 { - margin-top: 0.5rem !important; } - - .mr-xl-2, - .mx-xl-2 { - margin-right: 0.5rem !important; } - - .mb-xl-2, - .my-xl-2 { - margin-bottom: 0.5rem !important; } - - .ml-xl-2, - .mx-xl-2 { - margin-left: 0.5rem !important; } - - .m-xl-3 { - margin: 1rem !important; } - - .mt-xl-3, - .my-xl-3 { - margin-top: 1rem !important; } - - .mr-xl-3, - .mx-xl-3 { - margin-right: 1rem !important; } - - .mb-xl-3, - .my-xl-3 { - margin-bottom: 1rem !important; } - - .ml-xl-3, - .mx-xl-3 { - margin-left: 1rem !important; } - - .m-xl-4 { - margin: 1.5rem !important; } - - .mt-xl-4, - .my-xl-4 { - margin-top: 1.5rem !important; } - - .mr-xl-4, - .mx-xl-4 { - margin-right: 1.5rem !important; } - - .mb-xl-4, - .my-xl-4 { - margin-bottom: 1.5rem !important; } - - .ml-xl-4, - .mx-xl-4 { - margin-left: 1.5rem !important; } - - .m-xl-5 { - margin: 3rem !important; } - - .mt-xl-5, - .my-xl-5 { - margin-top: 3rem !important; } - - .mr-xl-5, - .mx-xl-5 { - margin-right: 3rem !important; } - - .mb-xl-5, - .my-xl-5 { - margin-bottom: 3rem !important; } - - .ml-xl-5, - .mx-xl-5 { - margin-left: 3rem !important; } - - .p-xl-0 { - padding: 0 !important; } - - .pt-xl-0, - .py-xl-0 { - padding-top: 0 !important; } - - .pr-xl-0, - .px-xl-0 { - padding-right: 0 !important; } - - .pb-xl-0, - .py-xl-0 { - padding-bottom: 0 !important; } - - .pl-xl-0, - .px-xl-0 { - padding-left: 0 !important; } - - .p-xl-1 { - padding: 0.25rem !important; } - - .pt-xl-1, - .py-xl-1 { - padding-top: 0.25rem !important; } - - .pr-xl-1, - .px-xl-1 { - padding-right: 0.25rem !important; } - - .pb-xl-1, - .py-xl-1 { - padding-bottom: 0.25rem !important; } - - .pl-xl-1, - .px-xl-1 { - padding-left: 0.25rem !important; } - - .p-xl-2 { - padding: 0.5rem !important; } - - .pt-xl-2, - .py-xl-2 { - padding-top: 0.5rem !important; } - - .pr-xl-2, - .px-xl-2 { - padding-right: 0.5rem !important; } - - .pb-xl-2, - .py-xl-2 { - padding-bottom: 0.5rem !important; } - - .pl-xl-2, - .px-xl-2 { - padding-left: 0.5rem !important; } - - .p-xl-3 { - padding: 1rem !important; } - - .pt-xl-3, - .py-xl-3 { - padding-top: 1rem !important; } - - .pr-xl-3, - .px-xl-3 { - padding-right: 1rem !important; } - - .pb-xl-3, - .py-xl-3 { - padding-bottom: 1rem !important; } - - .pl-xl-3, - .px-xl-3 { - padding-left: 1rem !important; } - - .p-xl-4 { - padding: 1.5rem !important; } - - .pt-xl-4, - .py-xl-4 { - padding-top: 1.5rem !important; } - - .pr-xl-4, - .px-xl-4 { - padding-right: 1.5rem !important; } - - .pb-xl-4, - .py-xl-4 { - padding-bottom: 1.5rem !important; } - - .pl-xl-4, - .px-xl-4 { - padding-left: 1.5rem !important; } - - .p-xl-5 { - padding: 3rem !important; } - - .pt-xl-5, - .py-xl-5 { - padding-top: 3rem !important; } - - .pr-xl-5, - .px-xl-5 { - padding-right: 3rem !important; } - - .pb-xl-5, - .py-xl-5 { - padding-bottom: 3rem !important; } - - .pl-xl-5, - .px-xl-5 { - padding-left: 3rem !important; } - - .m-xl-n1 { - margin: -0.25rem !important; } - - .mt-xl-n1, - .my-xl-n1 { - margin-top: -0.25rem !important; } - - .mr-xl-n1, - .mx-xl-n1 { - margin-right: -0.25rem !important; } - - .mb-xl-n1, - .my-xl-n1 { - margin-bottom: -0.25rem !important; } - - .ml-xl-n1, - .mx-xl-n1 { - margin-left: -0.25rem !important; } - - .m-xl-n2 { - margin: -0.5rem !important; } - - .mt-xl-n2, - .my-xl-n2 { - margin-top: -0.5rem !important; } - - .mr-xl-n2, - .mx-xl-n2 { - margin-right: -0.5rem !important; } - - .mb-xl-n2, - .my-xl-n2 { - margin-bottom: -0.5rem !important; } - - .ml-xl-n2, - .mx-xl-n2 { - margin-left: -0.5rem !important; } - - .m-xl-n3 { - margin: -1rem !important; } - - .mt-xl-n3, - .my-xl-n3 { - margin-top: -1rem !important; } - - .mr-xl-n3, - .mx-xl-n3 { - margin-right: -1rem !important; } - - .mb-xl-n3, - .my-xl-n3 { - margin-bottom: -1rem !important; } - - .ml-xl-n3, - .mx-xl-n3 { - margin-left: -1rem !important; } - - .m-xl-n4 { - margin: -1.5rem !important; } - - .mt-xl-n4, - .my-xl-n4 { - margin-top: -1.5rem !important; } - - .mr-xl-n4, - .mx-xl-n4 { - margin-right: -1.5rem !important; } - - .mb-xl-n4, - .my-xl-n4 { - margin-bottom: -1.5rem !important; } - - .ml-xl-n4, - .mx-xl-n4 { - margin-left: -1.5rem !important; } - - .m-xl-n5 { - margin: -3rem !important; } - - .mt-xl-n5, - .my-xl-n5 { - margin-top: -3rem !important; } - - .mr-xl-n5, - .mx-xl-n5 { - margin-right: -3rem !important; } - - .mb-xl-n5, - .my-xl-n5 { - margin-bottom: -3rem !important; } - - .ml-xl-n5, - .mx-xl-n5 { - margin-left: -3rem !important; } - - .m-xl-auto { - margin: auto !important; } - - .mt-xl-auto, - .my-xl-auto { - margin-top: auto !important; } - - .mr-xl-auto, - .mx-xl-auto { - margin-right: auto !important; } - - .mb-xl-auto, - .my-xl-auto { - margin-bottom: auto !important; } - - .ml-xl-auto, - .mx-xl-auto { - margin-left: auto !important; } } - .text-monospace { - font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important; } - - .text-justify { - text-align: justify !important; } - - .text-wrap { - white-space: normal !important; } - - .text-nowrap { - white-space: nowrap !important; } - - .text-truncate { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; } - - .text-left { - text-align: left !important; } - - .text-right { - text-align: right !important; } - - .text-center { - text-align: center !important; } - - @media (min-width: 576px) { - .text-sm-left { - text-align: left !important; } - - .text-sm-right { - text-align: right !important; } - - .text-sm-center { - text-align: center !important; } } - @media (min-width: 768px) { - .text-md-left { - text-align: left !important; } - - .text-md-right { - text-align: right !important; } - - .text-md-center { - text-align: center !important; } } - @media (min-width: 992px) { - .text-lg-left { - text-align: left !important; } - - .text-lg-right { - text-align: right !important; } - - .text-lg-center { - text-align: center !important; } } - @media (min-width: 1200px) { - .text-xl-left { - text-align: left !important; } - - .text-xl-right { - text-align: right !important; } - - .text-xl-center { - text-align: center !important; } } - .text-lowercase { - text-transform: lowercase !important; } - - .text-uppercase { - text-transform: uppercase !important; } - - .text-capitalize { - text-transform: capitalize !important; } - - .font-weight-light { - font-weight: 300 !important; } - - .font-weight-lighter { - font-weight: lighter !important; } - - .font-weight-normal { - font-weight: 400 !important; } - - .font-weight-bold { - font-weight: 700 !important; } - - .font-weight-bolder { - font-weight: bolder !important; } - - .font-italic { - font-style: italic !important; } - - .text-white { - color: #fff !important; } - - .text-primary { - color: #3A9ABF !important; } - - a.text-primary:hover, a.text-primary:focus { - color: #286b84 !important; } - - .text-secondary { - color: #6C757D !important; } - - a.text-secondary:hover, a.text-secondary:focus { - color: #494f54 !important; } - - .text-success { - color: #75CC39 !important; } - - a.text-success:hover, a.text-success:focus { - color: #529326 !important; } - - .text-info { - color: #17a2b8 !important; } - - a.text-info:hover, a.text-info:focus { - color: #0f6674 !important; } - - .text-warning { - color: #FDC02E !important; } - - a.text-warning:hover, a.text-warning:focus { - color: #dc9c02 !important; } - - .text-danger { - color: #D93749 !important; } - - a.text-danger:hover, a.text-danger:focus { - color: #a41f2e !important; } - - .text-light { - color: #f8f9fa !important; } - - a.text-light:hover, a.text-light:focus { - color: #cbd3da !important; } - - .text-dark { - color: #343a40 !important; } - - a.text-dark:hover, a.text-dark:focus { - color: #121416 !important; } - - .text-body { - color: #212529 !important; } - - .text-muted { - color: #6c757d !important; } - - .text-black-50 { - color: rgba(0, 0, 0, 0.5) !important; } - - .text-white-50 { - color: rgba(255, 255, 255, 0.5) !important; } - - .text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; } - - .text-decoration-none { - text-decoration: none !important; } - - .text-break { - word-break: break-word !important; - overflow-wrap: break-word !important; } - - .text-reset { - color: inherit !important; } - - .visible { - visibility: visible !important; } - - .invisible { - visibility: hidden !important; } - - @media print { - *, - *::before, - *::after { - text-shadow: none !important; - box-shadow: none !important; } - - a:not(.btn) { - text-decoration: underline; } - - abbr[title]::after { - content: " (" attr(title) ")"; } - - pre { - white-space: pre-wrap !important; } - - pre, - blockquote { - border: 1px solid #adb5bd; - page-break-inside: avoid; } - - thead { - display: table-header-group; } - - tr, - img { - page-break-inside: avoid; } - - p, - h2, - h3 { - orphans: 3; - widows: 3; } - - h2, - h3 { - page-break-after: avoid; } - - @page { - size: a3; } - body { - min-width: 992px !important; } - - .container { - min-width: 992px !important; } - - .navbar { - display: none; } - - .badge { - border: 1px solid #000; } - - .table { - border-collapse: collapse !important; } - .table td, - .table th { - background-color: #fff !important; } - - .table-bordered th, - .table-bordered td { - border: 1px solid #dee2e6 !important; } - - .table-dark { - color: inherit; } - .table-dark th, - .table-dark td, - .table-dark thead th, - .table-dark tbody + tbody { - border-color: #dee2e6; } - - .table .thead-dark th { - color: inherit; - border-color: #dee2e6; } } - /* Custom Styles */ - .list-group-item { - border: none; - padding: 0 0 0 .5rem; } - - .card-header, .card-body { - padding: 0.25rem; } - - .accordion > .card .card-header { - margin-bottom: 0; } - - .list-group-item:first-child { - border-radius: 0; } - - .table th, .table td { - padding: 0.25rem; } - - code { - color: black !important; } - - /*# sourceMappingURL=main.css.map */ diff --git a/templates/testbox/test-visualizer/test-results.json b/templates/testbox/test-visualizer/test-results.json deleted file mode 100644 index 6817209..0000000 --- a/templates/testbox/test-visualizer/test-results.json +++ /dev/null @@ -1,1619 +0,0 @@ -{ - "totalSuites": 3, - "startTime": 1553009673073, - "bundleStats": [{ - "totalSuites": 1, - "startTime": 1553009673088, - "totalPass": 1, - "totalDuration": 35, - "totalSkipped": 0, - "totalFail": 1, - "totalSpecs": 2, - "path": "tests.specsWithFailures.TeardownWithFailureTest", - "endTime": 1553009673123, - "totalError": 0, - "name": "tests.specsWithFailures.TeardownWithFailureTest", - "id": "7FB7EEAB1B9B025D803C404484858BC4", - "suiteStats": [{ - "startTime": 1553009673095, - "totalPass": 1, - "totalDuration": 26, - "totalSkipped": 0, - "totalFail": 1, - "totalSpecs": 2, - "bundleID": "7FB7EEAB1B9B025D803C404484858BC4", - "status": "Failed", - "parentID": "", - "specStats": [{ - "error": {}, - "startTime": 1553009673096, - "totalDuration": 7, - "failOrigin": {}, - "status": "Passed", - "suiteID": "C661C0D148339356A96A2DE9010FC851", - "endTime": 1553009673103, - "name": "stonesSuccessTest", - "id": "51F16F531C908CE0995A709E3E103A05", - "failMessage": "" - }, { - "error": {}, - "startTime": 1553009673103, - "totalDuration": 18, - "failOrigin": [{ - "Raw_Trace": "specswithfailures.teardownwithfailuretest_cfc$cf.udfCall(/tests/specsWithFailures/TeardownWithFailureTest.cfc:33)", - "codePrintPlain": "31: \n32: \t\t\n33: \t\t\n34: \t\n35: \n", - "column": 0, - "line": 33, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/TeardownWithFailureTest.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "31:
\n32: \t\t<!--- make some assertion based on the result of exercising the component --->
\n33: \t\t<cfset assertEquals("Keith Richards",result,"This is really NOT equal")>
\n34: \t</cffunction>
\n35:
\n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:993)", - "codePrintPlain": "991: \t\t\t\t// Execute Spec\n992: \t\t\t\ttry{\n993: \t\t\t\t\tinvoke( this, arguments.spec.name );\n994: \n995: \t\t\t\t\t// Where we expecting an exception and it did not throw?\n", - "column": 0, - "line": 993, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "991: \t\t\t\t// Execute Spec
\n992: \t\t\t\ttry{
\n993: \t\t\t\t\tinvoke( this, arguments.spec.name );
\n994:
\n995: \t\t\t\t\t// Where we expecting an exception and it did not throw?
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", - "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 208, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
\n207: \t\t\t\t\t\trunner=this
\n208: \t\t\t\t\t);
\n209:
\n210: \t\t\t\t\t// verify call backs
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", - "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", - "column": 0, - "line": 81, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
\n80: \t\t\t\t\t\tbundleStats=bundleStats,
\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
\n82: \t\t\t\t\t);
\n83:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", - "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", - "column": 0, - "line": 478, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
\n479: \t\t\t}
\n480: \t\t} catch( Any e ){
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
\n250: \t\t\t\ttestResults = results,
\n251: \t\t\t\tcallbacks = arguments.callbacks
\n252: \t\t\t);
\n253:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
\n159: \t\t// run it and get results
\n160: \t\tvar results = runRaw( argumentCollection=arguments );
\n161: \t\t// store latest results
\n162: \t\tvariables.result = results;
\n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
\n48: // Run Tests using correct reporter
\n49: results = testbox.run( reporter=url.reporter );
\n50:
\n51: // Write TEST.properties in report destination path.
\n" - }], - "status": "Failed", - "suiteID": "C661C0D148339356A96A2DE9010FC851", - "endTime": 1553009673121, - "name": "stonesFailTest", - "id": "63245483E59F4CDF07004CDB9D60F510", - "failMessage": "This is really NOT equal. Expected [Keith Richards] Actual [Mick Jagger]" - }], - "endTime": 1553009673121, - "totalError": 0, - "name": "tests.specsWithFailures.TeardownWithFailureTest", - "id": "C661C0D148339356A96A2DE9010FC851", - "suiteStats": [] - }], - "globalException": "" - }, { - "totalSuites": 1, - "startTime": 1553009673136, - "totalPass": 0, - "totalDuration": 31, - "totalSkipped": 0, - "totalFail": 0, - "totalSpecs": 7, - "path": "tests.specsWithFailures.MXUnitExpectedExceptions", - "endTime": 1553009673167, - "totalError": 7, - "name": "tests.specsWithFailures.MXUnitExpectedExceptions", - "id": "46D12A8CA3F9A0EBC5DF1F2A51147864", - "suiteStats": [{ - "startTime": 1553009673136, - "totalPass": 0, - "totalDuration": 31, - "totalSkipped": 0, - "totalFail": 0, - "totalSpecs": 7, - "bundleID": "46D12A8CA3F9A0EBC5DF1F2A51147864", - "status": "Error", - "parentID": "", - "specStats": [{ - "error": { - "Extended_Info": "", - "Message": "java.util.ConcurrentModificationException", - "Detail": "", - "additional": {}, - "TagContext": [{ - "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", - "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", - "column": 0, - "line": 18, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "16:
\n17: \tfunction teardown(){
\n18: \t\tstructClear( request );
\n19: \t}
\n20:
\n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)", - "codePrintPlain": "1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n1013: \t\t\t\t// store spec status\n", - "column": 0, - "line": 1011, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1009: \t\t\t\t\t// execute teardown()
\n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
\n1011: \t\t\t\t}
\n1012:
\n1013: \t\t\t\t// store spec status
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", - "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 208, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
\n207: \t\t\t\t\t\trunner=this
\n208: \t\t\t\t\t);
\n209:
\n210: \t\t\t\t\t// verify call backs
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", - "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", - "column": 0, - "line": 81, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
\n80: \t\t\t\t\t\tbundleStats=bundleStats,
\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
\n82: \t\t\t\t\t);
\n83:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", - "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", - "column": 0, - "line": 478, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
\n479: \t\t\t}
\n480: \t\t} catch( Any e ){
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
\n250: \t\t\t\ttestResults = results,
\n251: \t\t\t\tcallbacks = arguments.callbacks
\n252: \t\t\t);
\n253:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
\n159: \t\t// run it and get results
\n160: \t\tvar results = runRaw( argumentCollection=arguments );
\n161: \t\t// store latest results
\n162: \t\tvariables.result = results;
\n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
\n48: // Run Tests using correct reporter
\n49: results = testbox.run( reporter=url.reporter );
\n50:
\n51: // Write TEST.properties in report destination path.
\n" - }, { - "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", - "codePrintPlain": "19: \n20: \n21: \n", - "column": 0, - "line": 21, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "19:
\n20: <!--- Include the TestBox HTML Runner --->
\n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
\n" - }], - "ErrorCode": "0", - "type": "java.util.ConcurrentModificationException", - "StackTrace": "lucee.runtime.exp.NativeException: java.util.ConcurrentModificationException\n\tat java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)\n\tat java.util.HashMap$KeyIterator.next(HashMap.java:1466)\n\tat io.undertow.servlet.util.IteratorEnumeration.nextElement(IteratorEnumeration.java:44)\n\tat lucee.runtime.type.scope.RequestImpl.clear(RequestImpl.java:157)\n\tat lucee.runtime.functions.struct.StructClear.call(StructClear.java:36)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)\n\tat system.basespec_cfc$cf.udfCall(/testbox/system/BaseSpec.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.call(UDFImpl.java:226)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:693)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.call(ComponentImpl.java:1997)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:756)\n\tat lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:1718)\n\tat system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:805)\n\tat tests.runner_cfm$cf.call(/tests/runner.cfm:21)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:218)\n\tat lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:43)\n\tat lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2464)\n\tat lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2454)\n\tat lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2427)\n\tat lucee.runtime.engine.Request.exe(Request.java:44)\n\tat lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1090)\n\tat lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1038)\n\tat lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:102)\n\tat lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\n\tat org.cfmlprojects.regexpathinfofilter.RegexPathInfoFilter.doFilter(RegexPathInfoFilter.java:47)\n\tat io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\n\tat sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:134)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doNext(FusionReactorRequestHandler.java:764)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doHttpServletRequest(FusionReactorRequestHandler.java:344)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doFusionRequest(FusionReactorRequestHandler.java:207)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.handle(FusionReactorRequestHandler.java:801)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorCoreFilter.doFilter(FusionReactorCoreFilter.java:36)\n\tat sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:71)\n\tat sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.agent.filter.FusionReactorStaticFilter.doFilter(FusionReactorStaticFilter.java:54)\n\tat com.intergral.fusionreactor.agent.pointcuts.NewFilterChainPointCut$1.invoke(NewFilterChainPointCut.java:41)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java)\n\tat io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\n\tat io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\n\tat io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:64)\n\tat io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\n\tat io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)\n\tat io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\n\tat io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\n\tat io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\n\tat io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\n\tat io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)\n\tat io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\n\tat io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)\n\tat io.undertow.server.Connectors.executeRootHandler(Connectors.java:336)\n\tat io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.util.ConcurrentModificationException\n\t... 137 more\n", - "ExtendedInfo": "" - }, - "startTime": 1553009673137, - "totalDuration": 7, - "failOrigin": [{ - "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", - "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", - "column": 0, - "line": 18, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "16:
\n17: \tfunction teardown(){
\n18: \t\tstructClear( request );
\n19: \t}
\n20:
\n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)", - "codePrintPlain": "1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n1013: \t\t\t\t// store spec status\n", - "column": 0, - "line": 1011, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1009: \t\t\t\t\t// execute teardown()
\n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
\n1011: \t\t\t\t}
\n1012:
\n1013: \t\t\t\t// store spec status
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", - "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 208, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
\n207: \t\t\t\t\t\trunner=this
\n208: \t\t\t\t\t);
\n209:
\n210: \t\t\t\t\t// verify call backs
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", - "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", - "column": 0, - "line": 81, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
\n80: \t\t\t\t\t\tbundleStats=bundleStats,
\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
\n82: \t\t\t\t\t);
\n83:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", - "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", - "column": 0, - "line": 478, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
\n479: \t\t\t}
\n480: \t\t} catch( Any e ){
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
\n250: \t\t\t\ttestResults = results,
\n251: \t\t\t\tcallbacks = arguments.callbacks
\n252: \t\t\t);
\n253:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
\n159: \t\t// run it and get results
\n160: \t\tvar results = runRaw( argumentCollection=arguments );
\n161: \t\t// store latest results
\n162: \t\tvariables.result = results;
\n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
\n48: // Run Tests using correct reporter
\n49: results = testbox.run( reporter=url.reporter );
\n50:
\n51: // Write TEST.properties in report destination path.
\n" - }, { - "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", - "codePrintPlain": "19: \n20: \n21: \n", - "column": 0, - "line": 21, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "19:
\n20: <!--- Include the TestBox HTML Runner --->
\n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
\n" - }], - "status": "Error", - "suiteID": "0F9E64ECB27A3F1E33BC78FB7266E610", - "endTime": 1553009673144, - "name": "testExpectedExceptionNoValue", - "id": "EA719766B29000E8EB13E08618EB62D8", - "failMessage": "" - }, { - "error": { - "Extended_Info": "", - "Message": "java.util.ConcurrentModificationException", - "Detail": "", - "additional": {}, - "TagContext": [{ - "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", - "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", - "column": 0, - "line": 18, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "16:
\n17: \tfunction teardown(){
\n18: \t\tstructClear( request );
\n19: \t}
\n20:
\n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)", - "codePrintPlain": "1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n1013: \t\t\t\t// store spec status\n", - "column": 0, - "line": 1011, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1009: \t\t\t\t\t// execute teardown()
\n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
\n1011: \t\t\t\t}
\n1012:
\n1013: \t\t\t\t// store spec status
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", - "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 208, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
\n207: \t\t\t\t\t\trunner=this
\n208: \t\t\t\t\t);
\n209:
\n210: \t\t\t\t\t// verify call backs
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", - "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", - "column": 0, - "line": 81, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
\n80: \t\t\t\t\t\tbundleStats=bundleStats,
\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
\n82: \t\t\t\t\t);
\n83:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", - "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", - "column": 0, - "line": 478, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
\n479: \t\t\t}
\n480: \t\t} catch( Any e ){
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
\n250: \t\t\t\ttestResults = results,
\n251: \t\t\t\tcallbacks = arguments.callbacks
\n252: \t\t\t);
\n253:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
\n159: \t\t// run it and get results
\n160: \t\tvar results = runRaw( argumentCollection=arguments );
\n161: \t\t// store latest results
\n162: \t\tvariables.result = results;
\n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
\n48: // Run Tests using correct reporter
\n49: results = testbox.run( reporter=url.reporter );
\n50:
\n51: // Write TEST.properties in report destination path.
\n" - }, { - "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", - "codePrintPlain": "19: \n20: \n21: \n", - "column": 0, - "line": 21, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "19:
\n20: <!--- Include the TestBox HTML Runner --->
\n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
\n" - }], - "ErrorCode": "0", - "type": "java.util.ConcurrentModificationException", - "StackTrace": "lucee.runtime.exp.NativeException: java.util.ConcurrentModificationException\n\tat java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)\n\tat java.util.HashMap$KeyIterator.next(HashMap.java:1466)\n\tat io.undertow.servlet.util.IteratorEnumeration.nextElement(IteratorEnumeration.java:44)\n\tat lucee.runtime.type.scope.RequestImpl.clear(RequestImpl.java:157)\n\tat lucee.runtime.functions.struct.StructClear.call(StructClear.java:36)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)\n\tat system.basespec_cfc$cf.udfCall(/testbox/system/BaseSpec.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.call(UDFImpl.java:226)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:693)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.call(ComponentImpl.java:1997)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:756)\n\tat lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:1718)\n\tat system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:805)\n\tat tests.runner_cfm$cf.call(/tests/runner.cfm:21)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:218)\n\tat lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:43)\n\tat lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2464)\n\tat lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2454)\n\tat lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2427)\n\tat lucee.runtime.engine.Request.exe(Request.java:44)\n\tat lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1090)\n\tat lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1038)\n\tat lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:102)\n\tat lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\n\tat org.cfmlprojects.regexpathinfofilter.RegexPathInfoFilter.doFilter(RegexPathInfoFilter.java:47)\n\tat io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\n\tat sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:134)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doNext(FusionReactorRequestHandler.java:764)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doHttpServletRequest(FusionReactorRequestHandler.java:344)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doFusionRequest(FusionReactorRequestHandler.java:207)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.handle(FusionReactorRequestHandler.java:801)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorCoreFilter.doFilter(FusionReactorCoreFilter.java:36)\n\tat sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:71)\n\tat sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.agent.filter.FusionReactorStaticFilter.doFilter(FusionReactorStaticFilter.java:54)\n\tat com.intergral.fusionreactor.agent.pointcuts.NewFilterChainPointCut$1.invoke(NewFilterChainPointCut.java:41)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java)\n\tat io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\n\tat io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\n\tat io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:64)\n\tat io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\n\tat io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)\n\tat io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\n\tat io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\n\tat io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\n\tat io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\n\tat io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)\n\tat io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\n\tat io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)\n\tat io.undertow.server.Connectors.executeRootHandler(Connectors.java:336)\n\tat io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.util.ConcurrentModificationException\n\t... 137 more\n", - "ExtendedInfo": "" - }, - "startTime": 1553009673144, - "totalDuration": 4, - "failOrigin": [{ - "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", - "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", - "column": 0, - "line": 18, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "16:
\n17: \tfunction teardown(){
\n18: \t\tstructClear( request );
\n19: \t}
\n20:
\n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)", - "codePrintPlain": "1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n1013: \t\t\t\t// store spec status\n", - "column": 0, - "line": 1011, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1009: \t\t\t\t\t// execute teardown()
\n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
\n1011: \t\t\t\t}
\n1012:
\n1013: \t\t\t\t// store spec status
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", - "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 208, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
\n207: \t\t\t\t\t\trunner=this
\n208: \t\t\t\t\t);
\n209:
\n210: \t\t\t\t\t// verify call backs
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", - "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", - "column": 0, - "line": 81, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
\n80: \t\t\t\t\t\tbundleStats=bundleStats,
\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
\n82: \t\t\t\t\t);
\n83:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", - "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", - "column": 0, - "line": 478, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
\n479: \t\t\t}
\n480: \t\t} catch( Any e ){
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
\n250: \t\t\t\ttestResults = results,
\n251: \t\t\t\tcallbacks = arguments.callbacks
\n252: \t\t\t);
\n253:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
\n159: \t\t// run it and get results
\n160: \t\tvar results = runRaw( argumentCollection=arguments );
\n161: \t\t// store latest results
\n162: \t\tvariables.result = results;
\n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
\n48: // Run Tests using correct reporter
\n49: results = testbox.run( reporter=url.reporter );
\n50:
\n51: // Write TEST.properties in report destination path.
\n" - }, { - "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", - "codePrintPlain": "19: \n20: \n21: \n", - "column": 0, - "line": 21, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "19:
\n20: <!--- Include the TestBox HTML Runner --->
\n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
\n" - }], - "status": "Error", - "suiteID": "0F9E64ECB27A3F1E33BC78FB7266E610", - "endTime": 1553009673148, - "name": "testExpectedExceptionFromMethodWithType", - "id": "DEA4D1B7E4D5685C8F5E56FC2EF4B07F", - "failMessage": "" - }, { - "error": { - "Extended_Info": "", - "Message": "java.util.ConcurrentModificationException", - "Detail": "", - "additional": {}, - "TagContext": [{ - "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", - "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", - "column": 0, - "line": 18, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "16:
\n17: \tfunction teardown(){
\n18: \t\tstructClear( request );
\n19: \t}
\n20:
\n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)", - "codePrintPlain": "1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n1013: \t\t\t\t// store spec status\n", - "column": 0, - "line": 1011, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1009: \t\t\t\t\t// execute teardown()
\n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
\n1011: \t\t\t\t}
\n1012:
\n1013: \t\t\t\t// store spec status
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", - "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 208, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
\n207: \t\t\t\t\t\trunner=this
\n208: \t\t\t\t\t);
\n209:
\n210: \t\t\t\t\t// verify call backs
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", - "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", - "column": 0, - "line": 81, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
\n80: \t\t\t\t\t\tbundleStats=bundleStats,
\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
\n82: \t\t\t\t\t);
\n83:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", - "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", - "column": 0, - "line": 478, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
\n479: \t\t\t}
\n480: \t\t} catch( Any e ){
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
\n250: \t\t\t\ttestResults = results,
\n251: \t\t\t\tcallbacks = arguments.callbacks
\n252: \t\t\t);
\n253:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
\n159: \t\t// run it and get results
\n160: \t\tvar results = runRaw( argumentCollection=arguments );
\n161: \t\t// store latest results
\n162: \t\tvariables.result = results;
\n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
\n48: // Run Tests using correct reporter
\n49: results = testbox.run( reporter=url.reporter );
\n50:
\n51: // Write TEST.properties in report destination path.
\n" - }, { - "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", - "codePrintPlain": "19: \n20: \n21: \n", - "column": 0, - "line": 21, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "19:
\n20: <!--- Include the TestBox HTML Runner --->
\n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
\n" - }], - "ErrorCode": "0", - "type": "java.util.ConcurrentModificationException", - "StackTrace": "lucee.runtime.exp.NativeException: java.util.ConcurrentModificationException\n\tat java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)\n\tat java.util.HashMap$KeyIterator.next(HashMap.java:1466)\n\tat io.undertow.servlet.util.IteratorEnumeration.nextElement(IteratorEnumeration.java:44)\n\tat lucee.runtime.type.scope.RequestImpl.clear(RequestImpl.java:157)\n\tat lucee.runtime.functions.struct.StructClear.call(StructClear.java:36)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)\n\tat system.basespec_cfc$cf.udfCall(/testbox/system/BaseSpec.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.call(UDFImpl.java:226)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:693)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.call(ComponentImpl.java:1997)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:756)\n\tat lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:1718)\n\tat system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:805)\n\tat tests.runner_cfm$cf.call(/tests/runner.cfm:21)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:218)\n\tat lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:43)\n\tat lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2464)\n\tat lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2454)\n\tat lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2427)\n\tat lucee.runtime.engine.Request.exe(Request.java:44)\n\tat lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1090)\n\tat lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1038)\n\tat lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:102)\n\tat lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\n\tat org.cfmlprojects.regexpathinfofilter.RegexPathInfoFilter.doFilter(RegexPathInfoFilter.java:47)\n\tat io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\n\tat sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:134)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doNext(FusionReactorRequestHandler.java:764)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doHttpServletRequest(FusionReactorRequestHandler.java:344)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doFusionRequest(FusionReactorRequestHandler.java:207)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.handle(FusionReactorRequestHandler.java:801)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorCoreFilter.doFilter(FusionReactorCoreFilter.java:36)\n\tat sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:71)\n\tat sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.agent.filter.FusionReactorStaticFilter.doFilter(FusionReactorStaticFilter.java:54)\n\tat com.intergral.fusionreactor.agent.pointcuts.NewFilterChainPointCut$1.invoke(NewFilterChainPointCut.java:41)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java)\n\tat io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\n\tat io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\n\tat io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:64)\n\tat io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\n\tat io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)\n\tat io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\n\tat io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\n\tat io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\n\tat io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\n\tat io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)\n\tat io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\n\tat io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)\n\tat io.undertow.server.Connectors.executeRootHandler(Connectors.java:336)\n\tat io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.util.ConcurrentModificationException\n\t... 137 more\n", - "ExtendedInfo": "" - }, - "startTime": 1553009673148, - "totalDuration": 4, - "failOrigin": [{ - "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", - "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", - "column": 0, - "line": 18, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "16:
\n17: \tfunction teardown(){
\n18: \t\tstructClear( request );
\n19: \t}
\n20:
\n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)", - "codePrintPlain": "1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n1013: \t\t\t\t// store spec status\n", - "column": 0, - "line": 1011, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1009: \t\t\t\t\t// execute teardown()
\n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
\n1011: \t\t\t\t}
\n1012:
\n1013: \t\t\t\t// store spec status
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", - "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 208, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
\n207: \t\t\t\t\t\trunner=this
\n208: \t\t\t\t\t);
\n209:
\n210: \t\t\t\t\t// verify call backs
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", - "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", - "column": 0, - "line": 81, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
\n80: \t\t\t\t\t\tbundleStats=bundleStats,
\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
\n82: \t\t\t\t\t);
\n83:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", - "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", - "column": 0, - "line": 478, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
\n479: \t\t\t}
\n480: \t\t} catch( Any e ){
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
\n250: \t\t\t\ttestResults = results,
\n251: \t\t\t\tcallbacks = arguments.callbacks
\n252: \t\t\t);
\n253:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
\n159: \t\t// run it and get results
\n160: \t\tvar results = runRaw( argumentCollection=arguments );
\n161: \t\t// store latest results
\n162: \t\tvariables.result = results;
\n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
\n48: // Run Tests using correct reporter
\n49: results = testbox.run( reporter=url.reporter );
\n50:
\n51: // Write TEST.properties in report destination path.
\n" - }, { - "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", - "codePrintPlain": "19: \n20: \n21: \n", - "column": 0, - "line": 21, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "19:
\n20: <!--- Include the TestBox HTML Runner --->
\n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
\n" - }], - "status": "Error", - "suiteID": "0F9E64ECB27A3F1E33BC78FB7266E610", - "endTime": 1553009673152, - "name": "testRaiseException_pass", - "id": "DB1CDA5E9576C02CE49C6A3009AC84EA", - "failMessage": "" - }, { - "error": { - "Extended_Info": "", - "Message": "java.util.ConcurrentModificationException", - "Detail": "", - "additional": {}, - "TagContext": [{ - "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", - "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", - "column": 0, - "line": 18, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "16:
\n17: \tfunction teardown(){
\n18: \t\tstructClear( request );
\n19: \t}
\n20:
\n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)", - "codePrintPlain": "1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n1013: \t\t\t\t// store spec status\n", - "column": 0, - "line": 1011, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1009: \t\t\t\t\t// execute teardown()
\n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
\n1011: \t\t\t\t}
\n1012:
\n1013: \t\t\t\t// store spec status
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", - "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 208, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
\n207: \t\t\t\t\t\trunner=this
\n208: \t\t\t\t\t);
\n209:
\n210: \t\t\t\t\t// verify call backs
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", - "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", - "column": 0, - "line": 81, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
\n80: \t\t\t\t\t\tbundleStats=bundleStats,
\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
\n82: \t\t\t\t\t);
\n83:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", - "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", - "column": 0, - "line": 478, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
\n479: \t\t\t}
\n480: \t\t} catch( Any e ){
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
\n250: \t\t\t\ttestResults = results,
\n251: \t\t\t\tcallbacks = arguments.callbacks
\n252: \t\t\t);
\n253:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
\n159: \t\t// run it and get results
\n160: \t\tvar results = runRaw( argumentCollection=arguments );
\n161: \t\t// store latest results
\n162: \t\tvariables.result = results;
\n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
\n48: // Run Tests using correct reporter
\n49: results = testbox.run( reporter=url.reporter );
\n50:
\n51: // Write TEST.properties in report destination path.
\n" - }, { - "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", - "codePrintPlain": "19: \n20: \n21: \n", - "column": 0, - "line": 21, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "19:
\n20: <!--- Include the TestBox HTML Runner --->
\n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
\n" - }], - "ErrorCode": "0", - "type": "java.util.ConcurrentModificationException", - "StackTrace": "lucee.runtime.exp.NativeException: java.util.ConcurrentModificationException\n\tat java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)\n\tat java.util.HashMap$KeyIterator.next(HashMap.java:1466)\n\tat io.undertow.servlet.util.IteratorEnumeration.nextElement(IteratorEnumeration.java:44)\n\tat lucee.runtime.type.scope.RequestImpl.clear(RequestImpl.java:157)\n\tat lucee.runtime.functions.struct.StructClear.call(StructClear.java:36)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)\n\tat system.basespec_cfc$cf.udfCall(/testbox/system/BaseSpec.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.call(UDFImpl.java:226)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:693)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.call(ComponentImpl.java:1997)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:756)\n\tat lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:1718)\n\tat system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:805)\n\tat tests.runner_cfm$cf.call(/tests/runner.cfm:21)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:218)\n\tat lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:43)\n\tat lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2464)\n\tat lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2454)\n\tat lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2427)\n\tat lucee.runtime.engine.Request.exe(Request.java:44)\n\tat lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1090)\n\tat lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1038)\n\tat lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:102)\n\tat lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\n\tat org.cfmlprojects.regexpathinfofilter.RegexPathInfoFilter.doFilter(RegexPathInfoFilter.java:47)\n\tat io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\n\tat sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:134)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doNext(FusionReactorRequestHandler.java:764)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doHttpServletRequest(FusionReactorRequestHandler.java:344)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doFusionRequest(FusionReactorRequestHandler.java:207)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.handle(FusionReactorRequestHandler.java:801)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorCoreFilter.doFilter(FusionReactorCoreFilter.java:36)\n\tat sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:71)\n\tat sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.agent.filter.FusionReactorStaticFilter.doFilter(FusionReactorStaticFilter.java:54)\n\tat com.intergral.fusionreactor.agent.pointcuts.NewFilterChainPointCut$1.invoke(NewFilterChainPointCut.java:41)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java)\n\tat io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\n\tat io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\n\tat io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:64)\n\tat io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\n\tat io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)\n\tat io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\n\tat io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\n\tat io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\n\tat io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\n\tat io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)\n\tat io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\n\tat io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)\n\tat io.undertow.server.Connectors.executeRootHandler(Connectors.java:336)\n\tat io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.util.ConcurrentModificationException\n\t... 137 more\n", - "ExtendedInfo": "" - }, - "startTime": 1553009673152, - "totalDuration": 4, - "failOrigin": [{ - "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", - "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", - "column": 0, - "line": 18, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "16:
\n17: \tfunction teardown(){
\n18: \t\tstructClear( request );
\n19: \t}
\n20:
\n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)", - "codePrintPlain": "1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n1013: \t\t\t\t// store spec status\n", - "column": 0, - "line": 1011, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1009: \t\t\t\t\t// execute teardown()
\n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
\n1011: \t\t\t\t}
\n1012:
\n1013: \t\t\t\t// store spec status
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", - "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 208, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
\n207: \t\t\t\t\t\trunner=this
\n208: \t\t\t\t\t);
\n209:
\n210: \t\t\t\t\t// verify call backs
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", - "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", - "column": 0, - "line": 81, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
\n80: \t\t\t\t\t\tbundleStats=bundleStats,
\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
\n82: \t\t\t\t\t);
\n83:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", - "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", - "column": 0, - "line": 478, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
\n479: \t\t\t}
\n480: \t\t} catch( Any e ){
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
\n250: \t\t\t\ttestResults = results,
\n251: \t\t\t\tcallbacks = arguments.callbacks
\n252: \t\t\t);
\n253:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
\n159: \t\t// run it and get results
\n160: \t\tvar results = runRaw( argumentCollection=arguments );
\n161: \t\t// store latest results
\n162: \t\tvariables.result = results;
\n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
\n48: // Run Tests using correct reporter
\n49: results = testbox.run( reporter=url.reporter );
\n50:
\n51: // Write TEST.properties in report destination path.
\n" - }, { - "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", - "codePrintPlain": "19: \n20: \n21: \n", - "column": 0, - "line": 21, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "19:
\n20: <!--- Include the TestBox HTML Runner --->
\n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
\n" - }], - "status": "Error", - "suiteID": "0F9E64ECB27A3F1E33BC78FB7266E610", - "endTime": 1553009673156, - "name": "testExpectedExceptionFromMethodWithTypeAndRegex", - "id": "5F2998DAA434E0999157C33D2998677F", - "failMessage": "" - }, { - "error": { - "Extended_Info": "", - "Message": "java.util.ConcurrentModificationException", - "Detail": "", - "additional": {}, - "TagContext": [{ - "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", - "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", - "column": 0, - "line": 18, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "16:
\n17: \tfunction teardown(){
\n18: \t\tstructClear( request );
\n19: \t}
\n20:
\n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)", - "codePrintPlain": "1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n1013: \t\t\t\t// store spec status\n", - "column": 0, - "line": 1011, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1009: \t\t\t\t\t// execute teardown()
\n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
\n1011: \t\t\t\t}
\n1012:
\n1013: \t\t\t\t// store spec status
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", - "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 208, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
\n207: \t\t\t\t\t\trunner=this
\n208: \t\t\t\t\t);
\n209:
\n210: \t\t\t\t\t// verify call backs
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", - "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", - "column": 0, - "line": 81, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
\n80: \t\t\t\t\t\tbundleStats=bundleStats,
\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
\n82: \t\t\t\t\t);
\n83:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", - "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", - "column": 0, - "line": 478, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
\n479: \t\t\t}
\n480: \t\t} catch( Any e ){
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
\n250: \t\t\t\ttestResults = results,
\n251: \t\t\t\tcallbacks = arguments.callbacks
\n252: \t\t\t);
\n253:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
\n159: \t\t// run it and get results
\n160: \t\tvar results = runRaw( argumentCollection=arguments );
\n161: \t\t// store latest results
\n162: \t\tvariables.result = results;
\n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
\n48: // Run Tests using correct reporter
\n49: results = testbox.run( reporter=url.reporter );
\n50:
\n51: // Write TEST.properties in report destination path.
\n" - }, { - "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", - "codePrintPlain": "19: \n20: \n21: \n", - "column": 0, - "line": 21, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "19:
\n20: <!--- Include the TestBox HTML Runner --->
\n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
\n" - }], - "ErrorCode": "0", - "type": "java.util.ConcurrentModificationException", - "StackTrace": "lucee.runtime.exp.NativeException: java.util.ConcurrentModificationException\n\tat java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)\n\tat java.util.HashMap$KeyIterator.next(HashMap.java:1466)\n\tat io.undertow.servlet.util.IteratorEnumeration.nextElement(IteratorEnumeration.java:44)\n\tat lucee.runtime.type.scope.RequestImpl.clear(RequestImpl.java:157)\n\tat lucee.runtime.functions.struct.StructClear.call(StructClear.java:36)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)\n\tat system.basespec_cfc$cf.udfCall(/testbox/system/BaseSpec.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.call(UDFImpl.java:226)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:693)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.call(ComponentImpl.java:1997)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:756)\n\tat lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:1718)\n\tat system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:805)\n\tat tests.runner_cfm$cf.call(/tests/runner.cfm:21)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:218)\n\tat lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:43)\n\tat lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2464)\n\tat lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2454)\n\tat lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2427)\n\tat lucee.runtime.engine.Request.exe(Request.java:44)\n\tat lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1090)\n\tat lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1038)\n\tat lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:102)\n\tat lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\n\tat org.cfmlprojects.regexpathinfofilter.RegexPathInfoFilter.doFilter(RegexPathInfoFilter.java:47)\n\tat io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\n\tat sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:134)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doNext(FusionReactorRequestHandler.java:764)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doHttpServletRequest(FusionReactorRequestHandler.java:344)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doFusionRequest(FusionReactorRequestHandler.java:207)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.handle(FusionReactorRequestHandler.java:801)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorCoreFilter.doFilter(FusionReactorCoreFilter.java:36)\n\tat sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:71)\n\tat sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.agent.filter.FusionReactorStaticFilter.doFilter(FusionReactorStaticFilter.java:54)\n\tat com.intergral.fusionreactor.agent.pointcuts.NewFilterChainPointCut$1.invoke(NewFilterChainPointCut.java:41)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java)\n\tat io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\n\tat io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\n\tat io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:64)\n\tat io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\n\tat io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)\n\tat io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\n\tat io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\n\tat io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\n\tat io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\n\tat io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)\n\tat io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\n\tat io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)\n\tat io.undertow.server.Connectors.executeRootHandler(Connectors.java:336)\n\tat io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.util.ConcurrentModificationException\n\t... 137 more\n", - "ExtendedInfo": "" - }, - "startTime": 1553009673156, - "totalDuration": 4, - "failOrigin": [{ - "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", - "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", - "column": 0, - "line": 18, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "16:
\n17: \tfunction teardown(){
\n18: \t\tstructClear( request );
\n19: \t}
\n20:
\n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)", - "codePrintPlain": "1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n1013: \t\t\t\t// store spec status\n", - "column": 0, - "line": 1011, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1009: \t\t\t\t\t// execute teardown()
\n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
\n1011: \t\t\t\t}
\n1012:
\n1013: \t\t\t\t// store spec status
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", - "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 208, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
\n207: \t\t\t\t\t\trunner=this
\n208: \t\t\t\t\t);
\n209:
\n210: \t\t\t\t\t// verify call backs
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", - "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", - "column": 0, - "line": 81, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
\n80: \t\t\t\t\t\tbundleStats=bundleStats,
\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
\n82: \t\t\t\t\t);
\n83:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", - "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", - "column": 0, - "line": 478, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
\n479: \t\t\t}
\n480: \t\t} catch( Any e ){
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
\n250: \t\t\t\ttestResults = results,
\n251: \t\t\t\tcallbacks = arguments.callbacks
\n252: \t\t\t);
\n253:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
\n159: \t\t// run it and get results
\n160: \t\tvar results = runRaw( argumentCollection=arguments );
\n161: \t\t// store latest results
\n162: \t\tvariables.result = results;
\n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
\n48: // Run Tests using correct reporter
\n49: results = testbox.run( reporter=url.reporter );
\n50:
\n51: // Write TEST.properties in report destination path.
\n" - }, { - "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", - "codePrintPlain": "19: \n20: \n21: \n", - "column": 0, - "line": 21, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "19:
\n20: <!--- Include the TestBox HTML Runner --->
\n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
\n" - }], - "status": "Error", - "suiteID": "0F9E64ECB27A3F1E33BC78FB7266E610", - "endTime": 1553009673160, - "name": "testExpectedExceptionWithValue", - "id": "821A8EBFF6CCAD78FF707B72D7566B3E", - "failMessage": "" - }, { - "error": { - "Extended_Info": "", - "Message": "java.util.ConcurrentModificationException", - "Detail": "", - "additional": {}, - "TagContext": [{ - "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", - "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", - "column": 0, - "line": 18, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "16:
\n17: \tfunction teardown(){
\n18: \t\tstructClear( request );
\n19: \t}
\n20:
\n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1010)", - "codePrintPlain": "1008: \t\t\t\t} finally {\n1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n", - "column": 0, - "line": 1010, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1008: \t\t\t\t} finally {
\n1009: \t\t\t\t\t// execute teardown()
\n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
\n1011: \t\t\t\t}
\n1012:
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", - "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 208, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
\n207: \t\t\t\t\t\trunner=this
\n208: \t\t\t\t\t);
\n209:
\n210: \t\t\t\t\t// verify call backs
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", - "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", - "column": 0, - "line": 81, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
\n80: \t\t\t\t\t\tbundleStats=bundleStats,
\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
\n82: \t\t\t\t\t);
\n83:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", - "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", - "column": 0, - "line": 478, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
\n479: \t\t\t}
\n480: \t\t} catch( Any e ){
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
\n250: \t\t\t\ttestResults = results,
\n251: \t\t\t\tcallbacks = arguments.callbacks
\n252: \t\t\t);
\n253:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
\n159: \t\t// run it and get results
\n160: \t\tvar results = runRaw( argumentCollection=arguments );
\n161: \t\t// store latest results
\n162: \t\tvariables.result = results;
\n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
\n48: // Run Tests using correct reporter
\n49: results = testbox.run( reporter=url.reporter );
\n50:
\n51: // Write TEST.properties in report destination path.
\n" - }, { - "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", - "codePrintPlain": "19: \n20: \n21: \n", - "column": 0, - "line": 21, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "19:
\n20: <!--- Include the TestBox HTML Runner --->
\n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
\n" - }], - "ErrorCode": "0", - "type": "java.util.ConcurrentModificationException", - "StackTrace": "lucee.runtime.exp.NativeException: java.util.ConcurrentModificationException\n\tat java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)\n\tat java.util.HashMap$KeyIterator.next(HashMap.java:1466)\n\tat io.undertow.servlet.util.IteratorEnumeration.nextElement(IteratorEnumeration.java:44)\n\tat lucee.runtime.type.scope.RequestImpl.clear(RequestImpl.java:157)\n\tat lucee.runtime.functions.struct.StructClear.call(StructClear.java:36)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1010)\n\tat system.basespec_cfc$cf.udfCall(/testbox/system/BaseSpec.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.call(UDFImpl.java:226)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:693)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.call(ComponentImpl.java:1997)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:756)\n\tat lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:1718)\n\tat system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:805)\n\tat tests.runner_cfm$cf.call(/tests/runner.cfm:21)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:218)\n\tat lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:43)\n\tat lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2464)\n\tat lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2454)\n\tat lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2427)\n\tat lucee.runtime.engine.Request.exe(Request.java:44)\n\tat lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1090)\n\tat lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1038)\n\tat lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:102)\n\tat lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\n\tat org.cfmlprojects.regexpathinfofilter.RegexPathInfoFilter.doFilter(RegexPathInfoFilter.java:47)\n\tat io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\n\tat sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:134)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doNext(FusionReactorRequestHandler.java:764)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doHttpServletRequest(FusionReactorRequestHandler.java:344)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doFusionRequest(FusionReactorRequestHandler.java:207)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.handle(FusionReactorRequestHandler.java:801)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorCoreFilter.doFilter(FusionReactorCoreFilter.java:36)\n\tat sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:71)\n\tat sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.agent.filter.FusionReactorStaticFilter.doFilter(FusionReactorStaticFilter.java:54)\n\tat com.intergral.fusionreactor.agent.pointcuts.NewFilterChainPointCut$1.invoke(NewFilterChainPointCut.java:41)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java)\n\tat io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\n\tat io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\n\tat io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:64)\n\tat io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\n\tat io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)\n\tat io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\n\tat io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\n\tat io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\n\tat io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\n\tat io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)\n\tat io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\n\tat io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)\n\tat io.undertow.server.Connectors.executeRootHandler(Connectors.java:336)\n\tat io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.util.ConcurrentModificationException\n\t... 137 more\n", - "ExtendedInfo": "" - }, - "startTime": 1553009673160, - "totalDuration": 3, - "failOrigin": [{ - "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", - "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", - "column": 0, - "line": 18, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "16:
\n17: \tfunction teardown(){
\n18: \t\tstructClear( request );
\n19: \t}
\n20:
\n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1010)", - "codePrintPlain": "1008: \t\t\t\t} finally {\n1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n", - "column": 0, - "line": 1010, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1008: \t\t\t\t} finally {
\n1009: \t\t\t\t\t// execute teardown()
\n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
\n1011: \t\t\t\t}
\n1012:
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", - "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 208, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
\n207: \t\t\t\t\t\trunner=this
\n208: \t\t\t\t\t);
\n209:
\n210: \t\t\t\t\t// verify call backs
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", - "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", - "column": 0, - "line": 81, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
\n80: \t\t\t\t\t\tbundleStats=bundleStats,
\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
\n82: \t\t\t\t\t);
\n83:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", - "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", - "column": 0, - "line": 478, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
\n479: \t\t\t}
\n480: \t\t} catch( Any e ){
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
\n250: \t\t\t\ttestResults = results,
\n251: \t\t\t\tcallbacks = arguments.callbacks
\n252: \t\t\t);
\n253:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
\n159: \t\t// run it and get results
\n160: \t\tvar results = runRaw( argumentCollection=arguments );
\n161: \t\t// store latest results
\n162: \t\tvariables.result = results;
\n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
\n48: // Run Tests using correct reporter
\n49: results = testbox.run( reporter=url.reporter );
\n50:
\n51: // Write TEST.properties in report destination path.
\n" - }, { - "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", - "codePrintPlain": "19: \n20: \n21: \n", - "column": 0, - "line": 21, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "19:
\n20: <!--- Include the TestBox HTML Runner --->
\n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
\n" - }], - "status": "Error", - "suiteID": "0F9E64ECB27A3F1E33BC78FB7266E610", - "endTime": 1553009673163, - "name": "testRaiseException_fail_wrong_exception_raised", - "id": "38E9FBD5CD24CC185DB762502F1D2E1E", - "failMessage": "" - }, { - "error": { - "Extended_Info": "", - "Message": "java.util.ConcurrentModificationException", - "Detail": "", - "additional": {}, - "TagContext": [{ - "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", - "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", - "column": 0, - "line": 18, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "16:
\n17: \tfunction teardown(){
\n18: \t\tstructClear( request );
\n19: \t}
\n20:
\n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1010)", - "codePrintPlain": "1008: \t\t\t\t} finally {\n1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n", - "column": 0, - "line": 1010, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1008: \t\t\t\t} finally {
\n1009: \t\t\t\t\t// execute teardown()
\n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
\n1011: \t\t\t\t}
\n1012:
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", - "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 208, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
\n207: \t\t\t\t\t\trunner=this
\n208: \t\t\t\t\t);
\n209:
\n210: \t\t\t\t\t// verify call backs
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", - "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", - "column": 0, - "line": 81, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
\n80: \t\t\t\t\t\tbundleStats=bundleStats,
\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
\n82: \t\t\t\t\t);
\n83:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", - "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", - "column": 0, - "line": 478, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
\n479: \t\t\t}
\n480: \t\t} catch( Any e ){
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
\n250: \t\t\t\ttestResults = results,
\n251: \t\t\t\tcallbacks = arguments.callbacks
\n252: \t\t\t);
\n253:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
\n159: \t\t// run it and get results
\n160: \t\tvar results = runRaw( argumentCollection=arguments );
\n161: \t\t// store latest results
\n162: \t\tvariables.result = results;
\n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
\n48: // Run Tests using correct reporter
\n49: results = testbox.run( reporter=url.reporter );
\n50:
\n51: // Write TEST.properties in report destination path.
\n" - }, { - "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", - "codePrintPlain": "19: \n20: \n21: \n", - "column": 0, - "line": 21, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "19:
\n20: <!--- Include the TestBox HTML Runner --->
\n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
\n" - }], - "ErrorCode": "0", - "type": "java.util.ConcurrentModificationException", - "StackTrace": "lucee.runtime.exp.NativeException: java.util.ConcurrentModificationException\n\tat java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)\n\tat java.util.HashMap$KeyIterator.next(HashMap.java:1466)\n\tat io.undertow.servlet.util.IteratorEnumeration.nextElement(IteratorEnumeration.java:44)\n\tat lucee.runtime.type.scope.RequestImpl.clear(RequestImpl.java:157)\n\tat lucee.runtime.functions.struct.StructClear.call(StructClear.java:36)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1010)\n\tat system.basespec_cfc$cf.udfCall(/testbox/system/BaseSpec.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.call(UDFImpl.java:226)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:693)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.call(ComponentImpl.java:1997)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:756)\n\tat lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:1718)\n\tat system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:805)\n\tat tests.runner_cfm$cf.call(/tests/runner.cfm:21)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:218)\n\tat lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:43)\n\tat lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2464)\n\tat lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2454)\n\tat lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2427)\n\tat lucee.runtime.engine.Request.exe(Request.java:44)\n\tat lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1090)\n\tat lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1038)\n\tat lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:102)\n\tat lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\n\tat org.cfmlprojects.regexpathinfofilter.RegexPathInfoFilter.doFilter(RegexPathInfoFilter.java:47)\n\tat io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\n\tat sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:134)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doNext(FusionReactorRequestHandler.java:764)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doHttpServletRequest(FusionReactorRequestHandler.java:344)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doFusionRequest(FusionReactorRequestHandler.java:207)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.handle(FusionReactorRequestHandler.java:801)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorCoreFilter.doFilter(FusionReactorCoreFilter.java:36)\n\tat sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:71)\n\tat sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.agent.filter.FusionReactorStaticFilter.doFilter(FusionReactorStaticFilter.java:54)\n\tat com.intergral.fusionreactor.agent.pointcuts.NewFilterChainPointCut$1.invoke(NewFilterChainPointCut.java:41)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java)\n\tat io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\n\tat io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\n\tat io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:64)\n\tat io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\n\tat io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)\n\tat io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\n\tat io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\n\tat io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\n\tat io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\n\tat io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)\n\tat io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\n\tat io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)\n\tat io.undertow.server.Connectors.executeRootHandler(Connectors.java:336)\n\tat io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.util.ConcurrentModificationException\n\t... 137 more\n", - "ExtendedInfo": "" - }, - "startTime": 1553009673163, - "totalDuration": 4, - "failOrigin": [{ - "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", - "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", - "column": 0, - "line": 18, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "16:
\n17: \tfunction teardown(){
\n18: \t\tstructClear( request );
\n19: \t}
\n20:
\n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1010)", - "codePrintPlain": "1008: \t\t\t\t} finally {\n1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n", - "column": 0, - "line": 1010, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1008: \t\t\t\t} finally {
\n1009: \t\t\t\t\t// execute teardown()
\n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
\n1011: \t\t\t\t}
\n1012:
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", - "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 208, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
\n207: \t\t\t\t\t\trunner=this
\n208: \t\t\t\t\t);
\n209:
\n210: \t\t\t\t\t// verify call backs
\n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", - "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", - "column": 0, - "line": 81, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
\n80: \t\t\t\t\t\tbundleStats=bundleStats,
\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
\n82: \t\t\t\t\t);
\n83:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", - "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", - "column": 0, - "line": 478, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
\n479: \t\t\t}
\n480: \t\t} catch( Any e ){
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
\n250: \t\t\t\ttestResults = results,
\n251: \t\t\t\tcallbacks = arguments.callbacks
\n252: \t\t\t);
\n253:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
\n159: \t\t// run it and get results
\n160: \t\tvar results = runRaw( argumentCollection=arguments );
\n161: \t\t// store latest results
\n162: \t\tvariables.result = results;
\n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
\n48: // Run Tests using correct reporter
\n49: results = testbox.run( reporter=url.reporter );
\n50:
\n51: // Write TEST.properties in report destination path.
\n" - }, { - "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", - "codePrintPlain": "19: \n20: \n21: \n", - "column": 0, - "line": 21, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "19:
\n20: <!--- Include the TestBox HTML Runner --->
\n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
\n" - }], - "status": "Error", - "suiteID": "0F9E64ECB27A3F1E33BC78FB7266E610", - "endTime": 1553009673167, - "name": "testExpectException_should_fail", - "id": "9AE953744ABF596DB46DABAAF47A36E0", - "failMessage": "" - }], - "endTime": 1553009673167, - "totalError": 7, - "name": "tests.specsWithFailures.MXUnitExpectedExceptions", - "id": "0F9E64ECB27A3F1E33BC78FB7266E610", - "suiteStats": [] - }], - "globalException": "" - }, { - "totalSuites": 1, - "startTime": 1553009673173, - "totalPass": 1, - "totalDuration": 15, - "totalSkipped": 0, - "totalFail": 1, - "totalSpecs": 2, - "path": "tests.specsWithFailures.TeardownWithFailureBDD", - "endTime": 1553009673188, - "totalError": 0, - "name": "tests.specsWithFailures.TeardownWithFailureBDD", - "id": "7DA7FE371A5DA234729404FCED6D1494", - "suiteStats": [{ - "startTime": 1553009673174, - "totalPass": 1, - "totalDuration": 13, - "totalSkipped": 0, - "totalFail": 1, - "totalSpecs": 2, - "bundleID": "7DA7FE371A5DA234729404FCED6D1494", - "status": "Failed", - "parentID": "", - "specStats": [{ - "error": {}, - "startTime": 1553009673174, - "totalDuration": 5, - "failOrigin": {}, - "status": "Passed", - "suiteID": "734EAC2A2E0173AB943C7F55FC61E4B4", - "endTime": 1553009673179, - "name": "passes", - "id": "60E1FD85154BCE145E454EB6A78FED66", - "failMessage": "" - }, { - "error": {}, - "startTime": 1553009673179, - "totalDuration": 8, - "failOrigin": [{ - "Raw_Trace": "specswithfailures.teardownwithfailurebdd_cfc$cf.udfCall(/tests/specsWithFailures/TeardownWithFailureBDD.cfc:34)", - "codePrintPlain": "32: \n33: \t\t\tit(\"fails\", function(){\n34: \t\t\t\texpect( 1 ).toBe( 3 );\n35: \t\t\t});\n36: \n", - "column": 0, - "line": 34, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/TeardownWithFailureBDD.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "32:
\n33: \t\t\tit("fails", function(){
\n34: \t\t\t\texpect( 1 ).toBe( 3 );
\n35: \t\t\t});
\n36:
\n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall6(/testbox/system/BaseSpec.cfc:1237)", - "codePrintPlain": "1235: \t\tstring implements=\"\"\n1236: \t){\n1237: \t\treturn this.$mockBox.createStub( argumentCollection=arguments );\n1238: \t}\n1239: \n", - "column": 0, - "line": 1237, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1235: \t\tstring implements=""
\n1236: \t){
\n1237: \t\treturn this.$mockBox.createStub( argumentCollection=arguments );
\n1238: \t}
\n1239:
\n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall4(/testbox/system/BaseSpec.cfc:888)", - "codePrintPlain": "886: \t\t\treturn function(){\n887: \t\t\t\t// Execute the body of the spec\n888: \t\t\t\tnextClosure.body( spec = thread.spec, suite = thread.suite, data = nextClosure.data );\n889: \t\t\t};\n890: \t\t}\n", - "column": 0, - "line": 888, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "886: \t\t\treturn function(){
\n887: \t\t\t\t// Execute the body of the spec
\n888: \t\t\t\tnextClosure.body( spec = thread.spec, suite = thread.suite, data = nextClosure.data );
\n889: \t\t\t};
\n890: \t\t}
\n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall4(/testbox/system/BaseSpec.cfc:863)", - "codePrintPlain": "861: \t\t);\n862: \t\t// Run the specs\n863: \t\tspecStack();\n864: \n865: \t\treturn this;\n", - "column": 0, - "line": 863, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "861: \t\t);
\n862: \t\t// Run the specs
\n863: \t\tspecStack();
\n864:
\n865: \t\treturn this;
\n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall3(/testbox/system/BaseSpec.cfc:701)", - "codePrintPlain": "699: \n700: \t\t\t\ttry{\n701: \t\t\t\t\trunAroundEachClosures( arguments.suite, arguments.spec );\n702: \t\t\t\t} catch( any e ){\n703: \t\t\t\t\trethrow;\n", - "column": 0, - "line": 701, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "699:
\n700: \t\t\t\ttry{
\n701: \t\t\t\t\trunAroundEachClosures( arguments.suite, arguments.spec );
\n702: \t\t\t\t} catch( any e ){
\n703: \t\t\t\t\trethrow;
\n" - }, { - "Raw_Trace": "system.runners.bddrunner_cfc$cf.udfCall(/testbox/system/runners/BDDRunner.cfc:221)", - "codePrintPlain": "219: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n220: \t\t\t\t\t\trunner=this\n221: \t\t\t\t\t);\n222: \n223: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 221, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/BDDRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "219: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
\n220: \t\t\t\t\t\trunner=this
\n221: \t\t\t\t\t);
\n222:
\n223: \t\t\t\t\t// verify call backs
\n" - }, { - "Raw_Trace": "system.runners.bddrunner_cfc$cf.udfCall(/testbox/system/runners/BDDRunner.cfc:83)", - "codePrintPlain": "81: \t\t\t\t\t\ttestResults=arguments.testResults,\n82: \t\t\t\t\t\tbundleStats=bundleStats,\n83: \t\t\t\t\t\tcallbacks=arguments.callbacks\n84: \t\t\t\t\t);\n85: \n", - "column": 0, - "line": 83, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/BDDRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "81: \t\t\t\t\t\ttestResults=arguments.testResults,
\n82: \t\t\t\t\t\tbundleStats=bundleStats,
\n83: \t\t\t\t\t\tcallbacks=arguments.callbacks
\n84: \t\t\t\t\t);
\n85:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:473)", - "codePrintPlain": "471: \t\t\t\t// Run via BDD Style\n472: \t\t\t\tnew testbox.system.runners.BDDRunner( options=variables.options, testbox=this )\n473: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n474: \t\t\t}\n475: \t\t\telse{\n", - "column": 0, - "line": 473, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "471: \t\t\t\t// Run via BDD Style
\n472: \t\t\t\tnew testbox.system.runners.BDDRunner( options=variables.options, testbox=this )
\n473: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
\n474: \t\t\t}
\n475: \t\t\telse{
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
\n250: \t\t\t\ttestResults = results,
\n251: \t\t\t\tcallbacks = arguments.callbacks
\n252: \t\t\t);
\n253:
\n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
\n159: \t\t// run it and get results
\n160: \t\tvar results = runRaw( argumentCollection=arguments );
\n161: \t\t// store latest results
\n162: \t\tvariables.result = results;
\n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
\n48: // Run Tests using correct reporter
\n49: results = testbox.run( reporter=url.reporter );
\n50:
\n51: // Write TEST.properties in report destination path.
\n" - }], - "status": "Failed", - "suiteID": "734EAC2A2E0173AB943C7F55FC61E4B4", - "endTime": 1553009673187, - "name": "fails", - "id": "5C518249D53779A16FA8302C61C4DDDA", - "failMessage": "Expected [3] but received [1]" - }], - "endTime": 1553009673187, - "totalError": 0, - "name": "A suite", - "id": "734EAC2A2E0173AB943C7F55FC61E4B4", - "suiteStats": [] - }], - "globalException": "" - }], - "totalPass": 2, - "totalDuration": 115, - "version": "3.1.0+339", - "totalSkipped": 0, - "totalFail": 2, - "totalSpecs": 11, - "excludes": ["exclude1", "exclude2"], - "labels": ["label1", "label2"], - "resultID": "", - "endTime": 1553009673188, - "coverage": { - "data": { - "sonarQubeResults": "/Users/iurquiza/Projects/ortus/TestBox/tests/results/sonarQubeResults", - "browserResults": "/Users/iurquiza/Projects/ortus/TestBox/tests/results/coverageReport", - "stats": { - "totalCoveredLines": 1253, - "numFiles": 78, - "percTotalCoverage": 0.167022127433, - "totalExecutableLines": 7502 - } - }, - "enabled": true - }, - "totalError": 7, - "totalBundles": 3 -} \ No newline at end of file From d05e0def2f5c2df22df47d939d1a02d80191e1fb Mon Sep 17 00:00:00 2001 From: lmajano Date: Tue, 17 Sep 2024 17:12:18 +0000 Subject: [PATCH 10/10] Apply cfformat changes --- commands/testbox/create/bdd.cfc | 8 ++++---- commands/testbox/create/unit.cfc | 8 ++++---- commands/testbox/generate/browser.cfc | 6 +++--- commands/testbox/generate/harness.cfc | 6 +++--- commands/testbox/generate/module.cfc | 6 +++--- commands/testbox/generate/visualizer.cfc | 2 +- commands/testbox/run.cfc | 2 +- models/BaseCommand.cfc | 16 ++++++++-------- 8 files changed, 27 insertions(+), 27 deletions(-) diff --git a/commands/testbox/create/bdd.cfc b/commands/testbox/create/bdd.cfc index 9641d9b..e44acb3 100644 --- a/commands/testbox/create/bdd.cfc +++ b/commands/testbox/create/bdd.cfc @@ -7,7 +7,7 @@ * {code} * **/ -component extends="testboxCLI.models.BaseCommand"{ +component extends="testboxCLI.models.BaseCommand" { /** * @name Name of the BDD spec to create without the .cfc. For packages, specify name as 'myPackage/myBDDSpec' @@ -17,8 +17,8 @@ component extends="testboxCLI.models.BaseCommand"{ **/ function run( required name, - boolean open = false, - directory = getCWD(), + boolean open = false, + directory = getCWD(), boolean boxlang = isBoxLangProject( getCWD() ) ){ isBoxLangProject(); @@ -49,7 +49,7 @@ component extends="testboxCLI.models.BaseCommand"{ print.line(); // Read in Templates - var BDDContent = fileRead( "#variables.settings.templatesPath#/#arguments.boxlang ? 'bx' : 'cfml'#/bdd.txt" ); + var BDDContent = fileRead( "#variables.settings.templatesPath#/#arguments.boxlang ? "bx" : "cfml"#/bdd.txt" ); // Write out BDD Spec var BDDPath= "#arguments.directory#/#name#.cfc"; diff --git a/commands/testbox/create/unit.cfc b/commands/testbox/create/unit.cfc index 196de57..9d47e4c 100644 --- a/commands/testbox/create/unit.cfc +++ b/commands/testbox/create/unit.cfc @@ -7,7 +7,7 @@ * {code} * **/ - component extends="testboxCLI.models.BaseCommand"{ +component extends="testboxCLI.models.BaseCommand" { /** * @name Name of the xUnit bundle to create without the .cfc. For packages, specify name as 'myPackage/MyTest' @@ -17,8 +17,8 @@ **/ function run( required name, - boolean open = false, - directory = getCWD(), + boolean open = false, + directory = getCWD(), boolean boxlang = isBoxLangProject( getCWD() ) ){ // Allow dot-delimited paths @@ -46,7 +46,7 @@ print.line(); // Read in Templates - var content = fileRead( "#variables.settings.templatesPath#/#arguments.boxlang ? 'bx' : 'cfml'#/unit.txt" ); + var content = fileRead( "#variables.settings.templatesPath#/#arguments.boxlang ? "bx" : "cfml"#/unit.txt" ); // Write out BDD Spec var thisPath= "#arguments.directory#/#name#.cfc"; diff --git a/commands/testbox/generate/browser.cfc b/commands/testbox/generate/browser.cfc index c25d5b8..5429aae 100644 --- a/commands/testbox/generate/browser.cfc +++ b/commands/testbox/generate/browser.cfc @@ -11,7 +11,7 @@ * testbox create browser C:\myApp * {code} */ -component extends="testboxCLI.models.BaseCommand"{ +component extends="testboxCLI.models.BaseCommand" { /** * @directory The base directory to create your test browser @@ -19,7 +19,7 @@ component extends="testboxCLI.models.BaseCommand"{ */ function run( string directory = getCWD(), - boolean boxlang = isBoxLangProject( getCWD() ) + boolean boxlang = isBoxLangProject( getCWD() ) ){ // This will make each directory canonical and absolute arguments.directory = resolvePath( arguments.directory & "/tests/browser" ); @@ -30,7 +30,7 @@ component extends="testboxCLI.models.BaseCommand"{ // Copy template from testbox source directoryCopy( - "#variables.settings.templatesPath#/#arguments.boxlang ? 'bx' : 'cfml'#/browser/", + "#variables.settings.templatesPath#/#arguments.boxlang ? "bx" : "cfml"#/browser/", arguments.directory, true ); diff --git a/commands/testbox/generate/harness.cfc b/commands/testbox/generate/harness.cfc index a965908..10da762 100644 --- a/commands/testbox/generate/harness.cfc +++ b/commands/testbox/generate/harness.cfc @@ -11,7 +11,7 @@ * testbox create harness C:\myApp * {code} */ -component extends="testboxCLI.models.BaseCommand"{ +component extends="testboxCLI.models.BaseCommand" { /** * @directory The base directory to create your test browser @@ -19,7 +19,7 @@ component extends="testboxCLI.models.BaseCommand"{ */ function run( string directory = getCWD(), - boolean boxlang = isBoxLangProject( getCWD() ) + boolean boxlang = isBoxLangProject( getCWD() ) ){ // This will make each directory canonical and absolute arguments.directory = resolvePath( arguments.directory & "/tests" ); @@ -30,7 +30,7 @@ component extends="testboxCLI.models.BaseCommand"{ // Copy template from testbox source directoryCopy( - "#variables.settings.templatesPath#/#arguments.boxlang ? 'bx' : 'cfml'#/tests/", + "#variables.settings.templatesPath#/#arguments.boxlang ? "bx" : "cfml"#/tests/", arguments.directory, true ); diff --git a/commands/testbox/generate/module.cfc b/commands/testbox/generate/module.cfc index c57e8eb..59e096a 100644 --- a/commands/testbox/generate/module.cfc +++ b/commands/testbox/generate/module.cfc @@ -11,7 +11,7 @@ * testbox create module myModule tests/resources/modules * {code} */ -component extends="testboxCLI.models.BaseCommand"{ +component extends="testboxCLI.models.BaseCommand" { /** * @name The name of the module @@ -21,7 +21,7 @@ component extends="testboxCLI.models.BaseCommand"{ function run( required name, string rootDirectory = getCWD(), - boolean boxlang = isBoxLangProject( getCWD() ) + boolean boxlang = isBoxLangProject( getCWD() ) ){ var moduleDirectory = resolvePath( arguments.rootDirectory ) & "/" & arguments.name; @@ -31,7 +31,7 @@ component extends="testboxCLI.models.BaseCommand"{ // Copy template directoryCopy( - "#variables.settings.templatesPath#/#arguments.boxlang ? 'bx' : 'cfml'#/module/", + "#variables.settings.templatesPath#/#arguments.boxlang ? "bx" : "cfml"#/module/", moduleDirectory, true ); diff --git a/commands/testbox/generate/visualizer.cfc b/commands/testbox/generate/visualizer.cfc index 902d920..6956dbb 100644 --- a/commands/testbox/generate/visualizer.cfc +++ b/commands/testbox/generate/visualizer.cfc @@ -11,7 +11,7 @@ * testbox create visualizer C:\myApp * {code} */ -component extends="testboxCLI.models.BaseCommand"{ +component extends="testboxCLI.models.BaseCommand" { /** * @directory The base directory to create your test visualizer diff --git a/commands/testbox/run.cfc b/commands/testbox/run.cfc index 3a710b6..e726ea8 100644 --- a/commands/testbox/run.cfc +++ b/commands/testbox/run.cfc @@ -54,7 +54,7 @@ * {code} * **/ -component extends="testboxCLI.models.BaseCommand"{ +component extends="testboxCLI.models.BaseCommand" { // DI property name="testingService" inject="TestingService@testbox-cli"; diff --git a/models/BaseCommand.cfc b/models/BaseCommand.cfc index 91f750c..490c714 100644 --- a/models/BaseCommand.cfc +++ b/models/BaseCommand.cfc @@ -1,9 +1,9 @@ -component{ +component { // Global Injections - property name="settings" inject="box:modulesettings:testbox-cli"; - property name="moduleConfig" inject="box:moduleConfig:testbox-cli"; - property name="serverService" inject="serverService"; + property name="settings" inject="box:modulesettings:testbox-cli"; + property name="moduleConfig" inject="box:moduleConfig:testbox-cli"; + property name="serverService" inject="serverService"; property name="packageService" inject="PackageService"; /** @@ -124,22 +124,22 @@ component{ private function isBoxLangProject( required cwd ){ // Detect if it's a BoxLang server first. var serverInfo = variables.serverService.resolveServerDetails( {} ).serverInfo; - if( serverInfo.cfengine.findNoCase( "boxlang" ) ){ + if ( serverInfo.cfengine.findNoCase( "boxlang" ) ) { return true; } // Detect if you have the BoxLang runner set. var boxOptions = variables.packageService.readPackageDescriptor( arguments.cwd ); - if( + if ( boxOptions.testbox.keyExists( "runner" ) && isSimpleValue( boxOptions.testbox.runner ) && boxOptions.testbox.runner == "boxlang" - ){ + ) { return true; } // Language mode - if( boxOptions.keyExists( "language" ) && boxOptions.language == "boxlang" ){ + if ( boxOptions.keyExists( "language" ) && boxOptions.language == "boxlang" ) { return true; }