From c566533ef7b3489ef1480e0754fab6bd7fabcce4 Mon Sep 17 00:00:00 2001 From: Quantum Date: Sun, 13 Aug 2017 19:32:19 -0400 Subject: [PATCH] Correctly handle names when used as decorator. --- optimize_later/core.py | 3 ++- optimize_later/tests.py | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/optimize_later/core.py b/optimize_later/core.py index 9f9bd16..23a59fe 100644 --- a/optimize_later/core.py +++ b/optimize_later/core.py @@ -134,7 +134,8 @@ class optimize_later(with_metaclass(NoArgDecoratorMeta)): global_callback(report) def __call__(self, function): - self.name = '%s:%s' % (function.__module__, function.__name__) + if self._default_name: + self.name = '%s:%s' % (function.__module__, function.__name__) @wraps(function) def wrapped(*args, **kwargs): diff --git a/optimize_later/tests.py b/optimize_later/tests.py index 81a0173..90cdcf1 100644 --- a/optimize_later/tests.py +++ b/optimize_later/tests.py @@ -182,3 +182,26 @@ class OptimizeLaterTest(TestCase): self.assertEqual(len(reports), 10) for report in reports: self.assertReport(report) + + def test_decorator_with_args(self): + reports = [] + config.register_callback(reports.append) + + @optimize_later(float('inf')) + def function(): + pass + + self.assertEqual(len(reports), 0) + + def test_decorator_custom_name(self): + reports = [] + config.register_callback(reports.append) + + @optimize_later('custom_name') + def function(): + pass + function() + + self.assertEqual(len(reports), 1) + self.assertReport(reports[0]) + self.assertEqual(reports[0].name, 'custom_name')