aboutsummaryrefslogtreecommitdiff
path: root/tests/test/let-env.scm
blob: a989776a5bc8153c4d2484ed9cf03b5ff93748bf (plain)
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
(define-module (test let-env)
  :use-module (srfi srfi-64)
  :use-module (srfi srfi-64 test-error)
  :use-module (srfi srfi-88)
  :use-module ((guile) :select (setenv getenv))
  :use-module ((hnh util env) :select (let-env)))

(setenv "CALP_TEST_ENV" "1")

(test-equal
  "Ensure we have set value beforehand"
  "1"
  (getenv "CALP_TEST_ENV"))

(let-env
  ((CALP_TEST_ENV "2"))
  (test-equal
    "Test our local override"
    "2"
    (getenv "CALP_TEST_ENV")))

(test-equal
  "Test that we have returned"
  "1"
  (getenv "CALP_TEST_ENV"))

(catch 'test-error
       (lambda ()
         (let-env
           ((CALP_TEST_ENV "2"))
           (test-equal
             "Test our local override again"
             "2"
             (getenv "CALP_TEST_ENV"))
           (throw 'test-error)))
       list)

(test-equal
  "Test restoration after non-local exit"
  "1"
  (getenv "CALP_TEST_ENV"))


(test-group "Unsetting environment"
  (setenv "TEST" "A")
  (let-env ((TEST #f))
           (test-assert (not (getenv "TEST"))))
  (test-equal "A" (getenv "TEST")))