Skip to content

Commit 8da3e46

Browse files
test: switch rest of language of detection to parameters (#683)
1 parent f2f7b5e commit 8da3e46

File tree

1 file changed

+60
-42
lines changed

1 file changed

+60
-42
lines changed

tests/unit/codegen/git/utils/test_language_detection.py

Lines changed: 60 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -5,44 +5,56 @@
55
from codegen.shared.enums.programming_language import ProgrammingLanguage
66

77

8-
def test_determine_language_python(tmpdir) -> None:
8+
@pytest.mark.parametrize(
9+
"strategy, expected_language",
10+
[
11+
("package_json", ProgrammingLanguage.PYTHON), # Check for package.json -> False, therefore return PYTHON
12+
("git_most_common", ProgrammingLanguage.PYTHON), # Check for git_most_common -> PYTHON
13+
("most_common", ProgrammingLanguage.PYTHON), # Check for most_common -> PYTHON
14+
],
15+
)
16+
def test_determine_language_python(tmpdir, strategy, expected_language) -> None:
917
with get_codebase_session(tmpdir=tmpdir, files={"file1.py": "", "file2.py": "", "file3.py": ""}, programming_language=ProgrammingLanguage.PYTHON) as codebase:
10-
# Check for package.json -> False, therefore return PYTHON
11-
assert determine_project_language(tmpdir, strategy="package_json") == ProgrammingLanguage.PYTHON
12-
# Check for git_most_common -> PYTHON
13-
assert determine_project_language(tmpdir, strategy="git_most_common") == ProgrammingLanguage.PYTHON
14-
# Check for most_common -> PYTHON
15-
assert determine_project_language(tmpdir, strategy="most_common") == ProgrammingLanguage.PYTHON
18+
assert determine_project_language(tmpdir, strategy=strategy) == expected_language
1619

1720

18-
def test_determine_language_typescript(tmpdir) -> None:
21+
@pytest.mark.parametrize(
22+
"strategy, expected_language",
23+
[
24+
("package_json", ProgrammingLanguage.PYTHON), # Check for package.json -> False, therefore return PYTHON (THIS IS EXPECTED, even if it's a TS project)
25+
("git_most_common", ProgrammingLanguage.TYPESCRIPT), # Check for git_most_common -> TYPESCRIPT
26+
("most_common", ProgrammingLanguage.TYPESCRIPT), # Check for most_common -> TYPESCRIPT
27+
],
28+
)
29+
def test_determine_language_typescript(tmpdir, strategy, expected_language) -> None:
1930
with get_codebase_session(tmpdir=tmpdir, files={"file1.ts": "", "file2.ts": "", "file3.ts": ""}, programming_language=ProgrammingLanguage.TYPESCRIPT) as codebase:
20-
# Check for package.json -> False, therefore return PYTHON (THIS IS EXPECTED, even if it's a TS project)
21-
assert determine_project_language(tmpdir, strategy="package_json") == ProgrammingLanguage.PYTHON
22-
# Check for git_most_common -> TYPESCRIPT
23-
assert determine_project_language(tmpdir, strategy="git_most_common") == ProgrammingLanguage.TYPESCRIPT
24-
# Check for most_common -> TYPESCRIPT
25-
assert determine_project_language(tmpdir, strategy="most_common") == ProgrammingLanguage.TYPESCRIPT
31+
assert determine_project_language(tmpdir, strategy=strategy) == expected_language
2632

2733

28-
def test_determine_language_other(tmpdir) -> None:
34+
@pytest.mark.parametrize(
35+
"strategy, expected_language",
36+
[
37+
("package_json", ProgrammingLanguage.PYTHON), # Check for package.json -> False, therefore return PYTHON (THIS IS EXPECTED)
38+
("git_most_common", ProgrammingLanguage.OTHER), # Check for git_most_common -> OTHER
39+
("most_common", ProgrammingLanguage.OTHER), # Check for most_common -> OTHER
40+
],
41+
)
42+
def test_determine_language_other(tmpdir, strategy, expected_language) -> None:
2943
with get_codebase_session(tmpdir=tmpdir, files={"file1.txt": "", "file2.txt": "", "file3.txt": ""}, programming_language=ProgrammingLanguage.OTHER) as codebase:
30-
# Check for package.json -> False, therefore return PYTHON (THIS IS EXPECTED)
31-
assert determine_project_language(tmpdir, strategy="package_json") == ProgrammingLanguage.PYTHON
32-
# Check for git_most_common -> OTHER
33-
assert determine_project_language(tmpdir, strategy="git_most_common") == ProgrammingLanguage.OTHER
34-
# Check for most_common -> OTHER
35-
assert determine_project_language(tmpdir, strategy="most_common") == ProgrammingLanguage.OTHER
44+
assert determine_project_language(tmpdir, strategy=strategy) == expected_language
3645

3746

38-
def test_determine_language_package_json(tmpdir) -> None:
47+
@pytest.mark.parametrize(
48+
"strategy, expected_language",
49+
[
50+
("package_json", ProgrammingLanguage.TYPESCRIPT), # Check for package.json -> True, therefore return Typescript
51+
("git_most_common", ProgrammingLanguage.OTHER), # Check for git_most_common -> OTHER
52+
("most_common", ProgrammingLanguage.OTHER), # Check for most_common -> OTHER
53+
],
54+
)
55+
def test_determine_language_package_json(tmpdir, strategy, expected_language) -> None:
3956
with get_codebase_session(tmpdir=tmpdir, files={"package.json": ""}, programming_language=ProgrammingLanguage.TYPESCRIPT) as codebase:
40-
# Check for package.json -> True, therefore return Typescript
41-
assert determine_project_language(tmpdir, strategy="package_json") == ProgrammingLanguage.TYPESCRIPT
42-
# Check for git_most_common -> OTHER
43-
assert determine_project_language(tmpdir, strategy="git_most_common") == ProgrammingLanguage.OTHER
44-
# Check for most_common -> OTHER
45-
assert determine_project_language(tmpdir, strategy="most_common") == ProgrammingLanguage.OTHER
57+
assert determine_project_language(tmpdir, strategy=strategy) == expected_language
4658

4759

4860
@pytest.mark.parametrize(
@@ -67,21 +79,27 @@ def test_determine_language_mixed(tmpdir, strategy, expected_language) -> None:
6779
assert determine_project_language(tmpdir, strategy=strategy) == expected_language
6880

6981

70-
def test_determine_language_threshold(tmpdir) -> None:
82+
@pytest.mark.parametrize(
83+
"strategy, expected_language",
84+
[
85+
("package_json", ProgrammingLanguage.PYTHON), # Check for package.json -> False, therefore return PYTHON
86+
("git_most_common", ProgrammingLanguage.OTHER), # Check for git_most_common -> OTHER
87+
("most_common", ProgrammingLanguage.OTHER), # Check for most_common -> OTHER
88+
],
89+
)
90+
def test_determine_language_threshold(tmpdir, strategy, expected_language) -> None:
7191
with get_codebase_session(tmpdir=tmpdir, files={"file0.py": ""} | {f"file{i}.txt": "" for i in range(1, 20)}, programming_language=ProgrammingLanguage.PYTHON) as codebase:
72-
# Check for package.json -> False, therefore return PYTHON
73-
assert determine_project_language(tmpdir, strategy="package_json") == ProgrammingLanguage.PYTHON
74-
# Check for git_most_common -> OTHER
75-
assert determine_project_language(tmpdir, strategy="git_most_common") == ProgrammingLanguage.OTHER
76-
# Check for most_common -> OTHER
77-
assert determine_project_language(tmpdir, strategy="most_common") == ProgrammingLanguage.OTHER
92+
assert determine_project_language(tmpdir, strategy=strategy) == expected_language
7893

7994

80-
def test_determine_language_gitignore(tmpdir) -> None:
95+
@pytest.mark.parametrize(
96+
"strategy, expected_language",
97+
[
98+
("package_json", ProgrammingLanguage.PYTHON), # Check for package.json -> False, therefore return PYTHON
99+
("git_most_common", ProgrammingLanguage.OTHER), # Check for git_most_common -> OTHER (follows gitignore, therefore finds no files)
100+
("most_common", ProgrammingLanguage.PYTHON), # Check for most_common -> PYTHON (ignores gitignore)
101+
],
102+
)
103+
def test_determine_language_gitignore(tmpdir, strategy, expected_language) -> None:
81104
with get_codebase_session(tmpdir=tmpdir, files={"dir/file1.py": "", "dir/file2.py": "", "dir/file3.py": "", ".gitignore": "dir"}, programming_language=ProgrammingLanguage.PYTHON) as codebase:
82-
# Check for package.json -> False, therefore return PYTHON
83-
assert determine_project_language(tmpdir, strategy="package_json") == ProgrammingLanguage.PYTHON
84-
# Check for git_most_common -> OTHER (follows gitignore, therefore finds no files)
85-
assert determine_project_language(tmpdir, strategy="git_most_common") == ProgrammingLanguage.OTHER
86-
# Check for most_common -> PYTHON (ignores gitignore)
87-
assert determine_project_language(tmpdir, strategy="most_common") == ProgrammingLanguage.PYTHON
105+
assert determine_project_language(tmpdir, strategy=strategy) == expected_language

0 commit comments

Comments
 (0)