newjs 1.0.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.
- data/History.txt +4 -0
- data/License.txt +20 -0
- data/Manifest.txt +68 -0
- data/README.txt +9 -0
- data/Rakefile +4 -0
- data/app_generators/newjs/USAGE +9 -0
- data/app_generators/newjs/newjs_generator.rb +113 -0
- data/app_generators/newjs/templates/History.txt.erb +4 -0
- data/app_generators/newjs/templates/License.txt.erb +20 -0
- data/app_generators/newjs/templates/README.txt +1 -0
- data/app_generators/newjs/templates/Rakefile.erb +82 -0
- data/app_generators/newjs/templates/config/javascript_test_autotest.yml.sample +15 -0
- data/app_generators/newjs/templates/lib/jstest.rb +382 -0
- data/app_generators/newjs/templates/lib/protodoc.rb +36 -0
- data/app_generators/newjs/templates/script/js_autotest +1 -0
- data/app_generators/newjs/templates/script/rstakeout +98 -0
- data/app_generators/newjs/templates/src/HEADER.erb +8 -0
- data/app_generators/newjs/templates/src/library.js.erb +7 -0
- data/app_generators/newjs/templates/tasks/environment.rake +7 -0
- data/app_generators/newjs/templates/tasks/javascript_test_autotest_tasks.rake +44 -0
- data/app_generators/newjs/templates/test/assets/prototype.js +4236 -0
- data/app_generators/newjs/templates/test/assets/unittest.css +50 -0
- data/app_generators/newjs/templates/test/assets/unittest.js +556 -0
- data/bin/newjs +17 -0
- data/config/hoe.rb +75 -0
- data/config/requirements.rb +17 -0
- data/javascript_test_generators/javascript_test/USAGE +2 -0
- data/javascript_test_generators/javascript_test/javascript_test_generator.rb +54 -0
- data/javascript_test_generators/javascript_test/templates/test/test.html.erb +58 -0
- data/lib/newjs.rb +7 -0
- data/lib/newjs/autotest.rb +3 -0
- data/lib/newjs/autotest/javascript_test_autotest.rb +22 -0
- data/lib/newjs/autotest/javascript_test_autotest/config.rb +20 -0
- data/lib/newjs/autotest/javascript_test_ext.rb +29 -0
- data/lib/newjs/jstest.rb +382 -0
- data/lib/newjs/version.rb +9 -0
- data/log/debug.log +0 -0
- data/newjs_generators/install_website/USAGE +5 -0
- data/newjs_generators/install_website/install_website_generator.rb +79 -0
- data/newjs_generators/install_website/templates/script/txt2html +74 -0
- data/newjs_generators/install_website/templates/script/win_script.cmd +1 -0
- data/newjs_generators/install_website/templates/tasks/website.rake +17 -0
- data/newjs_generators/install_website/templates/website/index.html +11 -0
- data/newjs_generators/install_website/templates/website/index.txt +37 -0
- data/newjs_theme_generators/plain_theme/USAGE +0 -0
- data/newjs_theme_generators/plain_theme/plain_theme_generator.rb +54 -0
- data/newjs_theme_generators/plain_theme/templates/website/javascripts/rounded_corners_lite.inc.js +285 -0
- data/newjs_theme_generators/plain_theme/templates/website/stylesheets/screen.css +138 -0
- data/newjs_theme_generators/plain_theme/templates/website/template.html.erb +48 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/script/txt2html +74 -0
- data/setup.rb +1585 -0
- data/tasks/deployment.rake +34 -0
- data/tasks/environment.rake +7 -0
- data/tasks/website.rake +17 -0
- data/test/test_generator_helper.rb +20 -0
- data/test/test_helper.rb +4 -0
- data/test/test_install_website_generator.rb +39 -0
- data/test/test_javascript_test_generator.rb +43 -0
- data/test/test_newjs_generator.rb +63 -0
- data/test/test_plain_theme_generator.rb +37 -0
- data/website/images/example-unittest-log.jpg +0 -0
- data/website/index.html +271 -0
- data/website/index.txt +181 -0
- data/website/javascripts/rounded_corners_lite.inc.js +285 -0
- data/website/stylesheets/screen.css +138 -0
- data/website/template.html.erb +48 -0
- metadata +168 -0
@@ -0,0 +1,34 @@
|
|
1
|
+
desc 'Release the website and new gem version'
|
2
|
+
task :deploy => [:check_version, :website, :release] do
|
3
|
+
puts "Remember to create SVN tag:"
|
4
|
+
puts "svn copy svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/trunk " +
|
5
|
+
"svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/tags/REL-#{VERS} "
|
6
|
+
puts "Suggested comment:"
|
7
|
+
puts "Tagging release #{CHANGES}"
|
8
|
+
end
|
9
|
+
|
10
|
+
desc 'Runs tasks website_generate and install_gem as a local deployment of the gem'
|
11
|
+
task :local_deploy => [:website_generate, :install_gem]
|
12
|
+
|
13
|
+
task :check_version do
|
14
|
+
unless ENV['VERSION']
|
15
|
+
puts 'Must pass a VERSION=x.y.z release version'
|
16
|
+
exit
|
17
|
+
end
|
18
|
+
unless ENV['VERSION'] == VERS
|
19
|
+
puts "Please update your version.rb to match the release version, currently #{VERS}"
|
20
|
+
exit
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
desc 'Install the package as a gem, without generating documentation(ri/rdoc)'
|
25
|
+
task :install_gem_no_doc => [:clean, :package] do
|
26
|
+
sh "#{'sudo ' unless Hoe::WINDOZE }gem install pkg/*.gem --no-rdoc --no-ri"
|
27
|
+
end
|
28
|
+
|
29
|
+
namespace :manifest do
|
30
|
+
desc 'Recreate Manifest.txt to include ALL files'
|
31
|
+
task :refresh do
|
32
|
+
`rake check_manifest | patch -p0 > Manifest.txt`
|
33
|
+
end
|
34
|
+
end
|
data/tasks/website.rake
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
desc 'Generate website files'
|
2
|
+
task :website_generate => :ruby_env do
|
3
|
+
(Dir['website/**/*.txt'] - Dir['website/version*.txt']).each do |txt|
|
4
|
+
sh %{ #{RUBY_APP} script/txt2html #{txt} > #{txt.gsub(/txt$/,'html')} }
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
desc 'Upload website files to rubyforge'
|
9
|
+
task :website_upload do
|
10
|
+
host = "#{rubyforge_username}@rubyforge.org"
|
11
|
+
remote_dir = "/var/www/gforge-projects/#{PATH}/"
|
12
|
+
local_dir = 'website'
|
13
|
+
sh %{rsync -aCv #{local_dir}/ #{host}:#{remote_dir}}
|
14
|
+
end
|
15
|
+
|
16
|
+
desc 'Generate and upload website files'
|
17
|
+
task :website => [:website_generate, :website_upload, :publish_docs]
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper'
|
2
|
+
require 'fileutils'
|
3
|
+
|
4
|
+
# Must set before requiring generator libs.
|
5
|
+
TMP_ROOT = File.dirname(__FILE__) + "/tmp" unless defined?(TMP_ROOT)
|
6
|
+
PROJECT_NAME = "myproject" unless defined?(PROJECT_NAME)
|
7
|
+
app_root = File.join(TMP_ROOT, PROJECT_NAME)
|
8
|
+
if defined?(APP_ROOT)
|
9
|
+
APP_ROOT.replace(app_root)
|
10
|
+
else
|
11
|
+
APP_ROOT = app_root
|
12
|
+
end
|
13
|
+
|
14
|
+
begin
|
15
|
+
require 'rubigen'
|
16
|
+
rescue LoadError
|
17
|
+
require 'rubygems'
|
18
|
+
require 'rubigen'
|
19
|
+
end
|
20
|
+
require 'rubigen/helpers/generator_test_helper'
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "test_generator_helper.rb")
|
2
|
+
|
3
|
+
class TestInstallWebsiteGenerator < Test::Unit::TestCase
|
4
|
+
include RubiGen::GeneratorTestHelper
|
5
|
+
|
6
|
+
def setup
|
7
|
+
bare_setup
|
8
|
+
end
|
9
|
+
|
10
|
+
def teardown
|
11
|
+
bare_teardown
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_generator_without_options
|
15
|
+
name = "myapp"
|
16
|
+
run_generator(generator_name, [name], sources)
|
17
|
+
|
18
|
+
%w[index.txt index.html template.html.erb stylesheets/screen.css javascripts/rounded_corners_lite.inc.js].each do |file|
|
19
|
+
assert_generated_file("website/#{file}")
|
20
|
+
end
|
21
|
+
assert_generated_file("script/txt2html")
|
22
|
+
assert_generated_file("tasks/website.rake")
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
def sources
|
27
|
+
[ RubiGen::PathSource.new(:test, File.join(File.dirname(__FILE__), "..", generator_path)),
|
28
|
+
RubiGen::PathSource.new(:test, File.join(File.dirname(__FILE__), "..", "newjs_theme_generators"))
|
29
|
+
]
|
30
|
+
end
|
31
|
+
|
32
|
+
def generator_path
|
33
|
+
"newjs_generators"
|
34
|
+
end
|
35
|
+
|
36
|
+
def generator_name
|
37
|
+
'install_website'
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "test_generator_helper.rb")
|
2
|
+
|
3
|
+
class TestJavascriptTestGenerator < Test::Unit::TestCase
|
4
|
+
include RubiGen::GeneratorTestHelper
|
5
|
+
|
6
|
+
def setup
|
7
|
+
bare_setup
|
8
|
+
end
|
9
|
+
|
10
|
+
def teardown
|
11
|
+
bare_teardown
|
12
|
+
end
|
13
|
+
|
14
|
+
# Some generator-related assertions:
|
15
|
+
# assert_generated_file(name, &block) # block passed the file contents
|
16
|
+
# assert_directory_exists(name)
|
17
|
+
# assert_generated_class(name, &block)
|
18
|
+
# assert_generated_module(name, &block)
|
19
|
+
# assert_generated_test_for(name, &block)
|
20
|
+
# The assert_generated_(class|module|test_for) &block is passed the body of the class/module within the file
|
21
|
+
# assert_has_method(body, *methods) # check that the body has a list of methods (methods with parentheses not supported yet)
|
22
|
+
#
|
23
|
+
# Other helper methods are:
|
24
|
+
# app_root_files - put this in teardown to show files generated by the test method (e.g. p app_root_files)
|
25
|
+
# bare_setup - place this in setup method to create the APP_ROOT folder for each test
|
26
|
+
# bare_teardown - place this in teardown method to destroy the TMP_ROOT or APP_ROOT folder after each test
|
27
|
+
|
28
|
+
def test_generator_without_options
|
29
|
+
name = "library"
|
30
|
+
run_generator('javascript_test', [name], sources)
|
31
|
+
assert_generated_file("test/library_test.html")
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
def sources
|
36
|
+
[RubiGen::PathSource.new(:test, File.join(File.dirname(__FILE__),"..", generator_path))
|
37
|
+
]
|
38
|
+
end
|
39
|
+
|
40
|
+
def generator_path
|
41
|
+
"javascript_test_generators"
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "test_generator_helper.rb")
|
2
|
+
|
3
|
+
class TestNewjsGenerator < Test::Unit::TestCase
|
4
|
+
include RubiGen::GeneratorTestHelper
|
5
|
+
|
6
|
+
def setup
|
7
|
+
bare_setup
|
8
|
+
end
|
9
|
+
|
10
|
+
def teardown
|
11
|
+
bare_teardown
|
12
|
+
end
|
13
|
+
|
14
|
+
# Some generator-related assertions:
|
15
|
+
# assert_generated_file(name, &block) # block passed the file contents
|
16
|
+
# assert_directory_exists(name)
|
17
|
+
# assert_generated_class(name, &block)
|
18
|
+
# assert_generated_module(name, &block)
|
19
|
+
# assert_generated_test_for(name, &block)
|
20
|
+
# The assert_generated_(class|module|test_for) &block is passed the body of the class/module within the file
|
21
|
+
# assert_has_method(body, *methods) # check that the body has a list of methods (methods with parentheses not supported yet)
|
22
|
+
#
|
23
|
+
# Other helper methods are:
|
24
|
+
# app_root_files - put this in teardown to show files generated by the test method (e.g. p app_root_files)
|
25
|
+
# bare_setup - place this in setup method to create the APP_ROOT folder for each test
|
26
|
+
# bare_teardown - place this in teardown method to destroy the TMP_ROOT or APP_ROOT folder after each test
|
27
|
+
|
28
|
+
def test_generator_without_options
|
29
|
+
run_generator('newjs', [APP_ROOT], sources)
|
30
|
+
assert_directory_exists "lib"
|
31
|
+
assert_directory_exists "config"
|
32
|
+
assert_directory_exists "src"
|
33
|
+
assert_directory_exists "script"
|
34
|
+
assert_directory_exists "tasks"
|
35
|
+
assert_directory_exists "test/assets"
|
36
|
+
assert_generated_file "test/assets/unittest.css"
|
37
|
+
assert_generated_file "test/assets/unittest.js"
|
38
|
+
assert_generated_file "test/assets/prototype.js"
|
39
|
+
assert_generated_file "Rakefile"
|
40
|
+
assert_generated_file "README.txt"
|
41
|
+
assert_generated_file "License.txt"
|
42
|
+
assert_generated_file "History.txt"
|
43
|
+
assert_generated_file "script/rstakeout"
|
44
|
+
assert_generated_file "script/js_autotest"
|
45
|
+
assert_generated_file "tasks/javascript_test_autotest_tasks.rake"
|
46
|
+
assert_generated_file "tasks/environment.rake"
|
47
|
+
assert_generated_file "config/javascript_test_autotest.yml.sample"
|
48
|
+
assert_generated_file "src/myproject.js"
|
49
|
+
assert_generated_file "src/HEADER"
|
50
|
+
assert_generated_file "lib/protodoc.rb"
|
51
|
+
assert_generated_file "lib/jstest.rb"
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
def sources
|
56
|
+
[RubiGen::PathSource.new(:test, File.join(File.dirname(__FILE__),"..", generator_path))
|
57
|
+
]
|
58
|
+
end
|
59
|
+
|
60
|
+
def generator_path
|
61
|
+
"app_generators"
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "test_generator_helper.rb")
|
2
|
+
|
3
|
+
class TestPlainThemeGenerator < Test::Unit::TestCase
|
4
|
+
include RubiGen::GeneratorTestHelper
|
5
|
+
|
6
|
+
def setup
|
7
|
+
bare_setup
|
8
|
+
end
|
9
|
+
|
10
|
+
def teardown
|
11
|
+
bare_teardown
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_generator_without_options
|
15
|
+
run_generator('plain_theme', [], sources)
|
16
|
+
%w[template.html.erb stylesheets/screen.css javascripts/rounded_corners_lite.inc.js].each do |file|
|
17
|
+
assert_generated_file("website/#{file}")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_generator_with_author_and_email
|
22
|
+
run_generator('plain_theme', [], sources, {:author => "AUTHOR", :email => "EMAIL"})
|
23
|
+
%w[template.html.erb stylesheets/screen.css javascripts/rounded_corners_lite.inc.js].each do |file|
|
24
|
+
assert_generated_file("website/#{file}")
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
def sources
|
30
|
+
[RubiGen::PathSource.new(:test, File.join(File.dirname(__FILE__),"..", generator_path))
|
31
|
+
]
|
32
|
+
end
|
33
|
+
|
34
|
+
def generator_path
|
35
|
+
"newjs_theme_generators"
|
36
|
+
end
|
37
|
+
end
|
Binary file
|
data/website/index.html
ADDED
@@ -0,0 +1,271 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
+
<head>
|
5
|
+
<link rel="stylesheet" href="stylesheets/screen.css" type="text/css" media="screen" />
|
6
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
7
|
+
<title>
|
8
|
+
JavaScript Project Generator
|
9
|
+
</title>
|
10
|
+
<script src="javascripts/rounded_corners_lite.inc.js" type="text/javascript"></script>
|
11
|
+
<style>
|
12
|
+
|
13
|
+
</style>
|
14
|
+
<script type="text/javascript">
|
15
|
+
window.onload = function() {
|
16
|
+
settings = {
|
17
|
+
tl: { radius: 10 },
|
18
|
+
tr: { radius: 10 },
|
19
|
+
bl: { radius: 10 },
|
20
|
+
br: { radius: 10 },
|
21
|
+
antiAlias: true,
|
22
|
+
autoPad: true,
|
23
|
+
validTags: ["div"]
|
24
|
+
}
|
25
|
+
var versionBox = new curvyCorners(settings, document.getElementById("version"));
|
26
|
+
versionBox.applyCornersToAll();
|
27
|
+
}
|
28
|
+
</script>
|
29
|
+
</head>
|
30
|
+
<body>
|
31
|
+
<div id="main">
|
32
|
+
|
33
|
+
<h1>JavaScript Project Generator</h1>
|
34
|
+
<div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/newjs"; return false'>
|
35
|
+
<p>Get Version</p>
|
36
|
+
<a href="http://rubyforge.org/projects/newjs" class="numbers">1.0.0</a>
|
37
|
+
</div>
|
38
|
+
<h1>→ ‘newjs’</h1>
|
39
|
+
|
40
|
+
|
41
|
+
<h2>What</h2>
|
42
|
+
|
43
|
+
|
44
|
+
<p>A simple command-line tool to create the folders and helper files
|
45
|
+
for a new JavaScript project/library. As a bonus, you can quickly
|
46
|
+
create a website to promote your project.</p>
|
47
|
+
|
48
|
+
|
49
|
+
<p>When you start a new JavaScript library, how do you layout the source files,
|
50
|
+
the tests, the distribution files? Do you have support scripts to
|
51
|
+
generate distributions from source files? Run your JavaScript unit tests?
|
52
|
+
Generators to create new unit test <span class="caps">HTML</span> files?</p>
|
53
|
+
|
54
|
+
|
55
|
+
<p><strong>No? Me neither</strong>, so I created the JavaScript Project Generator.</p>
|
56
|
+
|
57
|
+
|
58
|
+
<p>Once <code>newjs</code> has finished helping you write your source libraries,
|
59
|
+
write test <span class="caps">HTML</span> files, providing autotesting scripts to make <span class="caps">TDD</span> a piece of cake,
|
60
|
+
it finally helps you bundle all your source files into a single JavaScript file
|
61
|
+
for distribution.</p>
|
62
|
+
|
63
|
+
|
64
|
+
<p>What a nice helpful tool it is!</p>
|
65
|
+
|
66
|
+
|
67
|
+
<h2>Installing</h2>
|
68
|
+
|
69
|
+
|
70
|
+
<p>Installation and maintenance of generated JavaScript projects
|
71
|
+
requires the installation of <a href="http://www.ruby-lang.org/">Ruby</a> and <a href="http://rubygems.org/">RubyGems</a>.</p>
|
72
|
+
|
73
|
+
|
74
|
+
<p>The command-line application <code>newjs</code> is installed as below,
|
75
|
+
for any operating system (except the ‘sudo’ part – use as necessary):</p>
|
76
|
+
|
77
|
+
|
78
|
+
<pre>sudo gem install newjs</pre>
|
79
|
+
|
80
|
+
<h2>Getting started</h2>
|
81
|
+
|
82
|
+
|
83
|
+
<p>To kick-off your new project/library, run the command-line app <code>newjs</code>:</p>
|
84
|
+
|
85
|
+
|
86
|
+
<pre>$ newjs mylib
|
87
|
+
create config
|
88
|
+
create lib
|
89
|
+
create src
|
90
|
+
create script
|
91
|
+
create tasks
|
92
|
+
create test/assets
|
93
|
+
create test/assets/unittest.css
|
94
|
+
create test/assets/unittest.js
|
95
|
+
create test/assets/prototype.js
|
96
|
+
create tasks/javascript_test_autotest_tasks.rake
|
97
|
+
create tasks/environment.rake
|
98
|
+
create config/javascript_test_autotest.yml.sample
|
99
|
+
create lib/protodoc.rb
|
100
|
+
create README.txt
|
101
|
+
create Rakefile
|
102
|
+
create History.txt
|
103
|
+
create License.txt
|
104
|
+
create src/HEADER
|
105
|
+
create src/mylib.js
|
106
|
+
create script/rstakeout
|
107
|
+
create script/js_autotest
|
108
|
+
dependency install_rubigen_scripts
|
109
|
+
exists script
|
110
|
+
create script/generate
|
111
|
+
create script/destroy
|
112
|
+
</pre>
|
113
|
+
|
114
|
+
<p>Look at all that!</p>
|
115
|
+
|
116
|
+
|
117
|
+
<p>Unit testing uses the <code>unittest.js</code> library
|
118
|
+
developed within <a href="http://www.prototypejs.org/">prototypejs</a>. It should
|
119
|
+
also support JavaScript development using any non-prototype.js libraries.</p>
|
120
|
+
|
121
|
+
|
122
|
+
<p>Your raw, unconcatenated library/source files go in <code>src/</code></p>
|
123
|
+
|
124
|
+
|
125
|
+
<p>Your unit test <span class="caps">HTML</span> files, go in <code>test/</code> (see test generator below).</p>
|
126
|
+
|
127
|
+
|
128
|
+
When you’ve got a new version to release, edit <code>Rakefile</code> and modify the
|
129
|
+
<code>APP_VERSION</code> string (see Distribution section below).
|
130
|
+
|
131
|
+
<p>To merge your <code>src/</code> files into a distribution file, see below.</p>
|
132
|
+
|
133
|
+
|
134
|
+
<h2>Generating test <span class="caps">HTML</span> files</h2>
|
135
|
+
|
136
|
+
|
137
|
+
<p>If you are going to have a <code>src/some_lib.js</code> file, then you’ll want a unit
|
138
|
+
test file(s). By default you’d call it <code>test/some_lib_test.html</code>.</p>
|
139
|
+
|
140
|
+
|
141
|
+
<p>And then what? Personally, I can never remember what basic <span class="caps">HTML</span> + JavaScript
|
142
|
+
goes in the test <span class="caps">HTML</span> files. I quite like the <a href="http://drnicwilliams.com/2008/01/04/autotesting-javascript-in-rails/">javascript_test plugin</a> for <a href="http://www.rubyonrails.org/">Ruby
|
143
|
+
on Rails</a>, which allows you to generate a
|
144
|
+
test <span class="caps">HTML</span> stub. So I’ve included a version of it
|
145
|
+
here. That is, your JavaScript project comes with a generator to create new
|
146
|
+
test <span class="caps">HTML</span> files, ready to rock and roll.</p>
|
147
|
+
|
148
|
+
|
149
|
+
<pre>$ script/generate javascript_test some_lib
|
150
|
+
exists test
|
151
|
+
create test/some_lib_test.html</pre>
|
152
|
+
|
153
|
+
<p>Now edit <code>test/some_lib_test.html</code> and follow the comments
|
154
|
+
that tell you what to do to write your unit tests.</p>
|
155
|
+
|
156
|
+
|
157
|
+
<p>Want to name your test file something different? Specify the target
|
158
|
+
library as an additional parameter.</p>
|
159
|
+
|
160
|
+
|
161
|
+
<pre>$ script/generate javascript_test my_library_tests some_lib
|
162
|
+
exists test
|
163
|
+
create test/my_library_tests_test.html</pre>
|
164
|
+
|
165
|
+
<h2>Running unit tests</h2>
|
166
|
+
|
167
|
+
|
168
|
+
<p>Each test <span class="caps">HTML</span> file should be self-executable: just open it in a target
|
169
|
+
browser. That is, to run the <code>test/some_lib_test.html</code> tests
|
170
|
+
in Firefox, open the file in Firefox.</p>
|
171
|
+
|
172
|
+
|
173
|
+
<p>It will print out a beautiful log success/error messages for each test.</p>
|
174
|
+
|
175
|
+
|
176
|
+
<p><img src="images/example-unittest-log.jpg" width="647" height="427" alt="Example Unittest Log"></p>
|
177
|
+
|
178
|
+
|
179
|
+
<h2>Distribution of library</h2>
|
180
|
+
|
181
|
+
|
182
|
+
<p>Your project comes with the ability to concatenate all your <code>src/*.js</code>
|
183
|
+
files into a single file for distribution, as <code>dist/project_name.js</code>.</p>
|
184
|
+
|
185
|
+
|
186
|
+
<p>First, edit <code>src/HEADER</code> with information that will be included
|
187
|
+
at the top of the generated distribution file.</p>
|
188
|
+
|
189
|
+
|
190
|
+
<p>Second, edit <code>src/project_name.js</code> to include the names of
|
191
|
+
all the <code>src/</code> files that will be concatenated together
|
192
|
+
in your required order.</p>
|
193
|
+
|
194
|
+
|
195
|
+
<p>Finally, run the command:</p>
|
196
|
+
|
197
|
+
|
198
|
+
<pre>rake dist</pre>
|
199
|
+
|
200
|
+
<h2>Create a website for your project</h2>
|
201
|
+
|
202
|
+
|
203
|
+
<p>You can quickly create a clean, readable website for your project
|
204
|
+
that prominently displays the current version number (which is a
|
205
|
+
clickable link through to the download page), just like this page.</p>
|
206
|
+
|
207
|
+
|
208
|
+
<pre>script/generate install_website</pre>
|
209
|
+
|
210
|
+
<p>Now edit the generated <code>website/index.txt</code> file (<a href="http://www.textism.com/tools/textile/">Textile</a> format).</p>
|
211
|
+
|
212
|
+
|
213
|
+
<p>To convert it to <span class="caps">HTML</span>, run:</p>
|
214
|
+
|
215
|
+
|
216
|
+
<pre>rake website_generate</pre>
|
217
|
+
|
218
|
+
<p>And open <code>website/index.html</code> in your browser to preview.
|
219
|
+
The project’s version number is automatically inserted into the page
|
220
|
+
(change version numbers via <code>APP_VERSION</code> in <code>Rakefile</code>).</p>
|
221
|
+
|
222
|
+
|
223
|
+
<p>To upload the website (and its <span class="caps">CSS</span>)</p>
|
224
|
+
|
225
|
+
|
226
|
+
<h2>Screencast coming soon</h2>
|
227
|
+
|
228
|
+
|
229
|
+
<p>A hard-core, “how to do JavaScript unit testing” screencast will
|
230
|
+
soon be published by <a href="http://peepcode.com/">PeepCode</a>. It will cost $9
|
231
|
+
and you’ll love every minute of it.</p>
|
232
|
+
|
233
|
+
|
234
|
+
<p>Subscribe to PeepCode’s blog for announcement details.</p>
|
235
|
+
|
236
|
+
|
237
|
+
<h2>Forum</h2>
|
238
|
+
|
239
|
+
|
240
|
+
<p><a href="http://groups.google.com/group/javascript-project-generator">http://groups.google.com/group/javascript-project-generator</a></p>
|
241
|
+
|
242
|
+
|
243
|
+
<h2>How to submit patches</h2>
|
244
|
+
|
245
|
+
|
246
|
+
<p>Read the <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/">8 steps for fixing other people’s code</a> and for section <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8b-google-groups">8b: Submit patch to Google Groups</a>, use the Google Group above.</p>
|
247
|
+
|
248
|
+
|
249
|
+
<p>The source project is a <a href="http://git.or.cz/">Git</a> repository. See Dr Nic’s <a href="http://github.com/drnic/newjs/tree/master">master branch</a> for clone/checkout details.</p>
|
250
|
+
|
251
|
+
|
252
|
+
<h2>License</h2>
|
253
|
+
|
254
|
+
|
255
|
+
<p>This code is free to use under the terms of the <span class="caps">MIT</span> license.</p>
|
256
|
+
|
257
|
+
|
258
|
+
<h2>Contact</h2>
|
259
|
+
|
260
|
+
|
261
|
+
<p>Comments are welcome. Send an email to <a href="mailto:drnicwilliams@gmail.com">Dr Nic Williams</a> via the <a href="http://groups.google.com/group/javascript-project-generator">forum</a></p>
|
262
|
+
<p class="coda">
|
263
|
+
<a href="drnicwilliams@gmail.com">Dr Nic Williams</a>, 15th February 2008<br>
|
264
|
+
Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
|
265
|
+
</p>
|
266
|
+
</div>
|
267
|
+
|
268
|
+
<!-- insert site tracking codes here, like Google Urchin -->
|
269
|
+
|
270
|
+
</body>
|
271
|
+
</html>
|