Skip to content

Commit 832f633

Browse files
committed
add lint testing
1 parent e971faa commit 832f633

File tree

5 files changed

+95
-20
lines changed

5 files changed

+95
-20
lines changed

+hdf5nc/MLint.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+

+hdf5nc/TestALint.m

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
classdef TestALint < matlab.unittest.TestCase
2+
3+
properties
4+
TestData
5+
end
6+
7+
methods (TestClassSetup)
8+
9+
function get_files(tc)
10+
import matlab.unittest.constraints.IsFile
11+
import matlab.unittest.constraints.IsFolder
12+
13+
cwd = fileparts(mfilename('fullpath'));
14+
folder = fullfile(cwd, '..');
15+
cfg_file = fullfile(cwd, "MLint.txt");
16+
17+
tc.assumeThat(folder, IsFolder)
18+
tc.assumeThat(cfg_file, IsFile)
19+
20+
tc.TestData.folder = folder;
21+
tc.TestData.cfg_file = cfg_file;
22+
23+
flist = dir(tc.TestData.folder + "/**/*.m");
24+
N = length(flist);
25+
tc.assumeGreaterThan(N, 0)
26+
27+
tc.TestData.flist = flist;
28+
tc.TestData.N = N;
29+
end
30+
31+
end
32+
33+
methods (Test)
34+
35+
function test_lint(tc)
36+
37+
flist = tc.TestData.flist;
38+
39+
for i = 1:tc.TestData.N
40+
file = fullfile(flist(i).folder, flist(i).name);
41+
42+
res = checkcode(file, "-config=" + tc.TestData.cfg_file, "-fullpath");
43+
44+
for j = 1:length(res)
45+
tc.verifyFail(append(file, ":", int2str(res(j).line), " ", res(j).message))
46+
end
47+
end
48+
49+
end
50+
51+
end
52+
53+
end

+hdf5nc/ncsave.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ function ncsave(filename, varname, A, opts)
3434
ncdims = opts.dims;
3535

3636
for i = 2:2:length(opts.dims)
37-
sizeA(i/2) = opts.dims{i};
37+
sizeA(i/2) = opts.dims{i}; %#ok<AGROW>
3838
end
3939
end
4040
% coerce if needed

+hdf5nc/test_hdf5.m

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,18 @@ function test_auto_chunk_size(tc)
4343

4444
function test_get_variables(tc)
4545
import hdf5nc.h5variables
46+
4647
vars = h5variables(tc.TestData.basic);
4748
tc.verifyEqual(sort(vars), ["A0", "A1", "A2", "A3", "A4"])
4849
end
4950

5051

5152
function test_exists(tc)
5253
import hdf5nc.h5exists
54+
import matlab.unittest.constraints.IsScalar
55+
5356
e0 = h5exists(tc.TestData.basic, '/A3');
54-
tc.verifyTrue(isscalar(e0))
57+
tc.verifyThat(e0, IsScalar)
5558
tc.verifyTrue(e0)
5659

5760
tc.verifyFalse(h5exists(tc.TestData.basic, '/oops'))
@@ -64,14 +67,15 @@ function test_exists(tc)
6467

6568
function test_size(tc)
6669
import hdf5nc.h5size
70+
import matlab.unittest.constraints.IsScalar
6771
basic = tc.TestData.basic;
6872

6973
s = h5size(basic, '/A0');
70-
tc.verifyTrue(isscalar(s))
74+
tc.verifyThat(s, IsScalar)
7175
tc.verifyEqual(s, 1)
7276

7377
s = h5size(basic, '/A1');
74-
tc.verifyTrue(isscalar(s))
78+
tc.verifyThat(s, IsScalar)
7579
tc.verifyEqual(s, 2)
7680

7781
s = h5size(basic, '/A2');
@@ -89,9 +93,13 @@ function test_size(tc)
8993

9094

9195
function test_read(tc)
96+
import matlab.unittest.constraints.IsScalar
97+
import matlab.unittest.constraints.IsFile
9298
basic = tc.TestData.basic;
99+
tc.assumeThat(basic, IsFile)
100+
93101
s = h5read(basic, '/A0');
94-
tc.verifyTrue(isscalar(s))
102+
tc.verifyThat(s, IsScalar)
95103
tc.verifyEqual(s, 42)
96104

97105
s = h5read(basic, '/A1');
@@ -114,13 +122,14 @@ function test_read(tc)
114122

115123
function test_coerce(tc)
116124
import hdf5nc.h5save
125+
import matlab.unittest.constraints.IsFile
117126
basic = tc.TestData.basic;
118127

119128
h5save(basic, '/int32', 0, "type", 'int32')
120129
h5save(basic, '/int64', 0, "type", 'int64')
121130
h5save(basic, '/float32', 0, "type", 'float32')
122131

123-
tc.assumeTrue(isfile(basic))
132+
tc.assumeThat(basic, IsFile)
124133

125134
tc.verifyClass(h5read(basic, '/int32'), 'int32')
126135
tc.verifyClass(h5read(basic, '/int64'), 'int64')
@@ -130,23 +139,26 @@ function test_coerce(tc)
130139

131140
function test_rewrite(tc)
132141
import hdf5nc.h5save
142+
import matlab.unittest.constraints.IsFile
133143
basic = tc.TestData.basic;
144+
134145
h5save(basic, '/A2', 3*magic(4))
135-
tc.assumeTrue(isfile(basic))
146+
147+
tc.assumeThat(basic, IsFile)
136148
tc.verifyEqual(h5read(basic, '/A2'), 3*magic(4))
137149
end
138150

139151
function test_string(tc)
140152
import hdf5nc.h5save
141-
h5save(tc.TestData.basic, "/a_string", "hello")
142-
h5save(tc.TestData.basic, "/a_char", 'there')
153+
basic = tc.TestData.basic;
154+
155+
h5save(basic, "/a_string", "hello")
156+
h5save(basic, "/a_char", 'there')
143157

144-
astr = h5read(tc.TestData.basic, "/a_string");
145-
achar = h5read(tc.TestData.basic, "/a_char");
158+
astr = h5read(basic, "/a_string");
159+
achar = h5read(basic, "/a_char");
146160
tc.verifyEqual(astr, "hello")
147161
tc.verifyEqual(achar, "there")
148-
tc.verifyClass(astr, "string")
149-
tc.verifyClass(achar, "string")
150162
end
151163

152164
function test_real_only(tc)

+hdf5nc/test_netcdf.m

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,10 @@ function test_get_variables(tc)
4444

4545
function test_exists(tc)
4646
import hdf5nc.ncexists
47+
import matlab.unittest.constraints.IsScalar
48+
4749
e0 = ncexists(tc.TestData.basic, 'A3');
48-
tc.verifyTrue(isscalar(e0))
50+
tc.verifyThat(e0, IsScalar)
4951
tc.verifyTrue(e0)
5052

5153
tc.verifyFalse(ncexists(tc.TestData.basic, '/oops'))
@@ -58,14 +60,15 @@ function test_exists(tc)
5860

5961
function test_size(tc)
6062
import hdf5nc.ncsize
63+
import matlab.unittest.constraints.IsScalar
6164
basic = tc.TestData.basic;
6265

6366
s = ncsize(basic, 'A0');
64-
tc.verifyTrue(isscalar(s))
67+
tc.verifyThat(s, IsScalar)
6568
tc.verifyEqual(s, 1)
6669

6770
s = ncsize(basic, 'A1');
68-
tc.verifyTrue(isscalar(s))
71+
tc.verifyThat(s, IsScalar)
6972
tc.verifyEqual(s, 2)
7073

7174
s = ncsize(basic, 'A2');
@@ -83,10 +86,13 @@ function test_size(tc)
8386

8487

8588
function test_read(tc)
89+
import matlab.unittest.constraints.IsScalar
90+
import matlab.unittest.constraints.IsFile
8691
basic = tc.TestData.basic;
92+
tc.assumeThat(basic, IsFile)
8793

8894
s = ncread(basic, '/A0');
89-
tc.verifyTrue(isscalar(s))
95+
tc.verifyThat(s, IsScalar)
9096
tc.verifyEqual(s, 42)
9197

9298
s = ncread(basic, '/A1');
@@ -109,14 +115,14 @@ function test_read(tc)
109115

110116
function test_coerce(tc)
111117
import hdf5nc.ncsave
112-
118+
import matlab.unittest.constraints.IsFile
113119
basic = tc.TestData.basic;
114120

115121
ncsave(basic, 'int32', 0, "type", 'int32')
116122
ncsave(basic, 'int64', 0, "type", 'int64')
117123
ncsave(basic, 'float32', 0, "type", 'float32')
118124

119-
tc.assumeTrue(isfile(basic))
125+
tc.assumeThat(basic, IsFile)
120126

121127
tc.verifyClass(h5read(basic, '/int32'), 'int32')
122128
tc.verifyClass(h5read(basic, '/int64'), 'int64')
@@ -126,9 +132,12 @@ function test_coerce(tc)
126132

127133
function test_rewrite(tc)
128134
import hdf5nc.ncsave
135+
import matlab.unittest.constraints.IsFile
129136
basic = tc.TestData.basic;
137+
130138
ncsave(basic, 'A2', 3*magic(4))
131-
tc.assumeTrue(isfile(basic))
139+
140+
tc.assumeThat(basic, IsFile)
132141
tc.verifyEqual(ncread(basic, 'A2'), 3*magic(4))
133142
end
134143

0 commit comments

Comments
 (0)