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.
Files changed (128) hide show
  1. data/bin/glark +2 -2
  2. data/lib/glark.rb +1 -1
  3. data/lib/glark/app/app.rb +48 -0
  4. data/lib/glark/app/help.rb +103 -0
  5. data/lib/glark/app/info/options.rb +84 -0
  6. data/lib/glark/app/options.rb +201 -0
  7. data/lib/glark/app/rcfile.rb +49 -0
  8. data/lib/glark/app/runner.rb +140 -0
  9. data/lib/glark/app/spec.rb +19 -0
  10. data/lib/glark/input/filter/criteria_opts.rb +41 -0
  11. data/lib/glark/input/filter/dir_criteria_opts.rb +37 -0
  12. data/lib/glark/input/filter/file_criteria_opts.rb +33 -0
  13. data/lib/glark/input/filter/filter.rb +59 -0
  14. data/lib/glark/input/filter/options.rb +171 -0
  15. data/lib/glark/input/options.rb +120 -0
  16. data/lib/glark/input/range.rb +104 -0
  17. data/lib/glark/input/spec.rb +39 -0
  18. data/lib/glark/io/file/archive_file.rb +64 -0
  19. data/lib/glark/io/file/binary_file.rb +19 -0
  20. data/lib/glark/io/file/file.rb +57 -0
  21. data/lib/glark/io/file/gz_file.rb +21 -0
  22. data/lib/glark/io/file/tar_file.rb +35 -0
  23. data/lib/glark/io/file/tar_gz_file.rb +52 -0
  24. data/lib/glark/io/file/zip_file.rb +39 -0
  25. data/lib/glark/match/and.rb +83 -0
  26. data/lib/glark/match/and_distance.rb +58 -0
  27. data/lib/glark/match/compound.rb +34 -0
  28. data/lib/glark/match/expression.rb +63 -0
  29. data/lib/glark/match/factory.rb +173 -0
  30. data/lib/glark/match/ior.rb +20 -0
  31. data/lib/glark/match/options.rb +74 -0
  32. data/lib/glark/match/or.rb +41 -0
  33. data/lib/glark/match/re.rb +81 -0
  34. data/lib/glark/match/re_factory.rb +44 -0
  35. data/lib/glark/match/spec.rb +59 -0
  36. data/lib/glark/match/xor.rb +20 -0
  37. data/lib/glark/output/binary_file_summary.rb +17 -0
  38. data/lib/glark/output/common.rb +43 -0
  39. data/lib/glark/output/context.rb +57 -0
  40. data/lib/glark/output/count.rb +26 -0
  41. data/lib/glark/output/file_header.rb +20 -0
  42. data/lib/glark/output/file_name_only.rb +35 -0
  43. data/lib/glark/output/formatted.rb +22 -0
  44. data/lib/glark/output/glark_count.rb +23 -0
  45. data/lib/glark/output/glark_format.rb +62 -0
  46. data/lib/glark/output/glark_lines.rb +36 -0
  47. data/lib/glark/output/grep_count.rb +18 -0
  48. data/lib/glark/output/grep_lines.rb +42 -0
  49. data/lib/glark/output/line_status.rb +46 -0
  50. data/lib/glark/output/lines.rb +100 -0
  51. data/lib/glark/output/match_list.rb +15 -0
  52. data/lib/glark/output/options.rb +103 -0
  53. data/lib/glark/output/results.rb +23 -0
  54. data/lib/glark/output/spec.rb +105 -0
  55. data/lib/glark/output/unfiltered_lines.rb +28 -0
  56. data/lib/glark/util/colors/options.rb +143 -0
  57. data/lib/glark/util/colors/spec.rb +21 -0
  58. data/lib/glark/util/highlight.rb +108 -0
  59. data/lib/glark/util/io/depth.rb +29 -0
  60. data/lib/glark/util/io/fileset.rb +162 -0
  61. data/lib/glark/util/io/filter/criteria.rb +49 -0
  62. data/lib/glark/util/io/filter/filter.rb +10 -0
  63. data/lib/glark/util/io/lines.rb +117 -0
  64. data/lib/glark/util/option.rb +34 -0
  65. data/lib/glark/util/options.rb +12 -0
  66. data/lib/glark/util/optutil.rb +69 -0
  67. data/lib/glark/util/timestamper.rb +18 -0
  68. data/man/glark.1 +1134 -0
  69. data/test/glark/app/and_test.rb +82 -0
  70. data/test/glark/app/compound_test.rb +33 -0
  71. data/test/glark/app/context_test.rb +43 -0
  72. data/test/glark/app/count_test.rb +89 -0
  73. data/test/glark/app/dump_test.rb +16 -0
  74. data/test/glark/app/expression_file_test.rb +22 -0
  75. data/test/glark/app/extended_regexp_test.rb +17 -0
  76. data/test/glark/app/extract_matches_test.rb +27 -0
  77. data/test/glark/app/files_with_match_test.rb +32 -0
  78. data/test/glark/app/files_without_match_test.rb +26 -0
  79. data/test/glark/app/filter_test.rb +118 -0
  80. data/test/glark/app/highlight_test.rb +78 -0
  81. data/test/glark/app/ignore_case_test.rb +22 -0
  82. data/test/glark/app/invert_test.rb +49 -0
  83. data/test/glark/app/ior_test.rb +21 -0
  84. data/test/glark/app/label_test.rb +28 -0
  85. data/test/glark/app/line_number_color_test.rb +42 -0
  86. data/test/glark/app/line_numbers_test.rb +42 -0
  87. data/test/glark/app/match_limit_test.rb +49 -0
  88. data/test/glark/app/options_test.rb +722 -0
  89. data/test/glark/app/range_test.rb +101 -0
  90. data/test/glark/app/rcfile_test.rb +113 -0
  91. data/test/glark/app/record_separator_test.rb +32 -0
  92. data/test/glark/app/regexp_test.rb +48 -0
  93. data/test/glark/app/tc.rb +92 -0
  94. data/test/glark/app/text_color_test.rb +31 -0
  95. data/test/glark/app/whole_lines_test.rb +17 -0
  96. data/test/glark/app/whole_words_test.rb +42 -0
  97. data/test/glark/app/xor_test.rb +19 -0
  98. data/test/glark/input/binary_file_test.rb +0 -0
  99. data/test/glark/input/directory_test.rb +202 -0
  100. data/test/glark/input/dirname_test.rb +69 -0
  101. data/test/glark/input/exclude_matching_test.rb +20 -0
  102. data/test/glark/input/ext_test.rb +65 -0
  103. data/test/glark/input/filter/criteria_test.rb +91 -0
  104. data/test/glark/input/filter/filter_spec_test.rb +27 -0
  105. data/test/glark/input/filter/filter_test.rb +21 -0
  106. data/test/glark/input/name_test.rb +75 -0
  107. data/test/glark/input/path_test.rb +72 -0
  108. data/test/glark/input/range_test.rb +82 -0
  109. data/test/glark/input/size_limit_test.rb +51 -0
  110. data/test/glark/input/split_as_path_test.rb +28 -0
  111. data/test/glark/match_test.rb +192 -0
  112. data/test/glark/resources.rb +21 -0
  113. data/test/glark/tc.rb +37 -0
  114. data/test/resources/add.rb +10 -0
  115. data/test/resources/echo.rb +2 -0
  116. data/test/resources/greet.rb +13 -0
  117. metadata +198 -28
  118. data/README +0 -0
  119. data/bin/jlark +0 -63
  120. data/lib/glark/expression.rb +0 -440
  121. data/lib/glark/exprfactory.rb +0 -248
  122. data/lib/glark/glark.rb +0 -297
  123. data/lib/glark/help.rb +0 -85
  124. data/lib/glark/input.rb +0 -183
  125. data/lib/glark/options.rb +0 -757
  126. data/lib/glark/output.rb +0 -266
  127. data/test/lib/glark/glark_test.rb +0 -317
  128. 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
+ '/proj/org/incava/glark/test/resources/rcfile.txt',
12
+ ' 1 # comment here',
13
+ ' 2 highlight: single',
14
+ ' 4 local-config-files: true',
15
+ ' 7 ignore-case: true',
16
+ ' 10 text-color-3: underline magenta',
17
+ '/proj/org/incava/glark/test/resources/textfile.txt',
18
+ ' 2 -rw-r--r-- 1 jpace jpace 126084 2010-12-04 15:24 01-TheKnightsTale.txt',
19
+ ' 7 -rw-r--r-- 1 jpace jpace 71054 2010-12-04 15:24 06-TheWifeOfBathsTale.txt',
20
+ ' 11 -rw-r--r-- 1 jpace jpace 65852 2010-12-04 15:24 10-TheMerchantsTale.txt',
21
+ ' 14 -rw-r--r-- 1 jpace jpace 15615 2010-12-04 15:24 13-TheDoctorsTale.txt',
22
+ ' 21 -rw-r--r-- 1 jpace jpace 45326 2010-12-04 15:24 20-TheNunsPriestsTale.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
+ '/proj/org/incava/glark/test/resources/rcfile.txt',
12
+ ' 1 # comment here',
13
+ ' 2 highlight: single',
14
+ ' 4 local-config-files: true',
15
+ ' 7 ignore-case: true',
16
+ ' 10 text-color-3: underline magenta',
17
+ '/proj/org/incava/glark/test/resources/textfile.txt',
18
+ ' 2 -rw-r--r-- 1 jpace jpace 126084 2010-12-04 15:24 01-TheKnightsTale.txt',
19
+ ' 7 -rw-r--r-- 1 jpace jpace 71054 2010-12-04 15:24 06-TheWifeOfBathsTale.txt',
20
+ ' 11 -rw-r--r-- 1 jpace jpace 65852 2010-12-04 15:24 10-TheMerchantsTale.txt',
21
+ ' 14 -rw-r--r-- 1 jpace jpace 15615 2010-12-04 15:24 13-TheDoctorsTale.txt',
22
+ ' 21 -rw-r--r-- 1 jpace jpace 45326 2010-12-04 15:24 20-TheNunsPriestsTale.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
+ "/proj/org/incava/glark/test/resources/04-TheCooksTale.txt",
31
+ " 1 Of many a pilgrim hast thou Christe's curse,",
32
+ " 7 Now tell on, gentle Roger, by thy name,",
33
+ "/proj/org/incava/glark/test/resources/filelist.txt",
34
+ " 2 01-The_Knights_Tale.txt",
35
+ "/proj/org/incava/glark/test/resources/rcgrep.txt",
36
+ " 1 grep: true",
37
+ "/proj/org/incava/glark/test/resources/spaces.txt",
38
+ " 2 01 The Knights Tale.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
+ "/proj/org/incava/glark/test/resources/filelist.txt",
47
+ " 7 06-The_Wife_Of_Baths_Tale.txt",
48
+ "/proj/org/incava/glark/test/resources/rcext.txt",
49
+ " 1 match-ext: rb",
50
+ " 2 match-ext: pl",
51
+ "/proj/org/incava/glark/test/resources/rcmatch.txt",
52
+ " 1 match-name: \\w+.java",
53
+ " 2 match-name: \\w+.rb",
54
+ "/proj/org/incava/glark/test/resources/rcpath.txt",
55
+ " 2 match-dirpath: src/test/ruby",
56
+ "/proj/org/incava/glark/test/resources/spaces.txt",
57
+ " 7 06 The Wife Of Baths Tale.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
+ "/proj/org/incava/glark/test/resources/filelist.txt",
66
+ " 2 01-The_Knights_Tale.txt",
67
+ "/proj/org/incava/glark/test/resources/rcgrep.txt",
68
+ " 1 grep: true",
69
+ "/proj/org/incava/glark/test/resources/spaces.txt",
70
+ " 2 01 The Knights Tale.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
+ "/proj/org/incava/glark/test/resources/rcfile.txt",
12
+ " 1 # comment here",
13
+ " 2 highlight: single",
14
+ " 4 local-config-files: true",
15
+ " 7 ignore-case: true",
16
+ " 10 text-color-3: underline magenta",
17
+ "/proj/org/incava/glark/test/resources/textfile.txt",
18
+ " 2 -rw-r--r-- 1 jpace jpace 126084 2010-12-04 15:24 01-TheKnightsTale.txt",
19
+ " 7 -rw-r--r-- 1 jpace jpace 71054 2010-12-04 15:24 06-TheWifeOfBathsTale.txt",
20
+ " 11 -rw-r--r-- 1 jpace jpace 65852 2010-12-04 15:24 10-TheMerchantsTale.txt",
21
+ " 14 -rw-r--r-- 1 jpace jpace 15615 2010-12-04 15:24 13-TheDoctorsTale.txt",
22
+ " 21 -rw-r--r-- 1 jpace jpace 45326 2010-12-04 15:24 20-TheNunsPriestsTale.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
+ "/proj/org/incava/glark/test/resources/filelist.txt",
31
+ " 2 01-The_Knights_Tale.txt",
32
+ "/proj/org/incava/glark/test/resources/rcgrep.txt",
33
+ " 1 grep: true",
34
+ "/proj/org/incava/glark/test/resources/spaces.txt",
35
+ " 2 01 The Knights Tale.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
+ "/proj/org/incava/glark/test/resources/canterbury/franklin/tale.txt",
44
+ " 80 That is betwixt a husband and his wife?",
45
+ "/proj/org/incava/glark/test/resources/canterbury/prologue.txt",
46
+ " 187 He gave not of the text a pulled hen,",
47
+ " 192 This ilke text held he not worth an oyster;",
48
+ " 291 Betwixte Middleburg and Orewell",
49
+ "/proj/org/incava/glark/test/resources/rcfile.txt",
50
+ " 10 text-color-3: underline magenta",
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
+ "/proj/org/incava/glark/test/resources/filelist.txt",
59
+ " 2 01-The_Knights_Tale.txt",
60
+ " 11 10-The_Merchants_Tale.txt",
61
+ " 21 20-The_Nuns_Priests_Tale.txt",
62
+ "/proj/org/incava/glark/test/resources/rcfile.txt",
63
+ " 2 highlight: single",
64
+ "/proj/org/incava/glark/test/resources/textfile.txt",
65
+ " 2 -rw-r--r-- 1 jpace jpace 126084 2010-12-04 15:24 01-TheKnightsTale.txt",
66
+ " 11 -rw-r--r-- 1 jpace jpace 65852 2010-12-04 15:24 10-TheMerchantsTale.txt",
67
+ " 21 -rw-r--r-- 1 jpace jpace 45326 2010-12-04 15:24 20-TheNunsPriestsTale.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
+ "/proj/org/incava/glark/test/resources/add.rb",
12
+ " 4 class Adder",
13
+ " 5 def initialize x, y",
14
+ "/proj/org/incava/glark/test/resources/expressions.txt",
15
+ " 2 TheM.*Tale",
16
+ "/proj/org/incava/glark/test/resources/greet.rb",
17
+ " 7 class Greet",
18
+ " 8 def initialize name",
19
+ " 9 puts \"hello, \" + name",
20
+ "/proj/org/incava/glark/test/resources/rcfile.txt",
21
+ " 2 highlight: single",
22
+ " 4 local-config-files: true",
23
+ " 6 line-number-color: bold red",
24
+ " 10 text-color-3: underline magenta",
25
+ "/proj/org/incava/glark/test/resources/zfile.txt",
26
+ " 6 zonulae",
27
+ " 13 zoogloeae",
28
+ " 14 zoogloeal",
29
+ " 15 zoogloeas",
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
+ "/proj/org/incava/glark/test/resources/rcext.txt",
38
+ " 1 match-ext: rb",
39
+ " 2 match-ext: pl",
40
+ "/proj/org/incava/glark/test/resources/rcgrep.txt",
41
+ " 1 grep: true",
42
+ "/proj/org/incava/glark/test/resources/rcmatch.txt",
43
+ " 1 match-name: \\w+.java",
44
+ " 2 match-name: \\w+.rb",
45
+ "/proj/org/incava/glark/test/resources/rcpath.txt",
46
+ " 2 match-dirpath: src/test/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
+ "/proj/org/incava/glark/test/resources/canterbury/franklin/tale.txt",
12
+ " 706 Why should I more examples hereof sayn?",
13
+ "/proj/org/incava/glark/test/resources/canterbury/prologue.txt",
14
+ " 604 That were of law expert and curious:",
15
+ "/proj/org/incava/glark/test/resources/rcfile.txt",
16
+ " 10 text-color-3: underline 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 ABC"
38
+ ]
39
+
40
+ run_abc_test expected, 'A'
41
+ end
42
+
43
+ def test_plain_old_match_middle_line
44
+ expected = [
45
+ " 4 JKL"
46
+ ]
47
+
48
+ run_abc_test expected, 'K'
49
+ end
50
+
51
+ def test_regexp_or
52
+ expected = [
53
+ " 4 JKL",
54
+ " 5 MNO"
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 zonulae"
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 zaffres",
82
+ " 2 zoaea",
83
+ " 3 zoaea's",
84
+ " 4 zoea",
85
+ " 5 zoeas",
86
+ " 6 zonulae",
87
+ " 7 zooea",
88
+ " 8 zooeae",
89
+ " 9 zooeal",
90
+ " 10 zooeas",
91
+ " 11 zooecia",
92
+ " 12 zooecium",
93
+ " 13 zoogloeae",
94
+ " 14 zoogloeal",
95
+ " 15 zoogloeas",
96
+ " 16 zygaenid",
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 zaffres",
109
+ " 2 zoaea",
110
+ " 3 zoaea's",
111
+ " 4 zoea",
112
+ " 5 zoeas",
113
+ " 6 zonulae",
114
+ " 7 zooea",
115
+ " 8 zooeae",
116
+ " 9 zooeal",
117
+ " 10 zooeas",
118
+ " 11 zooecia",
119
+ " 12 zooecium",
120
+ " 13 zoogloeae",
121
+ " 14 zoogloeal",
122
+ " 15 zoogloeas",
123
+ " 16 zygaenid",
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 zooeal",
137
+ " 10 zooeas",
138
+ " 11 zooecia",
139
+ " 12 zooecium",
140
+ " 13 zoogloeae",
141
+ " 14 zoogloeal"
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 zoaea's",
154
+ " 4 zoea",
155
+ " 5 zoeas",
156
+ " 6 zonulae"
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 zaffres",
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 zygaenid",
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