guard-haskell 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NmQxYWQ2YzZiMmUwOGY3YTMzNjIzM2IyYTNjNjcxODk5ZGMyYzFlMQ==
4
+ M2MzMTgzOGIwYWRkNTkyYmNmYzBiNGM4YmEwMDA0Mzk2YTgxYmUzZQ==
5
5
  data.tar.gz: !binary |-
6
- YjEzZjFmZjk3ZWUyNTA4Yjc3MDkwOTgwZTJjNzQ1YzViYjU3NWMyNw==
6
+ NmQxZTYxM2NkNDgyZGUzNDFiZTc1YjdkOTMzZjg4OTk5N2MyNmZmMg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- OTE2OTEzZWNjMmZmZjllNTEzMDBlMWMwNmJiYTFmOGMzOGU0NDc2MjNjOWRh
10
- YjQ2MjI0NjkwODNjMDZiMWNkYTRlNzE2MjhiODkyMDBjMTE3OGI3ZGY1MDQ1
11
- YWQ2NjU1ZjFiZjAwOWFhNTVmNjFjNjhhYWQ3NTQ4NTkzNmM2ZGQ=
9
+ Y2M2ZTc4ODU1NWRhNWI1MTUzOThhYjQ4NzFhNmEyZDc1NWIzMDhhYmQ0NWJi
10
+ MmNkNDAzYmQ0MmIxMDhkNWUyZTMxMjAwZTk1NjQyMmQzZGRmZmM4NTU2ZGQ3
11
+ YWU2MzgzODkyYmE1NTBjZWE0OTYzODhkYWJiMzZiMzU0MjBhMjg=
12
12
  data.tar.gz: !binary |-
13
- ZDljODRhOGVmZTYzZjcwNjlhOWUxODcxZDM2ZDliNGE1MjM4YTJmODA0ZDUx
14
- MTY2NTQ1MzdlNjM2NjBmY2Y3NWM3OGI4ZWM1ZGQxNTNhYjgzOGEzNDE3MWY3
15
- MjY3NDM4MTFjMTQ1YzMxN2IyMzBlMTVmMzMyYzc5NDc1MDU4ODI=
13
+ YTc3MWI3NjcwYTllNTVmOTBmMTc0ZThiYTZjMTI1YWE5ZTM1ODIxZTA5N2U2
14
+ ZjU4MTZjMzg5M2QzMWY0ZTNiZmE3YTQ3ZTQ0NDNlOTQ1ZmQ4ZDM3Y2NmYTM2
15
+ MzVhYjlmZmU4NGZlMzUwMjJkNmViNTdlMTgwMDg0NTRlODIxZTE=
@@ -1,3 +1,17 @@
1
+ 1.3.0
2
+ =====
3
+
4
+ * Ignore user cabal package database if sandbox is found
5
+ * Catch CPP failures (previously did n't work because of the typo)
6
+ * Add `focus_on_fail` option
7
+
8
+ 1.2.0
9
+ =====
10
+
11
+ * Catch GHCI runtime linker failures
12
+ * Separate runtime and compile time failures for `--rerun` to work better
13
+ * Fix ignored spec results if spec was run directly from guard repl
14
+
1
15
  1.1.0
2
16
  =====
3
17
 
data/README.md CHANGED
@@ -20,7 +20,7 @@ guard-haskell
20
20
 
21
21
  For explanation what `guard` is and how to use it, please refer to the [`guard manual`][0]
22
22
 
23
- `guard-haskell` uses [`hspec`][1] to run specs and check their success, so it makes some assumptions about your code style:
23
+ `guard-haskell` uses [`hspec`][1] to run specs and check results, so it makes some assumptions about your code style:
24
24
 
25
25
  * `hspec` is your testing framework and
26
26
 
@@ -57,11 +57,15 @@ end
57
57
 
58
58
  ### `all_on_start`
59
59
 
60
- Run all specs on start (default: `false`).
60
+ Run all examples on start (default: `false`).
61
61
 
62
62
  ### `all_on_pass`
63
63
 
64
- Run all specs after previously failing spec _finally_ passes (default: `false`).
64
+ Run all examples after previously failing spec _finally_ passes (default: `false`).
65
+
66
+ ### `focus_on_fail`
67
+
68
+ Rerun only failed examples until they pass (default: `true`).
65
69
 
66
70
  ### `ghci_options`
67
71
 
@@ -23,16 +23,29 @@ module ::Guard
23
23
  require 'guard/haskell/repl'
24
24
 
25
25
  attr_reader :repl, :top_spec, :ghci_options, :targets, :last_run
26
- attr_reader :all_on_start, :all_on_pass
26
+ attr_reader :all_on_start, :all_on_pass, :focus_on_fail
27
27
 
28
- def initialize options = {}
28
+ DEFAULT_OPTIONS = {
29
+ top_spec: "test/Spec.hs",
30
+ ghci_options: [],
31
+ all_on_start: false,
32
+ all_on_pass: false,
33
+ focus_on_fail: true,
34
+ }
35
+
36
+ def initialize(user_options = {})
29
37
  super
30
- @last_run = :success # try to prove it wasn't :-)
31
- @top_spec = options[:top_spec] || "test/Spec.hs"
32
- @ghci_options = options[:ghci_options] || []
33
- @all_on_start = options[:all_on_start] || false
34
- @all_on_pass = options[:all_on_pass] || false
35
- @repl = Repl.new
38
+
39
+ @last_run = :success # try to prove it wasn't :-)
40
+
41
+ options = DEFAULT_OPTIONS.merge(user_options)
42
+ @top_spec = options[:top_spec]
43
+ @ghci_options = options[:ghci_options]
44
+ @all_on_start = options[:all_on_start]
45
+ @all_on_pass = options[:all_on_pass]
46
+ @focus_on_fail = options[:focus_on_fail]
47
+
48
+ @repl = Repl.new
36
49
  end
37
50
 
38
51
  def start
@@ -61,7 +74,7 @@ module ::Guard
61
74
  end
62
75
 
63
76
  def run pattern
64
- if last_run == :runtime_failure
77
+ if focus_on_fail and last_run == :runtime_failure
65
78
  repl.rerun
66
79
  else
67
80
  repl.run(pattern)
@@ -1,65 +1,57 @@
1
1
  require 'open3'
2
2
 
3
3
  class ::Guard::Haskell::Repl
4
- attr_reader :stdin, :reader, :thread, :result
4
+ attr_reader :stdin, :listener, :thread, :result
5
5
 
6
6
  def initialize
7
7
  @running = false
8
8
  @result = :success
9
9
  end
10
10
 
11
+ def self.test(str)
12
+ case str
13
+ when /\d+ examples?, 0 failures/
14
+ :success
15
+ when /\d+ examples?, \d+ failures?/
16
+ :runtime_failure
17
+ when /Failed, modules loaded:/,
18
+ /\*{3} Exception:/,
19
+ /phase `C pre-processor' failed/,
20
+ /GHCi runtime linker: fatal error:/
21
+ :compile_failure
22
+ end
23
+ end
24
+
11
25
  def start ghci_options
12
26
  cmd = ["ghci"]
13
27
  Dir["*"].each { |d| cmd << "-i#{d}" if File.directory?(d) }
14
28
  sandbox = ::Dir[".cabal-sandbox/*packages.conf.d"].first
15
- cmd << "-package-db=#{sandbox}" if sandbox
29
+ cmd.concat(["-no-user-package-db", "-package-db=#{sandbox}"]) if sandbox
16
30
  cmd.concat(ghci_options)
17
31
 
18
32
  @stdin, stdout, @thread = ::Open3.popen2e(*cmd)
19
- @reader = ::Thread.new do
20
- loop do
21
- while (out = stdout.gets)
22
- print out
23
- if @running
24
- case out
25
- when /\d+ examples?, 0 failures/
26
- @result = :success
27
- @running = false
28
- when /\d+ examples?, \d+ failures?/
29
- @result = :runtime_failure
30
- @running = false
31
- when /Failed, modules loaded:/,
32
- /\*{3} Exception:/,
33
- /phase `C preprocessor' failed/,
34
- /^GHCi runtime linker: fatal error:/
35
- @result = :compile_failure
36
- @running = false
37
- end
38
- end
39
- end
40
- end
41
- end
33
+ @listener = ::Thread.new { listen(stdout, STDOUT) }
42
34
  end
43
35
 
44
- def init spec
45
- _repl ":load #{spec}\n"
36
+ def init(spec)
37
+ repl(":load #{spec}\n")
46
38
  end
47
39
 
48
40
  def exit
49
- ::Process::kill "TERM", thread.pid
50
- ::Thread.kill(reader)
41
+ ::Process::kill("TERM", thread.pid)
42
+ ::Thread.kill(listener)
51
43
  end
52
44
 
53
- def run pattern = nil
45
+ def run(pattern = nil)
54
46
  if pattern.nil?
55
- _repl ":reload\n:main --color\n"
47
+ repl(":reload\n:main --color\n")
56
48
  else
57
- _repl ":reload\n:main --color --match #{pattern}\n"
49
+ repl(":reload\n:main --color --match #{pattern}\n")
58
50
  end
59
51
  end
60
52
 
61
53
  def rerun
62
- _repl ":reload\n:main --color --rerun\n"
54
+ repl(":reload\n:main --color --rerun\n")
63
55
  end
64
56
 
65
57
  def result
@@ -67,8 +59,24 @@ class ::Guard::Haskell::Repl
67
59
  @result
68
60
  end
69
61
 
70
- def _repl command
71
- @running = true
72
- stdin.write command
73
- end
62
+ private
63
+
64
+ def repl(command)
65
+ @running = true
66
+ stdin.write(command)
67
+ end
68
+
69
+ def listen(in_stream, out_stream)
70
+ while (str = in_stream.gets)
71
+ out_stream.print(str)
72
+ if @running
73
+ res = self.class.test(str)
74
+ case res
75
+ when :success, :runtime_failure, :compile_failure
76
+ @result = res
77
+ @running = false
78
+ end
79
+ end
80
+ end
81
+ end
74
82
  end
@@ -1,5 +1,5 @@
1
1
  module Guard
2
2
  module HaskellVersion
3
- VERSION = '1.2.0'
3
+ VERSION = '1.3.0'
4
4
  end
5
5
  end
@@ -0,0 +1,195 @@
1
+ require 'spec_helper'
2
+ require 'guard/notifier'
3
+
4
+ describe ::Guard::Haskell::Repl do
5
+ let(:repl) do
6
+ ::Guard::Haskell::Repl.new
7
+ end
8
+
9
+ describe '#init' do
10
+ it "calls :load on ghci instance" do
11
+ expect(repl).to receive(:repl).with(/:load/)
12
+ repl.init("Spec.hs")
13
+ end
14
+
15
+ it "loads provided spec" do
16
+ expect(repl).to receive(:repl).with(/FooBarSpec.hs/)
17
+ repl.init("FooBarSpec.hs")
18
+ end
19
+ end
20
+
21
+ describe '#run' do
22
+ it "reloads the spec if no pattern is provided" do
23
+ expect(repl).to receive(:repl).with(/:reload/)
24
+ repl.run
25
+ end
26
+
27
+ it "reloads the spec if a pattern is provided" do
28
+ expect(repl).to receive(:repl).with(/:reload/)
29
+ repl.run("FooBar")
30
+ end
31
+
32
+ it "provides a pattern for spec to match" do
33
+ expect(repl).to receive(:repl).with(/--match FooBar/)
34
+ repl.run("FooBar")
35
+ end
36
+ end
37
+
38
+ describe '#rerun' do
39
+ it "reloads the spec" do
40
+ expect(repl).to receive(:repl).with(/:reload/)
41
+ repl.rerun
42
+ end
43
+
44
+ it "reruns the spec" do
45
+ expect(repl).to receive(:repl).with(/--rerun/)
46
+ repl.rerun
47
+ end
48
+ end
49
+
50
+ describe '#test' do
51
+ it "handles zero examples/failures" do
52
+ expect(::Guard::Haskell::Repl.test("0 examples, 0 failures")).to eq(:success)
53
+ end
54
+
55
+ it "handles one example/zero failures" do
56
+ expect(::Guard::Haskell::Repl.test("1 example, 0 failures")).to eq(:success)
57
+ end
58
+
59
+ it "handles multiple examples/zero failures" do
60
+ expect(::Guard::Haskell::Repl.test("37 examples, 0 failures")).to eq(:success)
61
+ end
62
+
63
+ it "handles one example/failure" do
64
+ expect(::Guard::Haskell::Repl.test("1 example, 1 failure")).to eq(:runtime_failure)
65
+ end
66
+
67
+ it "handles multiple examples/multiple failures" do
68
+ expect(::Guard::Haskell::Repl.test("26 examples, 2 failures")).to eq(:runtime_failure)
69
+ end
70
+
71
+ it "handles failure to load the module" do
72
+ expect(::Guard::Haskell::Repl.test("Failed, modules loaded:")).to eq(:compile_failure)
73
+ end
74
+
75
+ it "handles uncaught exceptions" do
76
+ expect(::Guard::Haskell::Repl.test("*** Exception: Prelude.undefined")).to eq(:compile_failure)
77
+ end
78
+
79
+ it "handles CPP errors" do
80
+ expect(::Guard::Haskell::Repl.test("phase `C pre-processor' failed")).to eq(:compile_failure)
81
+ end
82
+
83
+ it "handles runtime linker errors" do
84
+ expect(::Guard::Haskell::Repl.test("GHCi runtime linker: fatal error:")).to eq(:compile_failure)
85
+ end
86
+ end
87
+
88
+ describe '#listen' do
89
+ context 'real world' do
90
+ it "handles typical passed run" do
91
+ in_stream = ::StringIO.open(<<-FOO)
92
+ Useful.Git
93
+ fromGraph
94
+ - creates `git init' script from empty graph
95
+ - creates git script from two-node graph
96
+ - creates git script from three-node graph
97
+ - creates git script from three-node chain graph
98
+
99
+ Finished in 0.0054 seconds
100
+ 4 examples, 0 failures
101
+ FOO
102
+ out_stream = File.open("/dev/null", "w")
103
+ repl.instance_variable_set(:@running, true)
104
+
105
+ repl.send(:listen, in_stream, out_stream)
106
+
107
+ expect(repl.instance_variable_get(:@running)).to eq(false)
108
+ expect(repl.instance_variable_get(:@result)).to eq(:success)
109
+ end
110
+
111
+ it "handles typical failed spec run" do
112
+ in_stream = ::StringIO.open(<<-FOO)
113
+ Useful.Git
114
+ fromGraph
115
+ - creates `git init' script from empty graph
116
+ - creates git script from two-node graph FAILED [1]
117
+ - creates git script from three-node graph
118
+ - creates git script from three-node chain graph
119
+
120
+ 1) Useful.Git.fromGraph creates git script from two-node graph
121
+ expected: Just [InitE,OrphanE "foo" "7",CommitE "bar" ["1"] "2"]
122
+ but got: Just [InitE,OrphanE "foo" "1",CommitE "bar" ["1"] "2"]
123
+
124
+ Randomized with seed 4611685481380198536
125
+
126
+ Finished in 0.0089 seconds
127
+ 4 examples, 1 failure
128
+ *** Exception: ExitFailure 1
129
+ FOO
130
+ out_stream = File.open("/dev/null", "w")
131
+ repl.instance_variable_set(:@running, true)
132
+
133
+ repl.send(:listen, in_stream, out_stream)
134
+
135
+ expect(repl.instance_variable_get(:@running)).to eq(false)
136
+ expect(repl.instance_variable_get(:@result)).to eq(:runtime_failure)
137
+ end
138
+
139
+ it "handles runtime linker error" do
140
+ in_stream = ::StringIO.open(<<-FOO)
141
+ GHCi runtime linker: fatal error: I found a duplicate definition for symbol
142
+ HUnitzm1zi2zi5zi2_TestziHUnitziBase_zdwzdcshowsPrec_slow
143
+ whilst processing object file
144
+ /home/maksenov/.cabal/lib/HUnit-1.2.5.2/ghc-7.6.2/HSHUnit-1.2.5.2.o
145
+ This could be caused by:
146
+ * Loading two different object files which export the same symbol
147
+ * Specifying the same object file twice on the GHCi command line
148
+ * An incorrect `package.conf' entry, causing some object to be
149
+ loaded twice.
150
+ GHCi cannot safely continue in this situation. Exiting now. Sorry.
151
+ FOO
152
+ out_stream = File.open("/dev/null", "w")
153
+ repl.instance_variable_set(:@running, true)
154
+
155
+ repl.send(:listen, in_stream, out_stream)
156
+
157
+ expect(repl.instance_variable_get(:@running)).to eq(false)
158
+ expect(repl.instance_variable_get(:@result)).to eq(:compile_failure)
159
+ end
160
+
161
+ it "handles hspec exceptions" do
162
+ in_stream = ::StringIO.open(<<-FOO)
163
+ *Main> Ok, modules loaded: Main, Useful.Parser, Useful.Graph, Useful.Git.
164
+ *Main>
165
+ *** Exception: Prelude.undefined
166
+ FOO
167
+ out_stream = File.open("/dev/null", "w")
168
+ repl.instance_variable_set(:@running, true)
169
+
170
+ repl.send(:listen, in_stream, out_stream)
171
+
172
+ expect(repl.instance_variable_get(:@running)).to eq(false)
173
+ expect(repl.instance_variable_get(:@result)).to eq(:compile_failure)
174
+ end
175
+
176
+ it "handles CPP exceptions" do
177
+ in_stream = ::StringIO.open(<<-FOO)
178
+ *Main>
179
+ test/Useful/GitSpec.hs:4:0:
180
+ error: invalid preprocessing directive #ifd
181
+ #ifd
182
+ ^
183
+ phase `C pre-processor' failed (exitcode = 1)
184
+ FOO
185
+ out_stream = File.open("/dev/null", "w")
186
+ repl.instance_variable_set(:@running, true)
187
+
188
+ repl.send(:listen, in_stream, out_stream)
189
+
190
+ expect(repl.instance_variable_get(:@running)).to eq(false)
191
+ expect(repl.instance_variable_get(:@result)).to eq(:compile_failure)
192
+ end
193
+ end
194
+ end
195
+ end
@@ -46,19 +46,23 @@ describe ::Guard::Haskell do
46
46
 
47
47
  describe ".initialize" do
48
48
  it "has :all_on_start option" do
49
- expect(guard.instance_variable_defined?(:@all_on_start)).to be_true
49
+ expect(guard.instance_variable_defined?(:@all_on_start)).to eq(true)
50
50
  end
51
51
 
52
52
  it "has :all_on_pass option" do
53
- expect(guard.instance_variable_defined?(:@all_on_pass)).to be_true
53
+ expect(guard.instance_variable_defined?(:@all_on_pass)).to eq(true)
54
+ end
55
+
56
+ it "has :focus_on_fail option" do
57
+ expect(guard.instance_variable_defined?(:@focus_on_fail)).to eq(true)
54
58
  end
55
59
 
56
60
  it "has :ghci_options option" do
57
- expect(guard.instance_variable_defined?(:@ghci_options)).to be_true
61
+ expect(guard.instance_variable_defined?(:@ghci_options)).to eq(true)
58
62
  end
59
63
 
60
64
  it "has :top_spec option" do
61
- expect(guard.instance_variable_defined?(:@top_spec)).to be_true
65
+ expect(guard.instance_variable_defined?(:@top_spec)).to eq(true)
62
66
  end
63
67
  end
64
68
 
@@ -69,14 +73,14 @@ describe ::Guard::Haskell do
69
73
  guard.start
70
74
  end
71
75
 
72
- it "does not run all specs on start by default" do
76
+ it "does not run all examples on start by default" do
73
77
  expect(guard).not_to receive(:run_all)
74
78
  expect(guard).not_to receive(:success?)
75
79
 
76
80
  guard.start
77
81
  end
78
82
 
79
- it "runs all specs on start with :all_on_start option enabled" do
83
+ it "runs all examples on start with :all_on_start option enabled" do
80
84
  custom_guard = ::Guard::Haskell.new(all_on_start: true)
81
85
 
82
86
  expect_any_instance_of(::Guard::Haskell::Repl).to receive(:run)
@@ -120,7 +124,7 @@ describe ::Guard::Haskell do
120
124
  guard.run("Foo")
121
125
  end
122
126
 
123
- it "runs specs matching pattern if last run was a success" do
127
+ it "runs examples matching pattern if last run was a success" do
124
128
  expect_any_instance_of(::Guard::Haskell::Repl).to receive(:run).with("Foo")
125
129
  guard.instance_variable_set(:@last_run, :success)
126
130
 
@@ -128,7 +132,7 @@ describe ::Guard::Haskell do
128
132
  guard.run("Foo")
129
133
  end
130
134
 
131
- it "runs specs matching pattern if last run was a compile time failure" do
135
+ it "runs examples matching pattern if last run was a compile time failure" do
132
136
  expect_any_instance_of(::Guard::Haskell::Repl).to receive(:run).with("Foo")
133
137
  guard.instance_variable_set(:@last_run, :compile_failure)
134
138
 
@@ -136,9 +140,21 @@ describe ::Guard::Haskell do
136
140
  guard.run("Foo")
137
141
  end
138
142
 
139
- it "reruns previous specs if last run was a runtime failure" do
143
+ it "reruns failing examples if last run was a runtime failure and @focus_on_fail is set" do
140
144
  expect_any_instance_of(::Guard::Haskell::Repl).to receive(:rerun)
145
+ expect_any_instance_of(::Guard::Haskell::Repl).not_to receive(:run).with("Foo")
146
+ guard.instance_variable_set(:@last_run, :runtime_failure)
147
+ guard.instance_variable_set(:@focus_on_fail, true)
148
+
149
+ guard.start
150
+ guard.run("Foo")
151
+ end
152
+
153
+ it "runs examples matching pattern if last run was a runtime failure but @focus_on_fail is unset" do
154
+ expect_any_instance_of(::Guard::Haskell::Repl).not_to receive(:rerun)
155
+ expect_any_instance_of(::Guard::Haskell::Repl).to receive(:run).with("Foo")
141
156
  guard.instance_variable_set(:@last_run, :runtime_failure)
157
+ guard.instance_variable_set(:@focus_on_fail, false)
142
158
 
143
159
  guard.start
144
160
  guard.run("Foo")
@@ -232,7 +248,7 @@ describe ::Guard::Haskell do
232
248
  guard.success?
233
249
  end
234
250
 
235
- it "runs all specs on success after runtime failure with :all_on_pass option" do
251
+ it "runs all examples on success after runtime failure with :all_on_pass option" do
236
252
  ::Guard::Haskell::Repl.any_instance.stub(:result) { :success }
237
253
  custom_guard = ::Guard::Haskell.new(all_on_pass: true)
238
254
  custom_guard.instance_variable_set(:@last_run, :runtime_failure)
@@ -243,7 +259,7 @@ describe ::Guard::Haskell do
243
259
  custom_guard.success?
244
260
  end
245
261
 
246
- it "runs all specs on success after compile time failure with :all_on_pass option" do
262
+ it "runs all examples on success after compile time failure with :all_on_pass option" do
247
263
  ::Guard::Haskell::Repl.any_instance.stub(:result) { :success }
248
264
  custom_guard = ::Guard::Haskell.new(all_on_pass: true)
249
265
  custom_guard.instance_variable_set(:@last_run, :compile_failure)
@@ -274,7 +290,7 @@ describe ::Guard::Haskell do
274
290
  end
275
291
 
276
292
  describe "#run_on_modifications" do
277
- it "run specs for simple haskell files" do
293
+ it "run examples for simple haskell files" do
278
294
  expect_any_instance_of(::Guard::Haskell::Repl).to receive(:run).with("Foo")
279
295
  expect_any_instance_of(::Guard::Haskell::Repl).to receive(:result)
280
296
 
@@ -282,7 +298,7 @@ describe ::Guard::Haskell do
282
298
  guard.run_on_modifications(["Foo.hs"])
283
299
  end
284
300
 
285
- it "run specs for simple literate haskell files" do
301
+ it "run examples for simple literate haskell files" do
286
302
  expect_any_instance_of(::Guard::Haskell::Repl).to receive(:run).with("Foo")
287
303
  expect_any_instance_of(::Guard::Haskell::Repl).to receive(:result)
288
304
 
@@ -290,7 +306,7 @@ describe ::Guard::Haskell do
290
306
  guard.run_on_modifications(["Foo.lhs"])
291
307
  end
292
308
 
293
- it "run specs for *complex* haskell files" do
309
+ it "run examples for *complex* haskell files" do
294
310
  expect_any_instance_of(::Guard::Haskell::Repl).to receive(:run).with("Bar.Baz")
295
311
  expect_any_instance_of(::Guard::Haskell::Repl).to receive(:result)
296
312
 
@@ -298,7 +314,7 @@ describe ::Guard::Haskell do
298
314
  guard.run_on_modifications(["foo/Bar/Baz.hs"])
299
315
  end
300
316
 
301
- it "run specs for simple haskell spec files" do
317
+ it "run examples for simple haskell spec files" do
302
318
  expect_any_instance_of(::Guard::Haskell::Repl).to receive(:run).with("Foo")
303
319
  expect_any_instance_of(::Guard::Haskell::Repl).to receive(:result)
304
320
 
@@ -306,7 +322,7 @@ describe ::Guard::Haskell do
306
322
  guard.run_on_modifications(["FooSpec.hs"])
307
323
  end
308
324
 
309
- it "run specs for simple literate haskell spec files" do
325
+ it "run examples for simple literate haskell spec files" do
310
326
  expect_any_instance_of(::Guard::Haskell::Repl).to receive(:run).with("Foo")
311
327
  expect_any_instance_of(::Guard::Haskell::Repl).to receive(:result)
312
328
 
@@ -314,7 +330,7 @@ describe ::Guard::Haskell do
314
330
  guard.run_on_modifications(["FooSpec.lhs"])
315
331
  end
316
332
 
317
- it "run specs for *complex* haskell spec files" do
333
+ it "run examples for *complex* haskell spec files" do
318
334
  expect_any_instance_of(::Guard::Haskell::Repl).to receive(:run).with("Bar.Baz")
319
335
  expect_any_instance_of(::Guard::Haskell::Repl).to receive(:result)
320
336
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guard-haskell
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matvey Aksenov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-02 00:00:00.000000000 Z
11
+ date: 2014-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: guard
@@ -99,6 +99,7 @@ files:
99
99
  - lib/guard/haskell/repl.rb
100
100
  - lib/guard/haskell/templates/Guardfile
101
101
  - lib/guard/haskell/version.rb
102
+ - spec/guard/haskell/repl_spec.rb
102
103
  - spec/guard/haskell_spec.rb
103
104
  - spec/spec_helper.rb
104
105
  homepage: https://github.com/supki/guard-haskell#readme
@@ -126,5 +127,6 @@ signing_key:
126
127
  specification_version: 4
127
128
  summary: Guard gem for Haskell
128
129
  test_files:
130
+ - spec/guard/haskell/repl_spec.rb
129
131
  - spec/guard/haskell_spec.rb
130
132
  - spec/spec_helper.rb