This is an automated email from the ASF dual-hosted git repository.
kevingurney pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/main by this push:
new fc96fd2fb5 GH-37245: [MATLAB] `arrow.internal.proxy.validate` throws
`MATLAB:UndefinedFunction` when crafting the message to display when throwing
the `arrow:proxy:ProxyNameMismatch` error (#37248)
fc96fd2fb5 is described below
commit fc96fd2fb5f2e3ca6f8e1dbaa86c095641653920
Author: sgilmore10 <[email protected]>
AuthorDate: Fri Aug 18 13:59:27 2023 -0400
GH-37245: [MATLAB] `arrow.internal.proxy.validate` throws
`MATLAB:UndefinedFunction` when crafting the message to display when throwing
the `arrow:proxy:ProxyNameMismatch` error (#37248)
### Rationale for this change
When constructing the message to display for with the
`arrow:proxy:ProxyNameMismatch` error, we refer to an undefined variable in
`arrow.internal.proxy.validate()`. This causes the function to throw a
`MATLAB:UndefinedFunction` error instead of the intended one.
Here's an example of this bug:
```matlab
>> a = arrow.array([1 2 3]);
>> arrow.internal.proxy.validate(a.Proxy, "WrongProxyName")
Unrecognized function or variable 'proxyName'.
Error in arrow.internal.proxy.validate (line 26)
msg = "Proxy class name is " + proxyName + ", but expected " +
expectedProxyName;
```
This was the expected error message:
```matlab
>> a = arrow.array([1 2 3]);
>> arrow.internal.proxy.validate(a.Proxy, "WrongProxyName")
Error using arrow.internal.proxy.validate
Proxy class name is arrow.array.proxy.Float64Array, but expected
WrongProxyName
```
### What changes are included in this PR?
1. Fixed the typos in `arrow.internal.proxy.validate()` to resolve the
`MATLAB:UndefinedFunction` error
2. Added a new test class `test/arrow/internal/proxy/tValidate.m` to test
`arrow.internal.proxy.validate()`
3. Updated the error message to display when throwing an
`arrow:proxy:ProxyNameMismatch` error:
```matlab
>> a = arrow.array([1 2 3]);
>> arrow.internal.proxy.validate(a.Proxy, "WrongProxyName")
Error using arrow.internal.proxy.validate
The Name property of the Proxy provided is
"arrow.array.proxy.Float64Array", but
expected it to be "WrongProxyName".
```
### Are these changes tested?
Yes, added a new test class `test/arrow/internal/proxy/tValidate.m`.
### Are there any user-facing changes?
No.
* Closes: #37245
Authored-by: Sarah Gilmore <[email protected]>
Signed-off-by: Kevin Gurney <[email protected]>
---
.../src/matlab/+arrow/+internal/+proxy/validate.m | 5 +--
matlab/test/arrow/internal/proxy/tValidate.m | 42 ++++++++++++++++++++++
2 files changed, 45 insertions(+), 2 deletions(-)
diff --git a/matlab/src/matlab/+arrow/+internal/+proxy/validate.m
b/matlab/src/matlab/+arrow/+internal/+proxy/validate.m
index 1b2b3649e4..0aeb6074fc 100644
--- a/matlab/src/matlab/+arrow/+internal/+proxy/validate.m
+++ b/matlab/src/matlab/+arrow/+internal/+proxy/validate.m
@@ -18,12 +18,13 @@ function validate(proxy, expectedName)
% proxy.Name and expectedName are not equal.
arguments
proxy(1, 1) libmexclass.proxy.Proxy
- expectedName(1, 1) string
+ expectedName(1, 1) string {mustBeNonmissing, mustBeNonzeroLengthText}
end
if proxy.Name ~= expectedName
errid = "arrow:proxy:ProxyNameMismatch";
- msg = "Proxy class name is " + proxyName + ", but expected " +
expectedProxyName;
+ msg = compose("The Name property of the Proxy provided is ""%s"", " +
...
+ "but expected it to be ""%s"".", proxy.Name, expectedName);
error(errid, msg);
end
end
diff --git a/matlab/test/arrow/internal/proxy/tValidate.m
b/matlab/test/arrow/internal/proxy/tValidate.m
new file mode 100644
index 0000000000..268c71f745
--- /dev/null
+++ b/matlab/test/arrow/internal/proxy/tValidate.m
@@ -0,0 +1,42 @@
+%TVALIDATE Unit tests for arrow.internal.proxy.validate
+
+% 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.
+
+classdef tValidate < matlab.unittest.TestCase
+
+ methods(Test)
+ function ProxyNameMatches(testCase)
+ % Verify arrow.internal.proxy.validate() does not throw an
+ % error if the Name property of the Proxy provided matches
+ % the expected proxy name.
+ import arrow.internal.proxy.validate
+ a = arrow.array(1);
+ fcn = @() validate(a.Proxy, a.Proxy.Name);
+ testCase.verifyWarningFree(fcn);
+ end
+
+ function ProxyNameMismatchError(testCase)
+ % Verify arrow.internal.proxy.validate() throws an error
+ % whose identifier is "arrow:proxy:ProxyNameMismatch" if the
+ % Name property of the Proxy provided does not match the
+ % expected proxy name.
+ import arrow.internal.proxy.validate
+ a = arrow.array(1);
+ fcn = @() validate(a.Proxy, "NotAProxyName");
+ testCase.verifyError(fcn, "arrow:proxy:ProxyNameMismatch");
+ end
+ end
+end
\ No newline at end of file