• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

microsoft / RulesEngine / 26522805549
95%
master: 97%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 27 May 2026 04:01PM UTC
Jobs 1
Files 24
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

27 May 2026 04:00PM UTC coverage: 95.683% (+0.1%) from 95.573%
26522805549

push

github

web-flow
Fix #624, #704, #711, #714, #717: action exception propagation, list schema merging, OutputExpression error hint, global-param dedup, object-return diagnostics (#728)

* Fix #717, #711, #714, #704, #624: bug bash batch

#624: ActionBase.ExecuteAndReturnResultAsync silently captured every
exception into result.Exception regardless of EnableExceptionAsErrorMessage,
so an action throwing inside Run() never propagated when the setting was
false. Add ThrowIfActionExceptionShouldPropagate in RulesEngine to honor
the contract documented on ReSettings.

#711: OutputExpressionAction emitted a cryptic
"Expression is missing an 'as' clause" when users wrote C#-style anonymous
objects (`new { X = ... } as Result`). Detect the pattern and wrap the
parse exception with a clear hint pointing at the Dynamic.Core syntax
(`new (value as Name, ...)`).

#714: Global params were re-evaluated for every rule in the workflow,
so `Utils.FromDb(myInput)` ran N times per ExecuteAllRulesAsync call.
Move the global-params compilation+evaluation to workflow scope: compile
a single delegate at RegisterRule time, store it in RulesCache, evaluate
once in ExecuteAllRuleByWorkflow and append the result as RuleParameters
to each compiled rule. Preserve the existing per-rule error messages when
global compilation or evaluation fails. ExecuteActionWorkflowAsync
(which bypasses RulesCache) evaluates globals ad-hoc.

#704: Utils.CreateAbstractClassType used only list[0] when generating the
CLR type for a heterogeneous IList of ExpandoObject/Dictionary, so any
property appearing only in later elements was dropped. Walk every element
and union the schema; recursively merge nested dictionaries.

#717: Methods declared to return `object` cannot have their result
members accessed in Dynamic.Core expressions — the parser errors with
"exists in type 'Object'" or "is not defined for the types 'System.Object'".
We can't unbox at parse time, but the error message gave no clue what was
wrong. Detect t... (continued)

446 of 558 branches covered (79.93%)

106 of 112 new or added lines in 6 files covered. (94.64%)

820 of 857 relevant lines covered (95.68%)

524.37 hits per line

Uncovered Changes

Lines Coverage ∆ File
4
94.34
-3.44% src/RulesEngine/HelperFunctions/Utils.cs
2
98.2
-0.63% src/RulesEngine/RulesEngine.cs
Jobs
ID Job ID Ran Files Coverage
1 26522805549.1 27 May 2026 04:01PM UTC 24
95.68
GitHub Action Run
Source Files on build 26522805549
  • Tree
  • List 24
  • Changed 7
  • Source Changed 6
  • Coverage Changed 7
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #26522805549
  • 29913a6c on github
  • Prev Build on main (#26519369129)
  • Next Build on main (#26523296308)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc