mirror of
https://github.com/Sea-Haven-Industries/.github.git
synced 2026-10-07 13:58:55 +00:00
81 lines
2.4 KiB
Python
81 lines
2.4 KiB
Python
#!/usr/bin/env python3
|
|
"""Tests for check_app_terraform_isolation."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import unittest
|
|
|
|
from check_app_terraform_isolation import first_isolation_violation, isolation_violation
|
|
|
|
APP_PATHS = "src/\npackage.json\npackage-lock.json\n"
|
|
|
|
|
|
class IsolationTests(unittest.TestCase):
|
|
def test_terraform_only(self) -> None:
|
|
self.assertIsNone(
|
|
isolation_violation(
|
|
["terraform/lambda.tf", "terraform/README.md"],
|
|
APP_PATHS,
|
|
)
|
|
)
|
|
|
|
def test_app_only(self) -> None:
|
|
self.assertIsNone(
|
|
isolation_violation(
|
|
["src/processPaymentCsv.js", "package.json", "package-lock.json"],
|
|
APP_PATHS,
|
|
)
|
|
)
|
|
|
|
def test_docs_and_workflows_with_terraform(self) -> None:
|
|
self.assertIsNone(
|
|
isolation_violation(
|
|
[
|
|
"terraform/lambda.tf",
|
|
".github/workflows/deploy.yaml",
|
|
"SETUP.md",
|
|
"scripts/check_app_terraform_isolation.py",
|
|
],
|
|
APP_PATHS,
|
|
)
|
|
)
|
|
|
|
def test_mixed_app_and_terraform_fails(self) -> None:
|
|
violation = isolation_violation(
|
|
["terraform/lambda.tf", "src/processPaymentCsv.js", "package.json"],
|
|
APP_PATHS,
|
|
)
|
|
self.assertIsNotNone(violation)
|
|
terraform_files, app_files = violation or ([], [])
|
|
self.assertEqual(terraform_files, ["terraform/lambda.tf"])
|
|
self.assertEqual(app_files, ["package.json", "src/processPaymentCsv.js"])
|
|
|
|
def test_empty_app_paths_skips(self) -> None:
|
|
self.assertIsNone(
|
|
isolation_violation(
|
|
["terraform/lambda.tf", "src/processPaymentCsv.js"],
|
|
"",
|
|
)
|
|
)
|
|
|
|
def test_separate_commits_pass_when_classified_alone(self) -> None:
|
|
self.assertIsNone(
|
|
first_isolation_violation(
|
|
[
|
|
["terraform/lambda.tf"],
|
|
["src/processPaymentCsv.js"],
|
|
],
|
|
APP_PATHS,
|
|
)
|
|
)
|
|
|
|
def test_union_of_separate_commits_fails(self) -> None:
|
|
violation = isolation_violation(
|
|
["terraform/lambda.tf", "src/processPaymentCsv.js"],
|
|
APP_PATHS,
|
|
)
|
|
self.assertIsNotNone(violation)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|