Skip to content

Commit 24c1575

Browse files
fix: ignore framework if name tag is null in span
1 parent 2c5960b commit 24c1575

File tree

2 files changed

+38
-4
lines changed

2 files changed

+38
-4
lines changed

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/utils/SpanUtils.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ public static void mergeTestFrameworks(AgentSpan span, Collection<TestFramework>
3232
setFrameworks(span, merged);
3333
}
3434

35-
private static Collection<TestFramework> getFrameworks(AgentSpan span) {
35+
static Collection<TestFramework> getFrameworks(AgentSpan span) {
3636
Object nameTag = span.getTag(Tags.TEST_FRAMEWORK);
3737
Object versionTag = span.getTag(Tags.TEST_FRAMEWORK_VERSION);
38-
if (nameTag == null && versionTag == null) {
38+
if (nameTag == null) {
3939
return Collections.emptyList();
4040
}
4141

@@ -45,9 +45,10 @@ private static Collection<TestFramework> getFrameworks(AgentSpan span) {
4545

4646
} else if (nameTag instanceof Collection) {
4747
Iterator<String> names = ((Collection<String>) nameTag).iterator();
48-
Iterator<String> versions = ((Collection<String>) versionTag).iterator();
48+
Iterator<String> versions =
49+
versionTag != null ? ((Collection<String>) versionTag).iterator() : null;
4950
while (names.hasNext()) {
50-
frameworks.add(new TestFramework(names.next(), versions.next()));
51+
frameworks.add(new TestFramework(names.next(), versions != null ? versions.next() : null));
5152
}
5253

5354
} else {
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package datadog.trace.civisibility.utils
2+
3+
import datadog.trace.bootstrap.instrumentation.api.Tags
4+
import datadog.trace.civisibility.ipc.TestFramework
5+
import datadog.trace.core.DDSpan
6+
import spock.lang.Specification
7+
8+
class SpanUtilsTest extends Specification {
9+
def "test getFrameworks"() {
10+
when:
11+
def span = createSpanWithFrameworks(frameworkTag, frameworkVersionTag)
12+
def frameworks = SpanUtils.getFrameworks(span)
13+
14+
then:
15+
frameworks == expected
16+
17+
where:
18+
frameworkTag | frameworkVersionTag | expected
19+
"name" | "version" | [new TestFramework("name", "version")]
20+
"name" | null | [new TestFramework("name", null)]
21+
null | "version" | []
22+
["nameA", "nameB"] | ["versionA", "versionB"] | [new TestFramework("nameA", "versionA"), new TestFramework("nameB", "versionB")]
23+
["nameA", "nameB"] | null | [new TestFramework("nameA", null), new TestFramework("nameB", null)]
24+
["nameA", "nameB"] | ["versionA", null] | [new TestFramework("nameA", "versionA"), new TestFramework("nameB", null)]
25+
}
26+
27+
DDSpan createSpanWithFrameworks(Object frameworkTag, Object frameworkVersionTag) {
28+
def span = Stub(DDSpan)
29+
span.getTag(Tags.TEST_FRAMEWORK) >> frameworkTag
30+
span.getTag(Tags.TEST_FRAMEWORK_VERSION) >> frameworkVersionTag
31+
return span
32+
}
33+
}

0 commit comments

Comments
 (0)