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

ossia / libossia / 33976942710
52%

Build:
DEFAULT BRANCH: master
Ran 05 Sep 2026 04:52PM UTC
Jobs 1
Files 509
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

05 Sep 2026 04:08PM UTC coverage: 52.212% (+0.8%) from 51.366%
33976942710

push

github

jcelerier
dataflow: make the units on a port mean something

Units were declared all over the place and acted upon almost nowhere.

filter_value() read the source type on both sides of its comparison, so an
inlet never converted anything: a port asking for orientation.euler on a
quaternion address received the raw quaternion. A conversion whose result
is invalid - a parameter declared color.rgb fed a plain float, which
make_value() cannot represent - keeps what came in.

On the way out, the branch of map_value_to_param() that runs whenever a
port has a unit built its typed_value from the value alone, dropping both
the unit and the index, so the message reached ossia::message::launch()
with nothing to convert by and metres landed in a millimetre address as
metres. The unit and index now travel to the message. Two typed_value
constructors dropped the timestamp while every sibling kept it.

A port's unit had two sources with one field to hold them: what the node
declares (a colour port is rgba, a gain decibels) and what the port's
address asks for with @[unit]. The second was written straight into the
first, so clearing an address destroyed the node's own declaration and a
new address without a qualifier left the old unit behind. They are now
separate - `type` and `address_unit`, combined by effective_type() - and
only the override goes away with the address.

A unit conversion and a domain mapping are not the same kind of operation.
A unit says what the numbers are and converting preserves the quantity;
mapping between two domains deliberately rescales it. Doing both scaled
the value with bounds expressed in the unit it had just left: one metre
into a millimetre port ranged [0;1] came out as 500. So when both sides
declare a unit of the same dataspace, the conversion has said everything
there is to say and the sink's domain, if it has one, bounds the result
instead - 1000 mm, clipped to 1. This holds the same way on every path:
the address pull, the event pull, t... (continued)

635 of 654 new or added lines in 8 files covered. (97.09%)

7 existing lines in 2 files now uncovered.

31449 of 60233 relevant lines covered (52.21%)

175200.95 hits per line

Uncovered Changes

Lines Coverage ∆ File
9
56.78
20.3% src/ossia/dataflow/data.cpp
9
38.1
11.71% src/ossia/dataflow/execution/local_state_execution_policy.cpp
1
92.31
-7.69% src/ossia/dataflow/value_port.hpp

Coverage Regressions

Lines Coverage ∆ File
6
88.29
0.31% src/ossia/network/dataspace/dataspace_base_variants.hpp
1
38.1
11.71% src/ossia/dataflow/execution/local_state_execution_policy.cpp
Jobs
ID Job ID Ran Files Coverage
1 33976942710.1 05 Sep 2026 04:52PM UTC 509
52.21
GitHub Action Run
Source Files on build 33976942710
  • Tree
  • List 509
  • Changed 24
  • Source Changed 0
  • Coverage Changed 24
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • f3ee92e7 on github
  • Prev Build on master (#33885586992)
  • Next Build on master (#34066222855)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc