Skip to content

Commit d77dccb

Browse files
committed
python.version: increase robustness
1 parent 5e74566 commit d77dccb

File tree

8 files changed

+18
-21
lines changed

8 files changed

+18
-21
lines changed

+stdlib/+legacy/get_permissions.m

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
p = '';
44

5-
if ~stdlib.exists(file), return, end
6-
7-
p = stdlib.native.perm2char(filePermissions(file), file);
5+
if stdlib.exists(file)
6+
p = stdlib.native.perm2char(file_attributes(file), file);
7+
end
88

99
end

+stdlib/+native/get_permissions.m

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@
22

33
p = '';
44

5-
if ~stdlib.exists(file), return, end
6-
7-
v = filePermissions(file);
8-
9-
p = stdlib.native.perm2char(v, file);
5+
if stdlib.exists(file)
6+
p = stdlib.native.perm2char(filePermissions(file), file);
7+
end
108

119
end

+stdlib/+python/private/pvt_python_version.m

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
vs = pe.Version;
77
if stdlib.strempty(vs), return, end
88

9+
% this line may error like
10+
% "Python Error: TypeError: cannot create 'sys.version_info' instances"
11+
% if Python version incompatible or something got corrupted in loading Python library
912
vi = py.sys.version_info;
1013
v = [double(vi.major), double(vi.minor), double(vi.micro)];
1114

+stdlib/+python/version.m

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,9 @@
1515
return
1616
end
1717

18-
try
18+
% need to have no catch section as glitchy Python load can make TypeError etc.
19+
try %#ok<TRYNC>
1920
v = pvt_python_version();
20-
catch e
21-
switch e.identifier
22-
case {'Octave:undefined-function', 'MATLAB:Python:PythonUnavailable'} % pass
23-
otherwise, rethrow(e)
24-
end
2521
end
2622

2723
end

test/TestDisk.m

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ function test_disk_ac(tc, Ps, disk_ac_fun, disk_ac_name)
3838
tc.verifyEqual(r, uint64(0))
3939
end
4040
catch e
41-
tc.verifyEqual(e.identifier, 'stdlib:choose_method:NameError')
41+
tc.verifyEqual(e.identifier, 'stdlib:choose_method:NameError', e.message)
4242
end
4343
end
4444

@@ -53,7 +53,7 @@ function test_hard_link_count(tc, hl_fun)
5353
r = h(P, hl_fun);
5454
tc.verifyGreaterThanOrEqual(r, 1)
5555
catch e
56-
tc.verifyEqual(e.identifier, 'stdlib:choose_method:NameError')
56+
tc.verifyEqual(e.identifier, 'stdlib:choose_method:NameError', e.message)
5757
end
5858
end
5959

@@ -101,7 +101,7 @@ function test_inode_device(tc, id_fun, id_name)
101101
tc.verifyGreaterThan(ip, 0)
102102
tc.verifyEqual(h(".", id_fun), ip)
103103
catch e
104-
tc.verifyEqual(e.identifier, 'stdlib:choose_method:NameError')
104+
tc.verifyEqual(e.identifier, 'stdlib:choose_method:NameError', e.message)
105105
end
106106

107107
end

test/TestExists.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ function test_is_rw(tc, Ps, method, fname)
3737
r = h(Ps{1}, method);
3838
tc.verifyEqual(r, Ps{2})
3939
catch e
40-
tc.verifyEqual(e.identifier, 'stdlib:choose_method:NameError')
40+
tc.verifyEqual(e.identifier, 'stdlib:choose_method:NameError', e.message)
4141
end
4242
end
4343

test/TestPermissions.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ function test_get_permissions(tc, Ps, fname)
2020
try
2121
p = stdlib.get_permissions(Ps, fname);
2222
catch e
23-
tc.verifyEqual(e.identifier, 'stdlib:choose_method:NameError')
23+
tc.verifyEqual(e.identifier, 'stdlib:choose_method:NameError', e.message)
2424
return
2525
end
2626
tc.verifyClass(p, "char")
@@ -70,7 +70,7 @@ function test_set_permissions_nowrite(tc, fname)
7070
try
7171
tc.verifyTrue(stdlib.set_permissions(nw, 0, -1, 0, fname))
7272
catch e
73-
tc.verifyEqual(e.identifier, 'stdlib:choose_method:NameError')
73+
tc.verifyEqual(e.identifier, 'stdlib:choose_method:NameError', e.message)
7474
return
7575
end
7676

test/TestSys.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ function test_cpu_load(tc, cpu_load_method)
6161
r = h(cpu_load_method);
6262
tc.verifyGreaterThanOrEqual(r, 0.)
6363
catch e
64-
tc.verifyEqual(e.identifier, 'stdlib:choose_method:NameError')
64+
tc.verifyEqual(e.identifier, 'stdlib:choose_method:NameError', e.message)
6565
end
6666
end
6767

0 commit comments

Comments
 (0)