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

1# Copyright © Michal Čihař <michal@weblate.org> 

2# 

3# SPDX-License-Identifier: GPL-3.0-or-later 

4from __future__ import annotations 

5 

6from typing import TYPE_CHECKING 

7 

8from django.test.utils import override_settings 

9 

10from weblate.trans.models import Component, Project 

11from weblate.utils.management.base import BaseCommand 

12from weblate.utils.views import create_component_from_zip 

13 

14if TYPE_CHECKING: 

15 from django.core.management.base import CommandParser 

16 

17 

18class Command(BaseCommand): 

19 """Run simple project import to perform benchmarks.""" 

20 

21 help = "performs import benchmark" 

22 

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") 

32 

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()