Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions .github/tests/test_auto_add_to_project.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
from pathlib import Path
import re
import unittest


WORKFLOW = Path(".github/workflows/auto-add-to-project.yml")
SANITY_WORKFLOW = Path(".github/workflows/workflow-sanity.yml")


class RepositoryModuleMappingTest(unittest.TestCase):
def test_octo_docs_html_maps_to_server(self) -> None:
workflow = WORKFLOW.read_text(encoding="utf-8")
mapping_block = re.search(
r"const REPO_MODULE = \{(?P<body>.*?)^\s*\};",
workflow,
flags=re.MULTILINE | re.DOTALL,
)

self.assertIsNotNone(mapping_block, "REPO_MODULE mapping block is missing")
mappings = dict(
re.findall(
r"^\s*'([^']+)':\s*'([^']+)',\s*$",
mapping_block.group("body"),
flags=re.MULTILINE,
)
)
self.assertEqual(mappings.get("octo-docs-html"), "server")

def test_contract_job_only_runs_in_central_repository(self) -> None:
workflow = SANITY_WORKFLOW.read_text(encoding="utf-8")
contracts_job = re.search(
r"^ contracts:\n(?P<body>.*?)(?=^ [a-z][a-z0-9-]*:\n)",
workflow,
flags=re.MULTILINE | re.DOTALL,
)

self.assertIsNotNone(contracts_job, "contracts job is missing")
self.assertIn(
"if: github.repository == 'Mininglamp-OSS/.github'",
contracts_job.group("body"),
)


if __name__ == "__main__":
unittest.main()
2 changes: 1 addition & 1 deletion .github/workflows/auto-add-to-project.yml
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ jobs:
'octo-cli': 'cli',
'octo-daemon-cli': 'cli',
'octo-deployment': 'deployment',
'octo-docs-html': 'server',
'octo-fleet': 'server',
'octo-im': 'server',
'octo-ios': 'ios',
Expand Down Expand Up @@ -317,4 +318,3 @@ jobs:
});

core.info(`Inherited Sprint "${sprintTitle}" from linked issue onto PR item ${itemId}.`);

19 changes: 19 additions & 0 deletions .github/workflows/workflow-sanity.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,13 @@ on:
paths:
- '.github/workflows/**'
- '.github/actions/**'
- '.github/tests/**'
push:
branches: [main]
paths:
- '.github/workflows/**'
- '.github/actions/**'
- '.github/tests/**'
workflow_dispatch:

permissions: {}
Expand All @@ -22,6 +24,23 @@ concurrency:
cancel-in-progress: true

jobs:
contracts:
name: Workflow contracts
# Reusable callers check out their own repository, which has no central tests.
if: github.repository == 'Mininglamp-OSS/.github'
runs-on: ubuntu-24.04
timeout-minutes: 5
permissions:
contents: read
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false

- name: Test workflow contracts
run: python3 -m unittest discover -s .github/tests -p 'test_*.py'

no-tabs:
name: No tabs in workflow files
runs-on: ubuntu-24.04
Expand Down