Skip to content

Commit

Permalink
[SPARK-28130][PYTHON] Print pretty messages for skipped tests when xm…
Browse files Browse the repository at this point in the history
…lrunner is available in PySpark

## What changes were proposed in this pull request?

Currently, pretty skipped message added by f7435be mechanism seems not working when xmlrunner is installed apparently.

This PR fixes two things:

1. When `xmlrunner` is installed, seems `xmlrunner` does not respect `vervosity` level in unittests (default is level 1).

    So the output looks as below

    ```
    Running tests...
     ----------------------------------------------------------------------
    SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
    ----------------------------------------------------------------------
    ```

    So it is not caught by our message detection mechanism.

2. If we manually set the `vervocity` level to `xmlrunner`, it prints messages as below:

    ```
    test_mixed_udf (pyspark.sql.tests.test_pandas_udf_scalar.ScalarPandasUDFTests) ... SKIP (0.000s)
    test_mixed_udf_and_sql (pyspark.sql.tests.test_pandas_udf_scalar.ScalarPandasUDFTests) ... SKIP (0.000s)
    ...
    ```

    This is different in our Jenkins machine:

    ```
    test_createDataFrame_column_name_encoding (pyspark.sql.tests.test_arrow.ArrowTests) ... skipped 'Pandas >= 0.23.2 must be installed; however, it was not found.'
    test_createDataFrame_does_not_modify_input (pyspark.sql.tests.test_arrow.ArrowTests) ... skipped 'Pandas >= 0.23.2 must be installed; however, it was not found.'
    ...
    ```

    Note that last `SKIP` is different. This PR fixes the regular expression to catch `SKIP` case as well.

## How was this patch tested?

Manually tested.

**Before:**

```
Starting test(python2.7): pyspark....
Finished test(python2.7): pyspark.... (0s)
...
Tests passed in 562 seconds

========================================================================
...
```

**After:**

```
Starting test(python2.7): pyspark....
Finished test(python2.7): pyspark.... (48s) ... 93 tests were skipped
...
Tests passed in 560 seconds

Skipped tests pyspark.... with python2.7:
      pyspark...(...) ... SKIP (0.000s)
...

========================================================================
...
```

Closes #24927 from HyukjinKwon/SPARK-28130.

Authored-by: HyukjinKwon <gurwls223@apache.org>
Signed-off-by: HyukjinKwon <gurwls223@apache.org>
  • Loading branch information
HyukjinKwon committed Jun 24, 2019
1 parent a00774a commit 7c05f61
Show file tree
Hide file tree
Showing 60 changed files with 68 additions and 64 deletions.
2 changes: 1 addition & 1 deletion python/pyspark/ml/tests/test_algorithms.py
Expand Up @@ -334,7 +334,7 @@ def test_linear_regression_with_huber_loss(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/ml/tests/test_base.py
Expand Up @@ -71,7 +71,7 @@ def testDefaultFitMultiple(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/ml/tests/test_evaluation.py
Expand Up @@ -57,7 +57,7 @@ def test_clustering_evaluator_with_cosine_distance(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/ml/tests/test_feature.py
Expand Up @@ -307,7 +307,7 @@ def test_apply_binary_term_freqs(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/ml/tests/test_image.py
Expand Up @@ -104,7 +104,7 @@ def test_read_images_multiple_times(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/ml/tests/test_linalg.py
Expand Up @@ -382,7 +382,7 @@ def test_infer_schema(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/ml/tests/test_param.py
Expand Up @@ -360,7 +360,7 @@ def test_java_params(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/ml/tests/test_persistence.py
Expand Up @@ -392,7 +392,7 @@ def test_default_read_write_default_params(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/ml/tests/test_pipeline.py
Expand Up @@ -63,7 +63,7 @@ def doTransform(pipeline):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/ml/tests/test_stat.py
Expand Up @@ -44,7 +44,7 @@ def test_chisquaretest(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/ml/tests/test_training_summary.py
Expand Up @@ -245,7 +245,7 @@ def test_kmeans_summary(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/ml/tests/test_tuning.py
Expand Up @@ -538,7 +538,7 @@ def test_copy(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/ml/tests/test_wrapper.py
Expand Up @@ -112,7 +112,7 @@ def test_new_java_array(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/mllib/tests/test_algorithms.py
Expand Up @@ -296,7 +296,7 @@ def test_fpgrowth(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/mllib/tests/test_feature.py
Expand Up @@ -186,7 +186,7 @@ def test_pca(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/mllib/tests/test_linalg.py
Expand Up @@ -623,7 +623,7 @@ def test_regression(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/mllib/tests/test_stat.py
Expand Up @@ -182,7 +182,7 @@ def test_R_implementation_equivalence(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/mllib/tests/test_streaming_algorithms.py
Expand Up @@ -508,7 +508,7 @@ def condition():

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/mllib/tests/test_util.py
Expand Up @@ -98,7 +98,7 @@ def test_to_java_object_rdd(self): # SPARK-6660

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/sql/tests/test_appsubmit.py
Expand Up @@ -91,7 +91,7 @@ def test_hivecontext(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/sql/tests/test_arrow.py
Expand Up @@ -424,7 +424,7 @@ def conf(cls):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/sql/tests/test_catalog.py
Expand Up @@ -194,7 +194,7 @@ def test_list_columns(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/sql/tests/test_column.py
Expand Up @@ -152,7 +152,7 @@ def test_bitwise_operations(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/sql/tests/test_conf.py
Expand Up @@ -50,7 +50,7 @@ def test_conf(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/sql/tests/test_context.py
Expand Up @@ -256,7 +256,7 @@ def range_frame_match():

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/sql/tests/test_dataframe.py
Expand Up @@ -774,7 +774,7 @@ def test_query_execution_listener_on_collect_with_arrow(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/sql/tests/test_datasources.py
Expand Up @@ -165,7 +165,7 @@ def test_ignore_column_of_all_nulls(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/sql/tests/test_functions.py
Expand Up @@ -301,7 +301,7 @@ def test_input_file_name_reset_for_rdd(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/sql/tests/test_group.py
Expand Up @@ -40,7 +40,7 @@ def test_aggregator(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/sql/tests/test_pandas_udf.py
Expand Up @@ -247,7 +247,7 @@ def udf(column):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/sql/tests/test_pandas_udf_grouped_agg.py
Expand Up @@ -480,7 +480,7 @@ def test_grouped_with_empty_partition(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/sql/tests/test_pandas_udf_grouped_map.py
Expand Up @@ -522,7 +522,7 @@ def test_grouped_with_empty_partition(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/sql/tests/test_pandas_udf_scalar.py
Expand Up @@ -1105,7 +1105,7 @@ def test_datasource_with_udf(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/sql/tests/test_pandas_udf_window.py
Expand Up @@ -356,7 +356,7 @@ def test_bounded_mixed(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/sql/tests/test_readwriter.py
Expand Up @@ -148,7 +148,7 @@ def count_bucketed_cols(names, table="pyspark_bucket"):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/sql/tests/test_serde.py
Expand Up @@ -143,7 +143,7 @@ def test_int_array_serialization(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/sql/tests/test_session.py
Expand Up @@ -316,7 +316,7 @@ def test_use_custom_class_for_extensions(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/sql/tests/test_streaming.py
Expand Up @@ -571,7 +571,7 @@ def collectBatch(df, id):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/sql/tests/test_types.py
Expand Up @@ -957,7 +957,7 @@ def __init__(self, **kwargs):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/sql/tests/test_udf.py
Expand Up @@ -633,7 +633,7 @@ def test_udf_init_shouldnt_initialize_context(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
2 changes: 1 addition & 1 deletion python/pyspark/sql/tests/test_utils.py
Expand Up @@ -49,7 +49,7 @@ def test_capture_illegalargument_exception(self):

try:
import xmlrunner
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports')
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
5 changes: 3 additions & 2 deletions python/pyspark/streaming/tests/test_context.py
Expand Up @@ -179,6 +179,7 @@ def test_await_termination_or_timeout(self):

try:
import xmlrunner
unittest.main(testRunner=xmlrunner.XMLTestRunner(output='target/test-reports'), verbosity=2)
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
unittest.main(verbosity=2)
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
5 changes: 3 additions & 2 deletions python/pyspark/streaming/tests/test_dstream.py
Expand Up @@ -645,6 +645,7 @@ def check_output(n):

try:
import xmlrunner
unittest.main(testRunner=xmlrunner.XMLTestRunner(output='target/test-reports'), verbosity=2)
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
unittest.main(verbosity=2)
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)
5 changes: 3 additions & 2 deletions python/pyspark/streaming/tests/test_kinesis.py
Expand Up @@ -84,6 +84,7 @@ def get_output(_, rdd):

try:
import xmlrunner
unittest.main(testRunner=xmlrunner.XMLTestRunner(output='target/test-reports'), verbosity=2)
testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
except ImportError:
unittest.main(verbosity=2)
testRunner = None
unittest.main(testRunner=testRunner, verbosity=2)

0 comments on commit 7c05f61

Please sign in to comment.