Github user steveloughran commented on a diff in the pull request:
https://github.com/apache/spark/pull/20824#discussion_r174629458
--- Diff:
core/src/test/scala/org/apache/spark/internal/io/FileCommitProtocolInstantiationSuite.scala
---
@@ -0,0 +1,146 @@
+/*
+ * 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.spark.internal.io
+
+import org.apache.spark.SparkFunSuite
+
+/**
+ * Unit tests for instantiation of FileCommitProtocol implementations.
+ */
+class FileCommitProtocolInstantiationSuite extends SparkFunSuite {
+
+ test("Dynamic partitions require appropriate constructor") {
+
+ // you cannot instantiate a two-arg client with dynamic partitions
+ // enabled.
+ val ex = intercept[IllegalArgumentException] {
+ instantiateClassic(true)
+ }
+ // check the contents of the message and rethrow if unexpected
+ if (!ex.toString.contains("Dynamic Partition Overwrite")) {
--- End diff --
yes, but that loses the stack trace. And if there's one thing everyone
hates is a jenkins build which says "you got the wrong exception but we won't
say what", especially when you click through to the logs & see they've already
been deleted.
This is why when I reimplemented `intercept` for java8 I
* added the ability to specify a string which was contained
* if the evaluated closure doesn't raise and exception, and doesn't return
void or null, call toString() on the output (robustly) and include it in the
message.
What I could do here is use fail(message, throwable) and make clear what
the failure was? That way, the fact it's an assertion failure is visible, but
the stack is retained?
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]