Skip to content

[DO NOT MERGE] Swift CI Testing #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 0 commits into from
Closed

Conversation

shahmishal
Copy link
Member

No description provided.

@shahmishal
Copy link
Member Author

@swift-ci test

grynspan added a commit that referenced this pull request Oct 7, 2024
Parameterized test functions with the same name but different argument
types currently get the same generated names from swift-syntax, so we do
some additional decorating to ensure uniqueness. This results in very
long symbol names that `swift-demangle` has trouble with.

This PR changes the decorating formula. Previously, we would include a
copy of the test function's signature (stripped of whitespace, Unicode,
and non-identifier-friendly ASCII) and, if the identifier contained
non-ASCII characters, the CRC32 of the identifier for further
uniqueness. This change drops the copy of the identifier name and always
includes the CRC32. Collisions are only possible for fully-qualified
test function names that are _identical_, and I naïvely judge the risk
of those collisions to be sufficiently low that we can make this change.

For `ZipTests.allElementsEqual😀(i:j:)` we currently generate a thunk
named:

```
$s12TestingTests03ZipB0V0022allElementsEqual_oxFJo4TestfMp_43funcallElementsEqual__i_Int_j_Int__5bcb7b35fMu_
```

This change would change it to:

```
$s12TestingTests03ZipB0V0022allElementsEqual_oxFJo4TestfMp_9Z5bcb7b35fMu_
```

Which demangles to:

```
$s12TestingTests03ZipB0V0022allElementsEqual_oxFJo4TestfMp_9Z5bcb7b35fMu_ ---> unique name #1 of Z5bcb7b35 in peer macro @test expansion #1 of allElementsEqual😀 in TestingTests.ZipTests
```

The benefit of the change is that the generated names are shorter and
easier to read when expanding a macro, and play better with the
demangler. There may also be some benefit on Windows where the linker
has a 65KB symbol name cap, although we're not exporting these symbols
so probably not.

### Checklist:

- [x] Code and documentation should follow the style of the [Style
Guide](https://github.com/apple/swift-testing/blob/main/Documentation/StyleGuide.md).
- [x] If public symbols are renamed or modified, DocC references should
be updated.
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.

2 participants