2860fb5d18
Security / Dependency review (push) Has been skipped
Scorecard / Scorecard analysis (push) Failing after 0s
Validate / eval (push) Failing after 0s
Security / Dependency audit (push) Failing after 1s
Security / Secret scan (push) Failing after 1s
Validate / tests (push) Failing after 0s
Validate / mcp-tests (push) Failing after 1s
GitHub Actions Security Analysis with zizmor 🌈 / zizmor (push) Failing after 1s
Security / SAST scan (push) Failing after 13m52s
115 lines
3.2 KiB
Python
115 lines
3.2 KiB
Python
# ruff: noqa: E402
|
|
"""Tests for --as-of date support."""
|
|
|
|
import json
|
|
import subprocess
|
|
import sys
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
|
|
REPO_ROOT = Path(__file__).resolve().parents[1]
|
|
sys.path.insert(0, str(REPO_ROOT / "skills" / "last30days" / "scripts"))
|
|
|
|
import last30days as cli
|
|
from lib import dates
|
|
|
|
|
|
class AsOfDateTests(unittest.TestCase):
|
|
def test_get_date_range_with_as_of_date_and_7_days(self):
|
|
from_date, to_date = dates.get_date_range(7, "2020-05-25")
|
|
|
|
self.assertEqual("2020-05-18", from_date)
|
|
self.assertEqual("2020-05-25", to_date)
|
|
|
|
def test_get_date_range_with_as_of_date_and_30_days(self):
|
|
from_date, to_date = dates.get_date_range(30, "2020-05-25")
|
|
|
|
self.assertEqual("2020-04-25", from_date)
|
|
self.assertEqual("2020-05-25", to_date)
|
|
|
|
def test_get_date_range_rejects_invalid_as_of_date(self):
|
|
with self.assertRaisesRegex(ValueError, "YYYY-MM-DD"):
|
|
dates.get_date_range(7, "2020/05/25")
|
|
|
|
def test_build_parser_accepts_as_of_date(self):
|
|
parser = cli.build_parser()
|
|
args, extra = parser.parse_known_args(
|
|
["--as-of", "2020-05-25", "--days", "7", "OpenAI"]
|
|
)
|
|
|
|
self.assertEqual("2020-05-25", args.as_of_date)
|
|
self.assertEqual(7, args.lookback_days)
|
|
self.assertEqual(["OpenAI"], args.topic)
|
|
self.assertEqual([], extra)
|
|
|
|
def test_mock_json_cli_uses_as_of_date_range(self):
|
|
result = subprocess.run(
|
|
[
|
|
sys.executable,
|
|
"skills/last30days/scripts/last30days.py",
|
|
"OpenAI",
|
|
"--mock",
|
|
"--emit=json",
|
|
"--json-profile=raw",
|
|
"--as-of",
|
|
"2020-05-25",
|
|
"--days",
|
|
"7",
|
|
],
|
|
cwd=REPO_ROOT,
|
|
capture_output=True,
|
|
text=True,
|
|
encoding="utf-8",
|
|
errors="replace",
|
|
check=False,
|
|
)
|
|
|
|
self.assertEqual(0, result.returncode, result.stderr)
|
|
payload = json.loads(result.stdout)
|
|
|
|
self.assertEqual("2020-05-18", payload["range_from"])
|
|
self.assertEqual("2020-05-25", payload["range_to"])
|
|
|
|
def test_cli_rejects_invalid_as_of_date(self):
|
|
result = subprocess.run(
|
|
[
|
|
sys.executable,
|
|
"skills/last30days/scripts/last30days.py",
|
|
"OpenAI",
|
|
"--mock",
|
|
"--emit=json",
|
|
"--as-of",
|
|
"2020/05/25",
|
|
],
|
|
cwd=REPO_ROOT,
|
|
capture_output=True,
|
|
text=True,
|
|
encoding="utf-8",
|
|
errors="replace",
|
|
check=False,
|
|
)
|
|
|
|
self.assertNotEqual(0, result.returncode)
|
|
self.assertIn("YYYY-MM-DD", result.stderr)
|
|
|
|
def test_days_ago_uses_reference_date(self):
|
|
self.assertEqual(
|
|
5,
|
|
dates.days_ago("2020-05-20", reference_date="2020-05-25"),
|
|
)
|
|
|
|
def test_recency_score_uses_reference_date(self):
|
|
self.assertEqual(
|
|
50,
|
|
dates.recency_score(
|
|
"2020-05-20",
|
|
max_days=10,
|
|
reference_date="2020-05-25",
|
|
),
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|