|
6272677…
|
lmata
|
1 |
"""Tests for utils.theme_patcher.""" |
|
6272677…
|
lmata
|
2 |
import os |
|
6272677…
|
lmata
|
3 |
import tempfile |
|
6272677…
|
lmata
|
4 |
import unittest |
|
6272677…
|
lmata
|
5 |
|
|
91515c0…
|
lmata
|
6 |
from hugoifier.utils.theme_patcher import patch_config, patch_theme |
|
6272677…
|
lmata
|
7 |
|
|
6272677…
|
lmata
|
8 |
|
|
6272677…
|
lmata
|
9 |
class TestPatchTheme(unittest.TestCase): |
|
6272677…
|
lmata
|
10 |
def _write_layout(self, layouts_dir, name, content): |
|
6272677…
|
lmata
|
11 |
path = os.path.join(layouts_dir, name) |
|
6272677…
|
lmata
|
12 |
with open(path, "w") as f: |
|
6272677…
|
lmata
|
13 |
f.write(content) |
|
6272677…
|
lmata
|
14 |
return path |
|
6272677…
|
lmata
|
15 |
|
|
6272677…
|
lmata
|
16 |
def test_patches_disqus_shortname(self): |
|
6272677…
|
lmata
|
17 |
with tempfile.TemporaryDirectory() as tmp: |
|
6272677…
|
lmata
|
18 |
layouts = os.path.join(tmp, "layouts") |
|
6272677…
|
lmata
|
19 |
os.makedirs(layouts) |
|
6272677…
|
lmata
|
20 |
self._write_layout(layouts, "single.html", "{{ .Site.DisqusShortname }}") |
|
6272677…
|
lmata
|
21 |
patch_theme(tmp) |
|
6272677…
|
lmata
|
22 |
with open(os.path.join(layouts, "single.html")) as f: |
|
6272677…
|
lmata
|
23 |
result = f.read() |
|
6272677…
|
lmata
|
24 |
self.assertIn(".Site.Config.Services.Disqus.Shortname", result) |
|
6272677…
|
lmata
|
25 |
self.assertNotIn(".Site.DisqusShortname", result) |
|
6272677…
|
lmata
|
26 |
|
|
6272677…
|
lmata
|
27 |
def test_patches_google_analytics(self): |
|
6272677…
|
lmata
|
28 |
with tempfile.TemporaryDirectory() as tmp: |
|
6272677…
|
lmata
|
29 |
layouts = os.path.join(tmp, "layouts") |
|
6272677…
|
lmata
|
30 |
os.makedirs(layouts) |
|
6272677…
|
lmata
|
31 |
self._write_layout(layouts, "head.html", "{{ .Site.GoogleAnalytics }}") |
|
6272677…
|
lmata
|
32 |
patch_theme(tmp) |
|
6272677…
|
lmata
|
33 |
with open(os.path.join(layouts, "head.html")) as f: |
|
6272677…
|
lmata
|
34 |
result = f.read() |
|
6272677…
|
lmata
|
35 |
self.assertIn(".Site.Config.Services.GoogleAnalytics.ID", result) |
|
6272677…
|
lmata
|
36 |
|
|
6272677…
|
lmata
|
37 |
def test_no_change_when_already_patched(self): |
|
6272677…
|
lmata
|
38 |
with tempfile.TemporaryDirectory() as tmp: |
|
6272677…
|
lmata
|
39 |
layouts = os.path.join(tmp, "layouts") |
|
6272677…
|
lmata
|
40 |
os.makedirs(layouts) |
|
6272677…
|
lmata
|
41 |
content = "{{ .Site.Config.Services.Disqus.Shortname }}" |
|
6272677…
|
lmata
|
42 |
self._write_layout(layouts, "single.html", content) |
|
6272677…
|
lmata
|
43 |
patch_theme(tmp) |
|
6272677…
|
lmata
|
44 |
with open(os.path.join(layouts, "single.html")) as f: |
|
6272677…
|
lmata
|
45 |
result = f.read() |
|
6272677…
|
lmata
|
46 |
self.assertEqual(result, content) |
|
6272677…
|
lmata
|
47 |
|
|
6272677…
|
lmata
|
48 |
def test_no_layouts_dir_is_safe(self): |
|
6272677…
|
lmata
|
49 |
with tempfile.TemporaryDirectory() as tmp: |
|
6272677…
|
lmata
|
50 |
# Should not raise even if layouts/ doesn't exist |
|
6272677…
|
lmata
|
51 |
patch_theme(tmp) |
|
6272677…
|
lmata
|
52 |
|
|
6272677…
|
lmata
|
53 |
|
|
6272677…
|
lmata
|
54 |
class TestPatchConfig(unittest.TestCase): |
|
6272677…
|
lmata
|
55 |
def _write_config(self, path, content): |
|
6272677…
|
lmata
|
56 |
with open(path, "w") as f: |
|
6272677…
|
lmata
|
57 |
f.write(content) |
|
6272677…
|
lmata
|
58 |
|
|
6272677…
|
lmata
|
59 |
def test_patches_paginate(self): |
|
6272677…
|
lmata
|
60 |
with tempfile.TemporaryDirectory() as tmp: |
|
6272677…
|
lmata
|
61 |
cfg = os.path.join(tmp, "hugo.toml") |
|
6272677…
|
lmata
|
62 |
self._write_config(cfg, 'paginate = 10\ntitle = "My Site"\n') |
|
6272677…
|
lmata
|
63 |
patch_config(cfg) |
|
6272677…
|
lmata
|
64 |
with open(cfg) as f: |
|
6272677…
|
lmata
|
65 |
result = f.read() |
|
6272677…
|
lmata
|
66 |
self.assertIn("[pagination]", result) |
|
6272677…
|
lmata
|
67 |
self.assertIn("pagerSize = 10", result) |
|
6272677…
|
lmata
|
68 |
self.assertNotIn("paginate = 10", result) |
|
6272677…
|
lmata
|
69 |
|
|
6272677…
|
lmata
|
70 |
def test_patches_google_analytics_key(self): |
|
6272677…
|
lmata
|
71 |
with tempfile.TemporaryDirectory() as tmp: |
|
6272677…
|
lmata
|
72 |
cfg = os.path.join(tmp, "hugo.toml") |
|
6272677…
|
lmata
|
73 |
self._write_config(cfg, 'googleAnalytics = "UA-12345"\n') |
|
6272677…
|
lmata
|
74 |
patch_config(cfg) |
|
6272677…
|
lmata
|
75 |
with open(cfg) as f: |
|
6272677…
|
lmata
|
76 |
result = f.read() |
|
6272677…
|
lmata
|
77 |
self.assertIn("[services.googleAnalytics]", result) |
|
6272677…
|
lmata
|
78 |
self.assertIn('id = "UA-12345"', result) |
|
6272677…
|
lmata
|
79 |
|
|
6272677…
|
lmata
|
80 |
def test_patches_disqus_shortname(self): |
|
6272677…
|
lmata
|
81 |
with tempfile.TemporaryDirectory() as tmp: |
|
6272677…
|
lmata
|
82 |
cfg = os.path.join(tmp, "hugo.toml") |
|
6272677…
|
lmata
|
83 |
self._write_config(cfg, 'disqusShortname = "mysite"\n') |
|
6272677…
|
lmata
|
84 |
patch_config(cfg) |
|
6272677…
|
lmata
|
85 |
with open(cfg) as f: |
|
6272677…
|
lmata
|
86 |
result = f.read() |
|
6272677…
|
lmata
|
87 |
self.assertIn("[services.disqus]", result) |
|
6272677…
|
lmata
|
88 |
self.assertIn('shortname = "mysite"', result) |
|
6272677…
|
lmata
|
89 |
|
|
6272677…
|
lmata
|
90 |
def test_no_change_when_nothing_to_patch(self): |
|
6272677…
|
lmata
|
91 |
with tempfile.TemporaryDirectory() as tmp: |
|
6272677…
|
lmata
|
92 |
cfg = os.path.join(tmp, "hugo.toml") |
|
6272677…
|
lmata
|
93 |
content = 'title = "Clean Site"\n' |
|
6272677…
|
lmata
|
94 |
self._write_config(cfg, content) |
|
6272677…
|
lmata
|
95 |
patch_config(cfg) |
|
6272677…
|
lmata
|
96 |
with open(cfg) as f: |
|
6272677…
|
lmata
|
97 |
result = f.read() |
|
6272677…
|
lmata
|
98 |
self.assertEqual(result, content) |
|
6272677…
|
lmata
|
99 |
|
|
6272677…
|
lmata
|
100 |
|
|
6272677…
|
lmata
|
101 |
if __name__ == "__main__": |
|
6272677…
|
lmata
|
102 |
unittest.main() |