[hawkmoth] Re: [PATCH 2/8] test: add python test runner

  • From: Bruno Santos <brunomanuelsantos@xxxxxxxxxxxxxxxxxx>
  • To: Jani Nikula <jani@xxxxxxxxxx>, hawkmoth@xxxxxxxxxxxxx
  • Date: Mon, 17 Dec 2018 11:23:29 +0000



On 12/16/18 8:21 PM, Jani Nikula wrote:

On Sat, 15 Dec 2018, Bruno Santos <brunomanuelsantos@xxxxxxxxxxxxxxxxxx> 
wrote:
On 12/13/18 10:11 PM, Jani Nikula wrote:
+
+def get_testcases(path):
+    return [os.path.join(path, f) for f in sorted(os.listdir(path))
+            if f.endswith(testext)]

s/[/(/
s/]/)/

You can use a generator here. I'm sure performance doesn't matter, but it's 
more
elegant.

If you do so, it will break one of the cases you use it on, and you'd need 
to do
list(get_testcases()), which is a bit ugly and defeats the purpose, or use
itertools.tee.

And while at it, this could be a bit more readable with yield, although 
opinions
may vary in that regard:

    for f in sorted(os.listdir(path)):
        if f.endswith(testext):
            yield os.path.join(path, f)


Up to you though.

I guess my only question is, won't the sorted() there build a list no
matter what? What does the generator gain us?

I think I lean towards the explict yield.

Hm, good point. It does create a list, like os.listdir by the way. Still 
creates one
less I suppose. Not that it matters frankly.

I wouldn't have commented except for the yield version looking slightly better 
to my
eyes. I'm fine with how it is right now.


-- 
Bruno Santos

PGP KEY: 941052CD (pool.sks-keyservers.net)



Other related posts: