Skip to content

[Export Audit] Duplicate testHelpers export name across 6 modules #3788

@github-actions

Description

@github-actions

API Surface Issue

Category

Naming collision - Multiple modules export the same testHelpers name

Summary

Six modules export a constant named testHelpers, causing naming collisions that force test files to use import aliasing. This creates maintenance burden and reduces code readability.

Affected Files

  1. src/host-iptables-shared.ts:27

    export const testHelpers = { resetIpv6State };
  2. src/copilot-api-resolver.ts:88

    export const testHelpers = {
      deriveCopilotApiTargetFromProviderBaseUrl,
      deriveCopilotApiBasePathFromProviderBaseUrl,
    };
  3. src/host-env.ts:52

    export const testHelpers = { subnetsOverlap };
  4. src/container-lifecycle.ts:469

    export const testHelpers = { isAgentExternallyKilled, resetAgentExternallyKilled };
  5. src/host-iptables-network.ts:67

    export const testHelpers = { cleanupFirewallNetwork };
  6. src/logs/log-discovery.ts:168

    export const testHelpers = { isContainerRunning };

Evidence of Real Impact

Test files are already forced to use import aliasing to avoid conflicts:

src/host-iptables-network.test.ts:

import { testHelpers as networkTestHelpers } from ./host-iptables-network;
import { testHelpers } from ./host-iptables-shared;

src/docker-manager-lifecycle.test.ts:

import { testHelpers as lifecycleTestHelpers } from ./container-lifecycle;

Recommended Fix

Rename each testHelpers export to be module-specific:

  1. src/host-iptables-shared.tsiptablesSharedTestHelpers
  2. src/copilot-api-resolver.tscopilotApiResolverTestHelpers
  3. src/host-env.tshostEnvTestHelpers
  4. src/container-lifecycle.tscontainerLifecycleTestHelpers
  5. src/host-iptables-network.tsiptablesNetworkTestHelpers
  6. src/logs/log-discovery.tslogDiscoveryTestHelpers

This follows the pattern already established by import aliasing but makes it explicit in the export name, eliminating the need for manual aliasing at import sites.

Impact

  • Dead code risk: Low (all exports are used)
  • Maintenance burden: High (forces import aliasing, reduces code clarity)
  • Collision risk: High (6 modules with identical export names)

Priority Score: 7

  • Naming collision across 6 modules: +2
  • Evidence of actual conflicts: +3
  • Maintenance burden: +2

Detected by Export Audit workflow. Triggered by push to main on 2026-05-25

Generated by API Surface & Export Audit · ● 4.5M ·

  • expires on Jun 24, 2026, 5:06 PM UTC

Metadata

Metadata

Assignees

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