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 )
{