diff --git a/core/retry.xml b/core/retry.xml index 41afbbe9..069f2c63 100644 --- a/core/retry.xml +++ b/core/retry.xml @@ -19,7 +19,8 @@ - + diff --git a/progtest/src/TestCase.js b/progtest/src/TestCase.js index 7d69457e..9258caf9 100644 --- a/progtest/src/TestCase.js +++ b/progtest/src/TestCase.js @@ -38,6 +38,11 @@ module.exports = Class( 'TestCase', return this._caseData.description || ""; }, + get allow_failures() + { + return this._caseData.allow_failures || false; + }, + get data() { return this._caseData.data || {}; @@ -72,9 +77,10 @@ module.exports = Class( 'TestCase', } ); return module.exports( { - description: this.description, - data: new_data, - expect: new_expect, + description: this.description, + allow_failures: this.allow_failures, + data: new_data, + expect: new_expect, } ); }, diff --git a/progtest/src/TestRunner.js b/progtest/src/TestRunner.js index ac172d0b..a969e49d 100644 --- a/progtest/src/TestRunner.js +++ b/progtest/src/TestRunner.js @@ -111,10 +111,22 @@ module.exports = Class( 'TestRunner', * * @return {Object} test results */ - 'protected runTest'( { description: desc, data, expect }, test_i, total ) - { + 'protected runTest'( + { + description: desc, + allow_failures, + data, + expect, + }, + test_i, + total + ) { + const can_term = ( typeof allow_failures === 'string' ) + ? !( allow_failures.toLowerCase() === 'true') + : !allow_failures; + // no input map---#rate uses params directly - const result = this._tryRun( data ); + const result = this._tryRun( data, can_term ); const cmp = Object.keys( expect ).map( field => [ @@ -163,14 +175,14 @@ module.exports = Class( 'TestRunner', * * @return {Object|Error} result or error */ - 'private _tryRun'( data ) + 'private _tryRun'( data, can_term ) { // no input map---#rate uses params directly try { this._verifyKnownParams( data ); - return this._program.rater( data ).vars; + return this._program.rater( data, can_term ).vars; } catch( e ) {