Skip to content

Commit

Permalink
Use df to get size
Browse files Browse the repository at this point in the history
  • Loading branch information
randombenj committed Oct 17, 2024
1 parent 202a17b commit fd57e5b
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 29 deletions.
7 changes: 6 additions & 1 deletion docat/docat/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import hashlib
import os
import shutil
import subprocess
from datetime import datetime
from pathlib import Path
from zipfile import ZipFile, ZipInfo
Expand Down Expand Up @@ -159,7 +160,11 @@ def readable_size(bytes: int) -> str:


def directory_size(path: Path) -> int:
return sum(file.stat().st_size for file in path.rglob("*") if file.is_file())
outcome = subprocess.run(["du", "-sb", str(path.absolute())], capture_output=True, check=False)
if outcome.returncode != 0:
return 0

return int(outcome.stdout.decode().split("\t")[0].strip())


def get_system_stats(upload_folder_path: Path) -> Stats:
Expand Down
16 changes: 8 additions & 8 deletions docat/tests/test_hide_show.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ def test_hide(_, client_with_claimed_project):
assert project_details_response.status_code == 200
assert project_details_response.json() == {
"name": "some-project",
"storage": "20 bytes",
"storage": "140 bytes",
"versions": [{"name": "1.0.0", "timestamp": "2000-01-01T01:01:00", "tags": [], "hidden": False}],
}

Expand All @@ -35,7 +35,7 @@ def test_hide(_, client_with_claimed_project):
assert project_details_response.status_code == 200
assert project_details_response.json() == {
"name": "some-project",
"storage": "20 bytes",
"storage": "160 bytes",
"versions": [],
}

Expand All @@ -59,7 +59,7 @@ def test_hide_only_version_not_listed_in_projects(_, client_with_claimed_project
{
"name": "some-project",
"logo": False,
"storage": "20 bytes",
"storage": "140 bytes",
"versions": [{"name": "1.0.0", "timestamp": "2000-01-01T01:01:00", "tags": [], "hidden": False}],
}
],
Expand All @@ -80,7 +80,7 @@ def test_hide_only_version_not_listed_in_projects(_, client_with_claimed_project
# check versions hidden
project_details_response = client_with_claimed_project.get("/api/projects/some-project")
assert project_details_response.status_code == 200
assert project_details_response.json() == {"name": "some-project", "storage": "20 bytes", "versions": []}
assert project_details_response.json() == {"name": "some-project", "storage": "160 bytes", "versions": []}


def test_hide_creates_hidden_file(client_with_claimed_project):
Expand Down Expand Up @@ -219,7 +219,7 @@ def test_show(_, client_with_claimed_project):
assert project_details_response.status_code == 200
assert project_details_response.json() == {
"name": "some-project",
"storage": "20 bytes",
"storage": "160 bytes",
"versions": [],
}

Expand All @@ -233,7 +233,7 @@ def test_show(_, client_with_claimed_project):
assert project_details_response.status_code == 200
assert project_details_response.json() == {
"name": "some-project",
"storage": "20 bytes",
"storage": "140 bytes",
"versions": [{"name": "1.0.0", "timestamp": "2000-01-01T01:01:00", "tags": [], "hidden": False}],
}

Expand Down Expand Up @@ -394,7 +394,7 @@ def test_hide_and_show_with_tag(_, client_with_claimed_project):
assert project_details_response.status_code == 200
assert project_details_response.json() == {
"name": "some-project",
"storage": "20 bytes",
"storage": "185 bytes",
"versions": [],
}

Expand All @@ -408,6 +408,6 @@ def test_hide_and_show_with_tag(_, client_with_claimed_project):
assert project_details_response.status_code == 200
assert project_details_response.json() == {
"name": "some-project",
"storage": "20 bytes",
"storage": "165 bytes",
"versions": [{"name": "1.0.0", "timestamp": "2000-01-01T01:01:00", "tags": ["latest"], "hidden": False}],
}
28 changes: 14 additions & 14 deletions docat/tests/test_project.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,15 @@ def test_project_api(_, temp_project_version):
{
"name": "different-project",
"logo": False,
"storage": "0 bytes",
"storage": "182 bytes",
"versions": [
{"name": "1.0", "timestamp": "2000-01-01T01:01:00", "tags": ["latest"], "hidden": False},
],
},
{
"name": "project",
"logo": False,
"storage": "0 bytes",
"storage": "172 bytes",
"versions": [
{"name": "1.0", "timestamp": "2000-01-01T01:01:00", "tags": ["latest"], "hidden": False},
],
Expand Down Expand Up @@ -63,7 +63,7 @@ def test_project_details_api(_, temp_project_version):
assert response.status_code == httpx.codes.OK
assert response.json() == {
"name": "project",
"storage": "0 bytes",
"storage": "172 bytes",
"versions": [{"name": "1.0", "timestamp": "2000-01-01T01:01:00", "tags": ["latest"], "hidden": False}],
}

Expand All @@ -90,7 +90,7 @@ def test_get_project_details_with_hidden_versions(_, client_with_claimed_project
details = get_project_details(docat.DOCAT_UPLOAD_FOLDER, "some-project", include_hidden=True)
assert details == ProjectDetail(
name="some-project",
storage="20 bytes",
storage="140 bytes",
versions=[ProjectVersion(name="1.0.0", timestamp=datetime(2000, 1, 1, 1, 1, 0), tags=[], hidden=False)],
)

Expand All @@ -103,7 +103,7 @@ def test_get_project_details_with_hidden_versions(_, client_with_claimed_project
details = get_project_details(docat.DOCAT_UPLOAD_FOLDER, "some-project", include_hidden=True)
assert details == ProjectDetail(
name="some-project",
storage="20 bytes",
storage="160 bytes",
versions=[ProjectVersion(name="1.0.0", timestamp=datetime(2000, 1, 1, 1, 1, 0), tags=[], hidden=True)],
)

Expand All @@ -123,7 +123,7 @@ def test_project_details_without_hidden_versions(_, client_with_claimed_project)
details = get_project_details(docat.DOCAT_UPLOAD_FOLDER, "some-project", include_hidden=False)
assert details == ProjectDetail(
name="some-project",
storage="20 bytes",
storage="140 bytes",
versions=[ProjectVersion(name="1.0.0", timestamp=datetime(2000, 1, 1, 1, 1, 0), tags=[], hidden=False)],
)

Expand All @@ -134,7 +134,7 @@ def test_project_details_without_hidden_versions(_, client_with_claimed_project)

# check hidden
details = get_project_details(docat.DOCAT_UPLOAD_FOLDER, "some-project", include_hidden=False)
assert details == ProjectDetail(name="some-project", storage="20 bytes", versions=[])
assert details == ProjectDetail(name="some-project", storage="160 bytes", versions=[])


@patch("docat.utils.get_version_timestamp", return_value=datetime(2000, 1, 1, 1, 1, 0))
Expand All @@ -156,7 +156,7 @@ def test_include_hidden_parameter_for_get_projects(_, client_with_claimed_projec
{
"name": "some-project",
"logo": False,
"storage": "20 bytes",
"storage": "140 bytes",
"versions": [{"name": "1.0.0", "timestamp": "2000-01-01T01:01:00", "tags": [], "hidden": False}],
}
]
Expand All @@ -170,7 +170,7 @@ def test_include_hidden_parameter_for_get_projects(_, client_with_claimed_projec
{
"name": "some-project",
"logo": False,
"storage": "20 bytes",
"storage": "140 bytes",
"versions": [{"name": "1.0.0", "timestamp": "2000-01-01T01:01:00", "tags": [], "hidden": False}],
}
]
Expand All @@ -194,7 +194,7 @@ def test_include_hidden_parameter_for_get_projects(_, client_with_claimed_projec
{
"name": "some-project",
"logo": False,
"storage": "20 bytes",
"storage": "160 bytes",
"versions": [{"name": "1.0.0", "timestamp": "2000-01-01T01:01:00", "tags": [], "hidden": True}],
}
]
Expand All @@ -217,7 +217,7 @@ def test_include_hidden_parameter_for_get_project_details(_, client_with_claimed
assert get_projects_response.status_code == 200
assert get_projects_response.json() == {
"name": "some-project",
"storage": "20 bytes",
"storage": "140 bytes",
"versions": [{"name": "1.0.0", "timestamp": "2000-01-01T01:01:00", "tags": [], "hidden": False}],
}

Expand All @@ -226,7 +226,7 @@ def test_include_hidden_parameter_for_get_project_details(_, client_with_claimed
assert get_projects_response.status_code == 200
assert get_projects_response.json() == {
"name": "some-project",
"storage": "20 bytes",
"storage": "140 bytes",
"versions": [{"name": "1.0.0", "timestamp": "2000-01-01T01:01:00", "tags": [], "hidden": False}],
}

Expand All @@ -240,7 +240,7 @@ def test_include_hidden_parameter_for_get_project_details(_, client_with_claimed
assert get_projects_response.status_code == 200
assert get_projects_response.json() == {
"name": "some-project",
"storage": "20 bytes",
"storage": "160 bytes",
"versions": [],
}

Expand All @@ -249,6 +249,6 @@ def test_include_hidden_parameter_for_get_project_details(_, client_with_claimed
assert get_projects_response.status_code == 200
assert get_projects_response.json() == {
"name": "some-project",
"storage": "20 bytes",
"storage": "160 bytes",
"versions": [{"name": "1.0.0", "timestamp": "2000-01-01T01:01:00", "tags": [], "hidden": True}],
}
8 changes: 4 additions & 4 deletions docat/tests/test_stats.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@
@pytest.mark.parametrize(
("project_config", "n_projects", "n_versions", "storage"),
[
([("some-project", ["1.0.0"])], 1, 1, "20 bytes"),
([("some-project", ["1.0.0", "2.0.0"])], 1, 2, "40 bytes"),
([("some-project", ["1.0.0", "2.0.0"])], 1, 2, "40 bytes"),
([("some-project", ["1.0.0", "2.0.0"]), ("another-project", ["1"])], 2, 3, "60 bytes"),
([("some-project", ["1.0.0"])], 1, 1, "200 bytes"),
([("some-project", ["1.0.0", "2.0.0"])], 1, 2, "300 bytes"),
([("some-project", ["1.0.0", "2.0.0"])], 1, 2, "300 bytes"),
([("some-project", ["1.0.0", "2.0.0"]), ("another-project", ["1"])], 2, 3, "460 bytes"),
],
)
def test_get_stats(_, project_config, n_projects, n_versions, storage, client_with_claimed_project):
Expand Down
4 changes: 2 additions & 2 deletions docat/tests/test_upload_icon.py
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ def test_get_project_recongizes_icon(_, client_with_claimed_project):
{
"name": "some-project",
"logo": False,
"storage": "20 bytes",
"storage": "140 bytes",
"versions": [{"name": "1.0.0", "timestamp": "2000-01-01T01:01:00", "tags": [], "hidden": False}],
}
]
Expand All @@ -181,7 +181,7 @@ def test_get_project_recongizes_icon(_, client_with_claimed_project):
{
"name": "some-project",
"logo": True,
"storage": "103 bytes",
"storage": "243 bytes",
"versions": [{"name": "1.0.0", "timestamp": "2000-01-01T01:01:00", "tags": [], "hidden": False}],
}
]
Expand Down

0 comments on commit fd57e5b

Please sign in to comment.