This is an automated email from the ASF dual-hosted git repository.

mbudiu pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/calcite.git


The following commit(s) were added to refs/heads/main by this push:
     new caacc9f95b [CALCITE-6676] DiffRepository does not update log (_actual) 
file when assertion fails
caacc9f95b is described below

commit caacc9f95bc583db05f44b53d27d5083ef3a371a
Author: Stamatis Zampetakis <[email protected]>
AuthorDate: Wed Nov 6 16:56:17 2024 +0100

    [CALCITE-6676] DiffRepository does not update log (_actual) file when 
assertion fails
    
    Use JUnit instead of Hamcrest assert methods since the latter are not 
using/throwing the `AssertionFailedError` so we never enter the catch block 
that updates the log file.
---
 .../org/apache/calcite/test/DiffRepository.java    | 10 +++--
 .../apache/calcite/test/DiffRepositoryTest.java    | 47 ++++++++++++++++++++++
 .../org/apache/calcite/test/DiffRepositoryTest.xml | 25 ++++++++++++
 3 files changed, 78 insertions(+), 4 deletions(-)

diff --git a/testkit/src/main/java/org/apache/calcite/test/DiffRepository.java 
b/testkit/src/main/java/org/apache/calcite/test/DiffRepository.java
index 197cd97150..a6a6b9b110 100644
--- a/testkit/src/main/java/org/apache/calcite/test/DiffRepository.java
+++ b/testkit/src/main/java/org/apache/calcite/test/DiffRepository.java
@@ -30,6 +30,7 @@ import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSortedSet;
 
 import org.checkerframework.checker.nullness.qual.Nullable;
+import org.junit.jupiter.api.Assertions;
 import org.opentest4j.AssertionFailedError;
 import org.w3c.dom.CDATASection;
 import org.w3c.dom.Comment;
@@ -57,9 +58,6 @@ import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
-
 import static java.util.Objects.requireNonNull;
 
 /**
@@ -268,6 +266,10 @@ public class DiffRepository {
     }
   }
 
+  String logFilePath() {
+    return logFile.getAbsolutePath();
+  }
+
   private static URL findFile(Class<?> clazz, final String suffix) {
     // The reference file for class "com.foo.Bar" is "com/foo/Bar.xml"
     String rest = "/" + clazz.getName().replace('.', File.separatorChar)
@@ -503,7 +505,7 @@ public class DiffRepository {
             expected2.replace(Util.LINE_SEPARATOR, "\n");
         String actualCanonical =
             actual.replace(Util.LINE_SEPARATOR, "\n");
-        assertThat(tag, actualCanonical, is(expected2Canonical));
+        Assertions.assertEquals(expected2Canonical, actualCanonical, tag);
       } catch (AssertionFailedError e) {
         amend(expected, actual);
         throw e;
diff --git 
a/testkit/src/test/java/org/apache/calcite/test/DiffRepositoryTest.java 
b/testkit/src/test/java/org/apache/calcite/test/DiffRepositoryTest.java
new file mode 100644
index 0000000000..e02b570ce4
--- /dev/null
+++ b/testkit/src/test/java/org/apache/calcite/test/DiffRepositoryTest.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.calcite.test;
+
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+/**
+ * Tests for {@link DiffRepository} class.
+ */
+public class DiffRepositoryTest {
+
+  @Test void testAssertEqualsUpdatesLogFileUponFailure() throws IOException {
+    DiffRepository r = DiffRepository.lookup(DiffRepositoryTest.class);
+    final String actual = "Random sentence not present in resources file";
+    boolean assertPassed = false;
+    try {
+      r.assertEquals("content", "${content}", actual);
+      assertPassed = true;
+    } catch (AssertionError e) {
+      String logContent = String.join("", 
Files.readAllLines(Paths.get(r.logFilePath())));
+      assertThat(logContent, containsString(actual));
+    }
+    assertThat("First assertion must always fail", assertPassed, is(false));
+  }
+}
diff --git 
a/testkit/src/test/resources/org/apache/calcite/test/DiffRepositoryTest.xml 
b/testkit/src/test/resources/org/apache/calcite/test/DiffRepositoryTest.xml
new file mode 100644
index 0000000000..310d593140
--- /dev/null
+++ b/testkit/src/test/resources/org/apache/calcite/test/DiffRepositoryTest.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" ?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to you under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~ http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<Root>
+  <TestCase name="testAssertEqualsUpdatesLogFileUponFailure">
+    <Resource name="content">
+      <![CDATA[Some test content should always make assertEquals to fail
+]]>
+    </Resource>
+  </TestCase>
+</Root>

Reply via email to