livetext 0.9.14 → 0.9.20

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/README.lt3 +2 -2
  3. data/imports/bookish.rb +288 -0
  4. data/imports/calibre.rb +28 -0
  5. data/imports/livemagick.rb +133 -0
  6. data/imports/markdown.rb +44 -0
  7. data/imports/markdown_importable.rb +46 -0
  8. data/imports/pyggish.rb +204 -0
  9. data/imports/tutorial.rb +95 -0
  10. data/lib/cmdargs.rb +93 -0
  11. data/lib/formatline.rb +56 -83
  12. data/lib/handler/icanhaz.rb +35 -0
  13. data/lib/handler.rb +1 -0
  14. data/lib/helpers.rb +173 -4
  15. data/lib/livetext.rb +16 -141
  16. data/lib/parser/file.rb +8 -0
  17. data/lib/parser/import.rb +1 -3
  18. data/lib/parser/mixin.rb +22 -24
  19. data/lib/parser/set.rb +35 -26
  20. data/lib/parser/string.rb +19 -4
  21. data/lib/processor.rb +1 -4
  22. data/lib/standard.rb +68 -97
  23. data/lib/userapi.rb +1 -0
  24. data/livetext.gemspec +2 -1
  25. data/plugin/bookish.rb +26 -22
  26. data/plugin/calibre.rb +1 -1
  27. data/plugin/livemagick.rb +10 -10
  28. data/plugin/markdown.rb +13 -11
  29. data/plugin/pyggish.rb +94 -84
  30. data/plugin/tutorial.rb +10 -5
  31. data/test/all.rb +0 -1
  32. data/test/snapshots/OMIT.txt +9 -8
  33. data/test/snapshots/clusion.txt +84 -0
  34. data/test/snapshots/error_inc_line_num/match-error.txt +1 -1
  35. data/test/snapshots/error_invalid_name/match-error.txt +1 -1
  36. data/test/snapshots/error_line_num/match-error.txt +1 -1
  37. data/test/snapshots/error_mismatched_end/match-error.txt +1 -1
  38. data/test/snapshots/error_missing_end/match-error.txt +1 -1
  39. data/test/snapshots/error_no_such_copy/match-error.txt +1 -1
  40. data/test/snapshots/error_no_such_copy/source.lt3 +0 -1
  41. data/test/snapshots/error_no_such_inc/match-error.txt +1 -1
  42. data/test/snapshots/icanhaz/expected-output.txt +5 -0
  43. data/test/snapshots/icanhaz/match-error.txt +1 -0
  44. data/test/snapshots/icanhaz/simple_import.rb +5 -0
  45. data/test/snapshots/icanhaz/source.lt3 +10 -0
  46. data/test/snapshots/icanhaz2/expected-error.txt +0 -0
  47. data/test/snapshots/icanhaz2/expected-output.txt +6 -0
  48. data/test/snapshots/icanhaz2/simple_canhaz.rb +5 -0
  49. data/test/snapshots/icanhaz2/source.lt3 +6 -0
  50. data/test/snapshots/simple_import/expected-error.txt +0 -0
  51. data/test/snapshots/simple_import/expected-output.txt +7 -0
  52. data/test/snapshots/simple_import/simple_import.rb +5 -0
  53. data/test/snapshots/simple_import/source.lt3 +7 -0
  54. data/test/snapshots/simple_include/source.lt3 +0 -1
  55. data/test/snapshots.rb +85 -37
  56. data/test/unit/all.rb +1 -0
  57. data/test/unit/formatline.rb +650 -0
  58. data/test/unit/parser/importable.rb +1 -1
  59. data/test/unit/parser/mixin.rb +1 -1
  60. data/test/unit/parser/set.rb +19 -12
  61. data/test/unit/parser/string.rb +14 -14
  62. metadata +27 -5
  63. data/test/formatting-tests.rb +0 -35
  64. data/test/formatting.rb +0 -103
  65. data/test/snapshots/formatting-tests.txt +0 -124
data/test/snapshots.rb CHANGED
@@ -43,6 +43,70 @@ class TestingLivetext < MiniTest::Test
43
43
  EXP_OUT, EXP_ERR = "expected-output.txt", "expected-error.txt"
44
44
  MATCH_OUT, MATCH_ERR = "match-output.txt", "match-error.txt"
45
45
 
46
+ TTY = File.open("/dev/tty","w")
47
+
48
+ def self.get_dir # FIXME - uh what?
49
+ cmdline = ARGV.first == "cmdline" # FIXME remove??
50
+ if cmdline
51
+ dir = "../"
52
+ Dir.chdir `livetext --path`.chomp.chomp
53
+ else
54
+ dir = ""
55
+ end
56
+ end
57
+
58
+ args = ARGV - ["cmdline"]
59
+
60
+ dir = self.get_dir
61
+
62
+ Data = "#{dir}test/snapshots"
63
+ Dir.chdir(Data)
64
+
65
+ TestDirs = Dir.entries(".").reject {|fname| ! File.directory?(fname) } - %w[. ..]
66
+
67
+
68
+ def self.filter # TODO move subset/omit logic here??
69
+ puts "Data = #{Data}"
70
+ all = Dir.entries(Data).reject {|fname| ! File.directory?(fname) } - %w[. ..]
71
+ included, excluded = [], []
72
+ @iflag, @eflag = true, false # defaults to INCLUDE
73
+ control = File.new("clusion.txt")
74
+ control.each_line do |line|
75
+ line.sub!(/#.*/, "")
76
+ line.strip!
77
+ lower = line.downcase
78
+ dejavu = false
79
+ case
80
+ when lower.empty?
81
+ # ignore
82
+ when lower == "default include all"
83
+ raise "Only one 'default' allowed" if dejavu
84
+ @iflag, @eflag = true, false # defaults to INCLUDE
85
+ dejavu = true
86
+ when lower == "default exclude all"
87
+ raise "Only one 'default' allowed" if dejavu
88
+ @iflag, @eflag = false, true
89
+ dejavu = true
90
+ when lower == "quit"
91
+ break
92
+ when lower[0] == "i"
93
+ TTY.puts "Warning: Can't include with 'i' when that is default" if @iflag
94
+ included << line.split(" ", 2)[1] # add to included
95
+ when lower[0] == "x"
96
+ TTY.puts "Warning: Can't exclude with 'x' when that is default" if @eflag
97
+ excluded << line.split(" ", 2)[1] # add to excluded
98
+ # add to excluded
99
+ end
100
+ [included, excluded]
101
+ end
102
+ end
103
+
104
+ i, e = self.filter
105
+ p i
106
+ p e
107
+
108
+ exit
109
+
46
110
  def initialize(base, assertion = nil)
47
111
  @assertion = assertion
48
112
  @base = base
@@ -53,7 +117,8 @@ class TestingLivetext < MiniTest::Test
53
117
  @match_out = File.exist?(MATCH_OUT)
54
118
  @match_err = File.exist?(MATCH_ERR)
55
119
  end
56
- bad_files = (@literal_out && @match_out) || (@literal_err && @match_err)
120
+ bad_files = (@literal_out && @match_out) || (@literal_err && @match_err) ||
121
+ (! @literal_out && ! @match_out)
57
122
  raise "Inconsistent structure for #@base" if bad_files
58
123
  end
59
124
 
@@ -108,56 +173,39 @@ class TestingLivetext < MiniTest::Test
108
173
  system("rm -f #{ACTUAL_OUT} #{ACTUAL_ERR} *sdiff.txt")
109
174
  end
110
175
 
111
- def filter # TODO move subset/omit logic here??
112
- end
113
-
114
176
  def run
115
177
  @errors = false # oops, need to reset
116
178
  Dir.chdir(@base) do
117
179
  cmd = "../../../bin/livetext #{SOURCE} >#{ACTUAL_OUT} 2>#{ACTUAL_ERR}"
118
180
  system(cmd)
119
- check_stdout
120
181
  check_stderr
182
+ check_stdout
121
183
  cleanup
122
184
  end
123
185
  end
124
186
  end
125
187
 
126
- TTY = File.open("/dev/tty","w")
127
-
128
- cmdline = ARGV.first == "cmdline" # FIXME remove??
129
- if cmdline
130
- dir = "../"
131
- Dir.chdir `livetext --path`.chomp.chomp
188
+ if args.empty?
189
+ selected = File.readlines("subset.txt").map(&:chomp)
190
+ omitfile = "OMIT.txt"
191
+ omitted = File.readlines(omitfile).map(&:chomp)
192
+ omitted.reject! {|line| line.start_with?("#") }
193
+ omit_names = omitted.map {|line| line.split.first }
194
+ STDERR.puts
195
+ STDERR.puts " >>> Warning: Omitting #{omitted.size} snapshot tests:\n "
196
+ indented = " "*7
197
+ omitted.each do |line|
198
+ STDERR.print indented
199
+ name, info = line.split(" ", 2)
200
+ STDERR.printf "%-20s %s\n", name, info
201
+ end
202
+ STDERR.puts
203
+ wanted = selected.empty? ? TestDirs : selected
204
+ Subset = wanted - omit_names
132
205
  else
133
- dir = ""
206
+ Subset = args
134
207
  end
135
208
 
136
- Data = "#{dir}test/snapshots"
137
- Dir.chdir(Data)
138
-
139
- TestDirs = Dir.entries(".").reject {|fname| ! File.directory?(fname) } - %w[. ..]
140
-
141
- selected = File.readlines("subset.txt").map(&:chomp)
142
-
143
- omitfile = "OMIT.txt"
144
- omitted = File.readlines(omitfile).map(&:chomp)
145
- omitted.reject! {|line| line.start_with?("#") }
146
- omit_names = omitted.map {|line| line.split.first }
147
- STDERR.puts
148
- STDERR.puts " >>> Warning: Omitting #{omitted.size} snapshot tests:\n "
149
- indented = " "*7
150
- omitted.each do |line|
151
- STDERR.print indented
152
- name, info = line.split(" ", 2)
153
- STDERR.printf "%-20s %s\n", name, info
154
- end
155
- STDERR.puts
156
-
157
- wanted = selected.empty? ? TestDirs : selected
158
-
159
- Subset = wanted - omit_names
160
-
161
209
  Subset.each do |tdir|
162
210
  define_method("test_#{tdir}") do
163
211
  myproc = Proc.new {|bool, info| assert bool, info }
data/test/unit/all.rb CHANGED
@@ -1,3 +1,4 @@
1
1
 
2
2
  require_relative 'standard'
3
3
  require_relative 'parser' # nested
4
+ require_relative 'formatline'