From 55c1747765242ed74ced793748b3905ebbe9b599 Mon Sep 17 00:00:00 2001 From: himkt Date: Sun, 11 Jan 2026 20:11:57 +0900 Subject: [PATCH 1/2] feat(github): CI for testing and releasing pathfinder --- .github/workflows/release.yml | 51 +++++++++++++++++++++++++++++++++++ .github/workflows/test.yml | 22 +++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..087ec9e --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,51 @@ +name: cpu.release + +on: + push: + tags: + - "v*" + +env: + CARGO_TERM_COLOR: always + +jobs: + build: + name: ${{ matrix.target }} + runs-on: ${{ matrix.os }} + permissions: + contents: write + strategy: + fail-fast: false + matrix: + include: + - os: ubuntu-latest + target: x86_64-unknown-linux-gnu + - os: macos-latest + target: aarch64-apple-darwin + - os: macos-latest + target: x86_64-apple-darwin + steps: + - uses: actions/checkout@v6 + - uses: dtolnay/rust-toolchain@stable + with: + targets: ${{ matrix.target }} + - uses: Swatinem/rust-cache@v2 + - run: cargo build --release --target ${{ matrix.target }} + - uses: actions/upload-artifact@v4 + with: + name: pathfinder-${{ matrix.target }} + path: target/${{ matrix.target }}/release/pathfinder + + release: + needs: build + runs-on: ubuntu-slim + permissions: + contents: write + steps: + - uses: actions/download-artifact@v4 + with: + path: artifacts + - uses: softprops/action-gh-release@v2 + with: + draft: true + files: artifacts/**/* diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..ef60e65 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,22 @@ +name: cpu.test + +on: + push: + branches: [main] + pull_request: + +env: + CARGO_TERM_COLOR: always + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - uses: dtolnay/rust-toolchain@stable + with: + components: clippy, rustfmt + - uses: Swatinem/rust-cache@v2 + - run: cargo test --verbose + - run: cargo clippy -- -D warnings + - run: cargo fmt -- --check From f13bf1f14dae4ae5c4340719cc2509b7b1a94887 Mon Sep 17 00:00:00 2001 From: himkt Date: Sun, 11 Jan 2026 20:13:53 +0900 Subject: [PATCH 2/2] feat(src): cargo fmt --- src/args.rs | 28 +++++++++++++++++++++++----- src/main.rs | 4 +++- tests/rust_analyzer.rs | 5 +++-- 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/src/args.rs b/src/args.rs index 8eb9859..f90e1a4 100644 --- a/src/args.rs +++ b/src/args.rs @@ -77,7 +77,17 @@ mod tests { #[test] fn python_multiple_extensions() { // Python and stub files use the same LSP server - let cli = parse_args(&["-e", "py", "-e", "pyi", "-s", "pyright-langserver", "--", "--stdio"]).unwrap(); + let cli = parse_args(&[ + "-e", + "py", + "-e", + "pyi", + "-s", + "pyright-langserver", + "--", + "--stdio", + ]) + .unwrap(); assert_eq!(cli.extension, vec!["py", "pyi"]); assert_eq!(cli.server, vec!["pyright-langserver", "--", "--stdio"]); } @@ -103,7 +113,10 @@ mod tests { ]) .unwrap(); assert_eq!(cli.extension, vec!["ts"]); - assert_eq!(cli.server, vec!["typescript-language-server", "--", "--stdio"]); + assert_eq!( + cli.server, + vec!["typescript-language-server", "--", "--stdio"] + ); } #[test] @@ -121,7 +134,10 @@ mod tests { ]) .unwrap(); assert_eq!(cli.extension, vec!["py"]); - assert_eq!(cli.server, vec!["uv", "run", "pyright-langserver", "--", "--stdio"]); + assert_eq!( + cli.server, + vec!["uv", "run", "pyright-langserver", "--", "--stdio"] + ); } #[test] @@ -137,7 +153,10 @@ mod tests { ]) .unwrap(); assert_eq!(cli.extension, vec!["jsx"]); - assert_eq!(cli.server, vec!["typescript-language-server", "--", "--stdio"]); + assert_eq!( + cli.server, + vec!["typescript-language-server", "--", "--stdio"] + ); } #[test] @@ -151,5 +170,4 @@ mod tests { let result = parse_args(&["-e", "py"]); assert!(result.is_err()); } - } diff --git a/src/main.rs b/src/main.rs index 2060c55..45ef6c8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -21,7 +21,9 @@ async fn main() -> Result<()> { let server_specs = cli.to_server_specs()?; // Extract the single server spec (CLI always produces one spec) - let server_spec = server_specs.into_iter().next() + let server_spec = server_specs + .into_iter() + .next() .ok_or_else(|| anyhow!("no server specification provided"))?; let config = Config::from_server_spec(server_spec)?; diff --git a/tests/rust_analyzer.rs b/tests/rust_analyzer.rs index aba681f..b797535 100644 --- a/tests/rust_analyzer.rs +++ b/tests/rust_analyzer.rs @@ -56,8 +56,9 @@ fn definition_via_rust_analyzer() -> Result<()> { let mut lsp = LspBridge::new_with_command( &config.server.command[0], config.server.command[1..].to_vec(), - resolved_workspace - ).await?; + resolved_workspace, + ) + .await?; lsp.initialize().await?; let mut documents = DocumentManager::new();