From 6bac212ffec1a3691df7a1401354917d6dc77011 Mon Sep 17 00:00:00 2001 From: Gregg Donovan Date: Fri, 1 Dec 2017 13:33:16 -0500 Subject: [PATCH] Adding graph nodes for all targets found to ensure that BUILD files are generated for disconnected targets. --- .../com/google/devtools/build/bfg/JavaSourceFileParser.java | 1 + .../google/devtools/build/bfg/JavaSourceFileParserTest.java | 6 ++++-- src/main/java/com/google/devtools/build/bfg/Bfg.java | 1 + 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lang/java/src/main/java/com/google/devtools/build/bfg/JavaSourceFileParser.java b/lang/java/src/main/java/com/google/devtools/build/bfg/JavaSourceFileParser.java index cd17810..f5c36e8 100644 --- a/lang/java/src/main/java/com/google/devtools/build/bfg/JavaSourceFileParser.java +++ b/lang/java/src/main/java/com/google/devtools/build/bfg/JavaSourceFileParser.java @@ -189,6 +189,7 @@ private static void parseFiles( boolean hasEdges = false; classToFile.put(qualifiedSrc, srcFilePath.toString()); + classToClass.addNode(qualifiedSrc); for (QualifiedName qualifiedDst : parser.qualifiedTopLevelNames) { if (!qualifiedSrc.equals(qualifiedDst.value())) { classToClass.putEdge(qualifiedSrc, qualifiedDst.value()); diff --git a/lang/java/src/test/java/com/google/devtools/build/bfg/JavaSourceFileParserTest.java b/lang/java/src/test/java/com/google/devtools/build/bfg/JavaSourceFileParserTest.java index d8e0452..3fbac89 100644 --- a/lang/java/src/test/java/com/google/devtools/build/bfg/JavaSourceFileParserTest.java +++ b/lang/java/src/test/java/com/google/devtools/build/bfg/JavaSourceFileParserTest.java @@ -172,6 +172,7 @@ public void createDepsGraph_unresolvedClasses() throws IOException { ImmutableGraph actual = parser.getClassToClass(); MutableGraph expected = newGraph(); + expected.addNode("Dummy"); assertThatGraphsEqual(actual, expected); assertThat(parser.getUnresolvedClassNames()).containsExactly("Foo"); @@ -271,13 +272,14 @@ public void allFilesInSameDirAreOnACycle() throws IOException { ImmutableGraph actual = parser.getClassToClass(); MutableGraph expected = newGraph(); + expected.addNode("x.A"); expected.putEdge("y.A", "y.B"); expected.putEdge("y.B", "y.A"); expected.putEdge("z.A", "z.B"); expected.putEdge("z.B", "z.C"); expected.putEdge("z.C", "z.A"); - // Implicit: there's no tests.A and tests.B here, because 'tests/' is not in - // oneRulePerPackageRoots. + expected.addNode("tests.A"); + expected.addNode("tests.B"); assertThatGraphsEqual(actual, expected); } diff --git a/src/main/java/com/google/devtools/build/bfg/Bfg.java b/src/main/java/com/google/devtools/build/bfg/Bfg.java index 2bf330f..ebe56ec 100644 --- a/src/main/java/com/google/devtools/build/bfg/Bfg.java +++ b/src/main/java/com/google/devtools/build/bfg/Bfg.java @@ -159,6 +159,7 @@ private ImmutableGraph protoMultimapToGraph( MutableGraph result = GraphBuilder.directed().build(); m.forEach( (u, deps) -> { + result.addNode(u); for (String s : deps.getElementsList()) { result.putEdge(u, s); }