diff --git a/luigi/tools/range.py b/luigi/tools/range.py index e1294d1bf8..f4e276fa84 100755 --- a/luigi/tools/range.py +++ b/luigi/tools/range.py @@ -238,7 +238,7 @@ def requires(self): self._emit_metrics(missing_datetimes, finite_start, finite_stop) if self.reverse: - required_datetimes = missing_datetimes[-self.task_limit :] + required_datetimes = missing_datetimes[-self.task_limit :] if self.task_limit else [] else: required_datetimes = missing_datetimes[: self.task_limit] if required_datetimes: diff --git a/test/range_test.py b/test/range_test.py index f9400aa1b0..b522277e45 100644 --- a/test/range_test.py +++ b/test/range_test.py @@ -354,6 +354,22 @@ def test_start_long_before_long_days_back_and_with_long_days_forward(self): }, ) + def test_reverse_with_zero_task_limit_requires_no_tasks(self): + class RangeDailyDerived(RangeDailyBase): + def missing_datetimes(self, finite_datetimes): + return finite_datetimes + + task = RangeDailyDerived( + of=CommonDateTask, + now=datetime_to_epoch(datetime.datetime(2016, 1, 4)), + start=datetime.date(2016, 1, 1), + stop=datetime.date(2016, 1, 4), + task_limit=0, + reverse=True, + ) + + self.assertEqual(task.requires(), []) + class RangeHourlyBaseTest(unittest.TestCase): maxDiff = None