|
24 | 24 | exceptImportError:# pragma: NO COVER |
25 | 25 | bigquery_storage=None |
26 | 26 |
|
| 27 | +try: |
| 28 | +importpyarrow |
| 29 | +exceptImportError:# pragma: NO COVER |
| 30 | +pyarrow=None |
| 31 | + |
27 | 32 |
|
28 | 33 | @unittest.skipIf(bigquery_storageisNone,"Requires `google-cloud-bigquery-storage`") |
29 | 34 | classTestBQStorageVersions(unittest.TestCase): |
| 35 | +deftearDown(self): |
| 36 | +fromgoogle.cloud.bigqueryimport_helpers |
| 37 | + |
| 38 | +# Reset any cached versions since it may not match reality. |
| 39 | +_helpers.BQ_STORAGE_VERSIONS._installed_version=None |
| 40 | + |
30 | 41 | def_object_under_test(self): |
31 | 42 | fromgoogle.cloud.bigqueryimport_helpers |
32 | 43 |
|
@@ -89,6 +100,63 @@ def test_is_read_session_optional_false(self): |
89 | 100 | assertnotversions.is_read_session_optional |
90 | 101 |
|
91 | 102 |
|
| 103 | +@unittest.skipIf(pyarrowisNone,"Requires `pyarrow`") |
| 104 | +classTestPyarrowVersions(unittest.TestCase): |
| 105 | +deftearDown(self): |
| 106 | +fromgoogle.cloud.bigqueryimport_helpers |
| 107 | + |
| 108 | +# Reset any cached versions since it may not match reality. |
| 109 | +_helpers.PYARROW_VERSIONS._installed_version=None |
| 110 | + |
| 111 | +def_object_under_test(self): |
| 112 | +fromgoogle.cloud.bigqueryimport_helpers |
| 113 | + |
| 114 | +return_helpers.PyarrowVersions() |
| 115 | + |
| 116 | +def_call_try_import(self,**kwargs): |
| 117 | +fromgoogle.cloud.bigqueryimport_helpers |
| 118 | + |
| 119 | +_helpers.PYARROW_VERSIONS._installed_version=None |
| 120 | +return_helpers.PYARROW_VERSIONS.try_import(**kwargs) |
| 121 | + |
| 122 | +deftest_try_import_raises_no_error_w_recent_pyarrow(self): |
| 123 | +fromgoogle.cloud.bigquery.exceptionsimportLegacyPyarrowError |
| 124 | + |
| 125 | +withmock.patch("pyarrow.__version__",new="5.0.0"): |
| 126 | +try: |
| 127 | +pyarrow=self._call_try_import(raise_if_error=True) |
| 128 | +self.assertIsNotNone(pyarrow) |
| 129 | +exceptLegacyPyarrowError:# pragma: NO COVER |
| 130 | +self.fail("Legacy error raised with a non-legacy dependency version.") |
| 131 | + |
| 132 | +deftest_try_import_returns_none_w_legacy_pyarrow(self): |
| 133 | +withmock.patch("pyarrow.__version__",new="2.0.0"): |
| 134 | +pyarrow=self._call_try_import() |
| 135 | +self.assertIsNone(pyarrow) |
| 136 | + |
| 137 | +deftest_try_import_raises_error_w_legacy_pyarrow(self): |
| 138 | +fromgoogle.cloud.bigquery.exceptionsimportLegacyPyarrowError |
| 139 | + |
| 140 | +withmock.patch("pyarrow.__version__",new="2.0.0"): |
| 141 | +withself.assertRaises(LegacyPyarrowError): |
| 142 | +self._call_try_import(raise_if_error=True) |
| 143 | + |
| 144 | +deftest_installed_version_returns_cached(self): |
| 145 | +versions=self._object_under_test() |
| 146 | +versions._installed_version=object() |
| 147 | +assertversions.installed_versionisversions._installed_version |
| 148 | + |
| 149 | +deftest_installed_version_returns_parsed_version(self): |
| 150 | +versions=self._object_under_test() |
| 151 | + |
| 152 | +withmock.patch("pyarrow.__version__",new="1.2.3"): |
| 153 | +version=versions.installed_version |
| 154 | + |
| 155 | +assertversion.major==1 |
| 156 | +assertversion.minor==2 |
| 157 | +assertversion.micro==3 |
| 158 | + |
| 159 | + |
92 | 160 | classTest_not_null(unittest.TestCase): |
93 | 161 | def_call_fut(self,value,field): |
94 | 162 | fromgoogle.cloud.bigquery._helpersimport_not_null |
|