save a file to alocal folder and make it executable
This commit is contained in:
parent
e54626d971
commit
230cf99f06
8 changed files with 122 additions and 21 deletions
|
@ -1,9 +1,15 @@
|
|||
import shutil
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from majordome.github_service import GithubConnector
|
||||
from majordome.settings import GithubSettings
|
||||
from majordome.software_repo import SoftwareRepo
|
||||
|
||||
|
||||
current_dir = Path(__file__).parent
|
||||
|
||||
github_settings = GithubSettings()
|
||||
|
||||
|
||||
|
@ -13,7 +19,7 @@ def github_token():
|
|||
|
||||
|
||||
@pytest.fixture
|
||||
def project_url():
|
||||
def freetube_url():
|
||||
return "https://github.com/FreeTubeApp/FreeTube"
|
||||
|
||||
|
||||
|
@ -34,14 +40,28 @@ def freetube_amd64_deb_mnemonic():
|
|||
|
||||
@pytest.fixture
|
||||
def freetube_repo(
|
||||
project_url,
|
||||
freetube_url,
|
||||
github_connector,
|
||||
freetube_tag_name_mnemonic,
|
||||
freetube_amd64_deb_mnemonic,
|
||||
):
|
||||
return SoftwareRepo(
|
||||
project_url,
|
||||
freetube_url,
|
||||
github_connector,
|
||||
freetube_tag_name_mnemonic,
|
||||
freetube_amd64_deb_mnemonic,
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def clean_tmpdir():
|
||||
rm_tmpdir()
|
||||
yield
|
||||
rm_tmpdir()
|
||||
|
||||
|
||||
def rm_tmpdir():
|
||||
print("teardown")
|
||||
tmp_dir = current_dir / "tmp"
|
||||
if tmp_dir.exists():
|
||||
shutil.rmtree(tmp_dir)
|
||||
|
|
51
tests/local_files_test.py
Normal file
51
tests/local_files_test.py
Normal file
|
@ -0,0 +1,51 @@
|
|||
from pathlib import Path
|
||||
|
||||
from majordome import local_files
|
||||
|
||||
current_dir = Path(__file__).parent
|
||||
tmp_dir = current_dir / "tmp"
|
||||
|
||||
|
||||
def test_save_local_file(clean_tmpdir):
|
||||
file_content = b"some bytes"
|
||||
filename = "toto_titi.tutu"
|
||||
file_to_save = tmp_dir / filename
|
||||
tmp_files = list(tmp_dir.glob("*"))
|
||||
assert len(tmp_files) == 0
|
||||
|
||||
local_files.save(file_to_save, file_content)
|
||||
|
||||
tmp_files = list(tmp_dir.glob("*"))
|
||||
assert len(tmp_files) == 1
|
||||
tmp_file = tmp_files[0]
|
||||
assert tmp_file.name == filename
|
||||
assert tmp_file.read_bytes() == file_content
|
||||
|
||||
|
||||
def test_make_file_executable(clean_tmpdir):
|
||||
file = tmp_dir / "toto_titi.tutu"
|
||||
file.parent.mkdir(parents=True, exist_ok=True)
|
||||
file.touch()
|
||||
assert file.stat().st_mode == 0o100664
|
||||
|
||||
local_files.set_execution_rights(file)
|
||||
|
||||
assert file.stat().st_mode == 0o100775
|
||||
|
||||
|
||||
def test_download_and_make_executable(clean_tmpdir):
|
||||
file_content = b"some bytes"
|
||||
filename = "toto_titi.tutu"
|
||||
file_to_save = tmp_dir / filename
|
||||
tmp_files = list(tmp_dir.glob("*"))
|
||||
assert len(tmp_files) == 0
|
||||
|
||||
local_files.save_and_make_executable(file_to_save, file_content)
|
||||
|
||||
tmp_files = list(tmp_dir.glob("*"))
|
||||
assert len(tmp_files) == 1
|
||||
tmp_file = tmp_files[0]
|
||||
assert tmp_file.name == filename
|
||||
assert tmp_file.read_bytes() == file_content
|
||||
|
||||
assert tmp_file.stat().st_mode == 0o100775
|
13
tests/main_test.py
Normal file
13
tests/main_test.py
Normal file
|
@ -0,0 +1,13 @@
|
|||
from pathlib import Path
|
||||
|
||||
from majordome import main
|
||||
|
||||
|
||||
def test_download_and_save_latest_asset(freetube_url, freetube_amd64_deb_mnemonic):
|
||||
destination = Path(__file__).parent / "tmp"
|
||||
|
||||
main.download_latest(freetube_url, freetube_amd64_deb_mnemonic, destination)
|
||||
|
||||
files = list(destination.glob("*"))
|
||||
assert len(files) == 1
|
||||
assert files[0].filename == "freetube_0.23.2_amd64.deb"
|
Loading…
Add table
Add a link
Reference in a new issue