mirror of
https://github.com/orhun/systeroid
synced 2024-10-02 21:53:31 +00:00
test(app): add live-tests flag for testing app as a whole
This commit is contained in:
parent
5847b3370a
commit
cd5e1851de
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
|
@ -98,7 +98,7 @@ jobs:
|
|||
mv cargo-tarpaulin ~/.cargo/bin/
|
||||
|
||||
- name: Run tests
|
||||
run: NO_COLOR=1 cargo tarpaulin --out Xml --verbose
|
||||
run: NO_COLOR=1 sudo -E cargo tarpaulin --features live-tests --out Xml --verbose
|
||||
|
||||
- name: Upload reports to codecov
|
||||
uses: codecov/codecov-action@v1
|
||||
|
|
|
@ -4,6 +4,10 @@ version = "0.1.0"
|
|||
authors = ["Orhun Parmaksız <orhunparmaksiz@gmail.com>"]
|
||||
edition = "2021"
|
||||
|
||||
[features]
|
||||
# tests that affect the system state
|
||||
live-tests = []
|
||||
|
||||
[dependencies]
|
||||
getopts = "0.2.21"
|
||||
|
||||
|
|
|
@ -9,13 +9,13 @@ pub mod args;
|
|||
|
||||
use crate::app::App;
|
||||
use crate::args::Args;
|
||||
use std::io;
|
||||
use std::io::Write;
|
||||
use systeroid_core::config::Config;
|
||||
use systeroid_core::error::Result;
|
||||
use systeroid_core::sysctl::controller::Sysctl;
|
||||
|
||||
/// Runs `systeroid`.
|
||||
pub fn run(args: Args) -> Result<()> {
|
||||
pub fn run<Output: Write>(args: Args, output: &mut Output) -> Result<()> {
|
||||
let config = Config {
|
||||
verbose: args.verbose,
|
||||
ignore_errors: args.ignore_errors,
|
||||
|
@ -24,9 +24,8 @@ pub fn run(args: Args) -> Result<()> {
|
|||
display_type: args.display_type,
|
||||
..Default::default()
|
||||
};
|
||||
let mut stdout = io::stdout();
|
||||
let mut sysctl = Sysctl::init(config)?;
|
||||
let mut app = App::new(&mut sysctl, &mut stdout, args.tree_output)?;
|
||||
let mut app = App::new(&mut sysctl, output, args.tree_output)?;
|
||||
|
||||
if args.preload_system_files {
|
||||
app.preload_from_system()?;
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
use std::env;
|
||||
use std::io;
|
||||
use std::process;
|
||||
use systeroid::args::Args;
|
||||
|
||||
fn main() {
|
||||
if let Some(args) = Args::parse(env::args().collect()) {
|
||||
match systeroid::run(args) {
|
||||
let mut stdout = io::stdout();
|
||||
match systeroid::run(args, &mut stdout) {
|
||||
Ok(_) => process::exit(0),
|
||||
Err(e) => {
|
||||
eprintln!("{}", e);
|
||||
|
|
30
systeroid/tests/live_test.rs
Normal file
30
systeroid/tests/live_test.rs
Normal file
|
@ -0,0 +1,30 @@
|
|||
use {
|
||||
systeroid::args::Args, systeroid_core::error::Result,
|
||||
systeroid_core::sysctl::display::DisplayType,
|
||||
};
|
||||
|
||||
#[cfg_attr(not(feature = "live-tests"), ignore)]
|
||||
#[test]
|
||||
fn test_systeroid() -> Result<()> {
|
||||
let args = Args::default();
|
||||
let mut output = Vec::new();
|
||||
systeroid::run(args, &mut output)?;
|
||||
assert!(String::from_utf8_lossy(&output).contains("kernel.watchdog ="));
|
||||
|
||||
let args = Args {
|
||||
values: vec![String::from("vm.zone_reclaim_mode=0")],
|
||||
display_type: DisplayType::Binary,
|
||||
..Args::default()
|
||||
};
|
||||
let mut output = Vec::new();
|
||||
systeroid::run(args, &mut output)?;
|
||||
assert_eq!("0", String::from_utf8_lossy(&output));
|
||||
|
||||
let args = Args {
|
||||
preload_system_files: true,
|
||||
..Args::default()
|
||||
};
|
||||
systeroid::run(args, &mut Vec::new())?;
|
||||
|
||||
Ok(())
|
||||
}
|
Loading…
Reference in a new issue