Fix: EMR ReleaseLabel validation does not respect semantic versioning (#3489)
Fixes #3474
This commit is contained in:
parent
93b393c679
commit
53a3e52c67
5 changed files with 129 additions and 3 deletions
|
|
@ -636,7 +636,7 @@ def test_run_job_flow_with_custom_ami():
|
|||
|
||||
args = deepcopy(run_job_flow_args)
|
||||
args["CustomAmiId"] = "MyEmrCustomAmi"
|
||||
args["ReleaseLabel"] = "emr-5.7.0"
|
||||
args["ReleaseLabel"] = "emr-5.31.0"
|
||||
cluster_id = client.run_job_flow(**args)["JobFlowId"]
|
||||
resp = client.describe_cluster(ClusterId=cluster_id)
|
||||
resp["Cluster"]["CustomAmiId"].should.equal("MyEmrCustomAmi")
|
||||
|
|
|
|||
49
tests/test_emr/test_utils.py
Normal file
49
tests/test_emr/test_utils.py
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
import pytest
|
||||
|
||||
from moto.emr.utils import ReleaseLabel
|
||||
|
||||
|
||||
def test_invalid_release_labels_raise_exception():
|
||||
invalid_releases = [
|
||||
"",
|
||||
"0",
|
||||
"1.0",
|
||||
"emr-2.0",
|
||||
]
|
||||
for invalid_release in invalid_releases:
|
||||
with pytest.raises(ValueError):
|
||||
ReleaseLabel(invalid_release)
|
||||
|
||||
|
||||
def test_release_label_comparisons():
|
||||
assert str(ReleaseLabel("emr-5.1.2")) == "emr-5.1.2"
|
||||
|
||||
assert ReleaseLabel("emr-5.0.0") != ReleaseLabel("emr-5.0.1")
|
||||
assert ReleaseLabel("emr-5.0.0") == ReleaseLabel("emr-5.0.0")
|
||||
|
||||
assert ReleaseLabel("emr-5.31.0") > ReleaseLabel("emr-5.7.0")
|
||||
assert ReleaseLabel("emr-6.0.0") > ReleaseLabel("emr-5.7.0")
|
||||
|
||||
assert ReleaseLabel("emr-5.7.0") < ReleaseLabel("emr-5.10.0")
|
||||
assert ReleaseLabel("emr-5.10.0") < ReleaseLabel("emr-5.10.1")
|
||||
|
||||
assert ReleaseLabel("emr-5.60.0") >= ReleaseLabel("emr-5.7.0")
|
||||
assert ReleaseLabel("emr-6.0.0") >= ReleaseLabel("emr-6.0.0")
|
||||
|
||||
assert ReleaseLabel("emr-5.7.0") <= ReleaseLabel("emr-5.17.0")
|
||||
assert ReleaseLabel("emr-5.7.0") <= ReleaseLabel("emr-5.7.0")
|
||||
|
||||
releases_unsorted = [
|
||||
ReleaseLabel("emr-5.60.2"),
|
||||
ReleaseLabel("emr-4.0.1"),
|
||||
ReleaseLabel("emr-4.0.0"),
|
||||
ReleaseLabel("emr-5.7.3"),
|
||||
]
|
||||
releases_sorted = [str(label) for label in sorted(releases_unsorted)]
|
||||
expected = [
|
||||
"emr-4.0.0",
|
||||
"emr-4.0.1",
|
||||
"emr-5.7.3",
|
||||
"emr-5.60.2",
|
||||
]
|
||||
assert releases_sorted == expected
|
||||
Loading…
Add table
Add a link
Reference in a new issue