Skip to content

Run main rust-analyzer tests in rust-lang/rust CI#147372

Merged
bors merged 3 commits intorust-lang:mainfrom
jieyouxu:rust-analyzer-main-tests
Dec 13, 2025
Merged

Run main rust-analyzer tests in rust-lang/rust CI#147372
bors merged 3 commits intorust-lang:mainfrom
jieyouxu:rust-analyzer-main-tests

Conversation

@jieyouxu
Copy link
Member

@jieyouxu jieyouxu commented Oct 5, 2025

Part of #147370.
MCP: rust-lang/compiler-team#923

This PR prepares rust-analyzer crates with in-rust-tree cargo featues where needed, and and updates bootstrap to run the main rust-analyzer tests in rust-lang/rust CI, not just the proc-macro-srv crate tests.

This supersedes the earlier attempt at #136779. I was honestly expecting more failures in this PR, but looking back at the previous attempt, that makes sense because we no longer run i686-mingw (32-bit windows-gnu) which had a bunch of these failures. In the earlier attempt I also disabled the i686-mingw-related failures for i686-msvc since I didn't feel like digging into 32-bit msvc at the time. Try results from this PR shows that it's most likely limited to 32-bit windows-gnu specifically.

rust-analyzer test remarks

  • I actually had to remove the CARGO_WORKSPACE_DIR expect-test-hack in order for expect-test to be able to find the test expectation HTML files (for syntax_highlighting tests in ide). When I added the hack, ironically, it made expect-test unable to find the expectation files. I think this was because previously the path was of the proc-macro-srv crate specifically, now we point to the root r-a workspace?
  • The cfg-related differences on aarch64-apple-darwin might've been fixed? I can't tell, but we don't seem to be observing the differences now.
  • I'm not sure why config::{generate_config_documentation, generate_package_json_config} no longer fails. Perhaps they were fixed to no longer try to write to source directory?

Review remarks

  • Commit 1 updates r-a crates that are involved in tests needing artifacts from rustc_private compiler crates to use the in-rust-tree cargo feature. I briefly tried to use a plain --cfg=in_rust_tree, but quickly realized it was very hacky, and needed invasive bootstrap changes. The cargo feature approach seems most "natural"/well-supported to both bootstrap and cargo.
  • Commit 2 updates bootstrap to not only run the proc-macro-srv tests, but the whole r-a tests.
  • Commit 3 restricts r-a main tests to non-32-bit targets we test in CI, since (1) r-a repo does not run tests against 32-bit platforms, and (2) there are some target pointer width sensitive hash differences causing tests to fail. Notably, this means that we also no longer run r-a proc-macro-srv tests against 32-bit targets, but we don't expect that crate to be have target pointer width differences. Discussed this in #t-compiler/rust-analyzer > 32-bit tests?.

// try-job: aarch64-gnu
// try-job: aarch64-apple
// try-job: x86_64-mingw-1
// try-job: i686-msvc-1
// try-job: x86_64-msvc-1
// try-job: aarch64-msvc-1

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-testsuite Area: The testsuite used to check the correctness of rustc merged-by-bors This PR was explicitly merged by bors. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-rust-analyzer Relevant to the rust-analyzer team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants