Skip to content

Commit 8088b51

Browse files
committed
Require integer random_id lengths
1 parent 26dc090 commit 8088b51

2 files changed

Lines changed: 15 additions & 9 deletions

File tree

vibes/builtins.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,11 +115,10 @@ func builtinRandomID(exec *Execution, receiver Value, args []Value, kwargs map[s
115115
return NewNil(), fmt.Errorf("random_id expects at most one length argument")
116116
}
117117
if len(args) == 1 {
118-
n, err := valueToInt64(args[0])
119-
if err != nil {
118+
if args[0].Kind() != KindInt {
120119
return NewNil(), fmt.Errorf("random_id length must be integer")
121120
}
122-
length = n
121+
length = args[0].Int()
123122
}
124123
if length <= 0 {
125124
return NewNil(), fmt.Errorf("random_id length must be positive")

vibes/runtime_test.go

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2070,13 +2070,17 @@ func TestRandomIdentifierBuiltins(t *testing.T) {
20702070
}
20712071
end
20722072
2073-
def bad_length_type()
2074-
random_id("x")
2075-
end
2073+
def bad_length_type()
2074+
random_id("x")
2075+
end
20762076
2077-
def bad_length_value()
2078-
random_id(0)
2079-
end
2077+
def bad_length_float()
2078+
random_id(8.9)
2079+
end
2080+
2081+
def bad_length_value()
2082+
random_id(0)
2083+
end
20802084
20812085
def bad_uuid_args()
20822086
uuid(1)
@@ -2107,6 +2111,9 @@ func TestRandomIdentifierBuiltins(t *testing.T) {
21072111
if _, err := script.Call(context.Background(), "bad_length_type", nil, CallOptions{}); err == nil || !strings.Contains(err.Error(), "random_id length must be integer") {
21082112
t.Fatalf("expected length type error, got %v", err)
21092113
}
2114+
if _, err := script.Call(context.Background(), "bad_length_float", nil, CallOptions{}); err == nil || !strings.Contains(err.Error(), "random_id length must be integer") {
2115+
t.Fatalf("expected length float error, got %v", err)
2116+
}
21102117
if _, err := script.Call(context.Background(), "bad_length_value", nil, CallOptions{}); err == nil || !strings.Contains(err.Error(), "random_id length must be positive") {
21112118
t.Fatalf("expected length value error, got %v", err)
21122119
}

0 commit comments

Comments
 (0)