diff options
author | 2015-04-01 17:25:19 +0000 | |
---|---|---|
committer | 2015-04-01 17:49:44 +0000 | |
commit | e9029d4613d98c17e05236a0058164bb8787f94b (patch) | |
tree | 4eab0f2c6123c387f1130b32668d56fe49d1d010 /src/main/java/com/google/devtools/build/lib/rules/objc | |
parent | a5cdb19e83160d60de562c1e0ae7638d4152b88b (diff) |
--instrumentation_filter now works with Objective C.
Added "-Tests$" to the default instrumentation_filter, this is the typical pattern for Objective C.
All sources are included in ObjcCommon.SOURCE.
Sources from targets which match the current instrumentation_filter are included in ObjcCommon.INSTRUMENTED_SOURCE.
GCNOs are added to ObjcCommon.GCNO iff the source they originate from is included in from a target which matches the instrumentation_filter.
RELNOTES: --instrumentation_filter now works with Objective C coverage.
--
MOS_MIGRATED_REVID=90076465
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java | 8 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java | 5 |
2 files changed, 12 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java index 50a080f26d..c485cd6cc8 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java @@ -29,6 +29,7 @@ import static com.google.devtools.build.lib.rules.objc.ObjcProvider.GENERAL_RESO import static com.google.devtools.build.lib.rules.objc.ObjcProvider.HEADER; import static com.google.devtools.build.lib.rules.objc.ObjcProvider.IMPORTED_LIBRARY; import static com.google.devtools.build.lib.rules.objc.ObjcProvider.INCLUDE; +import static com.google.devtools.build.lib.rules.objc.ObjcProvider.INSTRUMENTED_SOURCE; import static com.google.devtools.build.lib.rules.objc.ObjcProvider.LIBRARY; import static com.google.devtools.build.lib.rules.objc.ObjcProvider.LINKED_BINARY; import static com.google.devtools.build.lib.rules.objc.ObjcProvider.SDK_DYLIB; @@ -62,6 +63,7 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.packages.Type; import com.google.devtools.build.lib.rules.cpp.CcCommon; import com.google.devtools.build.lib.util.FileType; +import com.google.devtools.build.lib.util.RegexFilter; import com.google.devtools.build.lib.vfs.PathFragment; import java.util.HashSet; @@ -379,8 +381,12 @@ public final class ObjcCommon { Iterables.concat(artifacts.getSrcs(), artifacts.getNonArcSrcs()); objcProvider.addAll(LIBRARY, artifacts.getArchive().asSet()); objcProvider.addAll(SOURCE, allSources); - if (context.getConfiguration().isCodeCoverageEnabled()) { + BuildConfiguration configuration = context.getConfiguration(); + RegexFilter filter = configuration.getInstrumentationFilter(); + if (configuration.isCodeCoverageEnabled() + && filter.isIncluded(context.getLabel().toString())) { for (Artifact source : allSources) { + objcProvider.add(INSTRUMENTED_SOURCE, source); objcProvider.add(GCNO, intermediateArtifacts.gcnoFile(source)); } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java index e559ab4e35..12692ba011 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java @@ -83,6 +83,11 @@ public final class ObjcProvider implements TransitiveInfoProvider { public static final Key<Artifact> SOURCE = new Key<>(STABLE_ORDER); /** + * Contains all coverage instrumented source files. + */ + public static final Key<Artifact> INSTRUMENTED_SOURCE = new Key<>(STABLE_ORDER); + + /** * Contains all .gcno files one for every source file if in coverage mode. * It contains information to reconstruct the basic block graphs and assign source line numbers * to blocks. |