Allow string unsafe test to pass on s390x
Hello,
This test fails on s390x (a big endian platform) due to comparison to a `StandardCharsets.UTF_16LE` encoded string. Changing that to `StandardCharsets.UTF_16BE` on s390x could let the test pass. This test now passes on both intel and s390x.
Thanks.
Closes #11866.
PiperOrigin-RevId: 333452089
diff --git a/src/test/java/com/google/devtools/build/lib/unsafe/StringUnsafeTest.java b/src/test/java/com/google/devtools/build/lib/unsafe/StringUnsafeTest.java
index 2801d52..5dec4b3 100644
--- a/src/test/java/com/google/devtools/build/lib/unsafe/StringUnsafeTest.java
+++ b/src/test/java/com/google/devtools/build/lib/unsafe/StringUnsafeTest.java
@@ -16,6 +16,7 @@
import static com.google.common.truth.Truth.assertThat;
import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
import java.nio.charset.StandardCharsets;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -44,8 +45,14 @@
StringUnsafe stringUnsafe = StringUnsafe.getInstance();
assertThat(ByteBuffer.wrap(stringUnsafe.getByteArray("hello")))
.isEqualTo(StandardCharsets.ISO_8859_1.encode("hello"));
- assertThat(ByteBuffer.wrap(stringUnsafe.getByteArray("lambda λ")))
- .isEqualTo(StandardCharsets.UTF_16LE.encode("lambda λ"));
+
+ if (ByteOrder.nativeOrder().equals(ByteOrder.BIG_ENDIAN)) {
+ assertThat(ByteBuffer.wrap(stringUnsafe.getByteArray("lambda λ")))
+ .isEqualTo(StandardCharsets.UTF_16BE.encode("lambda λ"));
+ } else {
+ assertThat(ByteBuffer.wrap(stringUnsafe.getByteArray("lambda λ")))
+ .isEqualTo(StandardCharsets.UTF_16LE.encode("lambda λ"));
+ }
}
@Test