guard-haskell 1.5.0 → 1.6.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.
- checksums.yaml +8 -8
- data/.travis.yml +3 -0
- data/CHANGELOG.md +10 -1
- data/lib/guard/haskell/repl.rb +7 -7
- data/lib/guard/haskell/templates/Guardfile +5 -1
- data/lib/guard/haskell/version.rb +1 -1
- data/lib/guard/haskell.rb +5 -6
- data/spec/guard/haskell/repl_spec.rb +24 -0
- data/spec/guard/haskell_spec.rb +11 -11
- data/spec/run-files/missing-preprocessor.error +9 -0
- data/spec/run-files/preprocessor-phase-failed.error +5 -0
- metadata +6 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,15 +1,15 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            !binary "U0hBMQ==":
         | 
| 3 3 | 
             
              metadata.gz: !binary |-
         | 
| 4 | 
            -
                 | 
| 4 | 
            +
                MTlhNDgyMGFhYTJhZDQxMjQyNjhlMWQxMmMwMTE5YzljYzY4NzNhYw==
         | 
| 5 5 | 
             
              data.tar.gz: !binary |-
         | 
| 6 | 
            -
                 | 
| 6 | 
            +
                NDk2ZjBjMjI0MjdiMDJkMDM5ZDY4ZTg2Y2VjNTk5MWQ3ZmE2ODM5MA==
         | 
| 7 7 | 
             
            SHA512:
         | 
| 8 8 | 
             
              metadata.gz: !binary |-
         | 
| 9 | 
            -
                 | 
| 10 | 
            -
                 | 
| 11 | 
            -
                 | 
| 9 | 
            +
                MWNhODA4OWM5NDU3ZGJmNzUyYjVmMTUzMWU2Mjc3YmQxMTgyYzkzZjUxMTA5
         | 
| 10 | 
            +
                ZTk4Y2FiYTc3YWQwYmIzNTMyOGNhYTdhMTQ3ODZiZjY4M2RkZTE4OWNiODNj
         | 
| 11 | 
            +
                NzA0MTliMDgyZDVmMzI3MGRjODE1ZDkwMDNlOTFlYTdkOGMwOTU=
         | 
| 12 12 | 
             
              data.tar.gz: !binary |-
         | 
| 13 | 
            -
                 | 
| 14 | 
            -
                 | 
| 15 | 
            -
                 | 
| 13 | 
            +
                MWExZTU3Mjg0ZDVkODJjMzQzYzg2NzYwYjM3YmE4Y2QwOTg5MThiMjBjMTk3
         | 
| 14 | 
            +
                MTJmMDNkZTc5ZmE4MWE0ZThlMzhjZTI5NThkMzcwNDMxY2MyOTIyNzVlYjM1
         | 
| 15 | 
            +
                YWM5YjFmYmVlYzFiNzI1MzM1YTBlM2Y2ODJhZGM1N2U1YzNhYjY=
         | 
    
        data/.travis.yml
    CHANGED
    
    
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,3 +1,12 @@ | |
| 1 | 
            +
            1.6.0
         | 
| 2 | 
            +
            =====
         | 
| 3 | 
            +
             | 
| 4 | 
            +
              * Handle Haskell pre-processor phase failures
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              * Handle missing Haskell pre-processor failures
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              * More extensible Guardfile template
         | 
| 9 | 
            +
             | 
| 1 10 | 
             
            1.5.0
         | 
| 2 11 | 
             
            =====
         | 
| 3 12 |  | 
| @@ -13,7 +22,7 @@ | |
| 13 22 | 
             
            =====
         | 
| 14 23 |  | 
| 15 24 | 
             
              * Ignore user cabal package database if sandbox is found
         | 
| 16 | 
            -
              * Catch CPP failures (previously  | 
| 25 | 
            +
              * Catch CPP failures (previously didn't work because of the typo)
         | 
| 17 26 | 
             
              * Add `focus_on_fail` option
         | 
| 18 27 |  | 
| 19 28 | 
             
            1.2.0
         | 
    
        data/lib/guard/haskell/repl.rb
    CHANGED
    
    | @@ -3,11 +3,6 @@ require 'open3' | |
| 3 3 | 
             
            class ::Guard::Haskell::Repl
         | 
| 4 4 | 
             
              attr_reader :stdin, :listener, :thread, :result
         | 
| 5 5 |  | 
| 6 | 
            -
              def initialize
         | 
| 7 | 
            -
                @running = false
         | 
| 8 | 
            -
                @result  = :success
         | 
| 9 | 
            -
              end
         | 
| 10 | 
            -
             | 
| 11 6 | 
             
              def self.test(str)
         | 
| 12 7 | 
             
                case str
         | 
| 13 8 | 
             
                when /\d+ examples?, 0 failures/,
         | 
| @@ -19,13 +14,18 @@ class ::Guard::Haskell::Repl | |
| 19 14 | 
             
                     /\*{3} Exception:/,
         | 
| 20 15 | 
             
                     /cannot find object file for module/,
         | 
| 21 16 | 
             
                     /phase `C pre-processor' failed/,
         | 
| 17 | 
            +
                     /phase `Haskell pre-processor' failed/,
         | 
| 22 18 | 
             
                     /GHCi runtime linker: fatal error:/,
         | 
| 23 | 
            -
                     /During interactive linking, GHCi couldn't find the following symbol | 
| 19 | 
            +
                     /During interactive linking, GHCi couldn't find the following symbol:/,
         | 
| 20 | 
            +
                     /ghc: could not execute:/
         | 
| 24 21 | 
             
                  :compile_failure
         | 
| 25 22 | 
             
                end
         | 
| 26 23 | 
             
              end
         | 
| 27 24 |  | 
| 28 | 
            -
              def  | 
| 25 | 
            +
              def initialize(ghci_options, sandbox_glob)
         | 
| 26 | 
            +
                @running = false
         | 
| 27 | 
            +
                @result  = :success
         | 
| 28 | 
            +
             | 
| 29 29 | 
             
                cmd = ["ghci"]
         | 
| 30 30 |  | 
| 31 31 | 
             
                Dir["*"].each { |d| cmd << "-i#{d}" if File.directory?(d) }
         | 
    
        data/lib/guard/haskell.rb
    CHANGED
    
    | @@ -22,7 +22,8 @@ module ::Guard | |
| 22 22 |  | 
| 23 23 | 
             
                require 'guard/haskell/repl'
         | 
| 24 24 |  | 
| 25 | 
            -
                 | 
| 25 | 
            +
                attr_accessor :opts, :repl
         | 
| 26 | 
            +
                attr_reader :targets, :last_run
         | 
| 26 27 |  | 
| 27 28 | 
             
                Options = Struct.new(
         | 
| 28 29 | 
             
                  :top_spec,
         | 
| @@ -44,14 +45,12 @@ module ::Guard | |
| 44 45 |  | 
| 45 46 | 
             
                def initialize(user_options = {})
         | 
| 46 47 | 
             
                  super
         | 
| 47 | 
            -
             | 
| 48 | 
            -
                  @last_run = :success # try to prove it wasn't :-)
         | 
| 49 | 
            -
                  @opts     = Options.new(*DEFAULT_OPTIONS.merge(user_options).values)
         | 
| 50 | 
            -
                  @repl     = Repl.new
         | 
| 48 | 
            +
                  self.opts = Options.new(*DEFAULT_OPTIONS.merge(user_options).values)
         | 
| 51 49 | 
             
                end
         | 
| 52 50 |  | 
| 53 51 | 
             
                def start
         | 
| 54 | 
            -
                   | 
| 52 | 
            +
                  @last_run = :success # try to prove it wasn't :-)
         | 
| 53 | 
            +
                  self.repl = Repl.new(opts.ghci_options, opts.sandbox_glob)
         | 
| 55 54 | 
             
                  repl.init(opts.top_spec)
         | 
| 56 55 |  | 
| 57 56 | 
             
                  @targets = ::Set.new(::Dir.glob("**/*.{hs,lhs}"))
         | 
| @@ -95,6 +95,10 @@ describe ::Guard::Haskell::Repl do | |
| 95 95 | 
             
                  expect(::Guard::Haskell::Repl.test("phase `C pre-processor' failed")).to eq(:compile_failure)
         | 
| 96 96 | 
             
                end
         | 
| 97 97 |  | 
| 98 | 
            +
                it "handles Haskell pre-processor errors" do
         | 
| 99 | 
            +
                  expect(::Guard::Haskell::Repl.test("phase `Haskell pre-processor' failed")).to eq(:compile_failure)
         | 
| 100 | 
            +
                end
         | 
| 101 | 
            +
             | 
| 98 102 | 
             
                it "handles runtime linker errors" do
         | 
| 99 103 | 
             
                  expect(::Guard::Haskell::Repl.test("GHCi runtime linker: fatal error:")).to eq(:compile_failure)
         | 
| 100 104 | 
             
                end
         | 
| @@ -173,6 +177,26 @@ describe ::Guard::Haskell::Repl do | |
| 173 177 | 
             
                    expect(repl.instance_variable_get(:@running)).to eq(false)
         | 
| 174 178 | 
             
                    expect(repl.instance_variable_get(:@result)).to eq(:compile_failure)
         | 
| 175 179 | 
             
                  end
         | 
| 180 | 
            +
             | 
| 181 | 
            +
                  it "handles preprocessor phase failures" do
         | 
| 182 | 
            +
                    in_stream  = ::File.open(run_file["preprocessor-phase-failed.error"])
         | 
| 183 | 
            +
                    repl.instance_variable_set(:@running, true)
         | 
| 184 | 
            +
             | 
| 185 | 
            +
                    repl.send(:listen, in_stream, dev_null)
         | 
| 186 | 
            +
             | 
| 187 | 
            +
                    expect(repl.instance_variable_get(:@running)).to eq(false)
         | 
| 188 | 
            +
                    expect(repl.instance_variable_get(:@result)).to eq(:compile_failure)
         | 
| 189 | 
            +
                  end
         | 
| 190 | 
            +
             | 
| 191 | 
            +
                  it "handles missing preprocessor error" do
         | 
| 192 | 
            +
                    in_stream  = ::File.open(run_file["missing-preprocessor.error"])
         | 
| 193 | 
            +
                    repl.instance_variable_set(:@running, true)
         | 
| 194 | 
            +
             | 
| 195 | 
            +
                    repl.send(:listen, in_stream, dev_null)
         | 
| 196 | 
            +
             | 
| 197 | 
            +
                    expect(repl.instance_variable_get(:@running)).to eq(false)
         | 
| 198 | 
            +
                    expect(repl.instance_variable_get(:@result)).to eq(:compile_failure)
         | 
| 199 | 
            +
                  end
         | 
| 176 200 | 
             
                end
         | 
| 177 201 | 
             
              end
         | 
| 178 202 |  | 
    
        data/spec/guard/haskell_spec.rb
    CHANGED
    
    | @@ -33,12 +33,16 @@ describe "monkey patching" do | |
| 33 33 | 
             
              end
         | 
| 34 34 | 
             
            end
         | 
| 35 35 |  | 
| 36 | 
            +
            class ::Guard::Haskell::Repl
         | 
| 37 | 
            +
              def initialize(*args)
         | 
| 38 | 
            +
              end
         | 
| 39 | 
            +
            end
         | 
| 40 | 
            +
             | 
| 36 41 | 
             
            describe ::Guard::Haskell do
         | 
| 37 42 | 
             
              let(:guard) { ::Guard::Haskell.new }
         | 
| 38 43 |  | 
| 39 44 | 
             
              before :each do
         | 
| 40 45 | 
             
                ::Guard.stub(:add_group)
         | 
| 41 | 
            -
                ::Guard::Haskell::Repl.any_instance.stub(:start)
         | 
| 42 46 | 
             
                ::Guard::Haskell::Repl.any_instance.stub(:init)
         | 
| 43 47 | 
             
              end
         | 
| 44 48 |  | 
| @@ -127,10 +131,10 @@ describe ::Guard::Haskell do | |
| 127 131 | 
             
                it "reruns failing examples if last run was a runtime failure and @focus_on_fail is set" do
         | 
| 128 132 | 
             
                  expect_any_instance_of(::Guard::Haskell::Repl).to receive(:reload_and_rerun)
         | 
| 129 133 | 
             
                  expect_any_instance_of(::Guard::Haskell::Repl).not_to receive(:reload_and_run_matching).with("Foo")
         | 
| 130 | 
            -
                  guard.instance_variable_set(:@last_run, :runtime_failure)
         | 
| 131 | 
            -
                  guard.opts.focus_on_fail = true
         | 
| 132 134 |  | 
| 135 | 
            +
                  guard.opts.focus_on_fail = true
         | 
| 133 136 | 
             
                  guard.start
         | 
| 137 | 
            +
                  guard.instance_variable_set(:@last_run, :runtime_failure)
         | 
| 134 138 | 
             
                  guard.run("Foo")
         | 
| 135 139 | 
             
                end
         | 
| 136 140 |  | 
| @@ -149,7 +153,6 @@ describe ::Guard::Haskell do | |
| 149 153 | 
             
                it "checks success after run" do
         | 
| 150 154 | 
             
                  expect_any_instance_of(::Guard::Haskell::Repl).to receive(:reload_and_run_matching)
         | 
| 151 155 | 
             
                  expect(guard).to receive(:success?)
         | 
| 152 | 
            -
                  guard.instance_variable_set(:@last_run, :success)
         | 
| 153 156 |  | 
| 154 157 | 
             
                  guard.start
         | 
| 155 158 | 
             
                  guard.run_all
         | 
| @@ -161,9 +164,9 @@ describe ::Guard::Haskell do | |
| 161 164 | 
             
                  ::Guard::Haskell::Repl.any_instance.stub(:result) { received }
         | 
| 162 165 | 
             
                  expect_any_instance_of(::Guard::Haskell::Repl).to receive(:result)
         | 
| 163 166 | 
             
                  yield
         | 
| 164 | 
            -
                  guard.instance_variable_set(:@last_run, before)
         | 
| 165 167 |  | 
| 166 168 | 
             
                  guard.start
         | 
| 169 | 
            +
                  guard.instance_variable_set(:@last_run, before)
         | 
| 167 170 | 
             
                  guard.success?
         | 
| 168 171 | 
             
                  expect(guard.instance_variable_get(:@last_run)).to eq(after)
         | 
| 169 172 | 
             
                end
         | 
| @@ -224,33 +227,30 @@ describe ::Guard::Haskell do | |
| 224 227 |  | 
| 225 228 | 
             
                it "does not run all specs on success after failure by default" do
         | 
| 226 229 | 
             
                  ::Guard::Haskell::Repl.any_instance.stub(:success?) { true }
         | 
| 227 | 
            -
                  guard.instance_variable_set(:@last_run, :failure)
         | 
| 228 | 
            -
             | 
| 229 230 | 
             
                  expect(guard).not_to receive(:run_all)
         | 
| 230 231 |  | 
| 231 232 | 
             
                  guard.start
         | 
| 233 | 
            +
                  guard.instance_variable_set(:@last_run, :failure)
         | 
| 232 234 | 
             
                  guard.success?
         | 
| 233 235 | 
             
                end
         | 
| 234 236 |  | 
| 235 237 | 
             
                it "runs all examples on success after runtime failure with :all_on_pass option" do
         | 
| 236 238 | 
             
                  ::Guard::Haskell::Repl.any_instance.stub(:result) { :success }
         | 
| 237 239 | 
             
                  custom_guard = ::Guard::Haskell.new(all_on_pass: true)
         | 
| 238 | 
            -
                  custom_guard.instance_variable_set(:@last_run, :runtime_failure)
         | 
| 239 | 
            -
             | 
| 240 240 | 
             
                  expect(custom_guard).to receive(:run_all)
         | 
| 241 241 |  | 
| 242 242 | 
             
                  custom_guard.start
         | 
| 243 | 
            +
                  custom_guard.instance_variable_set(:@last_run, :runtime_failure)
         | 
| 243 244 | 
             
                  custom_guard.success?
         | 
| 244 245 | 
             
                end
         | 
| 245 246 |  | 
| 246 247 | 
             
                it "runs all examples on success after compile time failure with :all_on_pass option" do
         | 
| 247 248 | 
             
                  ::Guard::Haskell::Repl.any_instance.stub(:result) { :success }
         | 
| 248 249 | 
             
                  custom_guard = ::Guard::Haskell.new(all_on_pass: true)
         | 
| 249 | 
            -
                  custom_guard.instance_variable_set(:@last_run, :compile_failure)
         | 
| 250 | 
            -
             | 
| 251 250 | 
             
                  expect(custom_guard).to receive(:run_all)
         | 
| 252 251 |  | 
| 253 252 | 
             
                  custom_guard.start
         | 
| 253 | 
            +
                  custom_guard.instance_variable_set(:@last_run, :compile_failure)
         | 
| 254 254 | 
             
                  custom_guard.success?
         | 
| 255 255 | 
             
                end
         | 
| 256 256 | 
             
              end
         | 
| @@ -0,0 +1,9 @@ | |
| 1 | 
            +
            Cabal sandboxes found:
         | 
| 2 | 
            +
              .cabal-sandbox/x86_64-linux-ghc-7.6.3-packages.conf.d
         | 
| 3 | 
            +
            Cabal sandbox used:
         | 
| 4 | 
            +
              .cabal-sandbox/x86_64-linux-ghc-7.6.3-packages.conf.d
         | 
| 5 | 
            +
            GHCi, version 7.6.3: http://www.haskell.org/ghc/  :? for help
         | 
| 6 | 
            +
            Loading package ghc-prim ... linking ... done.
         | 
| 7 | 
            +
            Loading package integer-gmp ... linking ... done.
         | 
| 8 | 
            +
            Loading package base ... linking ... done.
         | 
| 9 | 
            +
            ghc: could not execute: hspec-disco
         | 
    
        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. | 
| 4 | 
            +
              version: 1.6.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: 2014- | 
| 11 | 
            +
            date: 2014-06-15 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: guard
         | 
| @@ -117,6 +117,8 @@ files: | |
| 117 117 | 
             
            - spec/guard/haskell_spec.rb
         | 
| 118 118 | 
             
            - spec/run-files/cpp-exception.error
         | 
| 119 119 | 
             
            - spec/run-files/hspec-exception.error
         | 
| 120 | 
            +
            - spec/run-files/missing-preprocessor.error
         | 
| 121 | 
            +
            - spec/run-files/preprocessor-phase-failed.error
         | 
| 120 122 | 
             
            - spec/run-files/runtime-linker-cannot-find-object-file.error
         | 
| 121 123 | 
             
            - spec/run-files/runtime-linker-couldn't-find-symbol.error
         | 
| 122 124 | 
             
            - spec/run-files/runtime-linker-duplicate-definition-for-symbol.error
         | 
| @@ -152,6 +154,8 @@ test_files: | |
| 152 154 | 
             
            - spec/guard/haskell_spec.rb
         | 
| 153 155 | 
             
            - spec/run-files/cpp-exception.error
         | 
| 154 156 | 
             
            - spec/run-files/hspec-exception.error
         | 
| 157 | 
            +
            - spec/run-files/missing-preprocessor.error
         | 
| 158 | 
            +
            - spec/run-files/preprocessor-phase-failed.error
         | 
| 155 159 | 
             
            - spec/run-files/runtime-linker-cannot-find-object-file.error
         | 
| 156 160 | 
             
            - spec/run-files/runtime-linker-couldn't-find-symbol.error
         | 
| 157 161 | 
             
            - spec/run-files/runtime-linker-duplicate-definition-for-symbol.error
         |