1use strict;
2use warnings;
3use Perl::Lint::Policy::ValuesAndExpressions::ProhibitLeadingZeros;
4use t::Policy::Util qw/fetch_violations/;
5use Test::Base::Less;
6
7my $class_name = 'ValuesAndExpressions::ProhibitLeadingZeros';
8
9filters {
10    params => [qw/eval/], # TODO wrong!
11};
12
13for my $block (blocks) {
14    my $violations = fetch_violations($class_name, $block->input, $block->params);
15    is scalar @$violations, $block->failures, $block->dscr;
16}
17
18done_testing;
19
20__DATA__
21
22===
23--- dscr: Basic passing
24--- failures: 0
25--- params:
26--- input
27$var = 0;
28$var = 0.;
29$var = .0;
30$var = 10;
31$var = 0.0;
32$var = 00.0;
33$var = 00;
34$var = 0.11;
35$var = 10.0;
36$var = -0;
37$var = -0.;
38$var = -10;
39$var = -0.0;
40$var = -10.0
41$var = -0.11;
42$var = +0;
43$var = +0.;
44$var = +10;
45$var = +0.0;
46$var = +10.0;
47$var = +0.11;
48$var = +.011;
49$var = .011;
50$var = -.011;
51
52===
53--- dscr: Basic failure
54--- failures: 12
55--- params:
56--- input
57$var = 01;
58$var = 010;
59$var = 001;
60$var = 0010;
61$var = -01;
62$var = -010;
63$var = -001;
64$var = -0010;
65$var = +01;
66$var = +010;
67$var = +001;
68$var = +0010;
69
70===
71--- dscr: chmod
72--- failures: 0
73--- params:
74--- input
75$cnt = chmod 0755, 'foo', 'bar';
76chmod 0755, @executables;
77
78$cnt = chmod ( 0755, 'foo', 'bar' );
79chmod ( 0755, @executables );
80
81===
82--- dscr: chmod with strict option
83--- failures: 4
84--- params: {prohibit_leading_zeros => {strict => 1}}
85--- input
86$cnt = chmod 0755, 'foo', 'bar';
87chmod 0755, @executables;
88
89$cnt = chmod ( 0755, 'foo', 'bar' );
90chmod ( 0755, @executables );
91
92===
93--- dscr: dbmopen
94--- failures: 0
95--- params:
96--- input
97dbmopen %database, 'foo.db', 0600;
98dbmopen ( %database, 'foo.db', 0600 );
99
100===
101--- dscr: dbmopen with strict option
102--- failures: 2
103--- params: {prohibit_leading_zeros => {strict => 1}}
104--- input
105dbmopen %database, 'foo.db', 0600;
106dbmopen ( %database, 'foo.db', 0600 );
107
108===
109--- dscr: mkdir
110--- failures: 0
111--- params:
112--- input
113mkdir $directory, 0755;
114mkdir ( $directory, 0755 );
115
116===
117--- dscr: mkdir with strict option
118--- failures: 2
119--- params: {prohibit_leading_zeros => {strict => 1}}
120--- input
121mkdir $directory, 0755;
122mkdir ( $directory, 0755 );
123
124===
125--- dscr: sysopen
126--- failures: 0
127--- params:
128--- input
129sysopen $filehandle, $filename, O_RDWR, 0666;
130sysopen ( $filehandle, $filename, O_WRONLY | O_CREAT | O_EXCL, 0666 );
131sysopen ( $filehandle, $filename, (O_WRONLY | O_CREAT | O_EXCL), 0666 );
132
133===
134--- dscr: sysopen with strict option
135--- failures: 3
136--- params: {prohibit_leading_zeros => {strict => 1}}
137--- input
138sysopen $filehandle, $filename, O_RDWR, 0666;
139sysopen ( $filehandle, $filename, O_WRONLY | O_CREAT | O_EXCL, 0666 );
140sysopen ( $filehandle, $filename, (O_WRONLY | O_CREAT | O_EXCL), 0666 );
141
142===
143--- dscr: umask
144--- failures: 0
145--- params:
146--- input
147umask 002;
148umask ( 002 );
149
150===
151--- dscr: umask with strict option
152--- failures: 2
153--- params: {prohibit_leading_zeros => {strict => 1}}
154--- input
155umask 002;
156umask ( 002 );
157
158===
159--- dscr: no lint
160--- failures: 4
161--- params:
162--- input
163$var = 01;
164$var = 010;
165$var = 001; ## no lint
166$var = 0010;
167$var = -01;
168
169