Compare commits

...

25 Commits

Author SHA1 Message Date
ragaskar 41f496001f Version bump to 1.1.0 2011-09-10 13:51:11 -04:00
ragaskar 6b5956724b Version bump to rc4 2011-09-01 07:26:07 -04:00
Rajan Agaskar ec24992250 Merge pull request #123 from Osukaru/master
fixed html comments in SpecRunner.html example
2011-09-01 04:23:41 -07:00
Osukaru 83f232237d fixed html comments 2011-08-26 01:22:11 +03:00
Rajan Agaskar 98d32bb4a4 Merge pull request #111 from qfox/patch-1
Add missing semi.
2011-07-21 04:07:52 -07:00
qfox c4f27ae377 ASI trolling 2011-07-21 00:58:53 -07:00
ragaskar a075c75bce Version bump to 1.1.0.rc3 2011-07-13 07:23:29 -04:00
ragaskar a617b59e6a Bump to rc2 2011-06-24 21:34:29 -04:00
ragaskar 917b37481e Update rake 2011-06-24 21:25:06 -04:00
ragaskar 67bbc98faa Bump version 2011-06-24 21:22:19 -04:00
Davis W. Frank 620f7b6e4c Updates to Pages; Updates to docs; 2011-06-23 19:02:17 -07:00
ragaskar b722f416c7 Write out version.rb on dist build 2011-06-23 07:55:04 -04:00
ragaskar 634a7dc402 Rollback pages submodule bump 2011-06-23 07:32:05 -04:00
Davis W. Frank a4522e4dce Updated Release readme 2011-06-21 20:19:28 -07:00
Davis W. Frank e113c338d0 Merge branch 'master' of github.com:pivotal/jasmine 2011-06-21 20:11:10 -07:00
ragaskar b81f690a25 Require JSON in time for the gemspec 2011-06-21 08:05:41 -04:00
ragaskar c06e189699 Ignore tags 2011-06-21 08:05:20 -04:00
Davis W. Frank 67b6cfb828 Improve the rake standalone task 2011-06-20 18:27:57 -07:00
Davis W. Frank 57e622fb2a Fix to version structure for "release_candidate" 2011-06-20 18:17:24 -07:00
Davis W. Frank c0664dd6aa merge 2011-06-20 08:46:37 -07:00
Davis W. Frank b640ce6fc0 wip on readme for release 2011-06-20 07:32:40 -07:00
ragaskar e9af7834f5 Better argument handling in Jasmine::Core#spec_files 2011-06-18 09:43:14 -04:00
ragaskar 0d43ae9c38 Give Jasmine::Core access to jasmine specs
[#13128217]
2011-06-18 09:39:23 -04:00
Davis W. Frank 3775919c92 remove old, commented-out tasks 2011-06-17 08:23:17 -07:00
Davis W. Frank a692ff8c95 Need HAML in the Gemfile; continued fixes to the Rake tasks 2011-06-17 08:20:22 -07:00
26 changed files with 162 additions and 16115 deletions
+1
View File
@@ -7,5 +7,6 @@ site/
.rvmrc .rvmrc
*.gem *.gem
.bundle .bundle
tags
Gemfile.lock Gemfile.lock
pkg/* pkg/*
+6 -1
View File
@@ -1,13 +1,18 @@
# Developing for Jasmine Core # Developing for Jasmine Core
This repo is for the core code of Jasmine - `jasmine.js`. This implements the basic spec-defining, -executing, and -results-reporting logic. ## How to Contribute
We welcome your contributions - Thanks for helping make Jasmine a better project for everyone. Please review the backlog and discussion lists (the main group - [http://groups.google.com/group/jasmine-js](http://groups.google.com/group/jasmine-js) and the developer's list - [http://groups.google.com/group/jasmine-js-dev](http://groups.google.com/group/jasmine-js-dev)) before starting work - what you're looking for may already have been done. If it hasn't, the community can help make your contribution better.
## How to write new Jasmine code ## How to write new Jasmine code
Or, How to make a successful pull request
* _Do not change the public interface_. Lots of projects depend on Jasmine and if you aren't careful you'll break them * _Do not change the public interface_. Lots of projects depend on Jasmine and if you aren't careful you'll break them
* _Be environment agnostic_ - server-side developers are just as important as browser developers * _Be environment agnostic_ - server-side developers are just as important as browser developers
* _Be browser agnostic_ - if you must rely on browser-specific functionality, please write it in a way that degrades gracefully * _Be browser agnostic_ - if you must rely on browser-specific functionality, please write it in a way that degrades gracefully
* _Write specs_ - Jasmine's a testing framework; don't add functionality without test-driving it * _Write specs_ - Jasmine's a testing framework; don't add functionality without test-driving it
* _Ensure the *entire* test suite is green_ in all the big browsers, Node, and JSHint - your contribution shouldn't break Jasmine for other users
Follow these tips and your pull request, patch, or suggestion is much more likely to be integrated. Follow these tips and your pull request, patch, or suggestion is much more likely to be integrated.
+1
View File
@@ -1,3 +1,4 @@
source :rubygems source :rubygems
gem "term-ansicolor", :require => "term/ansicolor" gem "term-ansicolor", :require => "term/ansicolor"
gem "rake"
gemspec gemspec
+7 -26
View File
@@ -6,6 +6,13 @@ Jasmine is a Behavior Driven Development testing framework for JavaScript. It do
Documentation & guides live here: [http://pivotal.github.com/jasmine/](http://pivotal.github.com/jasmine/) Documentation & guides live here: [http://pivotal.github.com/jasmine/](http://pivotal.github.com/jasmine/)
## What's Here?
*
## Support ## Support
* Search past discussions: [http://groups.google.com/group/jasmine-js](http://groups.google.com/group/jasmine-js) * Search past discussions: [http://groups.google.com/group/jasmine-js](http://groups.google.com/group/jasmine-js)
@@ -14,32 +21,6 @@ Documentation & guides live here: [http://pivotal.github.com/jasmine/](http://pi
* View the project backlog at Pivotal Tracker: [http://www.pivotaltracker.com/projects/10606](http://www.pivotaltracker.com/projects/10606) * View the project backlog at Pivotal Tracker: [http://www.pivotaltracker.com/projects/10606](http://www.pivotaltracker.com/projects/10606)
* Follow us on Twitter: [@JasmineBDD](http://twitter.com/JasmineBDD) * Follow us on Twitter: [@JasmineBDD](http://twitter.com/JasmineBDD)
## How to Contribute
We welcome your contributions - Thanks for helping make Jasmine a better project for everyone. Please review the backlog and discussion lists (the main group - [http://groups.google.com/group/jasmine-js](http://groups.google.com/group/jasmine-js) and the developer's list - [http://groups.google.com/group/jasmine-js-dev](http://groups.google.com/group/jasmine-js-dev)) before starting work - what you're looking for may already have been done. If it hasn't, the community can help make your contribution better.
### Development Environment
Jasmine Core relies on Ruby for executing the test suite and building the project for release. The spec suite runs in any major, modern browser (Firefox, Safari, Chrome, and yes various IE's) and in [Node.js](http://nodejs.org). While you probably have browsers installed, you want to make sure that Ruby and Node are present.
### How to Develop for Jasmine Core
* Write specs
* Make them pass in a browser (or three):
* open `spec/runner.html` in your browsers
* `rake spec:browser` will run in the default browser on MacOS
* Make them pass in Node: `rake spec:node`
* Fix any warnings or errors from JSHint: `rake jasmine:lint`
Running `rake spec` will run the browser tests, then run specs in Node, then run JSHint. But this will only run in the default browser and only on MacOS (for now).
### Making a Successful Pull Request
* __Include specs for your work__ - it helps us understand your intent and makes sure that future development doesn't break your work
* __Ensure the full test suite is green__ in all the big browsers, Node, and JSHint - your contribution shouldn't break Jasmine for other users
Do these things and we'll take a look.
## Maintainers ## Maintainers
+5 -1
View File
@@ -11,13 +11,17 @@ end
task :default => :spec task :default => :spec
task :require_pages_submodule do task :require_pages_submodule do
raise "Submodule for Github Pages isn't present. Run git submodule update --init" unless File.exist?('pages/download.html') raise "Submodule for Github Pages isn't present. Run git submodule update --init" unless pages_submodule_present
end end
task :require_node do task :require_node do
raise "\nNode.js is required to develop code for Jasmine. Please visit http://nodejs.org to install.\n\n" unless node_installed? raise "\nNode.js is required to develop code for Jasmine. Please visit http://nodejs.org to install.\n\n" unless node_installed?
end end
def pages_submodule_present
File.exist?('pages/download.html')
end
def node_installed? def node_installed?
`which node` =~ /node/ `which node` =~ /node/
end end
+34 -6
View File
@@ -1,12 +1,40 @@
## Release # How to work on a Jasmine Release
__Jasmine Core Maintainers Only__
The current version lives in the file `src/version.json`. We attempt to stick to Semantic Versioning ## Development
___Jasmine Core Maintainers Only___
## The Github Pages Follow the instructions in `Contribute.markdown` during development.
### Git Commits
### Version
We attempt to stick to [Semantic Versioning](). Most of the time, development should be against a new minor version - fixing bugs and adding new features that are backwards compatible.
The current version lives in the file `src/version.json`. This file should be set to the version that is _currently_ under development. That is, if version 1.0.0 is the current release then version should be incremented say, to 1.1.0.
This version is used by both `jasmine.js` and the `jasmine-core` Ruby gem.
### Update the Github Pages (as needed)
Github pages have to exist in a branch called gh-pages in order for their app to serve them. This repo adds that branch as a submodule under the `pages` directory. This is a bit of a hack, but it allows us to work with the pages and the source at the same time and with one set of rake tasks. Github pages have to exist in a branch called gh-pages in order for their app to serve them. This repo adds that branch as a submodule under the `pages` directory. This is a bit of a hack, but it allows us to work with the pages and the source at the same time and with one set of rake tasks.
If you want to submit changes to this repo and aren't a Pivotal Labs employee, you can fork and work in the gh-pages branch. You won't be able to edit the pages in the submodule off of master. If you want to submit changes to this repo and aren't a Pivotal Labs employee, you can fork and work in the `gh-pages` branch. You won't be able to edit the pages in the submodule off of master.
The pages are built with [Frank](https://github.com/blahed/frank). All the source for these pages live in the pages_source directory. The pages are built with [Frank](https://github.com/blahed/frank). All the source for these pages live in the `pages/pages_source` directory.
## Release
When ready to release - specs are all green and the stories are done:
1. Update the version in `version.json` to a release candidate - add an `rc` property with a value of 1
1. Update any comments on the public interfaces
1. `rake doc` - builds the `jsdoc` pages
1. Update any links or top-level landing page for the Github Pages
1. `rake standalone` - builds the standalone distribution ZIP file
1. `rake build_pages` - builds the Github Pages
1. `rake release` - tags the repo with the version, builds the `jasmine-core` gem, pushes the gem to Rubygems.org
There should be a post to Pivotal Labs blog and a tweet to that link.
+1 -2
View File
@@ -13,8 +13,7 @@ Gem::Specification.new do |s|
s.homepage = "http://pivotal.github.com/jasmine" s.homepage = "http://pivotal.github.com/jasmine"
s.rubyforge_project = "jasmine-core" s.rubyforge_project = "jasmine-core"
s.files = Dir.glob("./lib/**/*") s.files = Dir.glob("./lib/**/*") + Dir.glob("./lib/jasmine-core/spec/**/*.js")
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
s.require_paths = ["lib"] s.require_paths = ["lib"]
s.add_development_dependency "term-ansicolor" s.add_development_dependency "term-ansicolor"
s.add_development_dependency "json_pure", ">= 1.4.3" s.add_development_dependency "json_pure", ">= 1.4.3"
+19
View File
@@ -9,6 +9,25 @@ module Jasmine
(["jasmine.js"] + Dir.glob(File.join(path, "*.js"))).map { |f| File.basename(f) }.uniq (["jasmine.js"] + Dir.glob(File.join(path, "*.js"))).map { |f| File.basename(f) }.uniq
end end
SPEC_TYPES = ["core", "html", "node"]
def core_spec_files
spec_files("core")
end
def html_spec_files
spec_files("html")
end
def node_spec_files
spec_files("node")
end
def spec_files(type)
raise ArgumentError.new("Unrecognized spec type") unless SPEC_TYPES.include?(type)
(Dir.glob(File.join(path, "spec", type, "*.js"))).map { |f| File.join("spec", type, File.basename(f)) }.uniq
end
def css_files def css_files
Dir.glob(File.join(path, "*.css")).map { |f| File.basename(f) } Dir.glob(File.join(path, "*.css")).map { |f| File.basename(f) }
end end
+2 -2
View File
@@ -10,11 +10,11 @@
<script type="text/javascript" src="lib/jasmine-1.1.0.rc1/jasmine.js"></script> <script type="text/javascript" src="lib/jasmine-1.1.0.rc1/jasmine.js"></script>
<script type="text/javascript" src="lib/jasmine-1.1.0.rc1/jasmine-html.js"></script> <script type="text/javascript" src="lib/jasmine-1.1.0.rc1/jasmine-html.js"></script>
<!-- include source files here... --> <!-- include spec files here... -->
<script type="text/javascript" src="spec/SpecHelper.js"></script> <script type="text/javascript" src="spec/SpecHelper.js"></script>
<script type="text/javascript" src="spec/PlayerSpec.js"></script> <script type="text/javascript" src="spec/PlayerSpec.js"></script>
<!-- include spec files here... --> <!-- include source files here... -->
<script type="text/javascript" src="src/Player.js"></script> <script type="text/javascript" src="src/Player.js"></script>
<script type="text/javascript" src="src/Song.js"></script> <script type="text/javascript" src="src/Song.js"></script>
+10 -10
View File
@@ -735,17 +735,17 @@ jasmine.Env.prototype.version = function () {
* @returns string containing jasmine version build info, if set. * @returns string containing jasmine version build info, if set.
*/ */
jasmine.Env.prototype.versionString = function() { jasmine.Env.prototype.versionString = function() {
if (jasmine.version_) { if (!jasmine.version_) {
var version = this.version();
var versionString = version.major + "." + version.minor + "." + version.build;
if (version.release_candidate) {
versionString += ".rc" + version.release_candidate
}
versionString += " revision " + version.revision
return versionString;
} else {
return "version unknown"; return "version unknown";
} }
var version = this.version();
var versionString = version.major + "." + version.minor + "." + version.build;
if (version.release_candidate) {
versionString += ".rc" + version.release_candidate;
}
versionString += " revision " + version.revision;
return versionString;
}; };
/** /**
@@ -2472,5 +2472,5 @@ jasmine.version_= {
"major": 1, "major": 1,
"minor": 1, "minor": 1,
"build": 0, "build": 0,
"revision": 1308358300 "revision": 1315677058
}; };
+1
View File
@@ -0,0 +1 @@
../../spec
+2 -4
View File
@@ -1,8 +1,6 @@
module Jasmine module Jasmine
module Core module Core
require 'json' VERSION = "1.1.0"
VERSION_HASH = JSON.parse(File.new(File.join(File.dirname(__FILE__), "..", "..", "src", "version.json")).read);
VERSION = "#{VERSION_HASH['major']}.#{VERSION_HASH['minor']}.#{VERSION_HASH['build']}"
VERSION << ".rc#{VERSION_HASH['release_candidate']}" if VERSION_HASH['release_candidate']
end end
end end
+1 -1
Submodule pages updated: d08ce2de24...a9d577eb45
+9 -9
View File
@@ -51,17 +51,17 @@ jasmine.Env.prototype.version = function () {
* @returns string containing jasmine version build info, if set. * @returns string containing jasmine version build info, if set.
*/ */
jasmine.Env.prototype.versionString = function() { jasmine.Env.prototype.versionString = function() {
if (jasmine.version_) { if (!jasmine.version_) {
var version = this.version();
var versionString = version.major + "." + version.minor + "." + version.build;
if (version.release_candidate) {
versionString += ".rc" + version.release_candidate
}
versionString += " revision " + version.revision
return versionString;
} else {
return "version unknown"; return "version unknown";
} }
var version = this.version();
var versionString = version.major + "." + version.minor + "." + version.build;
if (version.release_candidate) {
versionString += ".rc" + version.release_candidate;
}
versionString += " revision " + version.revision;
return versionString;
}; };
/** /**
-6
View File
@@ -1,6 +0,0 @@
jasmine.version_= {
"major": <%= major %>,
"minor": <%= minor %>,
"build": <%= build %>,
"revision": <%= revision %><%= %Q{,\n "rc": #{rc}} if rc %>
};
+6
View File
@@ -0,0 +1,6 @@
jasmine.version_= {
"major": <%= major %>,
"minor": <%= minor %>,
"build": <%= build %>,
"revision": <%= revision %><%= %Q{,\n "release_candidate": #{release_candidate}} if release_candidate %>
};
+6
View File
@@ -0,0 +1,6 @@
module Jasmine
module Core
VERSION = "<%= "#{major}.#{minor}.#{build}" %><%= ".rc#{release_candidate}" if release_candidate %>"
end
end
+1 -1
View File
@@ -2,5 +2,5 @@ jasmine.version_= {
"major": 1, "major": 1,
"minor": 1, "minor": 1,
"build": 0, "build": 0,
"revision": 1308358300 "revision": 1315677058
}; };
+1 -2
View File
@@ -1,6 +1,5 @@
{ {
"major": 1, "major": 1,
"minor": 1, "minor": 1,
"build": 0, "build": 0
"release_candidate": 1
} }
-16027
View File
File diff suppressed because it is too large Load Diff
+12 -8
View File
@@ -1,11 +1,11 @@
desc "Build core jasmine.js" desc "Build core jasmine.js"
task :build_dist => [:lint, :write_version_file] do task :build_dist => [:lint, :write_version_files] do
puts 'Building Jasmine distribution from source'.cyan puts 'Building Jasmine distribution from source'.cyan
concat_into('lib/jasmine-core/jasmine.js') { core_sources + version_source_file } concat_into('./lib/jasmine-core/jasmine.js') { core_sources + version_source_file }
concat_into('lib/jasmine-core/jasmine-html.js') { html_sources } concat_into('./lib/jasmine-core/jasmine-html.js') { html_sources }
FileUtils.cp('src/html/jasmine.css', 'lib/jasmine-core/jasmine.css') FileUtils.cp('./src/html/jasmine.css', './lib/jasmine-core/jasmine.css')
end end
def concat_into(output_file, &block) def concat_into(output_file, &block)
@@ -25,18 +25,22 @@ end
task :hint => :lint task :hint => :lint
task :write_version_file do task :write_version_files do
template = Tilt.new('src/templates/version.erb')
scope = OpenStruct.new(:major => version_hash["major"], scope = OpenStruct.new(:major => version_hash["major"],
:minor => version_hash["minor"], :minor => version_hash["minor"],
:build => version_hash["build"], :build => version_hash["build"],
:release_candidate => version_hash["release_candidate"], :release_candidate => version_hash["release_candidate"],
:revision => Time.now.to_i) :revision => Time.now.to_i)
File.open('src/version.js', 'w+') do |f| js_template = Tilt.new('./src/templates/version.js.erb')
f << template.render(scope) File.open('./src/version.js', 'w+') do |f|
f << js_template.render(scope)
end end
rb_template = Tilt.new('./src/templates/version.rb.erb')
File.open('./lib/jasmine-core/version.rb', 'w+') do |f|
f << rb_template.render(scope)
end
end end
def version_source_file def version_source_file
+17
View File
@@ -0,0 +1,17 @@
desc "Build jasmine documentation"
task :doc => :require_pages_submodule do
puts 'Creating Jasmine Documentation'
require 'rubygems'
require 'jsdoc_helper'
FileUtils.rm_r "pages/jsdoc", :force => true
JsdocHelper::Rake::Task.new(:lambda_jsdoc) do |t|
t[:files] = core_sources + html_sources + console_sources
t[:options] = "-a"
t[:out] = "pages/jsdoc"
# JsdocHelper bug: template must be relative to the JsdocHelper gem, ick
t[:template] = File.join("../".*(100), Dir::getwd, "jsdoc-template")
end
Rake::Task[:lambda_jsdoc].invoke
end
+1 -1
View File
@@ -1,7 +1,7 @@
require 'json' require 'json'
def core_sources def core_sources
first_sources = JSON.parse(File.read('src/SourcesList.json')).collect { |f| "./src/core/#{f}" } first_sources = JSON.parse(File.read('./src/SourcesList.json')).collect { |f| "./src/core/#{f}" }
remaining_sources = Dir.glob('./src/core/*.js').reject { |f| first_sources.include?(f) }.sort remaining_sources = Dir.glob('./src/core/*.js').reject { |f| first_sources.include?(f) }.sort
+1 -1
View File
@@ -6,7 +6,7 @@ task :build_pages => :require_pages_submodule do
system("frank export ../pages_output") system("frank export ../pages_output")
end end
puts "\n" puts "\n"
puts "Copying built website to the root of the gh-pages branch" puts "Copying built website to the root of the gh-pages branch".cyan
puts "\n\n" puts "\n\n"
system("cp -r pages_output/* .") system("cp -r pages_output/* .")
end end
+11 -5
View File
@@ -1,10 +1,7 @@
require 'ostruct' require 'ostruct'
desc "Build standalone distribution, block if zip of current version"
task :standalone_safe => [:require_pages_submodule, :protect_current_dist_zip, :build_spec_runner_html]
desc "Build standalone distribution" desc "Build standalone distribution"
task :standalone => [:require_pages_submodule, :build_spec_runner_html] do task :standalone => [:require_pages_submodule, :protect_current_dist_zip, :build_spec_runner_html] do
require 'tmpdir' require 'tmpdir'
zip_root = File.join(Dir.tmpdir, "zip_root") zip_root = File.join(Dir.tmpdir, "zip_root")
@@ -81,5 +78,14 @@ task :protect_current_dist_zip do
dist_dir = File.join(root, 'pages/downloads') dist_dir = File.join(root, 'pages/downloads')
zip_file_name = File.join(dist_dir, "jasmine-standalone-#{version_string}.zip") zip_file_name = File.join(dist_dir, "jasmine-standalone-#{version_string}.zip")
raise "STOPPED: #{zip_file_name} already exists" if File.exist?(zip_file_name) zip_present_message = "\n\n"
zip_present_message << "==> STOPPED <==".red
zip_present_message << "\n\n"
zip_present_message << "The file ".red + "#{zip_file_name}" + " already exists.".red + "\n"
zip_present_message << "If you should be building the next version, update src/version.json"
zip_present_message << "\n"
zip_present_message << "If the version is correct, you must be trying to re-build the standalone ZIP. Delete the ZIP and rebuild."
zip_present_message << "\n"
raise zip_present_message if File.exist?(zip_file_name)
end end
+5
View File
@@ -0,0 +1,5 @@
task :version do
require 'pp'
pp version_hash
pp version_string
end