Skip to content

Methods covered by one provider's tests but not by another's #42

@wtwhite

Description

@wtwhite

Since #41, we can easily count the methods that JaCoCo says are covered by one provider's tests, but not another's:

sqlite> SELECT
    t1.provider AS provider1,
    t2.provider AS provider2,
    t1.groupId,
    t1.artifactId,
    t1.version,
    t1.test,
    count(*) AS nMethodsCoveredByProvider1Only
FROM tests t1
JOIN tests t2 ON (t2.groupId, t2.artifactId, t2.version, t2.test) = (t1.groupId, t1.artifactId, t1.version, t1.test)
JOIN covered_methods cm1 ON (cm1.provider, cm1.groupId, cm1.artifactId, cm1.version, cm1.test) = (t1.provider, t1.groupId, t1.artifactId, t1.version, t1.test)
WHERE t1.provider <> t2.provider
AND NOT EXISTS (
    SELECT 1 FROM covered_methods cm2
    WHERE (cm2.provider, cm2.groupId, cm2.artifactId, cm2.version, cm2.test, cm2.package, cm2.class, cm2.method, cm2.descriptor) = (t2.provider, cm1.groupId, cm1.artifactId, cm1.version, cm1.test, cm1.package, cm1.class, cm1.method, cm1.descriptor)
)
GROUP BY 1, 2, 3, 4, 5, 6
ORDER BY 1, 2, 3, 4, 5, 6
;
┌───────────┬───────────┬────────────────────┬────────────────────────┬───────────────┬─────────────────────────────────────────────────────────────────┬────────────────────────────────┐
│ provider1 │ provider2 │      groupId       │       artifactId       │    version    │                              test                               │ nMethodsCoveredByProvider1Only │
├───────────┼───────────┼────────────────────┼────────────────────────┼───────────────┼─────────────────────────────────────────────────────────────────┼────────────────────────────────┤
│ gaoss     │ mvnc      │ com/google/guava   │ guava                  │ 31.0.1-jre    │ com.google.common.collect.Sets_ESTest                           │ 1                              │
│ gaoss     │ mvnc      │ com/google/guava   │ guava                  │ 31.0.1-jre    │ com.google.common.reflect.ClassPath_ESTest                      │ 1                              │
│ gaoss     │ mvnc      │ com/google/guava   │ guava                  │ 31.0.1-jre    │ com.google.common.util.concurrent.AbstractCatchingFuture_ESTest │ 11                             │
│ gaoss     │ mvnc      │ com/google/guava   │ guava                  │ 31.0.1-jre    │ com.google.common.util.concurrent.AbstractFuture_ESTest         │ 6                              │
│ gaoss     │ mvnc      │ com/google/guava   │ guava                  │ 31.0.1-jre    │ com.google.common.util.concurrent.AggregateFuture_ESTest        │ 10                             │
│ gaoss     │ mvnc      │ com/google/guava   │ guava                  │ 31.0.1-jre    │ com.google.common.util.concurrent.ExecutionSequencer_ESTest     │ 21                             │
│ gaoss     │ mvnc      │ com/google/guava   │ guava                  │ 31.0.1-jre    │ com.google.common.util.concurrent.Futures_ESTest                │ 5                              │
│ gaoss     │ mvnc      │ io/netty           │ netty-buffer           │ 4.1.102.Final │ io.netty.buffer.AbstractByteBufAllocator_ESTest                 │ 1                              │
│ mvnc      │ gaoss     │ com/google/guava   │ guava                  │ 31.0.1-jre    │ com.google.common.util.concurrent.AggregateFuture_ESTest        │ 6                              │
│ mvnc      │ gaoss     │ com/google/guava   │ guava                  │ 31.0.1-jre    │ com.google.common.util.concurrent.Futures_ESTest                │ 2                              │
│ mvnc      │ gaoss     │ commons-io         │ commons-io             │ 2.15.0        │ org.apache.commons.io.filefilter.NotFileFilter_ESTest           │ 3                              │
│ mvnc      │ gaoss     │ commons-io         │ commons-io             │ 2.15.0        │ org.apache.commons.io.monitor.FileAlterationObserver_ESTest     │ 5                              │
│ mvnc      │ gaoss     │ io/undertow        │ undertow-servlet       │ 2.2.23.Final  │ io.undertow.servlet.spec.UpgradeServletInputStream_ESTest       │ 3                              │
│ mvnc      │ gaoss     │ io/undertow        │ undertow-servlet       │ 2.2.24.Final  │ io.undertow.servlet.spec.UpgradeServletInputStream_ESTest       │ 13                             │
│ mvnc      │ gaoss     │ io/undertow        │ undertow-servlet       │ 2.2.25.Final  │ io.undertow.servlet.spec.UpgradeServletInputStream_ESTest       │ 4                              │
│ mvnc      │ gaoss     │ io/undertow        │ undertow-servlet       │ 2.2.26.Final  │ io.undertow.servlet.spec.UpgradeServletInputStream_ESTest       │ 3                              │
│ mvnc      │ gaoss     │ io/undertow        │ undertow-servlet       │ 2.2.28.Final  │ io.undertow.servlet.spec.UpgradeServletInputStream_ESTest       │ 4                              │
│ mvnc      │ gaoss     │ io/undertow        │ undertow-servlet       │ 2.2.28.Final  │ io.undertow.servlet.spec.UpgradeServletOutputStream_ESTest      │ 1                              │
│ mvnc      │ gaoss     │ io/undertow        │ undertow-servlet       │ 2.2.31.Final  │ io.undertow.servlet.spec.UpgradeServletInputStream_ESTest       │ 4                              │
│ mvnc      │ gaoss     │ io/undertow        │ undertow-servlet       │ 2.2.32.Final  │ io.undertow.servlet.spec.UpgradeServletInputStream_ESTest       │ 3                              │
│ mvnc      │ gaoss     │ org/apache/commons │ commons-configuration2 │ 2.7           │ org.apache.commons.configuration2.DataConfiguration_ESTest      │ 1                              │
│ mvnc      │ obfs      │ commons-io         │ commons-io             │ 2.15.0        │ org.apache.commons.io.filefilter.NotFileFilter_ESTest           │ 3                              │
│ mvnc      │ obfs      │ commons-io         │ commons-io             │ 2.15.0        │ org.apache.commons.io.monitor.FileAlterationObserver_ESTest     │ 5                              │
└───────────┴───────────┴────────────────────┴────────────────────────┴───────────────┴─────────────────────────────────────────────────────────────────┴────────────────────────────────┘
sqlite> 

Investigate them in more detail.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions