From 5f19b8752dfd940efd156de1a0c1a4e6e914800b Mon Sep 17 00:00:00 2001 From: John Chilton Date: Thu, 26 Jul 2018 09:49:56 -0400 Subject: [PATCH] Fix empty handling rule. --- lib/galaxy/util/rules_dsl.py | 3 ++- test/unit/test_rule_utils.py | 13 ++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/lib/galaxy/util/rules_dsl.py b/lib/galaxy/util/rules_dsl.py index 4687fd98dcf..f21d4a7cb3d 100644 --- a/lib/galaxy/util/rules_dsl.py +++ b/lib/galaxy/util/rules_dsl.py @@ -296,7 +296,8 @@ class AddFilterEmptyRuleDefinition(BaseRuleDefinition): target_column = rule["target_column"] def _filter(index): - return not invert if len(data[target_column]) == 0 else invert + non_empty = len(data[index][target_column]) != 0 + return not invert if non_empty else invert return _filter_index(_filter, data), _filter_index(_filter, sources) diff --git a/test/unit/test_rule_utils.py b/test/unit/test_rule_utils.py index 249ec2341f5..51f990d387b 100644 --- a/test/unit/test_rule_utils.py +++ b/test/unit/test_rule_utils.py @@ -11,11 +11,22 @@ def test_rules(): initial = test_case["initial"] final_data, final_sources = rule_set.apply(initial["data"], initial["sources"]) expected_final = test_case["final"] - for final_row, expected_final_row in zip(final_data, expected_final["data"]): + expected_final_data = expected_final["data"] + msg = "Incorrect number of rows, %s != %s" % (final_data, expected_final_data) + assert len(expected_final_data) == len(final_data), msg + for final_row, expected_final_row in zip(final_data, expected_final_data): msg = "%s != %s" % (final_row, expected_final_row) assert len(final_row) == len(expected_final_row), msg for final_val, expected_final_val in zip(final_row, expected_final_row): assert final_val == expected_final_val, msg + expected_final_sources = expected_final.get("sources", None) + if expected_final_sources: + msg = "Incorrect number of sources, %s != %s" % (expected_final_sources, final_sources) + assert len(expected_final_sources) == len(final_sources), msg + for final_source, expected_final_source in zip(final_sources, expected_final_sources): + msg = "%s != %s" % (final_source, expected_final_source) + assert final_source == expected_final_source, msg + elif "error" in test_case: assert rule_set.has_errors, "rule [%s] does not contain errors" % test_case else: