Sha256: a6a2f61ff8a4066e03858a585c04dde481eeca13bd4b959c63403f21c9e2f1f5

Contents?: true

Size: 1.27 KB

Versions: 29

Compression:

Stored size: 1.27 KB

Contents

class GobstonesExpectationsHook < Mumukit::Templates::MulangExpectationsHook
  include_smells true

  # no need to implement `language` and `compile_content`
  # since we are completly overriding `mulang_code`
  def mulang_code(request)
    Mulang::Code.external extract_ast(request)
  end

  def compile_expectations(request)
    super(request).tap do |expectations|
      request.precompiled_batch.options[:subject].try do |subject|
        expectations[:ast] << { binding: '*', inspection: "Declares:=#{subject}" }
      end
    end
  end

  def default_smell_exceptions
    LOGIC_SMELLS + FUNCTIONAL_SMELLS + OBJECT_ORIENTED_SMELLS
  end

  private

  def extract_ast(request)
    precompiled_output, precompiled_status = request.precompiled_result

    if precompiled_status.aborted?
      {tag: :None}
    elsif precompiled_output.is_a?(String)
      # gobstones cli miserably failed on parsing the submission or the extra code
      logger.warn("Unprocessable GobstonesCLI output:\n\n#{precompiled_output}")
      {tag: :None}
    elsif (ast = precompiled_output.first.dig(:result, :mulangAst)).blank?
      # gobstones cli could not produce a valid ast
      logger.warn("GobstonesCLI produced an empty AST:\n\n#{precompiled_output}")
      {tag: :None}
    else
      ast
    end
  end
end

Version data entries

29 entries across 29 versions & 1 rubygems

Version Path
mumuki-gobstones-runner-2.14.3 lib/expectations_hook.rb
mumuki-gobstones-runner-2.15.0 lib/expectations_hook.rb
mumuki-gobstones-runner-2.14.2 lib/expectations_hook.rb
mumuki-gobstones-runner-2.14.1 lib/expectations_hook.rb
mumuki-gobstones-runner-2.14.0 lib/expectations_hook.rb
mumuki-gobstones-runner-2.13.0 lib/expectations_hook.rb
mumuki-gobstones-runner-2.12.1 lib/expectations_hook.rb
mumuki-gobstones-runner-2.12.0 lib/expectations_hook.rb
mumuki-gobstones-runner-2.11.0 lib/expectations_hook.rb
mumuki-gobstones-runner-2.10.1 lib/expectations_hook.rb
mumuki-gobstones-runner-2.10.0 lib/expectations_hook.rb
mumuki-gobstones-runner-2.9.1 lib/expectations_hook.rb
mumuki-gobstones-runner-2.9.0 lib/expectations_hook.rb
mumuki-gobstones-runner-2.8.5 lib/expectations_hook.rb
mumuki-gobstones-runner-2.8.4 lib/expectations_hook.rb
mumuki-gobstones-runner-2.8.3 lib/expectations_hook.rb
mumuki-gobstones-runner-2.8.2 lib/expectations_hook.rb
mumuki-gobstones-runner-2.8.1 lib/expectations_hook.rb
mumuki-gobstones-runner-2.8.0 lib/expectations_hook.rb
mumuki-gobstones-runner-2.7.1 lib/expectations_hook.rb