The underlying cause is the feature tests run in parallel, and all try to mutate one registry key.
The logic is roughly
program A creates registry key (as it doesn't exist), and records the fact that it must _delete_ the registry key.
program B trys to create a registry key, finds that it already exists, so it records the old value, then updates it, and makes a not to restore the old value.
program A deletes the registry key, as when it started the key did not exist, so it's behaviour is to remove the key.
Program b trys to restore the state of the existing key, and finds the key deleted.
Test fails.
This pattern is unsafe, we have to rewrite it to not use a singleton registry key.
The underlying cause is the feature tests run in parallel, and all try to mutate one registry key.
The logic is roughly
program A creates registry key (as it doesn't exist), and records the fact that it must _delete_ the registry key.
program B trys to create a registry key, finds that it already exists, so it records the old value, then updates it, and makes a not to restore the old value.
program A deletes the registry key, as when it started the key did not exist, so it's behaviour is to remove the key.
Program b trys to restore the state of the existing key, and finds the key deleted.
Test fails.
This pattern is unsafe, we have to rewrite it to not use a singleton registry key.