Ignore Comments in Makefiles starting with #

This commit is contained in:
Sebastian Serth
2022-04-21 21:39:32 +02:00
committed by Sebastian Serth
parent a545614040
commit 7af17c87d3
2 changed files with 16 additions and 0 deletions

View File

@ -68,6 +68,8 @@ class SimpleMakefile {
String[] trimmedCommands = Arrays.stream(ruleCommands)
.map(String::trim)
.map(s -> s.startsWith("@") ? s.substring(1) : s)
.map(s -> s.contains("#") ? s.substring(0, s.indexOf("#")) : s)
.filter(s -> !s.isEmpty())
.toArray(String[]::new);
rules.put(ruleName, trimmedCommands);

View File

@ -37,6 +37,13 @@ public class SimpleMakefileTest {
"\t@java org/example/RecursiveMath\r\n"
).getBytes(StandardCharsets.UTF_8));
static final String SuccessfulMakefileWithComment = Base64.getEncoder().encodeToString(
("run:\r\n" +
"\t@javac org/example/RecursiveMath.java\r\n" +
"\t@java org/example/RecursiveMath\r\n" +
"\t#exit\r\n"
).getBytes(StandardCharsets.UTF_8));
static final String NotSupportedMakefile = Base64.getEncoder().encodeToString(
("run: test\n" +
"\tjavac org/example/RecursiveMath.java\n" +
@ -63,6 +70,13 @@ public class SimpleMakefileTest {
parseRunCommandOfMakefile(SuccessfulMakefileWithAtSymbol);
}
// We remove [any comments with #](https://www.gnu.org/software/make/manual/make.html#Recipe-Syntax)
// as they are normally ignored / echoed with most shells.
@Test
public void sucessfullMakeWithComment() {
parseRunCommandOfMakefile(SuccessfulMakefileWithComment);
}
private void parseRunCommandOfMakefile(String makefileB64) {
Map<String, String> files = new HashMap<>();
files.put("Makefile", makefileB64);