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
Add ability to reference files in the local filesystem with file:// s… #11569
Changes from 7 commits
866417b
a182818
130b588
9b7f613
cf24294
db618c9
c3f820e
4e8508b
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
@@ -1,4 +1,5 @@ | ||||||
import os | ||||||
import platform | ||||||
|
||||||
import pytest | ||||||
import requests | ||||||
|
@@ -157,6 +158,33 @@ def test_download_no_retries_errors(self, bottle_server): | |||||
assert "Waiting" not in str(conanfile.output) | ||||||
assert "retry" not in str(conanfile.output) | ||||||
|
||||||
def test_download_localfile(self): | ||||||
conanfile = ConanFileMock() | ||||||
conanfile._conan_requester = requests | ||||||
|
||||||
file_location = os.path.join(temp_folder(), "file.txt") | ||||||
with open(file_location, 'w') as textfile: | ||||||
textfile.write('this is some content\n') | ||||||
|
||||||
file_url = f"file:///{file_location}" | ||||||
file_md5 = "a0b156435474e688206c68e5c66a3327" | ||||||
|
||||||
dest = os.path.join(temp_folder(), "downloaded_file.txt") | ||||||
download(conanfile, file_url, dest, md5=file_md5) | ||||||
content = load(dest) | ||||||
assert "this is some content" == content.rstrip() | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
The rstrip() is probably unnecessary, and risks hiding a bug somewhere. The file must be identical There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fixed it by changing the md5 that is checked above (as it stands, given the md5 check, this is probably redundant). Issue was that most command line text editors and the shell itself will append a newline character, so all of my attempts to get the md5 sum of a string will give me the md5 sum of a string ending with the newline character. Given that a few lines above we have control of the exact byte-wise contents of the file, I think it's safe to remove the |
||||||
|
||||||
def test_download_localfile_notfound(self): | ||||||
conanfile = ConanFileMock() | ||||||
conanfile._conan_requester = requests | ||||||
|
||||||
file_url = "file:///path/to/missing/file.txt" | ||||||
dest = os.path.join(temp_folder(), "file.txt") | ||||||
|
||||||
with pytest.raises(FileNotFoundError) as exc: | ||||||
download(conanfile, file_url, dest) | ||||||
|
||||||
assert "No such file" in str(exc.value) | ||||||
|
||||||
@pytest.fixture() | ||||||
def bottle_server_zip(): | ||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We have one line helpers for this.