mirror of
https://github.com/venthur/blag.git
synced 2025-11-25 20:52:43 +00:00
Immediately rebuild once when entering autoreload
This commit is contained in:
@@ -55,6 +55,9 @@ def autoreload(args):
|
|||||||
last modified time). If the last modified time has changed, a
|
last modified time). If the last modified time has changed, a
|
||||||
rebuild is triggered.
|
rebuild is triggered.
|
||||||
|
|
||||||
|
A rebuild is also performed immediately when this method is called
|
||||||
|
to avoid serving stale contents.
|
||||||
|
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
args : argparse.Namespace
|
args : argparse.Namespace
|
||||||
@@ -62,7 +65,9 @@ def autoreload(args):
|
|||||||
"""
|
"""
|
||||||
dirs = [args.input_dir, args.template_dir, args.static_dir]
|
dirs = [args.input_dir, args.template_dir, args.static_dir]
|
||||||
logger.info(f'Monitoring {dirs} for changes...')
|
logger.info(f'Monitoring {dirs} for changes...')
|
||||||
last_mtime = get_last_modified(dirs)
|
# make sure we trigger the rebuild immediately when we enter the
|
||||||
|
# loop to avoid serving stale contents
|
||||||
|
last_mtime = 0
|
||||||
while True:
|
while True:
|
||||||
mtime = get_last_modified(dirs)
|
mtime = get_last_modified(dirs)
|
||||||
if mtime > last_mtime:
|
if mtime > last_mtime:
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import time
|
import time
|
||||||
|
import threading
|
||||||
|
|
||||||
from blag import devserver
|
from blag import devserver
|
||||||
|
|
||||||
@@ -19,3 +20,45 @@ def test_get_last_modified(cleandir):
|
|||||||
|
|
||||||
assert t2 > t1
|
assert t2 > t1
|
||||||
assert t2 == t3
|
assert t2 == t3
|
||||||
|
|
||||||
|
|
||||||
|
def test_autoreload_builds_immediately(args):
|
||||||
|
# create a dummy file that can be build
|
||||||
|
with open('content/test.md', 'w') as fh:
|
||||||
|
fh.write('boo')
|
||||||
|
|
||||||
|
t = threading.Thread(target=devserver.autoreload,
|
||||||
|
args=(args, ),
|
||||||
|
daemon=True,)
|
||||||
|
t0 = devserver.get_last_modified(['build'])
|
||||||
|
t.start()
|
||||||
|
# try for 5 seconds...
|
||||||
|
for i in range(5):
|
||||||
|
time.sleep(1)
|
||||||
|
t1 = devserver.get_last_modified(['build'])
|
||||||
|
print(t1)
|
||||||
|
if t1 > t0:
|
||||||
|
break
|
||||||
|
assert t1 > t0
|
||||||
|
|
||||||
|
|
||||||
|
def test_autoreload(args):
|
||||||
|
t = threading.Thread(target=devserver.autoreload,
|
||||||
|
args=(args, ),
|
||||||
|
daemon=True,)
|
||||||
|
t.start()
|
||||||
|
|
||||||
|
t0 = devserver.get_last_modified(['build'])
|
||||||
|
|
||||||
|
# create a dummy file that can be build
|
||||||
|
with open('content/test.md', 'w') as fh:
|
||||||
|
fh.write('boo')
|
||||||
|
|
||||||
|
# try for 5 seconds...
|
||||||
|
for i in range(5):
|
||||||
|
time.sleep(1)
|
||||||
|
t1 = devserver.get_last_modified(['build'])
|
||||||
|
print(t1)
|
||||||
|
if t1 > t0:
|
||||||
|
break
|
||||||
|
assert t1 > t0
|
||||||
|
|||||||
Reference in New Issue
Block a user