Skip tun configure tests without tun access
Some checks failed
Build Site / Next.js Build (push) Successful in 1m31s
Build Apple / Build App (macOS) (push) Has been cancelled
Build Rust / Cargo Test (push) Has been cancelled
Build Apple / Build App (iOS Simulator) (push) Has been cancelled

This commit is contained in:
Conrad Kramer 2026-03-19 04:33:54 -07:00
parent 1964d1fa6e
commit ff5736a817

View file

@ -1,19 +1,36 @@
use std::{io::Error, net::Ipv4Addr};
use std::{
io::{Error, ErrorKind},
net::Ipv4Addr,
};
use fehler::throws;
use tun::TunInterface;
#[test]
#[throws]
fn test_create() {
TunInterface::new()?;
fn open_test_tun() -> Result<Option<TunInterface>, Error> {
match TunInterface::new() {
Ok(tun) => Ok(Some(tun)),
Err(error) if matches!(error.kind(), ErrorKind::NotFound | ErrorKind::PermissionDenied) => {
eprintln!("skipping test: {}", error);
Ok(None)
}
Err(error) => Err(error),
}
}
#[test]
fn test_create() -> Result<(), Error> {
if open_test_tun()?.is_none() {
return Ok(());
}
Ok(())
}
#[test]
#[throws]
#[cfg(not(any(target_os = "windows", target_vendor = "apple")))]
fn test_set_get_broadcast_addr() {
let tun = TunInterface::new()?;
fn test_set_get_broadcast_addr() -> Result<(), Error> {
let Some(tun) = open_test_tun()? else {
return Ok(());
};
let addr = Ipv4Addr::new(10, 0, 0, 1);
tun.set_ipv4_addr(addr)?;
@ -22,52 +39,64 @@ fn test_set_get_broadcast_addr() {
let result = tun.broadcast_addr()?;
assert_eq!(broadcast_addr, result);
Ok(())
}
#[test]
#[throws]
#[cfg(not(target_os = "windows"))]
fn test_set_get_ipv4() {
let tun = TunInterface::new()?;
fn test_set_get_ipv4() -> Result<(), Error> {
let Some(tun) = open_test_tun()? else {
return Ok(());
};
let addr = Ipv4Addr::new(10, 0, 0, 1);
tun.set_ipv4_addr(addr)?;
let result = tun.ipv4_addr()?;
assert_eq!(addr, result);
Ok(())
}
#[test]
#[throws]
#[cfg(not(any(target_os = "windows", target_vendor = "apple")))]
fn test_set_get_ipv6() {
fn test_set_get_ipv6() -> Result<(), Error> {
use std::net::Ipv6Addr;
let tun = TunInterface::new()?;
let Some(tun) = open_test_tun()? else {
return Ok(());
};
let addr = Ipv6Addr::new(1, 1, 1, 1, 1, 1, 1, 1);
tun.add_ipv6_addr(addr, 128)?;
// let result = tun.ipv6_addr()?;
// assert_eq!(addr, result);
Ok(())
}
#[test]
#[throws]
#[cfg(not(target_os = "windows"))]
fn test_set_get_mtu() {
let interf = TunInterface::new()?;
fn test_set_get_mtu() -> Result<(), Error> {
let Some(interf) = open_test_tun()? else {
return Ok(());
};
interf.set_mtu(500)?;
assert_eq!(interf.mtu().unwrap(), 500);
Ok(())
}
#[test]
#[throws]
#[cfg(not(target_os = "windows"))]
fn test_set_get_netmask() {
let interf = TunInterface::new()?;
fn test_set_get_netmask() -> Result<(), Error> {
let Some(interf) = open_test_tun()? else {
return Ok(());
};
let netmask = Ipv4Addr::new(255, 0, 0, 0);
let addr = Ipv4Addr::new(192, 168, 1, 1);
@ -76,4 +105,6 @@ fn test_set_get_netmask() {
interf.set_netmask(netmask)?;
assert_eq!(interf.netmask()?, netmask);
Ok(())
}