.cargo | ||
.forgejo/workflows | ||
.git-hooks | ||
examples | ||
src | ||
tests | ||
.git-next.toml | ||
.gitignore | ||
.rgignore | ||
bacon.toml | ||
Cargo.toml | ||
CHANGELOG.md | ||
justfile | ||
LICENSE | ||
README.md | ||
renovate.json |
kxio
kxio
is a Rust library that provides injectable FileSystem
, Network
and
Print
resources to enhance the testability of your code. By abstracting
system-level interactions, kxio
enables easier mocking and testing of code
that relies on file system and network operations.
Features
- Filesystem Abstraction
- Network Abstraction
- Print Abstraction
- Enhanced Testability
Filesystem
The Filesystem module offers a clean abstraction over std::fs
, the standard
file system operations. For comprehensive documentation and usage examples,
please refer to https://docs.rs/kxio/latest/kxio/fs/.
Key Filesystem Features:
- File reading and writing
- Directory operations
- File metadata access
- Fluent API for operations like
.reader().bytes()
Network
The Network module offers a testable interface over the reqwest
crate. For
comprehensive documentation and usage examples, please refer to
https://docs.rs/kxio/latest/kxio/net/
The Print module provides three implementations of the Printer
trait:
StandardPrint
- behaves as normal, printing toSTDOUT
andSTDERR
NullPrint
- swallows all prints, outputting nothingTestPrint
- captures all print output and makes it available for assertions in tests
It also provides macros to use with each:
kxprintln
kxprint
kxeprintln
kxeprint
They are analogous to the std
macros: println
, print
, eprintln
and eprint
respectively.
Each of the kx{e}print{ln}
macros takes a reference to an instance of the Printer
trait as the first parameter.
For comprehensive documentation and usage examples, please refer to https://docs.rs/kxio/latest/kxio/print/
Getting Started
Add kxio
to your Cargo.toml
:
[dependencies]
kxio = "x.y.z"
Usage
See the example get.rs for an annotated example on how to use the kxio
library.
It covers both the net
and fs
modules.
Development
- The project uses Cargo Mutants for mutation testing.
- ForgeJo Actions are used for continuous testing and linting.
Contributing
Contributions are welcome! Please check our issue tracker for open tasks or submit your own ideas.
License
This project is licensed under the terms specified in the LICENSE
file in the
repository root.
Acknowledgements
- Built with Rust
For more information, bug reports, or feature requests, please visit our repository.