aboutsummaryrefslogtreecommitdiff
path: root/robot
diff options
context:
space:
mode:
authorPhillip Lord <phillip.lord@russet.org.uk>2020-04-12 18:11:20 +0000
committerPhillip Lord <phillip.lord@russet.org.uk>2020-04-12 18:11:20 +0000
commitb05f06a4b15bffffdcaeb1a30482afd94c12746a (patch)
tree691f7c78eb21906a03bdc3896c4bc719930d7a3f /robot
parent0c89f344ce019e03df278578414617b74034031b (diff)
parentec2c168797380c7e41c13a9260c79139bed3300c (diff)
downloadorg-drill-b05f06a4b15bffffdcaeb1a30482afd94c12746a.tar.gz
org-drill-b05f06a4b15bffffdcaeb1a30482afd94c12746a.zip
Merge branch 'branweb/fix-cram-mode' into 'master'
Allow Creating New Session in Cram Mode See merge request phillord/org-drill!9
Diffstat (limited to 'robot')
-rw-r--r--robot/cram-run.el24
-rwxr-xr-xrobot/cram-run.sh39
-rw-r--r--robot/robot.el21
3 files changed, 77 insertions, 7 deletions
diff --git a/robot/cram-run.el b/robot/cram-run.el
new file mode 100644
index 0000000..a754013
--- /dev/null
+++ b/robot/cram-run.el
@@ -0,0 +1,24 @@
+(load-file "robot/robot.el")
+(load-file "org-drill.el")
+
+;; setup
+(copy "basic-run.org" "cram-run-copy.org")
+
+;; normal run
+(find "cram-run-copy.org")
+(org-drill)
+(set-buffer-modified-p nil)
+(kill-buffer)
+(robot-check-cards-seen 3)
+
+;; cram run with all cards reviewed less than `org-drill-cram-hours`
+;; ago, so we expect no new cards to be seen
+(find "cram-run-copy.org")
+(org-drill-cram)
+(robot-check-cards-seen 3)
+
+;; cram run that should include all cards, so we expect seen cards to
+;; double
+(setq org-drill-cram-hours 0)
+(org-drill-cram)
+(robot-check-cards-seen-and-die 6)
diff --git a/robot/cram-run.sh b/robot/cram-run.sh
new file mode 100755
index 0000000..a4d6ec9
--- /dev/null
+++ b/robot/cram-run.sh
@@ -0,0 +1,39 @@
+#!/usr/bin/env bash
+
+set -e
+
+this_dir="$(dirname "$0")"
+source ${this_dir}/robot.sh
+
+card_no=3
+
+# cram mode doesn't modify the buffer so there is no save prompt
+function run_drill_no_save {
+ sleep_small
+
+ for i in `seq 1 ${card_no}`;
+ do
+ echo Answer: "$i"
+ send_answer
+ done
+
+ echo press any key to continue
+ retn
+}
+
+function run_drill {
+ run_drill_no_save
+ echo Save file
+ key y
+}
+
+
+launch_emacs ${this_dir}/cram-run.el
+
+{
+ find_bot
+ run_drill
+ retn
+ run_drill_no_save
+ wait_emacs
+} || cat robot/failure.txt
diff --git a/robot/robot.el b/robot/robot.el
index f7053b8..3d965b0 100644
--- a/robot/robot.el
+++ b/robot/robot.el
@@ -55,18 +55,25 @@
(run-with-timer 1 1 #'robot-dump-messages)
-(defun robot-check-cards-seen-and-die (n)
+(defun robot-check-cards-seen (n)
+ "N is number of cards we expect to have seen this session.
+Returns a number representing an exit status code"
(if (= n org-drill-cards-in-this-emacs)
(progn
(princ
(format "Succeeded: Saw %s cards as expected\n" n)
'external-debugging-output)
- (kill-emacs 0))
- (princ
- (format "Failed: Saw %s cards, expecting %s\n"
- org-drill-cards-in-this-emacs n)
- 'external-debugging-output)
- (kill-emacs -1)))
+ 0)
+ (progn
+ (princ
+ (format "Failed: Saw %s cards, expecting %s\n"
+ org-drill-cards-in-this-emacs n)
+ 'external-debugging-output)
+ -1)))
+
+(defun robot-check-cards-seen-and-die (n)
+ "N is number of cards we expect to have seen this session."
+ (kill-emacs (robot-check-cards-seen n)))
;; Move the package-user-dir somewhere local
(require 'package)