forked from pub-solar/os
c012f2f4ed
- [x] refactor lib into separate files, similar to NixOS/nixpkgs/lib. - [x] refactor ci to automatically generate derivations from flake outputs - [x] remove cluttered indirection statements throughout the codebase - [x] refactor hosts to allow for upcoming integration tests - [x] improve ambiguity in the existing docs - [x] add [BORS](https://bors.tech) support - [x] add initial integration test - [x] write tests documentation - [x] test lib - [x] improve version string generation, and do so automatically for pkgs/flake.nix sources Clean up the codebase as best we can in preparation for #152 and add tests. From now on, all PRs will be merged with BORS.
37 lines
1.8 KiB
Markdown
37 lines
1.8 KiB
Markdown
# Testing
|
|
|
|
Testing is always an important aspect of any software development project, and
|
|
NixOS offers some incredibly powerful tools to write tests for your
|
|
configuration, and, optionally, run them in
|
|
[CI](../doc/integrations/hercules.md).
|
|
|
|
## Lib Tests
|
|
You can easily write tests for your own library functions in the
|
|
___tests/lib.nix___ file and they will be run on every `nix flake check` or
|
|
during a CI run.
|
|
|
|
## Unit Tests
|
|
Unit tests are can be created from regular derivations, and they can do
|
|
almost anything you can imagine. By convention, it is best to test your
|
|
packages during their [check phase][check]. All packages and their tests will
|
|
be built during CI.
|
|
|
|
## Integration Tests
|
|
You can write integration tests for one or more NixOS VMs that can,
|
|
optionally, be networked together, and yes, it's as awesome as it sounds!
|
|
|
|
Be sure to use the `mkTest` function, in the [___tests/default.nix___][default]
|
|
which wraps the official [testing-python][testing-python] function to ensure
|
|
that the system is setup exactly as it is for a bare DevOS system. There are
|
|
already great resources for learning how to use these tests effectively,
|
|
including the official [docs][test-doc], a fantastic [blog post][test-blog],
|
|
and the examples in [nixpkgs][nixos-tests].
|
|
|
|
[test-doc]: https://nixos.org/manual/nixos/stable/index.html#sec-nixos-tests
|
|
[test-blog]: https://www.haskellforall.com/2020/11/how-to-use-nixos-for-lightweight.html
|
|
[default]: https://github.com/divnix/devos/tree/core/tests/default.nix
|
|
[run-test]: https://github.com/NixOS/nixpkgs/blob/6571462647d7316aff8b8597ecdf5922547bf365/lib/debug.nix#L154-L166
|
|
[nixos-tests]: https://github.com/NixOS/nixpkgs/tree/master/nixos/tests
|
|
[testing-python]: https://github.com/NixOS/nixpkgs/tree/master/nixos/lib/testing-python.nix
|
|
[check]: https://nixos.org/manual/nixpkgs/stable/#ssec-check-phase
|