Skip to content

Commit 55644ac

Browse files
committed
path-utils: Test fallback when directory from preference is deleted.
1 parent 2051d76 commit 55644ac

File tree

1 file changed

+75
-38
lines changed

1 file changed

+75
-38
lines changed

gui-test/framework/tests/path-utils.rkt

Lines changed: 75 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
racket/contract/base
1111
framework/preferences)
1212

13+
;; For uniform comparisons, all tests use simplified paths normalized
14+
;; with path->directory-path when applicable.
15+
1316
(define (path-base pth)
1417
(define-values (base name dir?)
1518
(split-path pth))
@@ -30,61 +33,95 @@
3033
(preferences:get/set 'path-utils:autosave-dir))
3134
(define elem
3235
(bytes->path-element #"example.rkt"))
33-
(define dir
36+
(define current-dir
3437
(path->directory-path
3538
(simplify-path (current-directory))))
3639
(define complete
37-
(build-path dir elem))
40+
; don't put the complete path in (current-directory) directly
41+
; so that we can test that the functions don't just always use (current-directory)
42+
(build-path current-dir "somewhere" elem))
43+
(define dir-of-complete
44+
(path-base complete))
3845
;; Tests with #f for directories
3946
(current-backup-dir #f)
4047
(current-autosave-dir #f)
41-
(check-equal? (path-base (simplify-path(generate-autosave-name #f)))
42-
(path->directory-path (find-system-path 'doc-dir)))
43-
(check-equal? (path-base (simplify-path (generate-autosave-name elem)))
44-
dir)
45-
(check-equal? (path-base (generate-autosave-name complete))
46-
dir)
47-
(check-equal? (path-base (simplify-path (generate-backup-name elem)))
48-
dir)
49-
(check-equal? (path-base (generate-backup-name complete))
50-
dir)
48+
(with-check-info (['path-utils:backup-dir (current-backup-dir)]
49+
['path-utils:autosave-dir (current-autosave-dir)])
50+
(with-check-info (['|generate- function| (string-info "generate-autosave-name")])
51+
(check-equal? (path-base (simplify-path (generate-autosave-name #f)))
52+
(path->directory-path (find-system-path 'doc-dir))
53+
"no orig name should use 'doc-dir")
54+
(check-equal? (path-base (simplify-path (generate-autosave-name elem)))
55+
current-dir
56+
"should resolve relative using current directory")
57+
(check-equal? (path-base (generate-autosave-name complete))
58+
dir-of-complete
59+
"complete path should use that directory"))
60+
(with-check-info (['|generate- function| (string-info "generate-backup-name")])
61+
(check-equal? (path-base (simplify-path (generate-backup-name elem)))
62+
current-dir
63+
"should resolve relative using current directory")
64+
(check-equal? (path-base (generate-backup-name complete))
65+
dir-of-complete
66+
"complete path should use that directory")))
5167
;; Tests with designated directories
52-
(define backup-dir
68+
(define (make-temp-directory/normalize-path fmt-str)
5369
(path->directory-path
5470
(simplify-path
55-
(make-temporary-file "rkt-backup-dir-~a"
56-
'directory))))
71+
(make-temporary-file fmt-str 'directory))))
72+
(define backup-dir
73+
(make-temp-directory/normalize-path "rkt-backup-dir-~a"))
5774
(define autosave-dir
58-
(path->directory-path
59-
(simplify-path
60-
(make-temporary-file "rkt-autosave-dir-~a"
61-
'directory))))
75+
(make-temp-directory/normalize-path "rkt-autosave-dir-~a"))
6276
(dynamic-wind
6377
void
6478
(λ ()
6579
(current-backup-dir backup-dir)
6680
(current-autosave-dir autosave-dir)
67-
(check-equal? (path-base (generate-autosave-name #f))
68-
autosave-dir)
69-
(check-equal? (path-base (generate-autosave-name elem))
70-
autosave-dir)
71-
(check-equal? (path-base (generate-autosave-name complete))
72-
autosave-dir)
73-
(check-equal? (path-base (generate-backup-name elem))
74-
backup-dir)
75-
(check-equal? (path-base (generate-backup-name complete))
76-
backup-dir)
7781
(define clashing-name
78-
(build-path dir "elsewhere" elem))
79-
(check-false
80-
(equal? (simplify-path (generate-autosave-name complete))
81-
(simplify-path (generate-autosave-name clashing-name))))
82-
(check-false
83-
(equal? (simplify-path (generate-backup-name complete))
84-
(simplify-path (generate-backup-name clashing-name)))))
82+
(build-path current-dir "elsewhere" elem))
83+
(with-check-info (['path-utils:backup-dir (current-backup-dir)]
84+
['path-utils:autosave-dir (current-autosave-dir)])
85+
(with-check-info (['|generate- function| (string-info "generate-autosave-name")])
86+
(check-equal? (path-base (generate-autosave-name #f))
87+
autosave-dir
88+
"no orig name should use autosave dir")
89+
(check-equal? (path-base (generate-autosave-name elem))
90+
autosave-dir
91+
"relative path should use autosave dir")
92+
(check-equal? (path-base (generate-autosave-name complete))
93+
autosave-dir
94+
"complete path should use autosave dir")
95+
(check-false
96+
(equal? (simplify-path (generate-autosave-name complete))
97+
(simplify-path (generate-autosave-name clashing-name)))
98+
"files with the same name in different directories should not collide")
99+
; delete
100+
(delete-directory autosave-dir)
101+
(check-equal? (path-base (generate-autosave-name complete))
102+
dir-of-complete
103+
"should fall back when autosave dir deleted"))
104+
(with-check-info (['|generate- function| (string-info "generate-backup-name")])
105+
(check-equal? (path-base (generate-backup-name elem))
106+
backup-dir
107+
"relative path should use backup dir")
108+
(check-equal? (path-base (generate-backup-name complete))
109+
backup-dir
110+
"complete path should use backup dir")
111+
(check-false
112+
(equal? (simplify-path (generate-backup-name complete))
113+
(simplify-path (generate-backup-name clashing-name)))
114+
"files with the same name in different directories should not collide")
115+
; delete
116+
(delete-directory backup-dir)
117+
(check-equal? (path-base (generate-backup-name complete))
118+
dir-of-complete
119+
"should fall back when backup dir deleted"))))
85120
(λ ()
86-
(delete-directory backup-dir)
87-
(delete-directory autosave-dir)))))
121+
(when (directory-exists? backup-dir)
122+
(delete-directory backup-dir))
123+
(when (directory-exists? autosave-dir)
124+
(delete-directory autosave-dir))))))
88125

89126

90127

0 commit comments

Comments
 (0)