Skip to content

Commit e92f1f5

Browse files
committed
FIX: correctly handle not existing user argument for the set-user function
resolves: Oldes/Rebol-issues#2547
1 parent 295cf21 commit e92f1f5

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

src/mezz/mezz-shell.reb

+6-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ REBOL [
33
Title: "REBOL 3 Mezzanine: Shell-like Command Functions"
44
Rights: {
55
Copyright 2012 REBOL Technologies
6+
Copyright 2012-2023 Rebol Open Source Contributors
67
REBOL is a trademark of REBOL Technologies
78
}
89
License: {
@@ -72,7 +73,11 @@ su: set-user: func[
7273
if unset? :name [su/name: none su/data: make map! 1 exit]
7374

7475
sys/log/info 'REBOL ["Initialize user:" as-green :name]
75-
file: to-real-file any [file rejoin [system/options/home #"." :name %.safe]]
76+
77+
file: any [
78+
all [file to-real-file file] ;@@ could to-real-file accept none?
79+
rejoin [system/options/home #"." :name %.safe]
80+
]
7681
sys/log/more 'REBOL ["Checking if exists: " as-green file]
7782
unless exists? file [
7883
unless n [

src/tests/units/codecs-test.r3

+11
Original file line numberDiff line numberDiff line change
@@ -761,6 +761,7 @@ if find codecs 'safe [
761761
;- using environmental variable to avoid interactive password input using `ask`
762762
temp: get-env "REBOL_SAFE_PASS"
763763
set-env "REBOL_SAFE_PASS" "my-pass"
764+
user: system/user ;; store existing user
764765
===start-group=== "SAFE codec"
765766
--test-- "Save/Load SAFE file"
766767
foreach data [
@@ -772,8 +773,18 @@ if find codecs 'safe [
772773
--assert equal? data load save %temp.safe data
773774
delete %temp.safe
774775
]
776+
--test-- "Set-user which does not exists"
777+
;@@ https://github.com/Oldes/Rebol-issues/issues/2547
778+
--assert not error? try [set-user not-existing-user]
779+
--test-- "Initialise new user"
780+
--assert not error? try [set-user/n/p temp-user "passw"]
781+
--assert system/user/name = @temp-user
782+
--assert 'file = exists? try [system/user/data/spec/ref]
783+
try [delete system/user/data/spec/ref]
784+
775785
===end-group===
776786
set-env "REBOL_SAFE_PASS" :temp
787+
system/user: :user
777788
]
778789

779790

0 commit comments

Comments
 (0)