From d6d490cf8d35029af61b6c4326942c60ccfaac6e Mon Sep 17 00:00:00 2001 From: Conrad Kramer Date: Sat, 5 Aug 2023 08:32:54 -0700 Subject: [PATCH] Run tests on Github Actions --- .github/workflows/build-rust.yml | 15 +++++++++------ .vscode/settings.json | 9 --------- tun/src/tokio/mod.rs | 24 ------------------------ tun/tests/configure.rs | 4 +++- tun/tests/packets.rs | 8 ++++---- tun/tests/tokio.rs | 22 ++++++++++++++++++++++ 6 files changed, 38 insertions(+), 44 deletions(-) create mode 100644 tun/tests/tokio.rs diff --git a/.github/workflows/build-rust.yml b/.github/workflows/build-rust.yml index 7955d62b..f56e26b0 100644 --- a/.github/workflows/build-rust.yml +++ b/.github/workflows/build-rust.yml @@ -17,21 +17,24 @@ jobs: platform: Linux packages: - gcc-aarch64-linux-gnu - targets: + test-targets: - x86_64-unknown-linux-gnu + targets: - aarch64-unknown-linux-gnu - os: macos-12 platform: macOS - targets: + test-targets: - x86_64-apple-darwin + targets: - aarch64-apple-darwin - aarch64-apple-ios - aarch64-apple-ios-sim - x86_64-apple-ios - os: windows-2022 platform: Windows - targets: + test-targets: - x86_64-pc-windows-msvc + targets: - aarch64-pc-windows-msvc runs-on: ${{ matrix.os }} env: @@ -59,7 +62,7 @@ jobs: targets: ${{ join(matrix.targets, ', ') }} - name: Build shell: bash - run: cargo build --verbose --workspace --all-features --target ${{ join(matrix.targets, ' --target ') }} - - name: Post-Build Tests + run: cargo build --verbose --workspace --all-features --target ${{ join(matrix.targets, ' --target ') }} --target ${{ join(matrix.test-targets, ' --target ') }} + - name: Test shell: bash - run: cargo test + run: cargo test --verbose --workspace --all-features --target ${{ join(matrix.test-targets, ' --target ') }} diff --git a/.vscode/settings.json b/.vscode/settings.json index 887fb703..47180935 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -8,15 +8,6 @@ "editor.acceptSuggestionOnEnter": "on", "rust-analyzer.restartServerOnConfigChange": true, "rust-analyzer.cargo.features": "all", - "rust-analyzer.check.overrideCommand": [ - "cargo", - "clippy", - "--fix", - "--workspace", - "--message-format=json", - "--all-targets", - "--allow-dirty" - ], "[rust]": { "editor.defaultFormatter": "rust-lang.rust-analyzer", } diff --git a/tun/src/tokio/mod.rs b/tun/src/tokio/mod.rs index 674dfe64..ae99b73c 100644 --- a/tun/src/tokio/mod.rs +++ b/tun/src/tokio/mod.rs @@ -32,27 +32,3 @@ impl TunInterface { } } } - -#[cfg(test)] -mod tests { - use std::net::Ipv4Addr; - - use super::*; - #[tokio::test] - async fn test_create() { - let tun = crate::TunInterface::new().unwrap(); - let _async_tun = TunInterface::new(tun).unwrap(); - } - - #[tokio::test] - async fn test_write() { - let tun = crate::TunInterface::new().unwrap(); - tun.set_ipv4_addr(Ipv4Addr::from([192, 168, 1, 10])) - .unwrap(); - let async_tun = TunInterface::new(tun).unwrap(); - let mut buf = [0u8; 1500]; - buf[0] = 6 << 4; - let bytes_written = async_tun.write(&buf).await.unwrap(); - assert!(bytes_written > 0); - } -} diff --git a/tun/tests/configure.rs b/tun/tests/configure.rs index 1d762d72..35f97261 100644 --- a/tun/tests/configure.rs +++ b/tun/tests/configure.rs @@ -1,6 +1,6 @@ use fehler::throws; use std::io::Error; -use std::net::{Ipv4Addr}; +use std::net::Ipv4Addr; use tun::TunInterface; #[test] @@ -26,6 +26,8 @@ fn test_set_get_ipv4() { #[throws] #[cfg(not(any(target_os = "windows", target_vendor = "apple")))] fn test_set_get_ipv6() { + use std::net::Ipv6Addr; + let tun = TunInterface::new()?; let addr = Ipv6Addr::new(1, 1, 1, 1, 1, 1, 1, 1); diff --git a/tun/tests/packets.rs b/tun/tests/packets.rs index 836ac304..b160893e 100644 --- a/tun/tests/packets.rs +++ b/tun/tests/packets.rs @@ -1,6 +1,6 @@ use fehler::throws; use std::io::Error; -use std::io::Write; + use std::net::Ipv4Addr; use tun::TunInterface; @@ -18,7 +18,7 @@ fn tst_read() { println!("tun ip: {:?}", tun.ipv4_addr()?); println!("Waiting for a packet..."); let buf = &mut [0u8; 1500]; - let res = tun.read(buf); + let res = tun.recv(buf); println!("Received!"); assert!(res.is_ok()); } @@ -28,9 +28,9 @@ fn tst_read() { #[ignore = "requires interactivity"] #[cfg(not(target_os = "windows"))] fn write_packets() { - let mut tun = TunInterface::new()?; + let tun = TunInterface::new()?; let mut buf = [0u8; 1500]; buf[0] = 6 << 4; - let bytes_written = tun.write(&buf)?; + let bytes_written = tun.send(&buf)?; assert_eq!(bytes_written, 1504); } diff --git a/tun/tests/tokio.rs b/tun/tests/tokio.rs new file mode 100644 index 00000000..85c5afec --- /dev/null +++ b/tun/tests/tokio.rs @@ -0,0 +1,22 @@ +use std::net::Ipv4Addr; + +#[tokio::test] +#[cfg(feature = "tokio")] +async fn test_create() { + let tun = tun::TunInterface::new().unwrap(); + let async_tun = tun::tokio::TunInterface::new(tun).unwrap(); +} + +#[tokio::test] +#[ignore = "It hangs when run"] +#[cfg(feature = "tokio")] +async fn test_write() { + let tun = tun::TunInterface::new().unwrap(); + tun.set_ipv4_addr(Ipv4Addr::from([192, 168, 1, 10])) + .unwrap(); + let async_tun = tun::tokio::TunInterface::new(tun).unwrap(); + let mut buf = [0u8; 1500]; + buf[0] = 6 << 4; + let bytes_written = async_tun.write(&buf).await.unwrap(); + assert!(bytes_written > 0); +}