• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

scoringengine / scoringengine / 23385248069

21 Mar 2026 05:50PM UTC coverage: 73.202% (-2.5%) from 75.69%
23385248069

push

github

RustyBower
Fix test to match DB fallback behavior for missing output files

The endpoint now returns check.output from DB (200) instead of 404
when the on-disk file doesn't exist.

3726 of 5090 relevant lines covered (73.2%)

0.73 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

94.44
/scoring_engine/models/check.py
1
import html
1✔
2
from datetime import datetime, timezone
1✔
3

4
import pytz
1✔
5
from sqlalchemy import Boolean, Column, DateTime, ForeignKey, Integer, Text, UnicodeText
1✔
6
from sqlalchemy.orm import relationship
1✔
7

8

9
def _ensure_utc_aware(dt):
1✔
10
    """Ensure datetime is timezone-aware in UTC. Handles both naive and aware datetimes."""
11
    if dt is None:
1✔
12
        return None
×
13
    if dt.tzinfo is None:
1✔
14
        # Naive datetime - assume UTC
15
        return pytz.utc.localize(dt)
1✔
16
    # Already aware - convert to UTC
17
    return dt.astimezone(pytz.utc)
×
18

19

20
from scoring_engine.config import config
1✔
21
from scoring_engine.models.base import Base
1✔
22

23

24
class Check(Base):
1✔
25
    __tablename__ = "checks"
1✔
26
    id = Column(Integer, primary_key=True)
1✔
27
    round_id = Column(Integer, ForeignKey("rounds.id"))
1✔
28
    round = relationship("Round", back_populates="checks")
1✔
29
    service_id = Column(Integer, ForeignKey("services.id"))
1✔
30
    service = relationship("Service")
1✔
31
    result = Column(Boolean)
1✔
32
    output = Column(UnicodeText, default="")
1✔
33
    reason = Column(Text, default="")
1✔
34
    command = Column(Text, default="")
1✔
35
    completed_timestamp = Column(DateTime)
1✔
36
    completed = Column(Boolean, default=False)
1✔
37

38
    def finished(self, result, reason, output, command):
1✔
39
        self.result = result
1✔
40
        self.reason = reason
1✔
41
        self.output = html.escape(output)
1✔
42
        self.completed = True
1✔
43
        self.completed_timestamp = datetime.now(timezone.utc)
1✔
44
        self.command = command
1✔
45

46
    @property
1✔
47
    def local_completed_timestamp(self):
1✔
48
        return (
1✔
49
            _ensure_utc_aware(self.completed_timestamp)
50
            .astimezone(pytz.timezone(config.timezone))
51
            .strftime("%Y-%m-%d %H:%M:%S %Z")
52
        )
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc