Correction du bug avec le test n°17 + Amélioration du script de test
This commit is contained in:
parent
d4f88551df
commit
c8dd918877
@ -1,5 +1,6 @@
|
||||
package fr.monlouyan.bakefile;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
public class CommandExecutor {
|
||||
@ -37,10 +38,9 @@ public class CommandExecutor {
|
||||
}
|
||||
if (debug) System.out.println("Debug: Executing " + command);
|
||||
ProcessBuilder pb = new ProcessBuilder("sh", "-c", command);
|
||||
pb.inheritIO();
|
||||
pb.inheritIO();
|
||||
Process process = pb.start();
|
||||
|
||||
|
||||
// Attendre la fin du processus
|
||||
int exitCode = process.waitFor();
|
||||
|
||||
@ -55,19 +55,28 @@ public class CommandExecutor {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Vérifier si cette règle est une cible directement demandée par l'utilisateur
|
||||
boolean isRequestedTarget = BakeCLI.getTargets().contains(rule.getName()) ||
|
||||
(BakeCLI.getTargets().isEmpty() && rule.getName().equals(BakefileParser.getFirstTarget()));
|
||||
|
||||
// On n'affiche le message "up to date" que si :
|
||||
// 1. C'est la première cible
|
||||
// 2. Aucune règle n'avait besoin d'être mise à jour
|
||||
// 3. On a des commandes à exécuter
|
||||
if (rule.getName().equals(BakefileParser.getFirstTarget()) && !needsUpdate && !rule.getCommands().isEmpty()) {
|
||||
System.out.println("bake: `" + rule.getName() + "' is up to date.");
|
||||
if (!isRequestedTarget || needsUpdate) {
|
||||
// Si ce n'est pas une cible demandée ou si une mise à jour a été nécessaire,
|
||||
// ne pas afficher de message
|
||||
return;
|
||||
}
|
||||
// On affiche "Nothing to be done" uniquement si :
|
||||
// 1. C'est la première cible
|
||||
// 2. Aucune règle n'avait besoin d'être mise à jour
|
||||
// 3. On n'a PAS de commandes à exécuter
|
||||
else if (rule.getName().equals(BakefileParser.getFirstTarget()) && !needsUpdate && rule.getCommands().isEmpty()) {
|
||||
|
||||
// Vérifier si la cible existe en tant que fichier
|
||||
File targetFile = new File(rule.getName());
|
||||
boolean fileExists = targetFile.exists();
|
||||
|
||||
if (!rule.getCommands().isEmpty() && fileExists) {
|
||||
// Si la cible a des commandes et existe en tant que fichier,
|
||||
// afficher "up to date"
|
||||
System.out.println("bake: `" + rule.getName() + "' is up to date.");
|
||||
} else {
|
||||
// Si la cible n'a pas de commandes ou n'existe pas en tant que fichier,
|
||||
// afficher "Nothing to be done"
|
||||
System.out.println("bake: Nothing to be done for `" + rule.getName() + "'.");
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,15 @@ public class Rule {
|
||||
System.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
// Si le fichier cible n'existe pas et qu'il y a des commandes, il doit être mis à jour
|
||||
File targetFile = new File(name);
|
||||
if (!targetFile.exists() && !commands.isEmpty()) {
|
||||
if (BakeCLI.isDebug()) {
|
||||
System.out.println("Debug : Target file " + name + " does not exist and has commands, needs update");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// Si la règle n'a pas de commandes, on vérifie seulement si une dépendance doit être mise à jour
|
||||
if (commands.isEmpty()) {
|
||||
@ -60,7 +69,6 @@ public class Rule {
|
||||
}
|
||||
|
||||
// Pour les règles avec des commandes, on vérifie aussi les timestamps
|
||||
File targetFile = new File(name);
|
||||
if (BakeCLI.isDebug()){
|
||||
System.out.println("Debug : Checking if target file " + name + " exist and is up to date");
|
||||
}
|
||||
|
2
test.sh
2
test.sh
@ -100,6 +100,8 @@ tests_c=(
|
||||
"test-13-dependancy-dont-exist"
|
||||
"test-14-remove-source-and-rebuild"
|
||||
"test-15-subdir-build"
|
||||
"test-16-strange-variables"
|
||||
"test-17-rule-without-command"
|
||||
)
|
||||
|
||||
tests_java=(
|
||||
|
Loading…
x
Reference in New Issue
Block a user