Macros to execute compiled program don't force it to quit when test exits
- Langage dominant
- C++
- Étoiles
- 1
- Forks
- 1
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
If main has an infinite loop, it'll just keep running as a process in the background even after the test has failed.
This became obvious in Paint Milestone 4 tests when a window was displayed. Here's how I solved it (although in this case I was looking for a timeout):
TEST(PaintProgramTest, StartShowsImage) {
std::chrono::time_point start, end;
start = std::chrono::system_clock::now();
system("timeout 1s ./main");
end = std::chrono::system_clock::now();
std::chrono::duration elapsed_seconds = end - start;
std::chrono::milliseconds ms =
std::chrono::duration_cast(elapsed_seconds);
if (ms.count() <= 900) {
FAIL() << " main() should call PaintProgram::Start() which calls "
"Image::ShowUntilClosed().";
}
}
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Piste de recherche
Commencez par localiser les macros de test qui exécutent des programmes compilés ainsi que le cas TEST présenté dans le rapport. Reproduisez l’échec avec un programme dont le main contient une boucle infinie, puis examinez comment la macro lance et observe ce processus. C’est terminé lorsqu’un test en échec ou qui se termine ne laisse pas le programme compilé s’exécuter en arrière-plan.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- cpp
- Domaine
- testing-qa
- Type d'issue
- Fonctionnalité
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100