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

rero / sonar / 30436734983
95%
master: 95%

Build:
Build:
LAST BUILD BRANCH: staging
DEFAULT BRANCH: master
Ran 29 Jul 2026 08:57AM UTC
Jobs 1
Files 283
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

29 Jul 2026 08:44AM UTC coverage: 94.677% (+0.06%) from 94.613%
30436734983

push

github

Garfield-fr
feat(documents): add bibliographic citation

* Render citations with citeproc-py against real CSL style files
  (APA 7, Chicago 17 author-date, MLA 9, Harvard 12)
* Vendor the 4 CSL style files under citations/styles/, named with
  their edition so multiple editions of the same style can coexist;
  Chicago is pinned to a pre-18th-edition revision to avoid an
  unfixed citeproc-py crash on cited page ranges
* Map SONAR documentType (COAR resource type) to CSL-JSON item types,
  covering all 49 COAR values (article, book, chapter, thesis,
  report, conference paper, patent, periodical, broadcast, review, ...)
* Map edition, series, bf:Meeting (event/event-place/event-date) and
  extent (number-of-pages) to their CSL-JSON equivalents
* Fall back to partOf.numberingYear then dissertation.date when
  provisionActivity is missing, and preserve full day precision
  (year-month-day) when available, since APA/MLA render it for
  document types where their convention calls for it
* Group contribution names by CSL role (author/editor/contributor)
  instead of a creator-or-editor fallback, so a document can have
  both at once; exclude bf:Meeting contributions from names and
  keep corporate/organisation names unsplit
* Work around a citeproc-py crash when rendering the CSL
  "contributor" variable for APA/MLA book-like records with no editor
* Add a permanent link back to the document as a CSL URL fallback,
  passed in as an explicit host_url parameter rather than read from
  Flask's request context, so the mapping module stays usable outside
  of a request
* Enforce document read permissions on GET /<pid>/citation, denying
  masked or restricted documents to anonymous/unauthorized users
* Return a clear 500 message instead of an unhandled crash when
  citeproc-py fails to render a citation
* Mark citation style labels for translation
* Add GET /api/documents/<pid>/citation?style=&lang= endpoint
* Add GET /api/documents/citation-styles endpoint
* Closes #409.

C... (continued)

213 of 220 new or added lines in 5 files covered. (96.82%)

7274 of 7683 relevant lines covered (94.68%)

0.95 hits per line

Uncovered Changes

Lines Coverage ∆ File
4
90.57
-5.86% sonar/modules/documents/rest.py
3
98.13
sonar/modules/documents/citations/csl_mapping.py
Jobs
ID Job ID Ran Files Coverage
1 30436734983.1 29 Jul 2026 08:57AM UTC 283
94.68
GitHub Action Run
Source Files on build 30436734983
  • Tree
  • List 283
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #30436734983
  • 80fbbc0c on github
  • Prev Build on staging (#30264118453)
  • Next Build on staging (#30544572311)
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