glark 1.9.0 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/bin/glark +2 -2
- data/lib/glark.rb +1 -1
- data/lib/glark/app/app.rb +48 -0
- data/lib/glark/app/help.rb +103 -0
- data/lib/glark/app/info/options.rb +84 -0
- data/lib/glark/app/options.rb +201 -0
- data/lib/glark/app/rcfile.rb +49 -0
- data/lib/glark/app/runner.rb +140 -0
- data/lib/glark/app/spec.rb +19 -0
- data/lib/glark/input/filter/criteria_opts.rb +41 -0
- data/lib/glark/input/filter/dir_criteria_opts.rb +37 -0
- data/lib/glark/input/filter/file_criteria_opts.rb +33 -0
- data/lib/glark/input/filter/filter.rb +59 -0
- data/lib/glark/input/filter/options.rb +171 -0
- data/lib/glark/input/options.rb +120 -0
- data/lib/glark/input/range.rb +104 -0
- data/lib/glark/input/spec.rb +39 -0
- data/lib/glark/io/file/archive_file.rb +64 -0
- data/lib/glark/io/file/binary_file.rb +19 -0
- data/lib/glark/io/file/file.rb +57 -0
- data/lib/glark/io/file/gz_file.rb +21 -0
- data/lib/glark/io/file/tar_file.rb +35 -0
- data/lib/glark/io/file/tar_gz_file.rb +52 -0
- data/lib/glark/io/file/zip_file.rb +39 -0
- data/lib/glark/match/and.rb +83 -0
- data/lib/glark/match/and_distance.rb +58 -0
- data/lib/glark/match/compound.rb +34 -0
- data/lib/glark/match/expression.rb +63 -0
- data/lib/glark/match/factory.rb +173 -0
- data/lib/glark/match/ior.rb +20 -0
- data/lib/glark/match/options.rb +74 -0
- data/lib/glark/match/or.rb +41 -0
- data/lib/glark/match/re.rb +81 -0
- data/lib/glark/match/re_factory.rb +44 -0
- data/lib/glark/match/spec.rb +59 -0
- data/lib/glark/match/xor.rb +20 -0
- data/lib/glark/output/binary_file_summary.rb +17 -0
- data/lib/glark/output/common.rb +43 -0
- data/lib/glark/output/context.rb +57 -0
- data/lib/glark/output/count.rb +26 -0
- data/lib/glark/output/file_header.rb +20 -0
- data/lib/glark/output/file_name_only.rb +35 -0
- data/lib/glark/output/formatted.rb +22 -0
- data/lib/glark/output/glark_count.rb +23 -0
- data/lib/glark/output/glark_format.rb +62 -0
- data/lib/glark/output/glark_lines.rb +36 -0
- data/lib/glark/output/grep_count.rb +18 -0
- data/lib/glark/output/grep_lines.rb +42 -0
- data/lib/glark/output/line_status.rb +46 -0
- data/lib/glark/output/lines.rb +100 -0
- data/lib/glark/output/match_list.rb +15 -0
- data/lib/glark/output/options.rb +103 -0
- data/lib/glark/output/results.rb +23 -0
- data/lib/glark/output/spec.rb +105 -0
- data/lib/glark/output/unfiltered_lines.rb +28 -0
- data/lib/glark/util/colors/options.rb +143 -0
- data/lib/glark/util/colors/spec.rb +21 -0
- data/lib/glark/util/highlight.rb +108 -0
- data/lib/glark/util/io/depth.rb +29 -0
- data/lib/glark/util/io/fileset.rb +162 -0
- data/lib/glark/util/io/filter/criteria.rb +49 -0
- data/lib/glark/util/io/filter/filter.rb +10 -0
- data/lib/glark/util/io/lines.rb +117 -0
- data/lib/glark/util/option.rb +34 -0
- data/lib/glark/util/options.rb +12 -0
- data/lib/glark/util/optutil.rb +69 -0
- data/lib/glark/util/timestamper.rb +18 -0
- data/man/glark.1 +1134 -0
- data/test/glark/app/and_test.rb +82 -0
- data/test/glark/app/compound_test.rb +33 -0
- data/test/glark/app/context_test.rb +43 -0
- data/test/glark/app/count_test.rb +89 -0
- data/test/glark/app/dump_test.rb +16 -0
- data/test/glark/app/expression_file_test.rb +22 -0
- data/test/glark/app/extended_regexp_test.rb +17 -0
- data/test/glark/app/extract_matches_test.rb +27 -0
- data/test/glark/app/files_with_match_test.rb +32 -0
- data/test/glark/app/files_without_match_test.rb +26 -0
- data/test/glark/app/filter_test.rb +118 -0
- data/test/glark/app/highlight_test.rb +78 -0
- data/test/glark/app/ignore_case_test.rb +22 -0
- data/test/glark/app/invert_test.rb +49 -0
- data/test/glark/app/ior_test.rb +21 -0
- data/test/glark/app/label_test.rb +28 -0
- data/test/glark/app/line_number_color_test.rb +42 -0
- data/test/glark/app/line_numbers_test.rb +42 -0
- data/test/glark/app/match_limit_test.rb +49 -0
- data/test/glark/app/options_test.rb +722 -0
- data/test/glark/app/range_test.rb +101 -0
- data/test/glark/app/rcfile_test.rb +113 -0
- data/test/glark/app/record_separator_test.rb +32 -0
- data/test/glark/app/regexp_test.rb +48 -0
- data/test/glark/app/tc.rb +92 -0
- data/test/glark/app/text_color_test.rb +31 -0
- data/test/glark/app/whole_lines_test.rb +17 -0
- data/test/glark/app/whole_words_test.rb +42 -0
- data/test/glark/app/xor_test.rb +19 -0
- data/test/glark/input/binary_file_test.rb +0 -0
- data/test/glark/input/directory_test.rb +202 -0
- data/test/glark/input/dirname_test.rb +69 -0
- data/test/glark/input/exclude_matching_test.rb +20 -0
- data/test/glark/input/ext_test.rb +65 -0
- data/test/glark/input/filter/criteria_test.rb +91 -0
- data/test/glark/input/filter/filter_spec_test.rb +27 -0
- data/test/glark/input/filter/filter_test.rb +21 -0
- data/test/glark/input/name_test.rb +75 -0
- data/test/glark/input/path_test.rb +72 -0
- data/test/glark/input/range_test.rb +82 -0
- data/test/glark/input/size_limit_test.rb +51 -0
- data/test/glark/input/split_as_path_test.rb +28 -0
- data/test/glark/match_test.rb +192 -0
- data/test/glark/resources.rb +21 -0
- data/test/glark/tc.rb +37 -0
- data/test/resources/add.rb +10 -0
- data/test/resources/echo.rb +2 -0
- data/test/resources/greet.rb +13 -0
- metadata +198 -28
- data/README +0 -0
- data/bin/jlark +0 -63
- data/lib/glark/expression.rb +0 -440
- data/lib/glark/exprfactory.rb +0 -248
- data/lib/glark/glark.rb +0 -297
- data/lib/glark/help.rb +0 -85
- data/lib/glark/input.rb +0 -183
- data/lib/glark/options.rb +0 -757
- data/lib/glark/output.rb +0 -266
- data/test/lib/glark/glark_test.rb +0 -317
- data/test/lib/glark/options_test.rb +0 -891
@@ -0,0 +1,27 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# -*- ruby -*-
|
3
|
+
|
4
|
+
require 'glark/app/tc'
|
5
|
+
|
6
|
+
module Glark
|
7
|
+
class FilterSpecTestCase < AppTestCase
|
8
|
+
def xxxtest_match_name_match_ext
|
9
|
+
dirname = '/proj/org/incava/glark/test/resources'
|
10
|
+
expected = [
|
11
|
+
'[1m/proj/org/incava/glark/test/resources/rcfile.txt[0m',
|
12
|
+
' 1 # commen[30m[43mt here[0m',
|
13
|
+
' 2 highligh[30m[43mt: single[0m',
|
14
|
+
' 4 local-config-files: [30m[43mtrue[0m',
|
15
|
+
' 7 ignore-case: [30m[43mtrue[0m',
|
16
|
+
' 10 [30m[43mtext-color-3: underline mage[0mnta',
|
17
|
+
'[1m/proj/org/incava/glark/test/resources/textfile.txt[0m',
|
18
|
+
' 2 -rw-r--r-- 1 jpace jpace 126084 2010-12-04 15:24 01-TheKnigh[30m[43mtsTale[0m.txt',
|
19
|
+
' 7 -rw-r--r-- 1 jpace jpace 71054 2010-12-04 15:24 06-TheWifeOfBa[30m[43mthsTale[0m.txt',
|
20
|
+
' 11 -rw-r--r-- 1 jpace jpace 65852 2010-12-04 15:24 10-TheMerchan[30m[43mtsTale[0m.txt',
|
21
|
+
' 14 -rw-r--r-- 1 jpace jpace 15615 2010-12-04 15:24 13-TheDoc[30m[43mtorsTale[0m.txt',
|
22
|
+
' 21 -rw-r--r-- 1 jpace jpace 45326 2010-12-04 15:24 20-TheNunsPries[30m[43mtsTale[0m.txt',
|
23
|
+
]
|
24
|
+
run_app_test expected, [ '-r', '--match-name', 'a', '--match-ext', 'rb', 't.*e' ], dirname
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# -*- ruby -*-
|
3
|
+
|
4
|
+
require 'glark/tc'
|
5
|
+
|
6
|
+
module Glark
|
7
|
+
class BaseNameFilterTest < Glark::TestCase
|
8
|
+
def run_bnf_test expmatch, pattern, fname
|
9
|
+
bnf = BaseNameFilter.new pattern
|
10
|
+
assert_equal expmatch, bnf.match?(Pathname.new fname), "fname: #{fname}"
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_match_string_to_string
|
14
|
+
run_bnf_test true, '.svn', '.svn'
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_no_match_string_with_substring
|
18
|
+
run_bnf_test false, '.svn', '.'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# -*- ruby -*-
|
3
|
+
|
4
|
+
require 'glark/app/tc'
|
5
|
+
|
6
|
+
module Glark
|
7
|
+
class NameTestCase < AppTestCase
|
8
|
+
def test_match_single
|
9
|
+
dirname = '/proj/org/incava/glark/test/resources'
|
10
|
+
expected = [
|
11
|
+
'[1m/proj/org/incava/glark/test/resources/rcfile.txt[0m',
|
12
|
+
' 1 # commen[30m[43mt here[0m',
|
13
|
+
' 2 highligh[30m[43mt: single[0m',
|
14
|
+
' 4 local-config-files: [30m[43mtrue[0m',
|
15
|
+
' 7 ignore-case: [30m[43mtrue[0m',
|
16
|
+
' 10 [30m[43mtext-color-3: underline mage[0mnta',
|
17
|
+
'[1m/proj/org/incava/glark/test/resources/textfile.txt[0m',
|
18
|
+
' 2 -rw-r--r-- 1 jpace jpace 126084 2010-12-04 15:24 01-TheKnigh[30m[43mtsTale[0m.txt',
|
19
|
+
' 7 -rw-r--r-- 1 jpace jpace 71054 2010-12-04 15:24 06-TheWifeOfBa[30m[43mthsTale[0m.txt',
|
20
|
+
' 11 -rw-r--r-- 1 jpace jpace 65852 2010-12-04 15:24 10-TheMerchan[30m[43mtsTale[0m.txt',
|
21
|
+
' 14 -rw-r--r-- 1 jpace jpace 15615 2010-12-04 15:24 13-TheDoc[30m[43mtorsTale[0m.txt',
|
22
|
+
' 21 -rw-r--r-- 1 jpace jpace 45326 2010-12-04 15:24 20-TheNunsPries[30m[43mtsTale[0m.txt',
|
23
|
+
]
|
24
|
+
run_app_test expected, [ '-r', '--match-name', '^\w+ile.txt$', 't.*e' ], dirname
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_not_single
|
28
|
+
dirname = '/proj/org/incava/glark/test/resources'
|
29
|
+
expected = [
|
30
|
+
"[1m/proj/org/incava/glark/test/resources/04-TheCooksTale.txt[0m",
|
31
|
+
" 1 Of many a pil[30m[43mgrim hast thou Christe's curse[0m,",
|
32
|
+
" 7 Now tell on, [30m[43mgentle Roger, by thy name[0m,",
|
33
|
+
"[1m/proj/org/incava/glark/test/resources/filelist.txt[0m",
|
34
|
+
" 2 01-The_Kni[30m[43mghts_Tale[0m.txt",
|
35
|
+
"[1m/proj/org/incava/glark/test/resources/rcgrep.txt[0m",
|
36
|
+
" 1 [30m[43mgrep: true[0m",
|
37
|
+
"[1m/proj/org/incava/glark/test/resources/spaces.txt[0m",
|
38
|
+
" 2 01 The Kni[30m[43mghts Tale[0m.txt",
|
39
|
+
]
|
40
|
+
run_app_test expected, [ '-r', '--skip-name', '^\w+e.txt$', 'g.*t.*e\b' ], dirname
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_match_multiple
|
44
|
+
dirname = '/proj/org/incava/glark/test/resources'
|
45
|
+
expected = [
|
46
|
+
"[1m/proj/org/incava/glark/test/resources/filelist.txt[0m",
|
47
|
+
" 7 06-The_Wife_Of_Ba[30m[43mths_Tale[0m.txt",
|
48
|
+
"[1m/proj/org/incava/glark/test/resources/rcext.txt[0m",
|
49
|
+
" 1 ma[30m[43mtch-e[0mxt: rb",
|
50
|
+
" 2 ma[30m[43mtch-e[0mxt: pl",
|
51
|
+
"[1m/proj/org/incava/glark/test/resources/rcmatch.txt[0m",
|
52
|
+
" 1 ma[30m[43mtch-name[0m: \\w+.java",
|
53
|
+
" 2 ma[30m[43mtch-name[0m: \\w+.rb",
|
54
|
+
"[1m/proj/org/incava/glark/test/resources/rcpath.txt[0m",
|
55
|
+
" 2 ma[30m[43mtch-dirpath: src/te[0mst/ruby",
|
56
|
+
"[1m/proj/org/incava/glark/test/resources/spaces.txt[0m",
|
57
|
+
" 7 06 The Wife Of Ba[30m[43mths Tale[0m.txt",
|
58
|
+
]
|
59
|
+
run_app_test expected, [ '-r', '--match-name', '^\w+[^e].txt$', '--match-name', 'rcgrep.txt', 't.*h.*e' ], dirname
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_not_multiple
|
63
|
+
dirname = '/proj/org/incava/glark/test/resources'
|
64
|
+
expected = [
|
65
|
+
"[1m/proj/org/incava/glark/test/resources/filelist.txt[0m",
|
66
|
+
" 2 01-The_Kni[30m[43mghts_Tale[0m.txt",
|
67
|
+
"[1m/proj/org/incava/glark/test/resources/rcgrep.txt[0m",
|
68
|
+
" 1 [30m[43mgrep: true[0m",
|
69
|
+
"[1m/proj/org/incava/glark/test/resources/spaces.txt[0m",
|
70
|
+
" 2 01 The Kni[30m[43mghts Tale[0m.txt",
|
71
|
+
]
|
72
|
+
run_app_test expected, [ '-r', '--skip-name', '^\w+e.txt$', '--skip-name', '04.*', 'g.*t.*e\b' ], dirname
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# -*- ruby -*-
|
3
|
+
|
4
|
+
require 'glark/app/tc'
|
5
|
+
|
6
|
+
module Glark
|
7
|
+
class PathTestCase < AppTestCase
|
8
|
+
def test_match_single
|
9
|
+
dirname = '/proj/org/incava/glark/test/resources'
|
10
|
+
expected = [
|
11
|
+
"[1m/proj/org/incava/glark/test/resources/rcfile.txt[0m",
|
12
|
+
" 1 # commen[30m[43mt here[0m",
|
13
|
+
" 2 highligh[30m[43mt: single[0m",
|
14
|
+
" 4 local-config-files: [30m[43mtrue[0m",
|
15
|
+
" 7 ignore-case: [30m[43mtrue[0m",
|
16
|
+
" 10 [30m[43mtext-color-3: underline mage[0mnta",
|
17
|
+
"[1m/proj/org/incava/glark/test/resources/textfile.txt[0m",
|
18
|
+
" 2 -rw-r--r-- 1 jpace jpace 126084 2010-12-04 15:24 01-TheKnigh[30m[43mtsTale[0m.txt",
|
19
|
+
" 7 -rw-r--r-- 1 jpace jpace 71054 2010-12-04 15:24 06-TheWifeOfBa[30m[43mthsTale[0m.txt",
|
20
|
+
" 11 -rw-r--r-- 1 jpace jpace 65852 2010-12-04 15:24 10-TheMerchan[30m[43mtsTale[0m.txt",
|
21
|
+
" 14 -rw-r--r-- 1 jpace jpace 15615 2010-12-04 15:24 13-TheDoc[30m[43mtorsTale[0m.txt",
|
22
|
+
" 21 -rw-r--r-- 1 jpace jpace 45326 2010-12-04 15:24 20-TheNunsPries[30m[43mtsTale[0m.txt",
|
23
|
+
]
|
24
|
+
run_app_test expected, [ '-r', '--match-path', 'test/resources/.*ile.txt$', 't.*e' ], dirname
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_not_single
|
28
|
+
dirname = '/proj/org/incava/glark/test/resources'
|
29
|
+
expected = [
|
30
|
+
"[1m/proj/org/incava/glark/test/resources/filelist.txt[0m",
|
31
|
+
" 2 01-The_Kni[30m[43mghts_Tale[0m.txt",
|
32
|
+
"[1m/proj/org/incava/glark/test/resources/rcgrep.txt[0m",
|
33
|
+
" 1 [30m[43mgrep: true[0m",
|
34
|
+
"[1m/proj/org/incava/glark/test/resources/spaces.txt[0m",
|
35
|
+
" 2 01 The Kni[30m[43mghts Tale[0m.txt",
|
36
|
+
]
|
37
|
+
run_app_test expected, [ '-r', '--skip-path', 'test/resources/.*e.txt$', 'g.*t.*e\b' ], dirname
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_match_multiple
|
41
|
+
dirname = '/proj/org/incava/glark/test/resources'
|
42
|
+
expected = [
|
43
|
+
"[1m/proj/org/incava/glark/test/resources/canterbury/franklin/tale.txt[0m",
|
44
|
+
" 80 That is betwi[30m[43mxt a husband and his wife[0m?",
|
45
|
+
"[1m/proj/org/incava/glark/test/resources/canterbury/prologue.txt[0m",
|
46
|
+
" 187 He gave not of the te[30m[43mxt a pulled he[0mn,",
|
47
|
+
" 192 This ilke te[30m[43mxt held he not worth an oyste[0mr;",
|
48
|
+
" 291 Betwi[30m[43mxte Middleburg and Orewe[0mll",
|
49
|
+
"[1m/proj/org/incava/glark/test/resources/rcfile.txt[0m",
|
50
|
+
" 10 te[30m[43mxt-color-3: underline mage[0mnta",
|
51
|
+
]
|
52
|
+
run_app_test expected, [ '-r', '--match-path', 'test/resources/.*ile.txt$', '--match-path', 'test/resources/canterbury/.*.txt$', 'xt.*e' ], dirname
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_not_multiple
|
56
|
+
dirname = '/proj/org/incava/glark/test/resources'
|
57
|
+
expected = [
|
58
|
+
"[1m/proj/org/incava/glark/test/resources/filelist.txt[0m",
|
59
|
+
" 2 01-The_Knigh[30m[43mts_Tale[0m.txt",
|
60
|
+
" 11 10-The_Merchan[30m[43mts_Tale[0m.txt",
|
61
|
+
" 21 20-The_Nuns_Pries[30m[43mts_Tale[0m.txt",
|
62
|
+
"[1m/proj/org/incava/glark/test/resources/rcfile.txt[0m",
|
63
|
+
" 2 highligh[30m[43mt: single[0m",
|
64
|
+
"[1m/proj/org/incava/glark/test/resources/textfile.txt[0m",
|
65
|
+
" 2 -rw-r--r-- 1 jpace jpace 126084 2010-12-04 15:24 01-TheKnigh[30m[43mtsTale[0m.txt",
|
66
|
+
" 11 -rw-r--r-- 1 jpace jpace 65852 2010-12-04 15:24 10-TheMerchan[30m[43mtsTale[0m.txt",
|
67
|
+
" 21 -rw-r--r-- 1 jpace jpace 45326 2010-12-04 15:24 20-TheNunsPries[30m[43mtsTale[0m.txt",
|
68
|
+
]
|
69
|
+
run_app_test expected, [ '-r', '--skip-path', 'test/resources/\d.*e.txt$', '--skip-path', 'test/resources/canterbury/.*.txt$', 't\W*s\w*e' ], dirname
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# -*- ruby -*-
|
3
|
+
|
4
|
+
require 'glark/tc'
|
5
|
+
require 'glark/input/range'
|
6
|
+
|
7
|
+
module Glark
|
8
|
+
class RangeTestCase < Glark::TestCase
|
9
|
+
def test_ctor
|
10
|
+
rg = Glark::Range.new '3', '17'
|
11
|
+
assert_equal '3', rg.from
|
12
|
+
assert_equal '17', rg.to
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_valid_neither
|
16
|
+
rg = Glark::Range.new
|
17
|
+
assert rg.validate!
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_valid_only_from
|
21
|
+
rg = Glark::Range.new '3'
|
22
|
+
assert rg.validate!
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_valid_only_to
|
26
|
+
rg = Glark::Range.new nil, '17'
|
27
|
+
assert rg.validate!
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_valid_from_number_to_number
|
31
|
+
rg = Glark::Range.new '3', '17'
|
32
|
+
assert rg.validate!
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_valid_from_number_to_pct
|
36
|
+
rg = Glark::Range.new '3', '17%'
|
37
|
+
assert rg.validate!
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_valid_from_pct_to_pct
|
41
|
+
rg = Glark::Range.new '3%', '17%'
|
42
|
+
assert rg.validate!
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_valid_from_pct_to_number
|
46
|
+
rg = Glark::Range.new '3%', '17'
|
47
|
+
assert rg.validate!
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_invalid_from_pct_to_pct
|
51
|
+
rg = Glark::Range.new '13%', '3%'
|
52
|
+
assert_raises(Glark::RangeError) do
|
53
|
+
rg.validate!
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_invalid_from_number_to_number
|
58
|
+
rg = Glark::Range.new '13', '3'
|
59
|
+
assert_raises(Glark::RangeError) do
|
60
|
+
rg.validate!
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_eq_from_to
|
65
|
+
x = Glark::Range.new '5', '17'
|
66
|
+
y = Glark::Range.new '5', '17'
|
67
|
+
assert_equal y, x
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_eq_nil_to
|
71
|
+
x = Glark::Range.new nil, '5'
|
72
|
+
y = Glark::Range.new nil, '5'
|
73
|
+
assert_equal y, x
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_eq_from_nil
|
77
|
+
x = Glark::Range.new '5', nil
|
78
|
+
y = Glark::Range.new '5', nil
|
79
|
+
assert_equal y, x
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# -*- ruby -*-
|
3
|
+
|
4
|
+
require 'glark/app/tc'
|
5
|
+
|
6
|
+
module Glark
|
7
|
+
class SizeLimitTestCase < AppTestCase
|
8
|
+
def test_limit_300
|
9
|
+
dirname = '/proj/org/incava/glark/test/resources'
|
10
|
+
expected = [
|
11
|
+
"[1m/proj/org/incava/glark/test/resources/add.rb[0m",
|
12
|
+
" 4 c[30m[43mlass Adde[0mr",
|
13
|
+
" 5 def initia[30m[43mlize[0m x, y",
|
14
|
+
"[1m/proj/org/incava/glark/test/resources/expressions.txt[0m",
|
15
|
+
" 2 TheM.*Ta[30m[43mle[0m",
|
16
|
+
"[1m/proj/org/incava/glark/test/resources/greet.rb[0m",
|
17
|
+
" 7 c[30m[43mlass Gree[0mt",
|
18
|
+
" 8 def initia[30m[43mlize name[0m",
|
19
|
+
" 9 puts \"he[30m[43mllo, \" + name[0m",
|
20
|
+
"[1m/proj/org/incava/glark/test/resources/rcfile.txt[0m",
|
21
|
+
" 2 high[30m[43mlight: single[0m",
|
22
|
+
" 4 [30m[43mlocal-config-files: true[0m",
|
23
|
+
" 6 [30m[43mline-number-color: bold re[0md",
|
24
|
+
" 10 text-co[30m[43mlor-3: underline mage[0mnta",
|
25
|
+
"[1m/proj/org/incava/glark/test/resources/zfile.txt[0m",
|
26
|
+
" 6 zonu[30m[43mlae[0m",
|
27
|
+
" 13 zoog[30m[43mloeae[0m",
|
28
|
+
" 14 zoog[30m[43mloe[0mal",
|
29
|
+
" 15 zoog[30m[43mloe[0mas",
|
30
|
+
]
|
31
|
+
run_app_test expected, [ '-r', '--size-limit', '300', 'l.*e' ], dirname
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_limit_100
|
35
|
+
dirname = '/proj/org/incava/glark/test/resources'
|
36
|
+
expected = [
|
37
|
+
"[1m/proj/org/incava/glark/test/resources/rcext.txt[0m",
|
38
|
+
" 1 ma[30m[43mtch-e[0mxt: rb",
|
39
|
+
" 2 ma[30m[43mtch-e[0mxt: pl",
|
40
|
+
"[1m/proj/org/incava/glark/test/resources/rcgrep.txt[0m",
|
41
|
+
" 1 grep: [30m[43mtrue[0m",
|
42
|
+
"[1m/proj/org/incava/glark/test/resources/rcmatch.txt[0m",
|
43
|
+
" 1 ma[30m[43mtch-name[0m: \\w+.java",
|
44
|
+
" 2 ma[30m[43mtch-name[0m: \\w+.rb",
|
45
|
+
"[1m/proj/org/incava/glark/test/resources/rcpath.txt[0m",
|
46
|
+
" 2 ma[30m[43mtch-dirpath: src/te[0mst/ruby",
|
47
|
+
]
|
48
|
+
run_app_test expected, [ '-r', '--size-limit', '100', 't.*e' ], dirname
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# -*- ruby -*-
|
3
|
+
|
4
|
+
require 'glark/app/tc'
|
5
|
+
|
6
|
+
module Glark
|
7
|
+
class SplitAsPathTestCase < AppTestCase
|
8
|
+
def test_default
|
9
|
+
path = '/proj/org/incava/glark/test/resources:/var/this/doesnt/exist'
|
10
|
+
expected = [
|
11
|
+
"[1m/proj/org/incava/glark/test/resources/canterbury/franklin/tale.txt[0m",
|
12
|
+
" 706 Why should I more e[30m[43mxamples here[0mof sayn?",
|
13
|
+
"[1m/proj/org/incava/glark/test/resources/canterbury/prologue.txt[0m",
|
14
|
+
" 604 That were of law e[30m[43mxpert[0m and curious:",
|
15
|
+
"[1m/proj/org/incava/glark/test/resources/rcfile.txt[0m",
|
16
|
+
" 10 te[30m[43mxt-color-3: underl[0mine magenta",
|
17
|
+
]
|
18
|
+
run_app_test expected, [ '-r', 'x.*er\w' ], path
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_no_split
|
22
|
+
path = '/proj/org/incava/glark/test/resources:/var/this/doesnt/exist'
|
23
|
+
expected = [
|
24
|
+
]
|
25
|
+
run_app_test expected, [ '-r', '--no-split-as-path', 't.*e\w' ], path
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,192 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# -*- ruby -*-
|
3
|
+
|
4
|
+
require 'rubygems'
|
5
|
+
require 'riel'
|
6
|
+
require 'glark/match/factory'
|
7
|
+
require 'glark/tc'
|
8
|
+
require 'stringio'
|
9
|
+
|
10
|
+
module Glark
|
11
|
+
class MatchTestCase < Glark::TestCase
|
12
|
+
def run_test expected, fname, exprargs
|
13
|
+
opts = AppOptions.new
|
14
|
+
|
15
|
+
# Egads, Ruby is fun. Converting a maybe-array into a definite one:
|
16
|
+
args = [ exprargs ].flatten
|
17
|
+
|
18
|
+
opts.run args + [ fname ]
|
19
|
+
|
20
|
+
sio = StringIO.new
|
21
|
+
opts.output_options.out = sio
|
22
|
+
|
23
|
+
files = opts.fileset
|
24
|
+
glark = Runner.new opts, files
|
25
|
+
|
26
|
+
result = sio.string
|
27
|
+
assert_equal expected.collect { |line| "#{line}\n" }.join(''), result
|
28
|
+
end
|
29
|
+
|
30
|
+
def run_abc_test expected, exprargs
|
31
|
+
fname = '/proj/org/incava/glark/test/resources/abcfile.txt'
|
32
|
+
run_test expected, fname, exprargs
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_plain_old_match_first_line
|
36
|
+
expected = [
|
37
|
+
" 1 [30m[43mA[0mBC"
|
38
|
+
]
|
39
|
+
|
40
|
+
run_abc_test expected, 'A'
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_plain_old_match_middle_line
|
44
|
+
expected = [
|
45
|
+
" 4 J[30m[43mK[0mL"
|
46
|
+
]
|
47
|
+
|
48
|
+
run_abc_test expected, 'K'
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_regexp_or
|
52
|
+
expected = [
|
53
|
+
" 4 J[30m[43mK[0mL",
|
54
|
+
" 5 M[30m[42mN[0mO"
|
55
|
+
]
|
56
|
+
|
57
|
+
run_abc_test expected, '(K)|(N)'
|
58
|
+
end
|
59
|
+
|
60
|
+
def run_z_test expected, exprargs
|
61
|
+
fname = '/proj/org/incava/glark/test/resources/zfile.txt'
|
62
|
+
run_test expected, fname, exprargs
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_multicolor_alt_regexp_one_match
|
66
|
+
patterns = %w{ nul }
|
67
|
+
|
68
|
+
expected = [
|
69
|
+
" 6 zo[30m[43mnul[0mae"
|
70
|
+
]
|
71
|
+
|
72
|
+
exprargs = patterns.collect { |x| "(#{x})" }.join('|')
|
73
|
+
|
74
|
+
run_z_test expected, exprargs
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_multicolor_alt_regexp_3_patterns
|
78
|
+
patterns = %w{ oo ae z }
|
79
|
+
|
80
|
+
expected = [
|
81
|
+
" 1 [30m[45mz[0maffres",
|
82
|
+
" 2 [30m[45mz[0mo[30m[42mae[0ma",
|
83
|
+
" 3 [30m[45mz[0mo[30m[42mae[0ma's",
|
84
|
+
" 4 [30m[45mz[0moea",
|
85
|
+
" 5 [30m[45mz[0moeas",
|
86
|
+
" 6 [30m[45mz[0monul[30m[42mae[0m",
|
87
|
+
" 7 [30m[45mz[0m[30m[43moo[0mea",
|
88
|
+
" 8 [30m[45mz[0m[30m[43moo[0me[30m[42mae[0m",
|
89
|
+
" 9 [30m[45mz[0m[30m[43moo[0meal",
|
90
|
+
" 10 [30m[45mz[0m[30m[43moo[0meas",
|
91
|
+
" 11 [30m[45mz[0m[30m[43moo[0mecia",
|
92
|
+
" 12 [30m[45mz[0m[30m[43moo[0mecium",
|
93
|
+
" 13 [30m[45mz[0m[30m[43moo[0mgloe[30m[42mae[0m",
|
94
|
+
" 14 [30m[45mz[0m[30m[43moo[0mgloeal",
|
95
|
+
" 15 [30m[45mz[0m[30m[43moo[0mgloeas",
|
96
|
+
" 16 [30m[45mz[0myg[30m[42mae[0mnid",
|
97
|
+
]
|
98
|
+
|
99
|
+
exprargs = patterns.collect { |x| "(#{x})" }.join('|')
|
100
|
+
|
101
|
+
run_z_test expected, exprargs
|
102
|
+
end
|
103
|
+
|
104
|
+
def test_multicolor_or_expression_3_patterns
|
105
|
+
patterns = %w{ oo ae z }
|
106
|
+
|
107
|
+
expected = [
|
108
|
+
" 1 [30m[45mz[0maffres",
|
109
|
+
" 2 [30m[45mz[0mo[30m[42mae[0ma",
|
110
|
+
" 3 [30m[45mz[0mo[30m[42mae[0ma's",
|
111
|
+
" 4 [30m[45mz[0moea",
|
112
|
+
" 5 [30m[45mz[0moeas",
|
113
|
+
" 6 [30m[45mz[0monul[30m[42mae[0m",
|
114
|
+
" 7 [30m[45mz[0m[30m[43moo[0mea",
|
115
|
+
" 8 [30m[45mz[0m[30m[43moo[0me[30m[42mae[0m",
|
116
|
+
" 9 [30m[45mz[0m[30m[43moo[0meal",
|
117
|
+
" 10 [30m[45mz[0m[30m[43moo[0meas",
|
118
|
+
" 11 [30m[45mz[0m[30m[43moo[0mecia",
|
119
|
+
" 12 [30m[45mz[0m[30m[43moo[0mecium",
|
120
|
+
" 13 [30m[45mz[0m[30m[43moo[0mgloe[30m[42mae[0m",
|
121
|
+
" 14 [30m[45mz[0m[30m[43moo[0mgloeal",
|
122
|
+
" 15 [30m[45mz[0m[30m[43moo[0mgloeas",
|
123
|
+
" 16 [30m[45mz[0myg[30m[42mae[0mnid",
|
124
|
+
]
|
125
|
+
|
126
|
+
exprargs = patterns[0 ... -1].collect { '--or' } + patterns
|
127
|
+
|
128
|
+
run_z_test expected, exprargs
|
129
|
+
end
|
130
|
+
|
131
|
+
def test_and_expression_2_lines_apart
|
132
|
+
Log.level = Log::DEBUG
|
133
|
+
|
134
|
+
# 'ea', 'ec' within 2 lines of each other:
|
135
|
+
expected = [
|
136
|
+
" 9 zoo[30m[43mea[0ml",
|
137
|
+
" 10 zoo[30m[43mea[0ms",
|
138
|
+
" 11 zoo[30m[42mec[0mia",
|
139
|
+
" 12 zoo[30m[42mec[0mium",
|
140
|
+
" 13 zooglo[30m[43mea[0me",
|
141
|
+
" 14 zooglo[30m[43mea[0ml"
|
142
|
+
]
|
143
|
+
|
144
|
+
patterns = %w{ ea ec }
|
145
|
+
|
146
|
+
exprargs = [ "--and", "2" ] + patterns
|
147
|
+
|
148
|
+
run_z_test expected, exprargs
|
149
|
+
end
|
150
|
+
|
151
|
+
def test_and_expression_3_lines_apart
|
152
|
+
expected = [
|
153
|
+
" 3 zo[30m[43maea[0m's",
|
154
|
+
" 4 zoea",
|
155
|
+
" 5 zoeas",
|
156
|
+
" 6 zon[30m[42mula[0me"
|
157
|
+
]
|
158
|
+
|
159
|
+
patterns = %w{ aea ula }
|
160
|
+
|
161
|
+
exprargs = [ "--and", "3" ] + patterns
|
162
|
+
|
163
|
+
run_z_test expected, exprargs
|
164
|
+
end
|
165
|
+
|
166
|
+
def test_and_expression_entire_file
|
167
|
+
expected = [
|
168
|
+
" 1 z[30m[43maff[0mres",
|
169
|
+
" 2 zoaea",
|
170
|
+
" 3 zoaea's",
|
171
|
+
" 4 zoea",
|
172
|
+
" 5 zoeas",
|
173
|
+
" 6 zonulae",
|
174
|
+
" 7 zooea",
|
175
|
+
" 8 zooeae",
|
176
|
+
" 9 zooeal",
|
177
|
+
" 10 zooeas",
|
178
|
+
" 11 zooecia",
|
179
|
+
" 12 zooecium",
|
180
|
+
" 13 zoogloeae",
|
181
|
+
" 14 zoogloeal",
|
182
|
+
" 15 zoogloeas",
|
183
|
+
" 16 z[30m[42myga[0menid",
|
184
|
+
]
|
185
|
+
|
186
|
+
patterns = %w{ aff yga }
|
187
|
+
exprargs = [ "--and", "-1" ] + patterns
|
188
|
+
|
189
|
+
run_z_test expected, exprargs
|
190
|
+
end
|
191
|
+
end
|
192
|
+
end
|