Skip to content

Commit c4b19c5

Browse files
committed
feat: add a new 'files_changed' parameter
1 parent 8f36db4 commit c4b19c5

File tree

9 files changed

+27
-0
lines changed

9 files changed

+27
-0
lines changed

docs/reference/parameters.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ head_tag
4545
~~~~~~~~
4646
The tag attached to the revision, if any.
4747

48+
files_changed
49+
~~~~~~~~~~~~~
50+
The list of all files added or modified by the push.
51+
4852
owner
4953
~~~~~
5054
Email address indicating the person who made the push. Note that this

src/taskgraph/decision.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ def get_decision_parameters(graph_config, options):
185185

186186
# Define default filter list, as most configurations shouldn't need
187187
# custom filters.
188+
parameters["files_changed"] = repo.get_changed_files("AM")
188189
parameters["filters"] = [
189190
"target_tasks_method",
190191
]

src/taskgraph/parameters.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ class ParameterMismatch(Exception):
4040
Required("do_not_optimize"): [str],
4141
Required("enable_always_target"): Any(bool, [str]),
4242
Required("existing_tasks"): {str: str},
43+
Required("files_changed"): [str],
4344
Required("filters"): [str],
4445
Required("head_ref"): str,
4546
Required("head_repository"): str,
@@ -86,6 +87,7 @@ def _get_defaults(repo_root=None):
8687
# Use fake values if no repo is detected.
8788
repo = Mock(branch="", head_rev="", tool="git")
8889
repo.get_url.return_value = ""
90+
repo.get_changed_files.return_value = []
8991

9092
try:
9193
repo_url = repo.get_url()
@@ -108,6 +110,7 @@ def _get_defaults(repo_root=None):
108110
"do_not_optimize": [],
109111
"enable_always_target": True,
110112
"existing_tasks": {},
113+
"files_changed": repo.get_changed_files("AM"),
111114
"filters": ["target_tasks_method"],
112115
"head_ref": repo.branch or repo.head_rev,
113116
"head_repository": repo_url,

taskcluster/test/params/main-repo-pull-request-untrusted.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ base_repository: https://github.com/ahal/taskgraph
33
build_date: 1650573119
44
do_not_optimize: []
55
existing_tasks: {}
6+
files_changed:
7+
- src/taskgraph/decision.py
8+
- test/test_decision.py
69
filters:
710
- target_tasks_method
811
head_ref: 2695ccc00b55efc92b823e91c03120cec04c6d50

taskcluster/test/params/main-repo-pull-request.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ base_repository: https://github.com/ahal/taskgraph
33
build_date: 1650573119
44
do_not_optimize: []
55
existing_tasks: {}
6+
files_changed:
7+
- src/taskgraph/decision.py
8+
- test/test_decision.py
69
filters:
710
- target_tasks_method
811
head_ref: 2695ccc00b55efc92b823e91c03120cec04c6d50

taskcluster/test/params/main-repo-push.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ base_repository: https://github.com/taskcluster/taskgraph
33
build_date: 1650566877
44
do_not_optimize: []
55
existing_tasks: {}
6+
files_changed:
7+
- src/taskgraph/decision.py
8+
- test/test_decision.py
69
filters:
710
- target_tasks_method
811
head_ref: d0bcf5ac346b3d6037fdcdaf23657593b18e1f18

taskcluster/test/params/main-repo-release.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ build_number: 1
77
do_not_optimize: []
88
enable_always_target: true
99
existing_tasks: {}
10+
files_changed:
11+
- src/taskgraph/decision.py
12+
- test/test_decision.py
1013
filters:
1114
- target_tasks_method
1215
head_ref: release-test

test/fixtures/gen.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ def parameters():
139139
"build_date": 0,
140140
"build_number": 1,
141141
"enable_always_target": True,
142+
"files_changed": [],
142143
"head_repository": "http://hg.example.com",
143144
"head_rev": "abcdef",
144145
"head_ref": "default",

test/test_parameters.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ class TestParameters(TestCase):
3737
"do_not_optimize": [],
3838
"enable_always_target": True,
3939
"existing_tasks": {},
40+
"files_changed": [],
4041
"filters": ["target_tasks_method"],
4142
"head_ref": "ref",
4243
"head_repository": "repository",
@@ -298,6 +299,7 @@ def test_extend_parameters_schema(monkeypatch):
298299
"do_not_optimize": [],
299300
"enable_always_target": True,
300301
"existing_tasks": {},
302+
"files_changed": ["foo.txt"],
301303
"filters": ["target_tasks_method"],
302304
"head_ref": "some-branch",
303305
"head_repository": "https://some.url",
@@ -332,6 +334,7 @@ def test_extend_parameters_schema(monkeypatch):
332334
"do_not_optimize": [],
333335
"enable_always_target": True,
334336
"existing_tasks": {},
337+
"files_changed": ["foo.txt"],
335338
"filters": ["target_tasks_method"],
336339
"head_ref": "some-branch",
337340
"head_repository": "https://some.url",
@@ -366,6 +369,7 @@ def test_extend_parameters_schema(monkeypatch):
366369
"do_not_optimize": [],
367370
"enable_always_target": True,
368371
"existing_tasks": {},
372+
"files_changed": ["foo.txt"],
369373
"filters": ["target_tasks_method"],
370374
"head_ref": "some-branch",
371375
"head_repository": "",
@@ -400,6 +404,7 @@ def test_extend_parameters_schema(monkeypatch):
400404
"do_not_optimize": [],
401405
"enable_always_target": True,
402406
"existing_tasks": {},
407+
"files_changed": [],
403408
"filters": ["target_tasks_method"],
404409
"head_ref": "",
405410
"head_repository": "",
@@ -434,6 +439,7 @@ def mock_get_repository(repo_root):
434439
tool="git",
435440
)
436441
repo_mock.get_url.return_value = "https://some.url"
442+
repo_mock.get_changed_files.return_value = ["foo.txt"]
437443
return repo_mock
438444

439445
raise RuntimeError

0 commit comments

Comments
 (0)