From ed7d6a937800a1551f3d3646a5012a8cc979adcd Mon Sep 17 00:00:00 2001 From: John Bintz Date: Tue, 17 May 2011 07:47:42 -0400 Subject: [PATCH] switch to rake task and gh-pages hosting the readme --- README.md | 98 +--------------------------------- lib/jasmine-headless-webkit.rb | 2 +- lib/jasmine/headless/task.rb | 20 +++++++ 3 files changed, 23 insertions(+), 97 deletions(-) create mode 100644 lib/jasmine/headless/task.rb diff --git a/README.md b/README.md index 14043fb..d82335f 100644 --- a/README.md +++ b/README.md @@ -2,102 +2,8 @@ Run your specs at sonic boom speed! No pesky reload button or page rendering slowdowns! -## Introduction - -This gem works with projects that have used the [Jasmine gem](https://github.com/pivotal/jasmine-gem) to -create a `jasmine.yml` file that defines what to test. The runner loads that -`jasmine.yml` file and executes the tests defined within in a Qt WebKit widget, displaying the results -to the console and setting the exit code to one of the following: - -* 0 for success -* 1 for spec run failure -* 2 for spec run success, but `console.log` was called during the run - -`console.log` works, too, so you can run your specs side-by-side in a browser if you're so inclined. It -serializes whatever you're passing in as as JSON string, so objects that are cyclical in nature will not -serialize. If anyone has a good solution for this, please suggest and/or fork'n'fix. - -## Installation - -`gem install jasmine-headless-webkit` or use Bundler. - -Installation requires Qt 4.7. See [senchalabs/examples](https://github.com/senchalabs/examples) and [my fork -of examples](https://github.com/johnbintz/examples) for more information on the QtWebKit runner. - -Tested in the following environments: - -* Mac OS X 10.6, with MacPorts Qt and Nokia Qt.mpkg -* Kubuntu 10.10 - -Let me know via a message or in the Issues section if it works on your setup and it's not listed! - -## Usage - - jasmine-headless-webkit [options] [list of spec files to run] - -Current supported options: - -* `-c`/`--colors` enables color output -* `--no-colors` disables color output -* `--keep` preserves the temporary HTML document if an error occurs in testing -* `-j`/`--jasmine-config` sets the `jasmine.yml` file to load *(defaults to `spec/javascripts/support/jasmine.yml`)* - -If provided, only the requested spec files will be executed. Otherwise, all matching specs will be run. - -These options can also be placed into a `.jasmine-headless-webkit` file in your project root, or into a -`.jasmine-headless-webkit` file in your home directory. Project level options override global options. - -### CoffeeScript Support - -`jasmine-headless-webkit` brings in the `coffee-script` gem and compiles & injects all CoffeeScript into the -generated HTML page. All you need to do is configure your `jasmine.yml` file to look for .coffee files: - - src_files: - - app/assets/javascripts/**/*.coffee - spec_files: - - **/*[sS]pec.coffee - -*(This will probably make it difficult to test your code in an official Jasmine server for now. You can try -[a technique like this](https://github.com/jbaudanza/rack-asset-compiler/blob/master/examples/jasmine_config.rb) for compiling CoffeeScript when it's requested from the server -or use [this fork of jasmine-gem](https://github.com/johnbintz/jasmine-gem/tree/coffeescript-inline-support) which -is thoroughly untested.)* - -You will get line numbers on compile errors, but not logic errors. This is a CoffeeScript thing, and they're working on it. :) - -### JavaScript Dialogs - -You can call `alert()` and `confirm()` in your code. `alert()` will print the message to the console, and -`confirm()` will always return true. There's no way right now to respond to `confirm()`, so it's best to -mock that call: - - spyOn(window, 'confirm').andReturn(false); - -### Autotest Integration - -`jasmine-headless-webkit` can integrate with Autotest. Your `jasmine.yml` file needs to be in the default -path, and you have to be ready to use a very alpha implementation of the feature. If used with RSpec 2, -Jasmine tests run after RSpec tests. - -You need to create a `.jasmine-headless-webkit` file in your project root for this integration -to work. - -`jasmine-headless-webkit` provides two new hooks: `:run_jasmine` and `:ran_jasmine` for before and after the -Jasmine specs have run. This is a good place to do things like re-package all your assets using -[Jammit](http://documentcloud.github.com/jammit/): - - Autotest.add_hook(:run_jasmine) do |at| - system %{jammit} - end - -### Server Interaction - -`jasmine-headless-webkit` works the same as if you create an HTML file, manually load the Jasmine library and -your code & tests into the page, and open that page in a browser. Because of this, there's no way to handle -server interaction with your application or with a Jasmine server. If you need to test server interaction, -do one of the following: - -* Stub your server responses using [Sinon.JS](http://sinonjs.org/) -* Use [PhantomJS](http://www.phantomjs.org/) against a running copy of a Jasmine server, instead of this project +http://johnbintz.github.com/jasmine-headless-webkit/ has the most up-to-date information on using +this project. You can see the source of that site on the gh-pages fork. ## License diff --git a/lib/jasmine-headless-webkit.rb b/lib/jasmine-headless-webkit.rb index 8bf6f3b..65e2ea8 100644 --- a/lib/jasmine-headless-webkit.rb +++ b/lib/jasmine-headless-webkit.rb @@ -1,7 +1,7 @@ module Jasmine module Headless module Webkit - # Your code goes here... end end end + diff --git a/lib/jasmine/headless/task.rb b/lib/jasmine/headless/task.rb new file mode 100644 index 0000000..dcf0086 --- /dev/null +++ b/lib/jasmine/headless/task.rb @@ -0,0 +1,20 @@ +module Jasmine + module Headless + class Task + attr_accessor :colors, :keep_on_error, :jasmine_config + + def initialize(name = 'jasmine:headless') + @colors = false + @keep_on_error = false + @jasmine_config = nil + + yield self if block_given? + + desc 'Run Jasmine specs headlessly' + task name do + system %{jasmine-headless-webkit #{@colors ? "-c" : "--no-colors"} #{@keep_on_error ? "--keep" : ""} #{@jasmine_config ? "-j #{@jasmine_config}" : ""}} + end + end + end + end +end