Skip to content

Commit a7bc115

Browse files
committed
More
1 parent 2ed4739 commit a7bc115

13 files changed

Lines changed: 140 additions & 42 deletions

.bcr/presubmit.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ bcr_test_module:
22
module_path: "e2e/smoke"
33
matrix:
44
platform: ["debian11", "macos", "ubuntu2204", "windows"]
5-
bazel: ["8.x", "7.x", "6.x"]
5+
bazel: ["9.x", "8.x", "7.x"]
66
tasks:
77
run_tests:
88
name: "Run test module"

.devcontainer/Dockerfile

Lines changed: 0 additions & 16 deletions
This file was deleted.

.devcontainer/devcontainer.json

Lines changed: 0 additions & 17 deletions
This file was deleted.

.github/workflows/ci.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ jobs:
2525
exclude: |
2626
[
2727
{"folder": ".", "bzlmodEnabled": false},
28-
{"folder": ".", "bazelVersion": "6.4.0"}
28+
{"folder": ".", "bazelVersion": "6.4.0"},
29+
{"folder": "e2e/smoke", "bazelVersion": "6.4.0"}
2930
]
3031
pre-commit:
3132
runs-on: ubuntu-latest

.pre-commit-config.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
# Commitizen runs in commit-msg stage
66
# but we don't want to run the other hooks on commit messages
77
default_stages: [pre-commit]
8+
# Keep the pinned maven lockfile byte-for-byte as generated.
9+
exclude: ^maven_install\.json$
810
# Use a slightly older version of node by default
911
# as the default uses a very new version of GLIBC
1012
default_language_version:

e2e/smoke/BUILD

Lines changed: 91 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,95 @@
1-
"""Provides a simple way to test rule installation as an external workspace."""
1+
"""Smoke tests for rules_detekt as an external dependency."""
22

3-
load("@bazel_skylib//rules:build_test.bzl", "build_test")
3+
load("@bazel_skylib//rules:diff_test.bzl", "diff_test")
4+
load("@rules_detekt//detekt:defs.bzl", "detekt_test")
45

5-
filegroup(name = "empty")
6+
detekt_test(
7+
name = "detekt_happy_target",
8+
srcs = glob(["src/main/kotlin/**/*.kt"]),
9+
cfgs = ["detekt_config_lenient.yml"],
10+
tags = ["manual"],
11+
)
12+
13+
detekt_test(
14+
name = "detekt_failing_target",
15+
srcs = glob(["src/main/kotlin/**/*.kt"]),
16+
tags = ["manual"],
17+
)
18+
19+
genrule(
20+
name = "detekt_happy_exit_code_actual",
21+
testonly = 1,
22+
srcs = [":detekt_happy_target"],
23+
outs = ["detekt_happy_exit_code.actual"],
24+
cmd = """
25+
set -e
26+
for f in $(SRCS); do
27+
case "$$f" in
28+
*_exit_code.txt)
29+
cp "$$f" "$@"
30+
exit 0
31+
;;
32+
esac
33+
done
34+
echo "Could not locate Detekt exit code output for detekt_happy_target" >&2
35+
exit 1
36+
""",
37+
cmd_bat = """
38+
@echo off
39+
setlocal EnableExtensions EnableDelayedExpansion
40+
for %%f in ($(SRCS)) do (
41+
echo %%~nxf | findstr /R "_exit_code.txt$" >nul
42+
if !ERRORLEVEL! EQU 0 (
43+
copy /Y "%%f" "%OUTS%" >nul
44+
exit /b 0
45+
)
46+
)
47+
echo Could not locate Detekt exit code output for detekt_happy_target 1>&2
48+
exit /b 1
49+
""",
50+
)
51+
52+
genrule(
53+
name = "detekt_failure_exit_code_actual",
54+
testonly = 1,
55+
srcs = [":detekt_failing_target"],
56+
outs = ["detekt_failure_exit_code.actual"],
57+
cmd = """
58+
set -e
59+
for f in $(SRCS); do
60+
case "$$f" in
61+
*_exit_code.txt)
62+
cp "$$f" "$@"
63+
exit 0
64+
;;
65+
esac
66+
done
67+
echo "Could not locate Detekt exit code output for detekt_failing_target" >&2
68+
exit 1
69+
""",
70+
cmd_bat = """
71+
@echo off
72+
setlocal EnableExtensions EnableDelayedExpansion
73+
for %%f in ($(SRCS)) do (
74+
echo %%~nxf | findstr /R "_exit_code.txt$" >nul
75+
if !ERRORLEVEL! EQU 0 (
76+
copy /Y "%%f" "%OUTS%" >nul
77+
exit /b 0
78+
)
79+
)
80+
echo Could not locate Detekt exit code output for detekt_failing_target 1>&2
81+
exit /b 1
82+
""",
83+
)
84+
85+
diff_test(
86+
name = "detekt_happy_path_test",
87+
file1 = ":detekt_happy_exit_code_actual",
88+
file2 = "expected_happy_exit_code.txt",
89+
)
690

7-
build_test(
8-
name = "smoke_test",
9-
targets = [":empty"],
91+
diff_test(
92+
name = "detekt_failure_path_test",
93+
file1 = ":detekt_failure_exit_code_actual",
94+
file2 = "expected_failure_exit_code.txt",
1095
)

e2e/smoke/MODULE.bazel.lock

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

e2e/smoke/README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
# smoke test
22

33
This e2e workspace exercises repository install/setup from an end-user perspective.
4-
It catches mistakes in install instructions and BCR metadata.
4+
5+
It contains two end-to-end Detekt checks:
6+
7+
- `detekt_happy_path_test`: verifies a configured target succeeds.
8+
- `detekt_failure_path_test`: verifies Detekt violations are reported (non-zero exit code).

e2e/smoke/WORKSPACE.bazel

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,18 @@ local_repository(
99
######################
1010
# rules_detekt setup #
1111
######################
12+
# Fetch bazel_skylib for smoke tests.
13+
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
14+
15+
http_archive(
16+
name = "bazel_skylib",
17+
sha256 = "6e78f0e57de26801f6f564fa7c4a48dc8b36873e416257a92bbb0937eeac8446",
18+
urls = [
19+
"https://github.com/bazelbuild/bazel-skylib/releases/download/1.8.2/bazel-skylib-1.8.2.tar.gz",
20+
"https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.8.2/bazel-skylib-1.8.2.tar.gz",
21+
],
22+
)
23+
1224
# Fetches the rules_detekt dependencies.
1325
# If you want to have a different version of some dependency,
1426
# you should fetch it *before* calling this.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
build:
2+
maxIssues: 10

0 commit comments

Comments
 (0)