File: test_fetch_latest_green_commit.py

package info (click to toggle)
pytorch 1.13.1%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 139,252 kB
  • sloc: cpp: 1,100,274; python: 706,454; ansic: 83,052; asm: 7,618; java: 3,273; sh: 2,841; javascript: 612; makefile: 323; xml: 269; ruby: 185; yacc: 144; objc: 68; lex: 44
file content (101 lines) | stat: -rw-r--r-- 5,039 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
from unittest import TestCase, main, mock
from typing import Any, List, Dict
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 skippable job (ex: docker-release-builds) failing"
        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.assertFalse(result[0])
        self.assertEqual(result[1], "docker-release-builds checks were not successful")

    @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, windows-binary")

if __name__ == "__main__":
    main()