Another approach could be adding optional explicit profile to header like [effect fx_2_0]. Requirement setting with [require] could then be used only for draw tests.
I don't think I understand. Why would we want to use different profiles between the compile test and draw tests?
There is one more thing to consider, right now if check_requirements() fails the rest of the test source is ignored, that's not ideal and we could read until next [require] to re-check.
Probably. The original intent was basically that there would be one [require] section at the top which applied to the whole file, but that's not quite how we've been using it...