diff options
author | Lucas Cavalcante de Sousa <lucks.sousa@gmail.com> | 2020-11-25 10:38:46 -0300 |
---|---|---|
committer | Felipe Magno de Almeida <felipe@expertise.dev> | 2020-12-14 12:33:32 -0300 |
commit | 567387aab04efa25f4ed3718a1d4fe149e792c49 (patch) | |
tree | 96cc31cdd57d24c963827fc27da15b01f02323ac | |
parent | cf5884de1b2e4dd4a804bb0795c1323effdf34f7 (diff) | |
download | efl-567387aab04efa25f4ed3718a1d4fe149e792c49.tar.gz |
efl_mono: Use architecture independent ECANCELED
Summary:
`efl_mono` was assuming ECANCELED as in Linux, which made some tests
fail.
`test_simple_futere_cancel` and `test_cancel_after_resolve` checks if
the returned error code is `ECANCELED` but `Eina.Error.ECANCELED` was
base on Linux `ECANCELED` which is diferent from OSX causing:
```
[ ERROR ] AssertionException: /Users/lucas/expertise/efl1/src/tests/efl_mono/Promises.cs:138 (test_simple_future_cancel) Left hand side "Eina.Error(89)", right hand side "Eina.Error(125)"
at Test.AssertEquals[T](T lhs, T rhs, String msg, Int32 line, String file, String member) in /Users/lucas/expertise/efl1/src/tests/efl_mono/TestUtils.cs:line 73
at TestSuite.TestPromises.test_simple_future_cancel() in /Users/lucas/expertise/efl1/src/tests/efl_mono/Promises.cs:line 138
[ FAIL ] TestPromises.test_simple_future_cancel
```
```
[ ERROR ] AssertionException: /Users/lucas/expertise/efl1/src/tests/efl_mono/Promises.cs:256 (test_cancel_after_resolve) Left hand side "Eina.Error(89)", right hand side "Eina.Error(125)"
at Test.AssertEquals[T](T lhs, T rhs, String msg, Int32 line, String file, String member) in /Users/lucas/expertise/efl1/src/tests/efl_mono/TestUtils.cs:line 73
at TestSuite.TestPromises.test_cancel_after_resolve() in /Users/lucas/expertise/efl1/src/tests/efl_mono/Promises.cs:line 256
[ FAIL ] TestPromises.test_cancel_after_resolve
```
And `iwraper.cs:WrapAssync` was only considering Linux `ECANCELED` thus causing
a rise of an `Efl.FutureException: Future failed` instead of the expected
`TaskCanceledException` making fail at `TestEoAsyncMethods.test_async_cancel`:
```
[ RUN ] TestEoAsyncMethods.test_async_cancel
[ ERROR ] AssertionException: Assertion failed: /Users/lucas/expertise/efl1/src/tests/efl_mono/EoPromises.cs:175 (test_async_cancel) AggregateException must have been TaskCanceledException
at Test.Assert(Boolean res, String msg, Int32 line, String file, String member) in /Users/lucas/expertise/efl1/src/tests/efl_mono/TestUtils.cs:line 53
at TestSuite.TestEoAsyncMethods.<>c.<test_async_cancel>b__1_0(Exception x) in /Users/lucas/expertise/efl1/src/tests/efl_mono/EoPromises.cs:line 175
at System.AggregateException.Handle(Func`2 predicate)
at TestSuite.TestEoAsyncMethods.test_async_cancel() in /Users/lucas/expertise/efl1/src/tests/efl_mono/EoPromises.cs:line 171
[ FAIL ] TestEoAsyncMethods.test_async_cancel
```
Depends on D12156
Test Plan:
Compare with master and note that with this diff all tests pass.
- Configure as especified by Enlightenment man page + `-Dbindigns=mono -Ddotnet=true`:
```
meson -Dsystemd=false -Dv4l2=false -Davahi=false -Deeze=false -Dx11=false -Dopengl=full -Dcocoa=true -Dnls=false -Demotion-loaders-disabler=gstreamer1,libvlc,xine -Decore-imf-loaders-disabler=scim,ibus -Dbindigns=cxx,mono -Ddotnet=true build
```
- Build normally
- Test `efl-mono-suite`
Reviewers: felipealmeida
Reviewed By: felipealmeida
Subscribers: ProhtMeyhet, cedric, #reviewers, #committers, woohyun
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12157
-rw-r--r-- | src/bindings/mono/eina_mono/eina_error.cs | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/bindings/mono/eina_mono/eina_error.cs b/src/bindings/mono/eina_mono/eina_error.cs index 1300e796ab..004792fdb7 100644 --- a/src/bindings/mono/eina_mono/eina_error.cs +++ b/src/bindings/mono/eina_mono/eina_error.cs @@ -59,11 +59,27 @@ public struct Error : IComparable<Error>, IEquatable<Error> /// <para>Since EFL 1.23.</para> /// </summary> public static readonly Error ENOENT = new Error(2); + + /// <summary> + /// Return architecture independent ECANCELED error code. + /// Returns 125 for Linux, 89 for OSX and 105 for Windows. + /// <para>Since EFL 1.25.</para> + /// </summary> + private static int IndependentECANCELED() + { + if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) + return new Error(125); + else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) + return new Error(89); + else // Windows + return new Error(105); + } + /// <summary> /// Cancelled error identifier. /// <para>Since EFL 1.23.</para> /// </summary> - public static readonly Error ECANCELED = new Error(125); + public static readonly Error ECANCELED = IndependentECANCELED(); /// <summary> /// Constructor. |