mirror of
https://github.com/saymrwulf/pytorch.git
synced 2026-05-15 21:00:47 +00:00
Per the discussion with @malfet , there is no need to run Windows binary build for every PR. We will keep it running in trunk (on push) though just in case.
This also moves the workflow back from unstable after the symlink copy fix in 860d444515
Another data point to back this up is the high correlation between Windows binaries debug and release build v.s. Windows CPU CI job. The numbers are:
* `libtorch-cpu-shared-with-deps-debug` and `win-vs2019-cpu-py3` has 0.95 correlation
* `libtorch-cpu-shared-with-deps-release` and `win-vs2019-cpu-py3` has the same 0.95 correlation
The rest is noise, eh?
Pull Request resolved: https://github.com/pytorch/pytorch/pull/100638
Approved by: https://github.com/atalman
148 lines
5.3 KiB
Python
148 lines
5.3 KiB
Python
from typing import Any, Dict, List
|
|
from unittest import main, mock, TestCase
|
|
|
|
from fetch_latest_green_commit import isGreen, WorkflowCheck
|
|
|
|
workflowNames = [
|
|
"pull",
|
|
"trunk",
|
|
"Lint",
|
|
"linux-binary-libtorch-pre-cxx11",
|
|
"android-tests",
|
|
"windows-binary-wheel",
|
|
"periodic",
|
|
"docker-release-builds",
|
|
"nightly",
|
|
"pr-labels",
|
|
"Close stale pull requests",
|
|
"Update S3 HTML indices for download.pytorch.org",
|
|
"Create Release",
|
|
]
|
|
|
|
|
|
def set_workflow_job_status(
|
|
workflow: List[Dict[str, Any]], name: str, status: str
|
|
) -> List[Dict[str, Any]]:
|
|
for check in workflow:
|
|
if check["workflowName"] == name:
|
|
check["conclusion"] = status
|
|
return workflow
|
|
|
|
|
|
class TestChecks:
|
|
def make_test_checks(self) -> List[Dict[str, Any]]:
|
|
workflow_checks = []
|
|
for i in range(len(workflowNames)):
|
|
workflow_checks.append(
|
|
WorkflowCheck(
|
|
workflowName=workflowNames[i],
|
|
name="test/job",
|
|
jobName="job",
|
|
conclusion="success",
|
|
)._asdict()
|
|
)
|
|
return workflow_checks
|
|
|
|
|
|
class TestPrintCommits(TestCase):
|
|
@mock.patch(
|
|
"fetch_latest_green_commit.get_commit_results",
|
|
return_value=TestChecks().make_test_checks(),
|
|
)
|
|
def test_all_successful(self, mock_get_commit_results: Any) -> None:
|
|
"Test with workflows are successful"
|
|
workflow_checks = mock_get_commit_results()
|
|
self.assertTrue(isGreen("sha", workflow_checks)[0])
|
|
|
|
@mock.patch(
|
|
"fetch_latest_green_commit.get_commit_results",
|
|
return_value=TestChecks().make_test_checks(),
|
|
)
|
|
def test_necessary_successful(self, mock_get_commit_results: Any) -> None:
|
|
"Test with necessary workflows are successful"
|
|
workflow_checks = mock_get_commit_results()
|
|
workflow_checks = set_workflow_job_status(
|
|
workflow_checks, workflowNames[8], "failed"
|
|
)
|
|
workflow_checks = set_workflow_job_status(
|
|
workflow_checks, workflowNames[9], "failed"
|
|
)
|
|
workflow_checks = set_workflow_job_status(
|
|
workflow_checks, workflowNames[10], "failed"
|
|
)
|
|
workflow_checks = set_workflow_job_status(
|
|
workflow_checks, workflowNames[11], "failed"
|
|
)
|
|
workflow_checks = set_workflow_job_status(
|
|
workflow_checks, workflowNames[12], "failed"
|
|
)
|
|
self.assertTrue(isGreen("sha", workflow_checks)[0])
|
|
|
|
@mock.patch(
|
|
"fetch_latest_green_commit.get_commit_results",
|
|
return_value=TestChecks().make_test_checks(),
|
|
)
|
|
def test_necessary_skipped(self, mock_get_commit_results: Any) -> None:
|
|
"Test with necessary job (ex: pull) skipped"
|
|
workflow_checks = mock_get_commit_results()
|
|
workflow_checks = set_workflow_job_status(workflow_checks, "pull", "skipped")
|
|
result = isGreen("sha", workflow_checks)
|
|
self.assertTrue(result[0])
|
|
|
|
@mock.patch(
|
|
"fetch_latest_green_commit.get_commit_results",
|
|
return_value=TestChecks().make_test_checks(),
|
|
)
|
|
def test_skippable_skipped(self, mock_get_commit_results: Any) -> None:
|
|
"Test with skippable jobs (periodic and docker-release-builds skipped"
|
|
workflow_checks = mock_get_commit_results()
|
|
workflow_checks = set_workflow_job_status(
|
|
workflow_checks, "periodic", "skipped"
|
|
)
|
|
workflow_checks = set_workflow_job_status(
|
|
workflow_checks, "docker-release-builds", "skipped"
|
|
)
|
|
self.assertTrue(isGreen("sha", workflow_checks))
|
|
|
|
@mock.patch(
|
|
"fetch_latest_green_commit.get_commit_results",
|
|
return_value=TestChecks().make_test_checks(),
|
|
)
|
|
def test_necessary_failed(self, mock_get_commit_results: Any) -> None:
|
|
"Test with necessary job (ex: Lint) failed"
|
|
workflow_checks = mock_get_commit_results()
|
|
workflow_checks = set_workflow_job_status(workflow_checks, "Lint", "failed")
|
|
result = isGreen("sha", workflow_checks)
|
|
self.assertFalse(result[0])
|
|
self.assertEqual(result[1], "Lint checks were not successful")
|
|
|
|
@mock.patch(
|
|
"fetch_latest_green_commit.get_commit_results",
|
|
return_value=TestChecks().make_test_checks(),
|
|
)
|
|
def test_skippable_failed(self, mock_get_commit_results: Any) -> None:
|
|
"Test with failing skippable jobs (ex: docker-release-builds) should pass"
|
|
workflow_checks = mock_get_commit_results()
|
|
workflow_checks = set_workflow_job_status(
|
|
workflow_checks, "periodic", "skipped"
|
|
)
|
|
workflow_checks = set_workflow_job_status(
|
|
workflow_checks, "docker-release-builds", "failed"
|
|
)
|
|
result = isGreen("sha", workflow_checks)
|
|
self.assertTrue(result[0])
|
|
|
|
@mock.patch("fetch_latest_green_commit.get_commit_results", return_value={})
|
|
def test_no_workflows(self, mock_get_commit_results: Any) -> None:
|
|
"Test with missing workflows"
|
|
workflow_checks = mock_get_commit_results()
|
|
result = isGreen("sha", workflow_checks)
|
|
self.assertFalse(result[0])
|
|
self.assertEqual(
|
|
result[1],
|
|
"missing required workflows: pull, trunk, lint, linux-binary",
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|