Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Oct 28, 2025

Adds test coverage for the httpmirror HTTP reverse proxy and caching server. No tests existed prior.

Coverage Added

fetch.go (HTTP operations):

  • httpHead() / httpGet() - success, HTTP errors (404/500), context cancellation
  • fileInfo type - all fs.FileInfo methods including edge cases (missing/invalid Last-Modified headers)

mirror.go (request handling):

  • isValidDomain() - 28 cases covering RFC compliance, special characters, length limits
  • getBlobName() - MD5 hash generation consistency
  • MirrorHandler.ServeHTTP() - method validation, path filtering, suffix blocking, domain validation, BaseDomain filtering, HostFromFirstPath mode, custom NotFound handler

Stats

  • 720 LOC across 2 test files
  • 32.9% statement coverage
  • Table-driven tests following Go conventions

Example test structure:

func TestIsValidDomain(t *testing.T) {
    tests := []struct {
        name     string
        domain   string
        expected bool
    }{
        {"valid domain", "example.com", true},
        {"starts with dash", "-example.com", false},
        {"special characters", "exam@ple.com", false},
    }
    // ...
}

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • cdn
    • Triggering command: /tmp/go-build3332974897/b525/httpmirror.test -test.testlogfile=/tmp/go-build3332974897/b525/testlog.txt -test.paniconexit0 -test.timeout=10m0s -test.v=true (dns block)
    • Triggering command: /tmp/go-build2702711329/b525/httpmirror.test -test.testlogfile=/tmp/go-build2702711329/b525/testlog.txt -test.paniconexit0 -test.gocoverdir=/tmp/go-build2702711329/b525/gocoverdir -test.timeout=10m0s (dns block)
    • Triggering command: /tmp/go-build1754526662/b525/httpmirror.test -test.testlogfile=/tmp/go-build1754526662/b525/testlog.txt -test.paniconexit0 -test.timeout=10m0s -test.short=true (dns block)
  • example.com
    • Triggering command: /tmp/go-build17724911/b525/httpmirror.test -test.testlogfile=/tmp/go-build17724911/b525/testlog.txt -test.paniconexit0 -test.timeout=10m0s -test.v=true (dns block)
    • Triggering command: /tmp/go-build3332974897/b525/httpmirror.test -test.testlogfile=/tmp/go-build3332974897/b525/testlog.txt -test.paniconexit0 -test.timeout=10m0s -test.v=true (dns block)
    • Triggering command: /tmp/go-build2702711329/b525/httpmirror.test -test.testlogfile=/tmp/go-build2702711329/b525/testlog.txt -test.paniconexit0 -test.gocoverdir=/tmp/go-build2702711329/b525/gocoverdir -test.timeout=10m0s (dns block)
  • mirror.example.com
    • Triggering command: /tmp/go-build17724911/b525/httpmirror.test -test.testlogfile=/tmp/go-build17724911/b525/testlog.txt -test.paniconexit0 -test.timeout=10m0s -test.v=true (dns block)
    • Triggering command: /tmp/go-build3332974897/b525/httpmirror.test -test.testlogfile=/tmp/go-build3332974897/b525/testlog.txt -test.paniconexit0 -test.timeout=10m0s -test.v=true (dns block)
    • Triggering command: /tmp/go-build2702711329/b525/httpmirror.test -test.testlogfile=/tmp/go-build2702711329/b525/testlog.txt -test.paniconexit0 -test.gocoverdir=/tmp/go-build2702711329/b525/gocoverdir -test.timeout=10m0s (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

This section details on the original issue you should resolve

<issue_title>Add unit test</issue_title>
<issue_description></issue_description>

Comments on the Issue (you are @copilot in this section)


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Co-authored-by: wzshiming <6565744+wzshiming@users.noreply.github.com>
Copilot AI changed the title [WIP] Add unit test for existing code Add unit tests for httpmirror package Oct 28, 2025
Copilot AI requested a review from wzshiming October 28, 2025 09:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add unit test

2 participants