File: test_asset.py

package info (click to toggle)
staticsite 2.5-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 14,648 kB
  • sloc: javascript: 33,722; python: 9,851; makefile: 46; sh: 4
file content (71 lines) | stat: -rw-r--r-- 2,109 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
from __future__ import annotations

import datetime
import os
import time
from contextlib import contextmanager
from unittest import TestCase

import pytz

from staticsite.file import File
from staticsite.site import Site

from . import utils as test_utils


@contextmanager
def override_tz(val):
    orig = os.environ.get("TZ", None)
    os.environ["TZ"] = val
    time.tzset()
    yield
    if orig is None:
        del os.environ["TZ"]
    else:
        os.environ["TZ"] = orig
    time.tzset()


class TestAsset(test_utils.MockSiteTestMixin, TestCase):
    @test_utils.assert_no_logs()
    @override_tz("Pacific/Samoa")
    def test_timestamps(self):
        # $ TZ=UTC date +%s --date="2016-11-01" → 1477958400
        FILE_TS = 1477958400

        sitedef = test_utils.MockSite(
            {
                ".staticsite": {
                    "asset": True,
                },
                "testasset": "test",
            }
        )
        sitedef.auto_load_site = False
        sitedef.mock_file_mtime = None

        with self.site(sitedef) as mocksite:
            # Set file mtime and check that it can be read back correctly
            path = os.path.join(mocksite.root, "testasset")
            os.utime(path, (FILE_TS, FILE_TS))
            src = File.with_stat("testasset", path)
            self.assertEqual(src.stat.st_mtime, FILE_TS)

            # Load site contents
            mocksite.load_site(until=Site.LOAD_STEP_CONTENTS)

            page = mocksite.page("testasset")

            self.assertEqual(page.node.name, "")
            self.assertEqual(page.TYPE, "asset")
            self.assertEqual(page.src.stat.st_mtime, FILE_TS)
            self.assertEqual(
                page.meta["date"],
                datetime.datetime(2016, 11, 1, 0, 0, 0, tzinfo=pytz.utc),
            )
            self.assertEqual(page.meta["site_url"], "https://www.example.org")
            self.assertEqual(page.site_path, "testasset")
            self.assertEqual(page.node.path, "")
            self.assertEqual(page.dst, "testasset")
            self.assertFalse(page.directory_index)