[Lldb-commits] [PATCH] D86821: [lldb] Make the majority of the lit configuration values optional for the API tests
Pavel Labath via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Thu Sep 3 00:06:09 PDT 2020
labath added inline comments.
================
Comment at: lldb/test/API/lit.cfg.py:88-91
+def is_configured(attr):
+ """Return the configuration attribute if it exists and None otherwise.
+
+ This allows us to check if the attribute exists before trying to access it."""
----------------
JDevlieghere wrote:
> JDevlieghere wrote:
> > labath wrote:
> > > I don't think this name and the implementation are a good match. Given that the usages are a matching the name and not the implementation, maybe just change the implementation to `hasattr(config, attr)`?
> > >
> > > That said, I'm not sure that `is_configured("foo")` is significantly better than `hasattr(config, "foo")`, so it might be better to just delete the function altogether.
> > It does more than just `hasattr(config, "foo")`, is does `hasattr(config, "foo") and config.foo`. The option can exist but be set to `False` or `None`.
> I couldn't think of a good Python way of turning this into a bool instead of relying not the caller to do so, maybe you do?
> It does more than just hasattr(config, "foo"), is does hasattr(config, "foo") and config.foo.
Ah, right. I did miss that distinction.
> I couldn't think of a good Python way of turning this into a bool instead of relying not the caller to do so, maybe you do?
Well, there's always the option to say `if hasattr(config, "foo") and config.foo: return True`. However, it's not clear to me why this needs to handle so many cases. I can sort of see how treating a missing attribute and an attribute being set to None in the same way can be handy (for generated config files mainly), and I think it's reasonable for something called `is_configured` to return True there. But I don't think the same treatment should be extended to False or other False-ish thing -- someone had to explicitly set the attribute to this value, so it definitely /is/ configured.
For instances where this is needed (treating a False-ish value the same way as a non-existent value), I'd just spell this out in code:
```
if is_configured('llvm_use_sanitizer') and config.llvm_use_sanitizer:
...
```
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D86821/new/
https://reviews.llvm.org/D86821
More information about the lldb-commits
mailing list