hardhat icon indicating copy to clipboard operation
hardhat copied to clipboard

feat: enhance the solidity test artifacts discovery

Open galargh opened this issue 1 year ago • 3 comments

  • [ ] Because this PR includes a bug fix, relevant tests have been included.
  • [ ] Because this PR includes a new feature, the change was previously discussed on an Issue or with someone from the team.
  • [x] I didn't do anything of this.

This PR makes the check whether an artifact is a test artifact more accurate. It implements the design described in https://www.notion.so/nomicfoundation/Test-Artifacts-Discovery-11f578cdeaf580bdb7e5c4268c5f248d

The base cases of the newly added isTestArtifact method have been tested using unit tests and manually.

It introduces 2 new dependencies:

  • @nomicfoundation/slang - 2.6M - direct
  • @bytecodealliance/preview2-shim - 524K - transitive

galargh avatar Oct 16 '24 17:10 galargh

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
hardhat ✅ Ready (Inspect) Visit Preview 💬 Add feedback Oct 28, 2024 11:23am

vercel[bot] avatar Oct 16 '24 17:10 vercel[bot]

⚠️ No Changeset found

Latest commit: 35622811beb3bfbc7269f83bcdf31ca000854ccd

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

changeset-bot[bot] avatar Oct 16 '24 17:10 changeset-bot[bot]

hardhat

Total size of the bundle: 225M Total number of dependencies (including transitive): 58

List of dependencies (sorted by size)
220M	total
30M	@ignored/edr-optimism-linux-x64-musl
30M	@ignored/edr-optimism-linux-x64-gnu
27M	@ignored/edr-optimism-linux-arm64-musl
27M	@ignored/edr-optimism-linux-arm64-gnu
22M	@ignored/edr-optimism-win32-x64-msvc
21M	@ignored/edr-optimism-darwin-x64
20M	esbuild
20M	@ignored/edr-optimism-darwin-arm64
8.9M	solc
2.8M	@sentry/tracing
1.9M	@noble/curves
1.7M	undici
1.2M	@sentry/types
1.2M	@noble/hashes
932K	@sentry/node
920K	@sentry/utils
824K	zod
796K	@ignored/hardhat-vnext-utils
576K	tsx
548K	@sentry/core
504K	fast-equals
492K	@scure/bip39
460K	@ignored/edr
384K	@ignored/edr-optimism
368K	ethereum-cryptography
344K	@sentry/hub
320K	enquirer
284K	semver
268K	@ignored/hardhat-vnext-errors
188K	commander
168K	@scure/base
136K	adm-zip
128K	get-tsconfig
96K	@scure/bip32
92K	chalk
88K	tslib
88K	@sentry/minimal
84K	js-sha3
76K	agent-base
72K	@nomicfoundation/solidity-analyzer
68K	debug
64K	lru_map
64K	https-proxy-agent
60K	@ignored/hardhat-vnext-zod-utils
56K	rfdc
56K	follow-redirects
48K	memorystream
48K	command-exists
48K	ansi-colors
44K	tmp
40K	resolve-pkg-maps
36K	p-map
32K	cookie
24K	strip-ansi
24K	env-paths
24K	ansi-regex
20K	os-tmpdir
20K	ms

github-actions[bot] avatar Oct 16 '24 17:10 github-actions[bot]

With https://github.com/NomicFoundation/edr/pull/705 in place, we could get away with being less strict when it comes to test contracts discovery. It still could be useful if, let's say, we wanted to ensure we don't spend time compiling files that have .t.sol extension but don't define any tests, but I don't think it's that important.

Let me know if you think we should simplify the isTestArtifact function by removing the source content checks, which in turn will allow us to remove the dependency on slang.

The above suggestion is implemented in https://github.com/NomicFoundation/hardhat/pull/5844 if we decide to proceed with it.

galargh avatar Oct 22 '24 09:10 galargh

Agreed, that's exactly what I discovered when playing around with compilation for the test task. I'm going to share my thoughts on that later today in a doc.

galargh avatar Oct 28 '24 11:10 galargh