Skip to content

Commit 64eecc6

Browse files
committed
Revert "Merge pull request #1116 from cloudbees-oss/revert-backport"
This reverts commit 3262dde, reversing changes made to c53e451.
1 parent 3262dde commit 64eecc6

File tree

100 files changed

+2190
-226
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

100 files changed

+2190
-226
lines changed

.editorconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ charset=utf-8
88
indent_style=space
99

1010
[*.java]
11-
indent_size = 4
11+
indent_size = 2

.github/workflows/publish.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ jobs:
5050
env:
5151
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
5252
with:
53-
args: 'Smart Tests CLI ${{ needs.tagpr.outputs.tag }} is released! https://github.com/launchableinc/cli/releases/tag/${{ needs.tagpr.outputs.tag }}'
53+
args: 'Smart Tests CLI ${{ needs.tagpr.outputs.tag }} is released! https://github.com/cloudbees-oss/smart-tests-cli/releases/tag/${{ needs.tagpr.outputs.tag }}'
5454

5555
docker:
5656
name: Push Docker image to Docker Hub
@@ -88,7 +88,7 @@ jobs:
8888
tags: ${{ env.IMAGE_NAME }}:${{ needs.tagpr.outputs.tag }}
8989

9090
- name: Generate artifact attestation
91-
uses: actions/attest-build-provenance@db473fddc028af60658334401dc6fa3ffd8669fd # v2.3.0
91+
uses: actions/attest-build-provenance@e8998f949152b193b063cb0ec769d69d929409be # v2.4.0
9292
with:
9393
subject-name: index.docker.io/${{ env.IMAGE_NAME }}
9494
subject-digest: ${{ steps.push.outputs.digest }}

MODULE.bazel

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
###############################################################################
2+
# Bazel now uses Bzlmod by default to manage external dependencies.
3+
# Please consider migrating your external dependencies from WORKSPACE to MODULE.bazel.
4+
#
5+
# For more details, please check https://github.com/bazelbuild/bazel/issues/18958
6+
###############################################################################

MODULE.bazel.lock

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

WORKSPACE

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@ http_archive(
99
)
1010

1111
load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
12+
1213
rules_jvm_external_deps()
1314

1415
load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")
16+
1517
rules_jvm_external_setup()
1618

1719
load("@rules_jvm_external//:defs.bzl", "maven_install")
@@ -25,6 +27,7 @@ maven_install(
2527
"com.fasterxml.jackson.core:jackson-core:2.18.2",
2628
"com.fasterxml.jackson.core:jackson-databind:2.18.2",
2729
"com.google.guava:guava:33.3.1-jre",
30+
"org.apache.commons:commons-compress:1.27.1",
2831
"org.apache.httpcomponents:httpclient:4.5.14",
2932
# This is the last release that produce Java 8 class files.
3033
"org.eclipse.jgit:org.eclipse.jgit:5.13.3.202401111512-r",
@@ -45,10 +48,10 @@ maven_install(
4548
version = "1.4.4",
4649
),
4750
],
51+
fetch_sources = True,
4852
maven_install_json = "//src:maven_install.json",
4953
repositories = ["https://repo1.maven.org/maven2"],
5054
version_conflict_policy = "pinned",
51-
fetch_sources = True,
5255
)
5356

5457
load("@maven//:defs.bzl", "pinned_maven_install")

pyproject.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ dev-dependencies = [
3737
"mypy",
3838
"pre-commit",
3939
"responses",
40-
"types-pkg_resources",
4140
"types-python-dateutil",
4241
"types-requests",
4342
"types-tabulate",

smart_tests/__main__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from smart_tests.commands.subset import create_nested_commands as create_subset_target_commands
1414
from smart_tests.utils.test_runner_registry import get_registry
1515

16-
from .commands import inspect, record, stats, subset, verify
16+
from .commands import compare, inspect, record, stats, subset, verify
1717
from .utils import logger
1818
from .utils.env_keys import SKIP_CERT_VERIFICATION
1919
from .version import __version__
@@ -149,6 +149,7 @@ def main(
149149
app.add_typer(verify.app, name="verify")
150150
app.add_typer(inspect.app, name="inspect")
151151
app.add_typer(stats.app, name="stats")
152+
app.add_typer(compare.app, name="compare")
152153

153154
# Add record-target as a sub-app to record command
154155
record.app.add_typer(record_target_app, name="test") # Use NestedCommand version
@@ -160,6 +161,7 @@ def main(
160161
app.add_typer(verify.app, name="verify")
161162
app.add_typer(inspect.app, name="inspect")
162163
app.add_typer(stats.app, name="stats")
164+
app.add_typer(compare.app, name="compare")
163165

164166
app.callback()(main)
165167

smart_tests/commands/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# commands/__init__.py
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import typer
2+
3+
from .subsets import app as subsets_app
4+
5+
app = typer.Typer()
6+
7+
app.add_typer(subsets_app, name="subsets")
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
from pathlib import Path
2+
from typing import List, Tuple, Union
3+
4+
import typer
5+
from tabulate import tabulate
6+
7+
app = typer.Typer()
8+
9+
10+
@app.callback(invoke_without_command=True)
11+
def subsets(
12+
ctx: typer.Context,
13+
file_before: Path = typer.Argument(None, help="First subset file to compare"),
14+
file_after: Path = typer.Argument(None, help="Second subset file to compare")
15+
):
16+
"""
17+
Compare two subset files and display changes in test order positions
18+
"""
19+
if ctx.invoked_subcommand is None:
20+
if file_before is None or file_after is None:
21+
typer.echo("Error: Both file_before and file_after arguments are required")
22+
raise typer.Exit(1)
23+
24+
if not file_before.exists():
25+
typer.echo(f"Error: File {file_before} does not exist", err=True)
26+
raise typer.Exit(1)
27+
28+
if not file_after.exists():
29+
typer.echo(f"Error: File {file_after} does not exist", err=True)
30+
raise typer.Exit(1)
31+
32+
# Read files and map test paths to their indices
33+
with open(file_before, 'r') as f:
34+
before_tests = f.read().splitlines()
35+
before_index_map = {test: idx for idx, test in enumerate(before_tests)}
36+
37+
with open(file_after, 'r') as f:
38+
after_tests = f.read().splitlines()
39+
after_index_map = {test: idx for idx, test in enumerate(after_tests)}
40+
41+
# List of tuples representing test order changes (before, after, diff, test)
42+
rows: List[Tuple[Union[int, str], Union[int, str], Union[int, str], str]] = []
43+
44+
# Calculate order difference and add each test in file_after to changes
45+
for after_idx, test in enumerate(after_tests):
46+
if test in before_index_map:
47+
before_idx = before_index_map[test]
48+
diff = after_idx - before_idx
49+
rows.append((before_idx + 1, after_idx + 1, diff, test))
50+
else:
51+
rows.append(('-', after_idx + 1, 'NEW', test))
52+
53+
# Add all deleted tests to changes
54+
for before_idx, test in enumerate(before_tests):
55+
if test not in after_index_map:
56+
rows.append((before_idx + 1, '-', 'DELETED', test))
57+
58+
# Sort changes by the order diff
59+
rows.sort(key=lambda x: (0 if isinstance(x[2], str) else 1, x[2]))
60+
61+
# Display results in a tabular format
62+
headers = ["Before", "After", "After - Before", "Test"]
63+
tabular_data = [
64+
(before, after, f"{diff:+}" if isinstance(diff, int) else diff, test)
65+
for before, after, diff, test in rows
66+
]
67+
typer.echo(tabulate(tabular_data, headers=headers, tablefmt="github"))

0 commit comments

Comments
 (0)