Coverage for app/venv/lib/python3.14/site-packages/weblate/trans/management/commands/benchmark.py: 0%
32 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 07:15 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 07:15 +0000
1# Copyright © Michal Čihař <michal@weblate.org>
2#
3# SPDX-License-Identifier: GPL-3.0-or-later
4from __future__ import annotations
6from typing import TYPE_CHECKING
8from django.test.utils import override_settings
10from weblate.trans.models import Component, Project
11from weblate.utils.management.base import BaseCommand
12from weblate.utils.views import create_component_from_zip
14if TYPE_CHECKING:
15 from django.core.management.base import CommandParser
18class Command(BaseCommand):
19 """Run simple project import to perform benchmarks."""
21 help = "performs import benchmark"
23 def add_arguments(self, parser: CommandParser) -> None:
24 super().add_arguments(parser)
25 parser.add_argument("--template", default="", help="template monolingual files")
26 parser.add_argument("--keep", action="store_true", help="keep after testing")
27 parser.add_argument("--format", default="po", help="file format")
28 parser.add_argument("--project", help="Existing project slug for tests")
29 parser.add_argument("--repo", help="Test VCS repository URL")
30 parser.add_argument("--filemask", help="File mask")
31 parser.add_argument("--zipfile", help="Zip file")
33 def handle(self, *args, **options) -> None:
34 # Execute tasks in place
35 with override_settings(CELERY_TASK_ALWAYS_EAGER=True):
36 project = Project.objects.get(slug=options["project"])
37 # Delete any possible previous tests
38 Component.objects.filter(project=project, slug="benchmark").delete()
39 params = {
40 "name": "Benchmark",
41 "slug": "benchmark",
42 "repo": options["repo"],
43 "filemask": options["filemask"],
44 "template": options["template"],
45 "file_format": options["format"],
46 "project": project,
47 }
48 if options["zipfile"]:
49 params["vcs"] = "local"
50 params["repo"] = "local:"
51 params["branch"] = "main"
52 create_component_from_zip(params, options["zipfile"])
53 component = Component.objects.create(**params)
54 # Delete after testing
55 if not options["keep"]:
56 component.delete()