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

kobotoolbox / kpi / 29816039201 / 5
82%
master: 76%

Build:
Build:
LAST BUILD BRANCH: dev-2567-dailycounter-fix
DEFAULT BRANCH: master
Ran 21 Jul 2026 08:59AM UTC
Files 893
Run time 23s
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

21 Jul 2026 08:53AM UTC coverage: 50.742% (-16.3%) from 67.087%
29816039201.5

push

github

web-flow
fix(xlsForm): keep leading "=" in labels as text instead of a formula DEV-1235 (#7282)

### đŸ“Ŗ Summary

Question and choice labels that start with an equals sign (e.g. `=foo`)
now display and export correctly instead of turning into `0` or a
spreadsheet error.

### 📖 Description

If a label began with `=`, it was mistaken for a spreadsheet formula.
The deployed form showed `0` in place of the label in Enketo, and
exporting the form to XLSForm produced an error (`Err:520`) where the
label should be. Labels (and other cells) starting with `=` are now kept
as plain text everywhere.

### 💭 Notes

- Root cause: `Asset.to_xlsx_io()` builds the workbook with
`xlsxwriter`, whose generic `write()` routes any `=`-prefixed string to
`write_formula()`. The deploy path feeds the same in-memory xlsx to
pyxform, so one bug corrupted **both** the XLSForm export and the
deployed XForm (pyxform reads the formula's cached `0`).
- Fix: pass `{'strings_to_formulas': False}` to the
`xlsxwriter.Workbook`. XLSForm cells are never Excel formulas, so this
is safe; it's workbook-scoped, so it also covers `+`/`-`/`@` prefixes
and the survey, choices and settings sheets.
- Added regression test
`test_to_xlsx_io_preserves_leading_equals_in_label`.

### 👀 Preview steps

1. â„šī¸ have an account and a project
2. add a text question with the label `=foo`, then deploy the form
3. 🔴 [on main] open the form in Enketo → the label shows `0`; export the
form to XLSForm → the cell shows `Err:520`
4. đŸŸĸ [on PR] open the form in Enketo → the label shows `=foo`; export
the form to XLSForm → the cell shows `=foo`

4565 of 12627 branches covered (36.15%)

18974 of 37393 relevant lines covered (50.74%)

0.51 hits per line

Source Files on job 29816039201.5
  • Tree
  • List 893
  • Changed 329
  • Source Changed 0
  • Coverage Changed 329
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Build 29816039201
  • e966f278 on github
  • Prev Job for on main (#29759056455.7)
  • Next Job for on main (#29819093005.1)
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