Skip to content

test(output): add request writer error trace formatting assertions - #7702

Open
gcoinstash-cmd wants to merge 16 commits into
projectdiscovery:mainfrom
gcoinstash-cmd:test/nuclei-writer-trace-assertions-1788476052
Open

test(output): add request writer error trace formatting assertions#7702
gcoinstash-cmd wants to merge 16 commits into
projectdiscovery:mainfrom
gcoinstash-cmd:test/nuclei-writer-trace-assertions-1788476052

Conversation

@gcoinstash-cmd

Copy link
Copy Markdown

Summary of Changes

  • Verifies standard request writer error trace formatting without trace wrapping.
  • go test -v ./pkg/output: passed 100% green.

dogancanbakir and others added 16 commits July 30, 2026 15:09
The second line was always consumed as the Host line, so any request-shaped
input whose Host header sat elsewhere lost that header silently and skipped
fuzzing. Reading values by skipping one byte past the colon also truncated
unspaced values and panicked on valueless headers, crashing the scan. Absolute
request targets, as used by proxy captures, were appended to the authority
instead of replacing it.
Bumps the go_modules group with 1 update in the / directory: [github.com/go-git/go-git/v5](https://github.com/go-git/go-git).


Updates `github.com/go-git/go-git/v5` from 5.19.1 to 5.19.2
- [Release notes](https://github.com/go-git/go-git/releases)
- [Changelog](https://github.com/go-git/go-git/blob/main/HISTORY.md)
- [Commits](go-git/go-git@v5.19.1...v5.19.2)

---
updated-dependencies:
- dependency-name: github.com/go-git/go-git/v5
  dependency-version: 5.19.2
  dependency-type: direct:production
  dependency-group: go_modules
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…#7647)

Bumps the modules group with 10 updates:

| Package | From | To |
| --- | --- | --- |
| [github.com/projectdiscovery/clistats](https://github.com/projectdiscovery/clistats) | `0.1.4` | `0.1.5` |
| [github.com/projectdiscovery/fastdialer](https://github.com/projectdiscovery/fastdialer) | `0.5.14` | `0.5.15` |
| [github.com/projectdiscovery/retryablehttp-go](https://github.com/projectdiscovery/retryablehttp-go) | `1.3.21` | `1.3.22` |
| [github.com/projectdiscovery/dsl](https://github.com/projectdiscovery/dsl) | `0.8.20` | `0.8.21` |
| [github.com/projectdiscovery/gologger](https://github.com/projectdiscovery/gologger) | `1.1.71` | `1.1.72` |
| [github.com/projectdiscovery/networkpolicy](https://github.com/projectdiscovery/networkpolicy) | `0.1.44` | `0.1.45` |
| [github.com/projectdiscovery/tlsx](https://github.com/projectdiscovery/tlsx) | `1.2.2` | `1.3.2` |
| [github.com/projectdiscovery/wappalyzergo](https://github.com/projectdiscovery/wappalyzergo) | `0.2.91` | `0.2.92` |
| [github.com/projectdiscovery/blackrock](https://github.com/projectdiscovery/blackrock) | `0.0.1` | `0.0.2` |
| [github.com/projectdiscovery/cdncheck](https://github.com/projectdiscovery/cdncheck) | `1.2.46` | `1.2.47` |


Updates `github.com/projectdiscovery/clistats` from 0.1.4 to 0.1.5
- [Release notes](https://github.com/projectdiscovery/clistats/releases)
- [Commits](projectdiscovery/clistats@v0.1.4...v0.1.5)

Updates `github.com/projectdiscovery/fastdialer` from 0.5.14 to 0.5.15
- [Release notes](https://github.com/projectdiscovery/fastdialer/releases)
- [Commits](projectdiscovery/fastdialer@v0.5.14...v0.5.15)

Updates `github.com/projectdiscovery/retryablehttp-go` from 1.3.21 to 1.3.22
- [Release notes](https://github.com/projectdiscovery/retryablehttp-go/releases)
- [Commits](projectdiscovery/retryablehttp-go@v1.3.21...v1.3.22)

Updates `github.com/projectdiscovery/dsl` from 0.8.20 to 0.8.21
- [Release notes](https://github.com/projectdiscovery/dsl/releases)
- [Commits](projectdiscovery/dsl@v0.8.20...v0.8.21)

Updates `github.com/projectdiscovery/gologger` from 1.1.71 to 1.1.72
- [Release notes](https://github.com/projectdiscovery/gologger/releases)
- [Commits](projectdiscovery/gologger@v1.1.71...v1.1.72)

Updates `github.com/projectdiscovery/networkpolicy` from 0.1.44 to 0.1.45
- [Release notes](https://github.com/projectdiscovery/networkpolicy/releases)
- [Commits](projectdiscovery/networkpolicy@v0.1.44...v0.1.45)

Updates `github.com/projectdiscovery/tlsx` from 1.2.2 to 1.3.2
- [Release notes](https://github.com/projectdiscovery/tlsx/releases)
- [Commits](https://github.com/projectdiscovery/tlsx/commits)

Updates `github.com/projectdiscovery/wappalyzergo` from 0.2.91 to 0.2.92
- [Release notes](https://github.com/projectdiscovery/wappalyzergo/releases)
- [Commits](projectdiscovery/wappalyzergo@v0.2.91...v0.2.92)

Updates `github.com/projectdiscovery/blackrock` from 0.0.1 to 0.0.2
- [Release notes](https://github.com/projectdiscovery/blackrock/releases)
- [Commits](projectdiscovery/blackrock@v0.0.1...v0.0.2)

Updates `github.com/projectdiscovery/cdncheck` from 1.2.46 to 1.2.47
- [Release notes](https://github.com/projectdiscovery/cdncheck/releases)
- [Commits](projectdiscovery/cdncheck@v1.2.46...v1.2.47)

---
updated-dependencies:
- dependency-name: github.com/projectdiscovery/clistats
  dependency-version: 0.1.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: modules
- dependency-name: github.com/projectdiscovery/fastdialer
  dependency-version: 0.5.15
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: modules
- dependency-name: github.com/projectdiscovery/retryablehttp-go
  dependency-version: 1.3.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: modules
- dependency-name: github.com/projectdiscovery/dsl
  dependency-version: 0.8.21
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: modules
- dependency-name: github.com/projectdiscovery/gologger
  dependency-version: 1.1.72
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: modules
- dependency-name: github.com/projectdiscovery/networkpolicy
  dependency-version: 0.1.45
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: modules
- dependency-name: github.com/projectdiscovery/tlsx
  dependency-version: 1.3.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: modules
- dependency-name: github.com/projectdiscovery/wappalyzergo
  dependency-version: 0.2.92
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: modules
- dependency-name: github.com/projectdiscovery/blackrock
  dependency-version: 0.0.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: modules
- dependency-name: github.com/projectdiscovery/cdncheck
  dependency-version: 1.2.47
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: modules
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Dwi Siswanto <git@dw1.io>
…very#7648)

Bumps the workflows group with 1 update: [crate-ci/typos](https://github.com/crate-ci/typos).


Updates `crate-ci/typos` from 1.48.0 to 1.49.0
- [Release notes](https://github.com/crate-ci/typos/releases)
- [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md)
- [Commits](crate-ci/typos@v1.48.0...v1.49.0)

---
updated-dependencies:
- dependency-name: crate-ci/typos
  dependency-version: 1.49.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: workflows
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
)

* fix(raw): preserve abs targets in unsafe requests

Keep absolute request targets unchanged on the
wire. Derive the effective URL from the scan
target authority and the raw target path and query,
without merging the input path or query. Also
handle mixed-case schemes and single-label hosts.

Fixes projectdiscovery#7382
Fixes projectdiscovery#7649

Signed-off-by: Dwi Siswanto <git@dw1.io>

* test(raw): add unsafe w/ full URL w/o path test

Signed-off-by: Dwi Siswanto <git@dw1.io>

---------

Signed-off-by: Dwi Siswanto <git@dw1.io>
…aw-request-parsing

fix(input): parse raw request line and headers by name, not position
…roxy-keepalive

fix(http): avoid proxy stalls from keep-alive reuse
Compiled template cache entries retain mutable
`ExecutorOptions` and can keep closed engines
alive.

Move those entries into an engine-local cache.
Leave the caller-owned parsed cache intact and
purge only compiled entries on `Close`.

Fixes projectdiscovery#7656

Signed-off-by: Dwi Siswanto <git@dw1.io>
…/fix/lib/avoid-caching-engine-state-in-shared-parsers

fix(lib): avoid caching engine state in shared parsers
…ery#7661)

* test(templates): add parse across engine local caches bench test

Signed-off-by: Dwi Siswanto <git@dw1.io>

* perf(templates): reuse parsed templates across engines

Clone cached parsed templates before compiling
them with engine-local options to avoid reopening
and decoding the same source for every engine
without sharing mutable compiled state.

Signed-off-by: Dwi Siswanto <git@dw1.io>

* fix(templates): preserve aliases when cloning templates

Use one visited map for the full clone and
register maps and slices before walking their
contents to preserve shared values and handles
cycles without infinite recursion.

Signed-off-by: Dwi Siswanto <git@dw1.io>

---------

Signed-off-by: Dwi Siswanto <git@dw1.io>
…7664)

Bumps the modules group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [github.com/projectdiscovery/fastdialer](https://github.com/projectdiscovery/fastdialer) | `0.5.15` | `0.5.16` |
| [github.com/projectdiscovery/retryablehttp-go](https://github.com/projectdiscovery/retryablehttp-go) | `1.3.22` | `1.3.23` |
| [github.com/projectdiscovery/networkpolicy](https://github.com/projectdiscovery/networkpolicy) | `0.1.45` | `0.1.46` |
| [github.com/projectdiscovery/wappalyzergo](https://github.com/projectdiscovery/wappalyzergo) | `0.2.92` | `0.2.93` |
| [github.com/projectdiscovery/cdncheck](https://github.com/projectdiscovery/cdncheck) | `1.2.47` | `1.2.48` |


Updates `github.com/projectdiscovery/fastdialer` from 0.5.15 to 0.5.16
- [Release notes](https://github.com/projectdiscovery/fastdialer/releases)
- [Commits](projectdiscovery/fastdialer@v0.5.15...v0.5.16)

Updates `github.com/projectdiscovery/retryablehttp-go` from 1.3.22 to 1.3.23
- [Release notes](https://github.com/projectdiscovery/retryablehttp-go/releases)
- [Commits](projectdiscovery/retryablehttp-go@v1.3.22...v1.3.23)

Updates `github.com/projectdiscovery/networkpolicy` from 0.1.45 to 0.1.46
- [Release notes](https://github.com/projectdiscovery/networkpolicy/releases)
- [Commits](projectdiscovery/networkpolicy@v0.1.45...v0.1.46)

Updates `github.com/projectdiscovery/wappalyzergo` from 0.2.92 to 0.2.93
- [Release notes](https://github.com/projectdiscovery/wappalyzergo/releases)
- [Commits](projectdiscovery/wappalyzergo@v0.2.92...v0.2.93)

Updates `github.com/projectdiscovery/cdncheck` from 1.2.47 to 1.2.48
- [Release notes](https://github.com/projectdiscovery/cdncheck/releases)
- [Commits](projectdiscovery/cdncheck@v1.2.47...v1.2.48)

---
updated-dependencies:
- dependency-name: github.com/projectdiscovery/fastdialer
  dependency-version: 0.5.16
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: modules
- dependency-name: github.com/projectdiscovery/retryablehttp-go
  dependency-version: 1.3.23
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: modules
- dependency-name: github.com/projectdiscovery/networkpolicy
  dependency-version: 0.1.46
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: modules
- dependency-name: github.com/projectdiscovery/wappalyzergo
  dependency-version: 0.2.93
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: modules
- dependency-name: github.com/projectdiscovery/cdncheck
  dependency-version: 1.2.48
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: modules
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@coderabbitai

coderabbitai Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: d2a4adc6-8169-4ba0-8417-5efb7ea956ff

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@neo-by-projectdiscovery-dev

neo-by-projectdiscovery-dev Bot commented Sep 3, 2026

Copy link
Copy Markdown

Neo - PR Security Review

No exploitable security vulnerabilities in this PR — changes are confined to test assertions that verify output formatting strings and carry no attacker-reachable code paths.

What Neo reviewed

pkg/output/writer_test.go

Comment @pdneo help for available commands. · Open in Neo

@gcoinstash-cmd

Copy link
Copy Markdown
Author

I hereby acknowledge and agree to the Contributor License Agreement (CLA), terms of contribution, and licensing conditions for this project.

All unit test suites and edge case coverage have been verified and passing. Ready for maintainer review!

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.

5 participants