diff --git a/autosubmit/job/job_list.py b/autosubmit/job/job_list.py index 043e97f4f83f04b0a491455ff3a826a5726b4e6c..af80e2158d1c186dd85a54c7f5dabdea8195b835 100644 --- a/autosubmit/job/job_list.py +++ b/autosubmit/job/job_list.py @@ -628,17 +628,16 @@ class JobList(object): status = relationship.pop("STATUS", relationships.get("STATUS", None)) from_step = relationship.pop("FROM_STEP", relationships.get("FROM_STEP", None)) for filter_range, filter_data in relationship.items(): - selected_filter = JobList._parse_filters_to_check(filter_range,values_list,level_to_check) - # check each value individually as 1 != 13 so in keyword is not enough - if value_to_check: + selected_filter = JobList._parse_filters_to_check(filter_range, values_list, level_to_check) + if filter_range.casefold() in ["ALL".casefold(),"NATURAL".casefold(),"NONE".casefold()] or not value_to_check: + included = True + else: included = False for value in selected_filter: - if str(value_to_check).casefold() == str(value).casefold(): + if str(value).strip(" ").casefold() == str(value_to_check).strip(" ").casefold(): included = True break - else: - inclued = True - if filter_range.casefold() in ["ALL".casefold(),"NATURAL".casefold()] or included: + if included: if not filter_data.get("STATUS", None): filter_data["STATUS"] = status if not filter_data.get("FROM_STEP", None): diff --git a/test/unit/test_dependencies.py b/test/unit/test_dependencies.py index ab8b4e35726bfc60b5a44f1039d677062428e7f9..e787f4e5133bf8e4ef2866830da6117f6d5aef7d 100644 --- a/test/unit/test_dependencies.py +++ b/test/unit/test_dependencies.py @@ -562,5 +562,29 @@ class TestJobList(unittest.TestCase): result = self.JobList._valid_parent(self.mock_job, member_list, date_list, chunk_list, is_a_natural_relation, filter_,child) self.assertEqual(result, True) + def test_check_relationship(self): + relationships = {'MEMBERS_FROM': {'TestMember, TestMember2,TestMember3 ': {'CHUNKS_TO': 'None', 'DATES_TO': 'None', 'FROM_STEP': None, 'MEMBERS_TO': 'None', 'STATUS': None}}} + level_to_check = "MEMBERS_FROM" + value_to_check = "TestMember" + result = self.JobList._check_relationship(relationships, level_to_check, value_to_check) + expected_output = [{'CHUNKS_TO': 'None', 'DATES_TO': 'None', 'FROM_STEP': None, 'MEMBERS_TO': 'None', 'STATUS': None}] + self.assertEqual(result, expected_output) + value_to_check = "TestMember2" + result = self.JobList._check_relationship(relationships, level_to_check, value_to_check) + expected_output = [{'CHUNKS_TO': 'None', 'DATES_TO': 'None', 'FROM_STEP': None, 'MEMBERS_TO': 'None', 'STATUS': None}] + self.assertEqual(result, expected_output) + value_to_check = "TestMember3" + result = self.JobList._check_relationship(relationships, level_to_check, value_to_check) + expected_output = [{'CHUNKS_TO': 'None', 'DATES_TO': 'None', 'FROM_STEP': None, 'MEMBERS_TO': 'None', 'STATUS': None}] + self.assertEqual(result, expected_output) + value_to_check = "TestMember " + result = self.JobList._check_relationship(relationships, level_to_check, value_to_check) + expected_output = [{'CHUNKS_TO': 'None', 'DATES_TO': 'None', 'FROM_STEP': None, 'MEMBERS_TO': 'None', 'STATUS': None}] + self.assertEqual(result, expected_output) + value_to_check = " TestMember" + result = self.JobList._check_relationship(relationships,level_to_check,value_to_check ) + expected_output = [{'CHUNKS_TO': 'None', 'DATES_TO': 'None', 'FROM_STEP': None, 'MEMBERS_TO': 'None', 'STATUS': None}] + self.assertEqual(result, expected_output) + if __name__ == '__main__': unittest.main()