-
Notifications
You must be signed in to change notification settings - Fork 234
Closed
Description
To Reproduce
import net.datafaker.Faker;
public class Test
{
public static void main(String[] args)
{
Faker faker = new Faker();
// Passed
System.out.println(faker.text().text(7));
// Failed
System.out.println(faker.expression("#{Text.text '7'}"));
}
}Actual behavior
The error is logged (the output is created using 2.4.1 version):
twrdeyi
Aug 19, 2025 10:41:45 PM net.datafaker.service.FakeValuesService coerceArguments
SEVERE: Unable to coerce 7 to TextRuleConfig via TextRuleConfig(String) constructor
net.datafaker.service.FakeValuesService$NoSuchMethodRuntimeException: java.lang.NoSuchMethodException: net.datafaker.providers.base.Text$TextRuleConfig.<init>(java.lang.String)
at net.datafaker.service.FakeValuesService.getConstructorWithString(FakeValuesService.java:1202)
at net.datafaker.service.FakeValuesService.coerceArguments(FakeValuesService.java:1085)
at net.datafaker.service.FakeValuesService.accessor(FakeValuesService.java:984)
at net.datafaker.service.FakeValuesService.lambda$retrieveMethodAccessor$25(FakeValuesService.java:949)
at java.base/java.util.Map.computeIfAbsent(Map.java:1067)
at net.datafaker.service.FakeValuesService.retrieveMethodAccessor(FakeValuesService.java:949)
at net.datafaker.service.FakeValuesService.resolveFakerObjectAndMethod(FakeValuesService.java:931)
at net.datafaker.service.FakeValuesService.resolveExpression(FakeValuesService.java:808)
at net.datafaker.service.FakeValuesService.resExp(FakeValuesService.java:722)
at net.datafaker.service.FakeValuesService.resolveExpression(FakeValuesService.java:646)
at net.datafaker.service.FakeValuesService.expression(FakeValuesService.java:521)
at net.datafaker.providers.base.BaseFaker.expression(BaseFaker.java:411)
at Test.main(Test.java:13)
Caused by: java.lang.NoSuchMethodException: net.datafaker.providers.base.Text$TextRuleConfig.<init>(java.lang.String)
at java.base/java.lang.Class.getConstructor0(Class.java:3833)
at java.base/java.lang.Class.getConstructor(Class.java:2501)
at net.datafaker.service.FakeValuesService.getConstructorWithString(FakeValuesService.java:1200)
... 12 more
Caused by: java.lang.NoSuchMethodException: net.datafaker.providers.base.Text$TextRuleConfig.<init>(java.lang.String)
jyjkwiwgccvvdchmgjyjdggbdxhgrnoaskzxkzoxjvmmyhdactsjmnqyzbfpqammoxhakisjglmhbcExpected behavior
No errors is logged.
Versions:
This is a regression bug introduced in datafaker 2.4.1 (reproduced in 2.4.2, 2.4.3, 2.4.4).
Additional context
The bug is not reproduced in 2.4.0, but the result in this version is incorrect as well:
dgjciuz
kwnunlhctbggvxteqyoofbpotllbeyofqlqgtuirerwptelembbtjxlyekdbebzbvk
Pay attention to the second string generated, its length is not equal to 7.
However the issue with the length is fixed in 2.4.3:
rqsaarc
Aug 19, 2025 10:53:40 PM net.datafaker.service.FakeValuesService coerceArguments
SEVERE: Unable to coerce 7 to TextRuleConfig via TextRuleConfig(String) constructor
net.datafaker.service.FakeValuesService$NoSuchMethodRuntimeException: java.lang.NoSuchMethodException: net.datafaker.providers.base.Text$TextRuleConfig.<init>(java.lang.String)
at net.datafaker.service.FakeValuesService.getConstructorWithString(FakeValuesService.java:1247)
at net.datafaker.service.FakeValuesService.coerceArguments(FakeValuesService.java:1130)
at net.datafaker.service.FakeValuesService.accessor(FakeValuesService.java:987)
at net.datafaker.service.FakeValuesService.lambda$retrieveMethodAccessor$25(FakeValuesService.java:950)
at java.base/java.util.Map.computeIfAbsent(Map.java:1067)
at net.datafaker.service.FakeValuesService.retrieveMethodAccessor(FakeValuesService.java:950)
at net.datafaker.service.FakeValuesService.resolveFakerObjectAndMethod(FakeValuesService.java:932)
at net.datafaker.service.FakeValuesService.resolveExpression(FakeValuesService.java:809)
at net.datafaker.service.FakeValuesService.resExp(FakeValuesService.java:723)
at net.datafaker.service.FakeValuesService.resolveExpression(FakeValuesService.java:647)
at net.datafaker.service.FakeValuesService.expression(FakeValuesService.java:522)
at net.datafaker.providers.base.BaseFaker.expression(BaseFaker.java:411)
at Test.main(Test.java:13)
Caused by: java.lang.NoSuchMethodException: net.datafaker.providers.base.Text$TextRuleConfig.<init>(java.lang.String)
at java.base/java.lang.Class.getConstructor0(Class.java:3833)
at java.base/java.lang.Class.getConstructor(Class.java:2501)
at net.datafaker.service.FakeValuesService.getConstructorWithString(FakeValuesService.java:1245)
... 12 more
Caused by: java.lang.NoSuchMethodException: net.datafaker.providers.base.Text$TextRuleConfig.<init>(java.lang.String)
laixiluPay attention to the last string generated, its length is equal to 7.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working