Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bleeding edge Unit Testing #109

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
Open

Conversation

dzid26
Copy link

@dzid26 dzid26 commented Jul 16, 2024

Python bindings to the c code - pytest testing

https://youtu.be/zW_HyDTPjO0?t=161

  • allows testing static functions

  • allows using advanced testing libraries, such as hypothesis or numpy

  • function mocking

  • Extra warnings from gcc

  • tests coverage of the c-code

  • easy to use, automatic IDE's integrations
    Screenshot 2024-07-16 135405

  • provides easy testcase debugging, (but hard c-code debugging)

    • if there is e.g. div by 0, the tests will crash and will say just that

What's included:

  • python bindings auto-generation (automatic parsing and .cdef definition creation !) and module compilation
  • python setup, (just run pip install .)
  • readme instructions, (just run pytest)
  • example tests (parameterized tests, comparison with floating point, functions mocking)
  • CI:
    • gcc warnings as errors
    • test reports display + coverage % of the c-code.
    • Experimental PR bot (if tests fail).
    • HTML coverage report artifact

Minor code fixes:

(details in the commit message df8b31d)

  • typedef enum fix - allow gcc compilation
  • explicit (uint8_t) castings warnings fix
  • explicit pointer type struct_configuration_variables casting
  • explicit operator << ordering in BATTERY_VOLTAGE_SHUTDOWN_10_BIT - (I made sure this doesn't change calculated value)
  • changed few defaults in config.h to prevent dead code warnings

dzid26 added 3 commits July 16, 2024 15:40
Small c-files cleanup to help with compilation.
Displays test results in Github Actions summary and PRs
Added pytest --force
Fixed [-Wparentheses] parentheses around ‘-’ inside ‘<<’ BATTERY_VOLTAGE_SHUTDOWN_10_BIT

Fixed [-Wdiscarded-qualifiers]   return discards ‘volatile’ qualifier from pointer target type &m_configuration_variables;

Fixed [-Wsign-compare]  comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’

Fixed [-Wunused-but-set-variable] enable walk assist debounce code path by default

Fixed [-Wunused-label]

Fixed warning C4244: '=': conversion from 'int16_t' to 'uint8_t', possible loss of data
@dzid26
Copy link
Author

dzid26 commented Aug 20, 2024

@emmebrusa any concerns ?
The remaining PR's don't carry any functional changes to the end user.

@emmebrusa
Copy link
Owner

I didn't go into detail about what this means for the user, when I saw "File changed 30" and "File changed 20" I stopped.
I'm on vacation ...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants