11from __future__ import annotations
22
33import json
4- import os
54import pathlib
6- import subprocess
7- import uuid
85
96import pytest
107
118from coverage_comment import main
129
13-
14- @pytest .fixture
15- def in_integration_env (integration_env , integration_dir ):
16- curdir = os .getcwd ()
17- os .chdir (integration_dir )
18- yield integration_dir
19- os .chdir (curdir )
20-
21-
22- @pytest .fixture
23- def integration_dir (tmp_path : pathlib .Path ):
24- test_dir = tmp_path / "integration_test"
25- test_dir .mkdir ()
26- return test_dir
27-
28-
29- @pytest .fixture
30- def file_path (integration_dir ):
31- return integration_dir / "foo.py"
32-
33-
34- @pytest .fixture
35- def write_file (file_path ):
36- def _ (* variables ):
37- content = "import os"
38- for i , var in enumerate (variables ):
39- content += f"""\n if os.environ.get("{ var } "):\n { i } \n """
40- file_path .write_text (content , encoding = "utf8" )
41-
42- return _
43-
44-
45- @pytest .fixture
46- def run_coverage (file_path , integration_dir ):
47- def _ (* variables ):
48- subprocess .check_call (
49- ["coverage" , "run" , "--parallel" , file_path .name ],
50- cwd = integration_dir ,
51- env = os .environ | dict .fromkeys (variables , "1" ),
52- )
53-
54- return _
55-
56-
5710DIFF_STDOUT = """diff --git a/foo.py b/foo.py
5811index 6c08c94..b65c612 100644
5912--- a/foo.py
@@ -68,56 +21,6 @@ def _(*variables):
6821"""
6922
7023
71- @pytest .fixture
72- def commit (integration_dir ):
73- def _ ():
74- subprocess .check_call (
75- ["git" , "add" , "." ],
76- cwd = integration_dir ,
77- )
78- subprocess .check_call (
79- ["git" , "commit" , "-m" , str (uuid .uuid4 ())],
80- cwd = integration_dir ,
81- env = {
82- "GIT_AUTHOR_NAME" : "foo" ,
83- "GIT_AUTHOR_EMAIL" : "foo" ,
84- "GIT_COMMITTER_NAME" : "foo" ,
85- "GIT_COMMITTER_EMAIL" : "foo" ,
86- "GIT_CONFIG_GLOBAL" : "/dev/null" ,
87- "GIT_CONFIG_SYSTEM" : "/dev/null" ,
88- },
89- )
90-
91- return _
92-
93-
94- @pytest .fixture
95- def integration_env (integration_dir , write_file , run_coverage , commit , request ):
96- subprocess .check_call (["git" , "init" , "-b" , "main" ], cwd = integration_dir )
97- # diff coverage reads the "origin/{...}" branch so we simulate an origin remote
98- subprocess .check_call (["git" , "remote" , "add" , "origin" , "." ], cwd = integration_dir )
99- write_file ("A" , "B" )
100- commit ()
101-
102- add_branch_mark = request .node .get_closest_marker ("add_branches" )
103- for additional_branch in add_branch_mark .args if add_branch_mark else []:
104- subprocess .check_call (
105- ["git" , "switch" , "-c" , additional_branch ],
106- cwd = integration_dir ,
107- )
108-
109- subprocess .check_call (
110- ["git" , "switch" , "-c" , "branch" ],
111- cwd = integration_dir ,
112- )
113-
114- write_file ("A" , "B" , "C" , "D" )
115- commit ()
116-
117- run_coverage ("A" , "C" )
118- subprocess .check_call (["git" , "fetch" , "origin" ], cwd = integration_dir )
119-
120-
12124def test_action__invalid_event_name (session , push_config , in_integration_env , get_logs ):
12225 session .register ("GET" , "/repos/py-cov-action/foobar" )(
12326 json = {"default_branch" : "main" , "visibility" : "public" }
0 commit comments