summaryrefslogtreecommitdiffstats
path: root/testing/language_helpers.py
blob: f9ae0b1da782326e1ed87168a5ec04652ead3520 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
from __future__ import annotations

import os
from typing import Sequence

import pre_commit.constants as C
from pre_commit.languages.all import Language
from pre_commit.prefix import Prefix


def run_language(
        path: os.PathLike[str],
        language: Language,
        exe: str,
        args: Sequence[str] = (),
        file_args: Sequence[str] = (),
        version: str = C.DEFAULT,
        deps: Sequence[str] = (),
        is_local: bool = False,
) -> tuple[int, bytes]:
    prefix = Prefix(str(path))

    language.install_environment(prefix, version, deps)
    with language.in_env(prefix, version):
        ret, out = language.run_hook(
            prefix,
            exe,
            args,
            file_args,
            is_local=is_local,
            require_serial=True,
            color=False,
        )
        out = out.replace(b'\r\n', b'\n')
        return ret, out