Skip to content

Commit e2d2e51

Browse files
committed
Bump rules_rust to pick up working rust_doc_test (#115)
1 parent c9094a7 commit e2d2e51

7 files changed

Lines changed: 105 additions & 3 deletions

File tree

rs/rules_rust.bzl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ def _rules_rust_impl(mctx):
3131

3232
http_archive(
3333
name = "rules_rust",
34-
integrity = "sha256-cgcEczGYnZ2eievIbjKeHbx8IgadpgE+pqCP5T9KfpI=",
35-
strip_prefix = "rules_rust-f219b67063621df3478da66b45be30f67031254b",
36-
url = "https://github.com/hermeticbuild/rules_rust/archive/f219b67063621df3478da66b45be30f67031254b.tar.gz",
34+
integrity = "sha256-SylkBtg4Bb5Mz2Dr3EMw6wwV70eB4SzstsejNEAl+wE=",
35+
strip_prefix = "rules_rust-37c7e7461a10d6e244f67fc96657e639fe8e034f",
36+
url = "https://github.com/hermeticbuild/rules_rust/archive/37c7e7461a10d6e244f67fc96657e639fe8e034f.tar.gz",
3737
patches = patches,
3838
patch_strip = strip,
3939
)

rs/tests/BUILD.bazel

Whitespace-only changes.

test/BUILD.bazel

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
load("@bazel_lib//lib:transitions.bzl", "platform_transition_filegroup")
22
load("@build_script_aliases//:data.bzl", build_script_aliases_dep_data = "DEP_DATA")
3+
load("@rules_cc//cc:defs.bzl", "cc_library")
34
load("@rules_rs//rs:rust_binary.bzl", "rust_binary")
5+
load("@rules_rs//rs:rust_library.bzl", "rust_library")
6+
load("@rules_rust//rust:defs.bzl", "rust_doc_test")
47
load("@rules_shell//shell:sh_test.bzl", "sh_test")
58
load("@self_dev_dependency//:data.bzl", self_dev_dependency_dep_data = "DEP_DATA")
69
load("@self_dev_dependency//:defs.bzl", self_dev_dependency_aliases = "aliases")
710
load("@target_workspace_dep_feature//:data.bzl", target_workspace_dep_feature_dep_data = "DEP_DATA")
811
load("@workspace_default_features//:data.bzl", workspace_default_features_dep_data = "DEP_DATA")
912
load("@workspace_hyphen_dep_aliases//:defs.bzl", workspace_hyphen_dep_aliases_aliases = "aliases")
1013
load("@workspace_renamed_path_dep_aliases//:defs.bzl", workspace_renamed_path_dep_aliases_aliases = "aliases")
14+
load("//:rustdoc_musl_unwind_test.bzl", "rustdoc_musl_unwind_link_flags_test")
1115
load("//:verify_aliases.bzl", "verify_alias", "verify_alias_absent", "verify_crate_feature_absent", "verify_crate_feature_present", "verify_dep_absent", "verify_dep_present", "verify_dev_dep_absent")
1216

1317
sh_test(
@@ -19,6 +23,30 @@ sh_test(
1923
}),
2024
)
2125

26+
cc_library(
27+
name = "rustdoc_musl_unwind_cc",
28+
srcs = ["rustdoc_musl_unwind.cc"],
29+
)
30+
31+
rust_library(
32+
name = "rustdoc_musl_unwind",
33+
srcs = ["rustdoc_musl_unwind.rs"],
34+
crate_name = "rustdoc_musl_unwind",
35+
edition = "2021",
36+
deps = [":rustdoc_musl_unwind_cc"],
37+
)
38+
39+
rust_doc_test(
40+
name = "rustdoc_musl_unwind_doctest",
41+
crate = ":rustdoc_musl_unwind",
42+
tags = ["manual"],
43+
)
44+
45+
rustdoc_musl_unwind_link_flags_test(
46+
name = "rustdoc_musl_unwind_link_flags_test",
47+
target_under_test = ":rustdoc_musl_unwind_doctest",
48+
)
49+
2250
DISABLED = [
2351
"annotation_crate_features",
2452
"3rd_party",

test/MODULE.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ register_toolchains("@llvm//toolchain:all")
6666

6767
bazel_dep(name = "rules_python", version = "1.7.0")
6868
bazel_dep(name = "rules_shell", version = "0.6.1")
69+
bazel_dep(name = "bazel_skylib", version = "1.9.0")
6970
bazel_dep(name = "rules_proto", version = "7.1.0")
7071
bazel_dep(name = "aspect_bazel_lib", version = "2.19.3")
7172
bazel_dep(name = "bazel_lib", version = "3.2.2")

test/rustdoc_musl_unwind.cc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
extern "C" int rustdoc_musl_unwind_value() {
2+
try {
3+
throw 430;
4+
} catch (int value) {
5+
return value;
6+
}
7+
}

test/rustdoc_musl_unwind.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
//! ```
2+
//! assert_eq!(rustdoc_musl_unwind::unwind_value(), 430);
3+
//! ```
4+
5+
extern "C" {
6+
fn rustdoc_musl_unwind_value() -> i32;
7+
}
8+
9+
pub fn unwind_value() -> i32 {
10+
unsafe { rustdoc_musl_unwind_value() }
11+
}

test/rustdoc_musl_unwind_test.bzl

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
"""Regression tests for musl rustdoc native linking."""
2+
3+
load("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts")
4+
5+
def _get_action_by_mnemonic(env, tut, mnemonic):
6+
actions = [action for action in tut.actions if action.mnemonic == mnemonic]
7+
asserts.equals(
8+
env,
9+
1,
10+
len(actions),
11+
"Expected exactly one {} action, got {}".format(mnemonic, [action.mnemonic for action in tut.actions]),
12+
)
13+
return actions[0]
14+
15+
def _assert_argv_contains(env, action, expected):
16+
asserts.true(
17+
env,
18+
expected in action.argv,
19+
"Expected argv to contain {}, got {}".format(expected, action.argv),
20+
)
21+
22+
def _assert_argv_contains_substrings(env, action, substrings, description):
23+
for arg in action.argv:
24+
if all([substring in arg for substring in substrings]):
25+
return
26+
27+
asserts.true(
28+
env,
29+
False,
30+
"Expected argv to contain {}, got {}".format(description, action.argv),
31+
)
32+
33+
def _rustdoc_musl_unwind_link_flags_test_impl(ctx):
34+
env = analysistest.begin(ctx)
35+
tut = analysistest.target_under_test(env)
36+
action = _get_action_by_mnemonic(env, tut, "RustdocTest")
37+
38+
_assert_argv_contains(env, action, "--test")
39+
_assert_argv_contains(env, action, "-Clink-arg=-lrustdoc_musl_unwind_cc")
40+
_assert_argv_contains_substrings(
41+
env,
42+
action,
43+
["-Clink-arg=-l", "unwind"],
44+
"a rustdoc-compatible libunwind link argument",
45+
)
46+
47+
return analysistest.end(env)
48+
49+
rustdoc_musl_unwind_link_flags_test = analysistest.make(
50+
_rustdoc_musl_unwind_link_flags_test_impl,
51+
config_settings = {
52+
"//command_line_option:extra_execution_platforms": str(Label("@rules_rs//rs/platforms:x86_64-unknown-linux-musl")),
53+
"//command_line_option:platforms": str(Label("@rules_rs//rs/platforms:x86_64-unknown-linux-musl")),
54+
},
55+
)

0 commit comments

Comments
 (0)