Skip to content

Commit 6326c09

Browse files
committed
Allow a v prefix for Terraform Version numbers
1 parent 50c684e commit 6326c09

File tree

3 files changed

+44
-2
lines changed

3 files changed

+44
-2
lines changed

image/src/terraform/module.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ def get_version_constraints(module: TerraformModule) -> Optional[list[Constraint
126126
try:
127127
return [Constraint(c) for c in str(block['required_version']).split(',')]
128128
except Exception:
129-
debug('required_version constraint is malformed')
129+
debug(f'required_version constraint is malformed: {str(block["required_version"])}')
130130

131131
return None
132132

image/src/terraform/versions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ def __init__(self, constraint: str):
8080
else:
8181
raise ValueError(f'Invalid version constraint {constraint}')
8282

83-
if match := re.match(r'(?P<major>\d+)(?:\.(?P<minor>\d+))?(?:\.(?P<patch>\d+))?(?:-(?P<pre_release>.*))?', constraint):
83+
if match := re.match(r'v?(?P<major>\d+)(?:\.(?P<minor>\d+))?(?:\.(?P<patch>\d+))?(?:-(?P<pre_release>.*))?', constraint):
8484
self.major = int(match.group('major'))
8585
self.minor = int(match.group('minor')) if match.group('minor') else None
8686
self.patch = int(match.group('patch')) if match.group('patch') else None
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import hcl2
2+
3+
from terraform.versions import Version
4+
from terraform_version.required_version import get_required_version
5+
6+
7+
def test_required_version():
8+
expected_backend = hcl2.loads('''
9+
terraform {
10+
required_version = "1.0.0"
11+
}
12+
''')
13+
14+
assert get_required_version(expected_backend, [Version('1.0.0')]) == Version('1.0.0')
15+
16+
def test_required_version_v_prefix():
17+
expected_backend = hcl2.loads('''
18+
terraform {
19+
required_version = "v1.0.0"
20+
}
21+
''')
22+
23+
assert get_required_version(expected_backend, [Version('1.0.0')]) == Version('1.0.0')
24+
25+
def test_required_version_greater_than():
26+
expected_backend = hcl2.loads('''
27+
terraform {
28+
required_version = ">= 1.8.0"
29+
}
30+
''')
31+
32+
assert get_required_version(expected_backend, [Version('1.7.0'), Version('1.8.0'), Version('1.8.1')]) == Version('1.8.1')
33+
34+
35+
def test_required_version_greater_than_v_prefix():
36+
expected_backend = hcl2.loads('''
37+
terraform {
38+
required_version = ">= v1.8.0"
39+
}
40+
''')
41+
42+
assert get_required_version(expected_backend, [Version('1.7.0'), Version('1.8.0'), Version('1.8.1')]) == Version('1.8.1')

0 commit comments

Comments
 (0)