withastro / compiler

The Astro compiler. Written in Go. Distributed as WASM.
Other
502 stars 59 forks source link

chore: cover all tests #1011

Closed ematipico closed 3 months ago

ematipico commented 5 months ago

Changes

This PR adds snapshot testing to ALL tests.

I also changed a bit the way we create snapshot testing, I created an utility called MakeSnapshot inside test_utils.go, which accepts certain options to generate the snapshots.

Before this PR, the snapshots were stored inside a __snapshots__ folder, but I preferred to configure that value, and pass a specific folder for each test suite we're testing. I found dividing snapshots by test case to be nice.

Testing

CI should pass

Docs

N/A

changeset-bot[bot] commented 5 months ago

⚠️ No Changeset found

Latest commit: 0ce3b62867c54c21384ae93659f0cd11bcf4921a

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

bluwy commented 5 months ago

Do we need snapshot testing for all tests? Seems like these are rather short and can be asserted entirely with a single string. The features are also well-defined and isolated (and unlikely to have internal implementation change).

I think it's fine to leave it as is, and perhaps leave snapshots for larger file outputs only that's hard to assert and susceptible to internal implementation change.

ematipico commented 5 months ago

Do we need snapshot testing for all tests? Seems like these are rather short and can be asserted entirely with a single string. The features are also well-defined and isolated (and unlikely to have internal implementation change).

That's my question from me to you, as you have more knowledge than me, background-wise. I hope you can tell me which tests don't need a snapshot and why.

From what I can tell, ALL tests use a transformation step, which is the whole point of the snapshot.

matthewp commented 4 months ago

The printer tests are the ones that should be a snapshot. But from this PR it doesn't look like the old manual tests are removed. So I don't think I am following what is going on.

ematipico commented 4 months ago

The printer tests are the ones that should be a snapshot. But from this PR it doesn't look like the old manual tests are removed. So I don't think I am following what is going on.

  1. I'll reduce the amount of snapshots to the printing
  2. Regarding the old tests, I explained here why I found them useful: https://github.com/withastro/compiler/pull/995#issuecomment-2034492048
matthewp commented 4 months ago

Regarding (2), I think you're saying that you find the print infrastructure useful for creating new tests. But once you've created them, there's not value in keeping them around forever, is there? If the existing printer want{} tests are duplicates of the snapshot tests then I don't see what value we are getting from the snapshots at all. I would be fine with keeping the print test infrastructure around as a helper during development, but don't see the benefit of checking in 2 copies of a testing.