This topic is not very much interesting for C/C++/D/etc. languages, but very interesting for Python, Ruby and Rust ecosystems.
In those ecosystems you can get build-time and test-time dependencies very easily since metadata is pre-populated (doesn't matter how) and you just need to parse it, but RPM doesn't support generating BuildRequires.
As we discussed some time ago with Panu and Florian on IRC this task splits to 2 different blocks: 1. Pre-BuildRequires -- everything what needs to be installed in order to unpack archive and parse metadata 2. Make building of SRPM a bit more tricky: first time to build something what can gather builddeps and then generate full SRPM with all that stuff.
I was thinking a bit if we should really make different section for only for generating builddeps (as Panu was asking) and I think it's not needed and we can (or probably even should) reuse -- for example, upstream provides wrong metadata (redundant requires or very strict version which you want to relax), you do sed/patch in %prep and it should be both same for BuildRequires generation and for real build.
Another question here as well is how do you generate test builddeps: since we don't have BuildRequires(check), we probably would need to have BuildRequires and TestRequires generator... but I'm not sure how to wrap it properly.
Thoughts?