4

Je dois écrire un test unitaire pour un code C++ qui vérifie la présence d'une variable d'environnement. J'utilise MSVS 2008 et gtest comme cadre. J'ajoute la variable d'environnement en utilisant putenv, je vérifie la variable d'environnement en utilisant getevn, mais je n'arrive pas à comprendre comment l'enlever afin qu'aucun autre test ne le voit. Je réalise que c'est probablement facile, mais je ne trouve pas la réponse sur internet. MerciSupprimer la variable d'environnement par programme

Répondre

9

L'appel putenv en spécifiant à nouveau "SOME_VAR=" en tant que paramètre supprimera la variable d'environnement SOME_VAR. Par la suite, Microsoft recommande d'utiliser _putenv car putenv est obsolète.

+0

Notez qu'au moins sur Solaris, il n'y a aucune mention de cette fonctionnalité dans la page de manuel. –

+0

Il utilise MSVS 2008. Implique qu'il travaille sur Windows. Sous Linux, j'utiliserais setenv et unsetenv. Je ne sais pas si Solaris les a cependant. – 341008

1

vous pouvez utiliser la fonction unsetenv.

Si vc2008 ne dispose pas de cette fonction, vous pouvez accéder directement à l'environnement en utilisant getenv_s et supprimer l'entrée manuellement, en simulant unsetenv.

+0

Est-ce réellement disponible sur Windows sans utiliser le sous-système POSIX? Google affiche des résultats incohérents ... –

2

Vous pouvez toujours exécuter un sous-processus pour effectuer uniquement le test putenv/getenv, puis à la fin il n'y a plus d'environnement parasite.

+1

J'ai pensé à cela, mais je cherchais une solution plus propre. – Steve

1

Que diriez-vous de mettre l'env var à une chaîne vide?

De cmd.exe, cela fonctionne:

set SOMEVAR=something 
echo %SOMEVAR% 
set SOMEVAR= 
echo %SOMEVAR% 

Lorsque le dernier montre qu'il a été supprimé.

Questions connexes