Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions kt/ktlib/ciq_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -521,10 +521,14 @@ def _read_spec_define(spec_lines, name, value_pattern):
def read_spec_el_version(spec_lines):
"""Read the EL version number from spec file lines.

Returns the el_version string (e.g., '9').
Raises ValueError if not found.
Returns the el_version string (e.g., '9'), or None if %define el_version
is not present in the spec or its value does not match the expected
numeric pattern.
"""
return _read_spec_define(spec_lines, "el_version", r"\d+")
try:
return _read_spec_define(spec_lines, "el_version", r"\d+")
except ValueError:
return None


FIPS_PROTECTED_DIRECTORIES = [
Expand Down
41 changes: 40 additions & 1 deletion tests/kt/ktlib/test_ciq_helpers.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from kt.ktlib.ciq_helpers import CIQ_cherry_pick_commit_standardization
from kt.ktlib.ciq_helpers import CIQ_cherry_pick_commit_standardization, read_spec_el_version

UPSTREAM_SHA = "1234567890abcdef1234567890abcdef12345678"
AUTHOR_TAG = "commit-author Upstream Author <author@example.com>"
Expand Down Expand Up @@ -29,3 +29,42 @@ def test_cherry_pick_standardization_stops_indenting_at_marker():
lines = standardized_cherry_pick_msg()
assert lines[-2] == f"(cherry picked from commit {UPSTREAM_SHA})\n"
assert lines[-1] == "Signed-off-by: Backporter <backporter@example.com>\n"


# --- read_spec_el_version tests ---


def test_read_spec_el_version_returns_version():
spec_lines = [
"%define el_version 9\n",
"Name: kernel\n",
]
assert read_spec_el_version(spec_lines) == "9"


def test_read_spec_el_version_returns_two_digit_version():
spec_lines = [
"%define el_version 10\n",
"Name: kernel\n",
]
assert read_spec_el_version(spec_lines) == "10"


def test_read_spec_el_version_returns_none_when_missing():
spec_lines = [
"Name: kernel\n",
"%define kversion 6\n",
]
assert read_spec_el_version(spec_lines) is None


def test_read_spec_el_version_returns_none_for_non_numeric():
spec_lines = [
"%define el_version abc\n",
"Name: kernel\n",
]
assert read_spec_el_version(spec_lines) is None


def test_read_spec_el_version_empty_spec():
assert read_spec_el_version([]) is None
23 changes: 6 additions & 17 deletions update_lt_spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,15 +112,9 @@ def update_spec_file(
"""
spec = _read_spec_file(spec_path)

# Extract el_version from spec file
try:
el_version = read_spec_el_version(spec)
except ValueError as e:
print(f"ERROR: {e}")
sys.exit(1)

# Construct dist string from el_version for changelog
dist = f".el{el_version}"
# Construct dist string from el_version for changelog (omit if not defined)
el_version = read_spec_el_version(spec)
dist = f".el{el_version}" if el_version else ""

# Get git user info, checking both repo-level and global config
try:
Expand Down Expand Up @@ -210,14 +204,9 @@ def bump_spec_file(

spec = _read_spec_file(spec_path)

# Extract el_version from spec file
try:
el_version = read_spec_el_version(spec)
except ValueError as e:
print(f"ERROR: {e}")
sys.exit(1)

dist = f".el{el_version}"
# Construct dist string from el_version for changelog (omit if not defined)
el_version = read_spec_el_version(spec)
dist = f".el{el_version}" if el_version else ""

# Get git user info
try:
Expand Down