5
5
from codegen .shared .enums .programming_language import ProgrammingLanguage
6
6
7
7
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 :
9
17
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
16
19
17
20
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 :
19
30
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
26
32
27
33
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 :
29
43
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
36
45
37
46
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 :
39
56
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
46
58
47
59
48
60
@pytest .mark .parametrize (
@@ -67,21 +79,27 @@ def test_determine_language_mixed(tmpdir, strategy, expected_language) -> None:
67
79
assert determine_project_language (tmpdir , strategy = strategy ) == expected_language
68
80
69
81
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 :
71
91
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
78
93
79
94
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 :
81
104
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