Skip to content
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

Fix inconsistent trailing slash in remappings #49

Open
wants to merge 5 commits into
base: main
Choose a base branch
from

Conversation

Troublor
Copy link

@Troublor Troublor commented Jan 21, 2024

Fix #47. One corresponding test is added.

Fix strategy

  • Remove the code that blindly add trailing / when serializing Remapping and RelativeRemapping.
  • Preserve the trailing / in the strip_prefix method of Remapping.

Rationale

There are roughly two sources where Remapping comes from:

  • Generated in find_many function.
  • Loaded from configuration like foundry.toml.

When generating Remapping in find_many function, the algorithm makes sure that the name and path of every remapping are valid folders in the file system. Then, trailing /s are added to both name and path in the impl From<RelativeRemapping> for Remapping implementation.
https://github.com/Troublor/compilers/blob/93c5f46a7dd0c0d387dd94c8ea756812e2907d92/src/remappings.rs#L360-L365

When loading Remapping from user-provided configurations, the name and path of remappings should be set as it is, and do not add any trailing /s.

Either way, the field name and path of Remapping contains intended values and should not be changed in the serialization (the implementation for Display trait).

PS: About coding style, I tried to use TempProject to write the test case but it seems the project.compile() method does not respect the remapping I give it via project.with_settings(settings_with_remapping). The remapping just does not take effect in the compilation. Not sure whether it's I don't know how to use it or TempProject has some bugs.

@Troublor Troublor marked this pull request as draft January 21, 2024 05:08
@BlazeWasHere
Copy link

gm @Troublor are you still working on this?

@Troublor
Copy link
Author

@BlazeWasHere Yeah you remind me. I will finish it this weekend.

@Troublor Troublor marked this pull request as ready for review March 31, 2024 02:37
@DaniPopes DaniPopes requested review from mattsse and klkvr April 2, 2024 15:20
Copy link
Member

@mattsse mattsse left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sorry forgot about this,

could you please open a foundry pr that patches the foundry-compilers crate to this branch to check if this causes any issues

BlazeWasHere added a commit to BlazeWasHere/foundry that referenced this pull request Apr 10, 2024
@BlazeWasHere
Copy link

BlazeWasHere commented Apr 10, 2024

ah im not approved for github workflow actions, but locally it doesnt seem to build not sure its because of my system (new pc -- have never used rust on this before) or rust crate incompatibility

edit: it seems like this branch is just missing latest commits from main

@Troublor
Copy link
Author

The test cases of foundry-rs/compilers (in the CI) seem to indicate there are some problems with Windows. I don't have a Windows machine. Could someone offer some help to look into the issues?

src/remappings.rs Outdated Show resolved Hide resolved
src/remappings.rs Outdated Show resolved Hide resolved
src/remappings.rs Outdated Show resolved Hide resolved
@DaniPopes DaniPopes requested a review from mattsse April 11, 2024 18:38
Troublor and others added 2 commits April 11, 2024 14:42
Co-authored-by: DaniPopes <57450786+DaniPopes@users.noreply.github.com>
src/remappings.rs Outdated Show resolved Hide resolved
Co-authored-by: Blaze <blaze@dorime.org>
Copy link
Member

@DaniPopes DaniPopes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm, pending @mattsse

Copy link
Member

@mattsse mattsse left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm,

really sorry about the delay

@mattsse
Copy link
Member

mattsse commented Apr 13, 2024

hmm this results in a bunch of failing tests

foundry-rs/foundry#7623

can't proceed with this until sorted out

@BlazeWasHere
Copy link

BlazeWasHere commented Apr 13, 2024

hmm this results in a bunch of failing tests

foundry-rs/foundry#7623

can't proceed with this until sorted out

i havent updated my fork yet, can you retrigger ci again now

edit:

https://github.com/foundry-rs/foundry/actions/runs/8672405018/job/23783250651?pr=7623#step:12:316
windows (the bane of oss dev) has missing trailing /

gnu/linux ditto. 😢
https://github.com/foundry-rs/foundry/actions/runs/8672405018/job/23783250255?pr=7623#step:12:153

https://github.com/foundry-rs/foundry/blob/89f0fb923773cf0f8f966290e579bae92f505077/crates/forge/tests/cli/config.rs#L233
seems to fail because of

compilers/src/remappings.rs

Lines 364 to 376 in 66d2677

impl From<RelativeRemapping> for Remapping {
fn from(r: RelativeRemapping) -> Self {
let RelativeRemapping { context, mut name, path } = r;
let mut path = format!("{}", path.relative().display());
if !path.ends_with('/') {
path.push('/');
}
if !name.ends_with('/') {
name.push('/');
}
Remapping { context, name, path }
}
}

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.

Inconsistent tailing slash in remapping name and path
4 participants