Skip to content

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

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

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions