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

peczenyj / lua-gdpr-iab-tcfv2 / 25670557487
91%

Build:
DEFAULT BRANCH: devel
Ran 11 May 2026 12:38PM UTC
Jobs 7
Files 11
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

11 May 2026 12:37PM UTC coverage: 89.711% (+1.2%) from 88.551%
25670557487

push

github

web-flow
fix(validator): port Perl-aligned behavior (Tier A) (#19)

Six related changes that collectively bring the Validator's behavior in
line with the Perl reference implementation while keeping the public
API surface unchanged (still (boolean, string|table) returns -- the
structured Result/Failure types from Perl are explicitly out of scope
for Tier A).

* Error wording rewritten to match Perl message-for-message:
  - "vendor X not allowed for purpose Y (consent)" replaces the split
    "missing consent for vendor X" / "missing consent for purpose Y"
  - "vendor X not allowed for purpose Y (legitimate interest)" replaces
    the equivalent split for the LI path
  - "legitimate interest not permitted for purpose N" replaces the
    P1-specific "purpose 1 does not allow legitimate interest"
  - "vendor N not disclosed" replaces "vendor N not in disclosed
    vendors segment"
  - "missing disclosed vendors segment" replaces "missing mandatory
    disclosed vendors segment for policy v2.3+"
  - "TC string policy version X is below required minimum Y" replaces
    "policy version X is less than required Y"
  - "publisher restriction: purpose N {not allowed|requires consent|
    requires legitimate interest} (vendor V)" replaces the
    less-specific Lua-only restriction messages

  These are byte-equivalent to Perl's reason strings (see
  perl/lib/GDPR/IAB/TCFv2/Validator.pm), unblocking reason-level parity
  in a future test pass.

* LI carve-out applied. Per the TCF spec (and Perl's
  _li_carve_out_applies), Purpose 1 never allows legitimate interest
  AND Purposes 3-6 lose LI starting in TCF v2.2 (policy version 4).
  Lua previously only handled Purpose 1; now P3-6 in v2.2+ also fail
  with "legitimate interest not permitted for purpose N".

* Constructor coherence checks added. Validator.new now error()s when:
  - a purpose appears in both consent_purpose_ids and
    legitimate_interest_purpose_ids
  - a flexible_purpose_ids entry doesn't appear in either b... (continued)

128 of 138 new or added lines in 1 file covered. (92.75%)

3 existing lines in 1 file now uncovered.

558 of 622 relevant lines covered (89.71%)

75149.24 hits per line

Uncovered Changes

Lines Coverage ∆ File
10
93.05
3.53% src/gdpr/iab/tcfv2/validator.lua

Coverage Regressions

Lines Coverage ∆ File
3
93.05
3.53% src/gdpr/iab/tcfv2/validator.lua
Jobs
ID Job ID Ran Files Coverage
1 25670557487.1 11 May 2026 12:38PM UTC 11
89.42
GitHub Action Run
2 25670557487.2 11 May 2026 12:38PM UTC 11
89.42
GitHub Action Run
3 25670557487.3 11 May 2026 12:38PM UTC 11
89.71
GitHub Action Run
4 25670557487.4 11 May 2026 12:38PM UTC 11
89.69
GitHub Action Run
5 25670557487.5 11 May 2026 12:38PM UTC 11
89.69
GitHub Action Run
6 25670557487.6 11 May 2026 12:38PM UTC 11
89.69
GitHub Action Run
7 25670557487.7 11 May 2026 12:38PM UTC 11
89.71
GitHub Action Run
Source Files on build 25670557487
  • Tree
  • List 11
  • Changed 1
  • Source Changed 0
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • f9b3f4f3 on github
  • Prev Build on devel (#25669983764)
  • Next Build on devel (#25672369211)
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