Skip to content

Commit aa5489a

Browse files
halibobo1205claude
andcommitted
fix: replace @SuppressWarnings with Locale.ROOT in test classes
Replace remaining @SuppressWarnings("StringCaseLocaleUsage") with explicit Locale.ROOT in 6 test files. The suppress annotations were hiding real locale-sensitivity bugs: - BytecodeCompiler: toUpperCase() on opcode names like "jumpi" would produce "JUMPİ" on Turkish locale, causing opcode lookup failure - ShieldedReceiveTest: toUpperCase() on ztron address containing 'i' would produce 'İ' instead of 'I', breaking address decoding - CronExpressionTest, OperationsTest, DataWord, SM2KeyTest: hex formatting with toUpperCase() (low risk but inconsistent) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 897d4e8 commit aa5489a

6 files changed

Lines changed: 15 additions & 16 deletions

File tree

framework/src/test/java/org/tron/common/cron/CronExpressionTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import java.text.ParseException;
2525
import java.util.Calendar;
2626
import java.util.Date;
27+
import java.util.Locale;
2728
import org.junit.Test;
2829

2930
public class CronExpressionTest {
@@ -161,12 +162,11 @@ public void testLastDayOffset() throws Exception {
161162

162163
}
163164

164-
@SuppressWarnings("StringCaseLocaleUsage")
165165
@Test
166166
public void testQuartz() throws Exception {
167167
CronExpression cronExpression = new CronExpression("19 15 10 4 Apr ? ");
168-
assertEquals("19 15 10 4 Apr ? ".toUpperCase(), cronExpression.getCronExpression());
169-
assertEquals("19 15 10 4 Apr ? ".toUpperCase(), cronExpression.toString());
168+
assertEquals("19 15 10 4 Apr ? ".toUpperCase(Locale.ROOT), cronExpression.getCronExpression());
169+
assertEquals("19 15 10 4 Apr ? ".toUpperCase(Locale.ROOT), cronExpression.toString());
170170

171171
// if broken, this will throw an exception
172172
cronExpression.getNextValidTimeAfter(new Date());

framework/src/test/java/org/tron/common/crypto/SM2KeyTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import java.security.KeyPairGenerator;
1414
import java.security.SignatureException;
1515
import java.util.Arrays;
16+
import java.util.Locale;
1617
import lombok.extern.slf4j.Slf4j;
1718
import org.bouncycastle.crypto.digests.SM3Digest;
1819
import org.bouncycastle.util.encoders.Hex;
@@ -116,15 +117,14 @@ public void testInvalidSignatureLength() throws SignatureException {
116117
fail("Expecting a SignatureException for invalid signature length");
117118
}
118119

119-
@SuppressWarnings("StringCaseLocaleUsage")
120120
@Test
121121
public void testSM3Hash() {
122122
SM2 key = SM2.fromPublicOnly(pubKey);
123123
SM2Signer signer = key.getSM2SignerForHash();
124124
String message = "message digest";
125125
byte[] hash = signer.generateSM3Hash(message.getBytes());
126126
assertEquals("2A723761EAE35429DF643648FD69FB7787E7FC32F321BFAF7E294390F529BAF4",
127-
Hex.toHexString(hash).toUpperCase());
127+
Hex.toHexString(hash).toUpperCase(Locale.ROOT));
128128
}
129129

130130

framework/src/test/java/org/tron/common/runtime/vm/BytecodeCompiler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.ArrayList;
44
import java.util.List;
5+
import java.util.Locale;
56

67
import org.bouncycastle.util.encoders.Hex;
78
import org.tron.core.vm.Op;
@@ -12,13 +13,12 @@ public byte[] compile(String code) {
1213
return compile(code.split("\\s+"));
1314
}
1415

15-
@SuppressWarnings("StringCaseLocaleUsage")
1616
private byte[] compile(String[] tokens) {
1717
List<Byte> bytecodes = new ArrayList<>();
1818
int ntokens = tokens.length;
1919

2020
for (String s : tokens) {
21-
String token = s.trim().toUpperCase();
21+
String token = s.trim().toUpperCase(Locale.ROOT);
2222

2323
if (token.isEmpty()) {
2424
continue;

framework/src/test/java/org/tron/common/runtime/vm/OperationsTest.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import static org.tron.core.config.Parameter.ChainConstant.FROZEN_PERIOD;
66

77
import java.util.List;
8+
import java.util.Locale;
89
import java.util.Random;
910

1011
import lombok.SneakyThrows;
@@ -489,7 +490,6 @@ public void testBlockInformationOperations() throws ContractValidateException {
489490
}
490491

491492
// test Memory, Storage and Flow Operations
492-
@SuppressWarnings("StringCaseLocaleUsage")
493493
@Test
494494
public void testMemoryStorageAndFlowOperations() throws ContractValidateException {
495495
invoke = new ProgramInvokeMockImpl();
@@ -539,7 +539,7 @@ public void testMemoryStorageAndFlowOperations() throws ContractValidateExceptio
539539
testSingleOperation(program);
540540
Assert.assertEquals(20, program.getResult().getEnergyUsed());
541541
Assert.assertEquals("00000000000000000000000000000000000000000000000000000000000000CC",
542-
Hex.toHexString(program.getStack().peek().getData()).toUpperCase());
542+
Hex.toHexString(program.getStack().peek().getData()).toUpperCase(Locale.ROOT));
543543

544544
// PC = 0x58
545545
op = new byte[]{0x60, 0x01, 0x60, 0x00, 0x58};
@@ -819,7 +819,6 @@ public void testOtherOperations() throws ContractValidateException {
819819
Assert.assertTrue(program.getResult().isRevert());
820820
}
821821

822-
@SuppressWarnings("StringCaseLocaleUsage")
823822
@Ignore
824823
@Test
825824
public void testComplexOperations() throws ContractValidateException {
@@ -863,7 +862,7 @@ public void testComplexOperations() throws ContractValidateException {
863862
testSingleOperation(program);
864863
Assert.assertEquals(10065, program.getResult().getEnergyUsed());
865864
Assert.assertEquals("0000000000000000000000000000000000000000000000000000000000000033",
866-
Hex.toHexString(program.getStack().peek().getData()).toUpperCase());
865+
Hex.toHexString(program.getStack().peek().getData()).toUpperCase(Locale.ROOT));
867866

868867
// EXTCODESIZE = 0x3b
869868
op = new byte[]{0x3b};
@@ -883,7 +882,7 @@ public void testComplexOperations() throws ContractValidateException {
883882
testSingleOperation(program);
884883
Assert.assertEquals(38, program.getResult().getEnergyUsed());
885884
Assert.assertEquals("6000600000000000000000000000000000000000000000000000000000000000",
886-
Hex.toHexString(program.getMemory()).toUpperCase());
885+
Hex.toHexString(program.getMemory()).toUpperCase(Locale.ROOT));
887886

888887
}
889888

framework/src/test/java/org/tron/common/utils/client/utils/DataWord.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.fasterxml.jackson.annotation.JsonValue;
2525
import java.math.BigInteger;
2626
import java.nio.ByteBuffer;
27+
import java.util.Locale;
2728

2829
import org.bouncycastle.util.Arrays;
2930
import org.bouncycastle.util.encoders.Hex;
@@ -430,9 +431,8 @@ public String toPrefixString() {
430431
return Hex.toHexString(pref).substring(0, 6);
431432
}
432433

433-
@SuppressWarnings("StringCaseLocaleUsage")
434434
public String shortHex() {
435-
String hexValue = Hex.toHexString(getNoLeadZeroesData()).toUpperCase();
435+
String hexValue = Hex.toHexString(getNoLeadZeroesData()).toUpperCase(Locale.ROOT);
436436
return "0x" + hexValue.replaceFirst("^0+(?!$)", "");
437437
}
438438

framework/src/test/java/org/tron/core/zksnark/ShieldedReceiveTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import java.util.Arrays;
1313
import java.util.HashSet;
1414
import java.util.List;
15+
import java.util.Locale;
1516
import java.util.Optional;
1617
import java.util.Set;
1718
import javax.annotation.Resource;
@@ -2527,12 +2528,11 @@ public void pushSameSkAndScanAndSpend() throws Exception {
25272528
Assert.assertTrue(ok2);
25282529
}
25292530

2530-
@SuppressWarnings("StringCaseLocaleUsage")
25312531
@Test
25322532
public void decodePaymentAddressIgnoreCase() {
25332533
String addressLower =
25342534
"ztron1975m0wyg8f30cgf2l5fgndhzqzkzgkgnxge8cwx2wr7m3q7chsuwewh2e6u24yykum0hq8ue99u";
2535-
String addressUpper = addressLower.toUpperCase();
2535+
String addressUpper = addressLower.toUpperCase(Locale.ROOT);
25362536

25372537
PaymentAddress paymentAddress1 = KeyIo.decodePaymentAddress(addressLower);
25382538
PaymentAddress paymentAddress2 = KeyIo.decodePaymentAddress(addressUpper);

0 commit comments

Comments
 (0)