| 823 | //! Enumerate all possible test configurations. |
| 824 | template <typename Fn> |
| 825 | void ForEachMergeSetup(Fn&& fn) |
| 826 | { |
| 827 | ActionList arg_actions = {}; |
| 828 | // command_line_options do not have sections. Only iterate over SET and NEGATE |
| 829 | ForEachNoDup(arg_actions, SET, NEGATE, [&] { |
| 830 | ActionList conf_actions = {}; |
| 831 | ForEachNoDup(conf_actions, SET, SECTION_NEGATE, [&] { |
| 832 | for (bool soft_set : {false, true}) { |
| 833 | for (bool force_set : {false, true}) { |
| 834 | for (const std::string& section : {ChainTypeToString(ChainType::MAIN), ChainTypeToString(ChainType::TESTNET), ChainTypeToString(ChainType::TESTNET4), ChainTypeToString(ChainType::SIGNET)}) { |
| 835 | for (const std::string& network : {ChainTypeToString(ChainType::MAIN), ChainTypeToString(ChainType::TESTNET), ChainTypeToString(ChainType::TESTNET4), ChainTypeToString(ChainType::SIGNET)}) { |
| 836 | for (bool net_specific : {false, true}) { |
| 837 | fn(arg_actions, conf_actions, soft_set, force_set, section, network, net_specific); |
| 838 | } |
| 839 | } |
| 840 | } |
| 841 | } |
| 842 | } |
| 843 | }); |
| 844 | }); |
| 845 | } |
| 846 | |
| 847 | //! Translate actions into a list of <key>=<value> setting strings. |
| 848 | std::vector<std::string> GetValues(const ActionList& actions, |
nothing calls this directly
no test coverage detected