Sha256: 509ca73dcba7b3fe533750edf940165225658bdde0272e507016c95cc193090f

Contents?: true

Size: 1.14 KB

Versions: 2

Compression:

Stored size: 1.14 KB

Contents

class JsTestServer::Server::Resources::SpecFile < JsTestServer::Server::Resources::File
  map "/specs"

  get "/?" do
    do_get
  end

  get "*" do
    do_get
  end

  protected

  def do_get
    if ::File.exists?(absolute_path)
      if ::File.directory?(absolute_path)
        spec_files = ::Dir["#{absolute_path}/**/*_spec.js"].map do |file|
          ["#{relative_path}#{file.gsub(absolute_path, "")}"]
        end
        get_generated_spec(absolute_path, spec_files)
      else
        super
      end
    elsif ::File.exists?("#{absolute_path}.js")
      get_generated_spec("#{absolute_path}.js", ["#{relative_path}.js"])
    else
      pass
    end
  end

  def get_generated_spec(real_path, spec_files)
    html = render_spec(spec_files)
    headers = {
      'Content-Type' => "text/html",
      'Last-Modified' => ::File.mtime(real_path).rfc822
    }
    [200, headers, html]
  end

  def render_spec(spec_files)
    JsTestServer.suite_representation_class.new(:spec_files => spec_files, :framework_path => framework_path).to_s
  end

  def absolute_path
    @absolute_path ||= ::File.expand_path("#{spec_path}#{relative_path.gsub(%r{^/specs}, "")}")
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
js-test-server-0.2.1 lib/js_test_server/server/resources/spec_file.rb
js-test-server-0.2.0 lib/js_test_server/server/resources/spec_file.rb