newjs 1.3.0 → 1.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +4 -0
- data/Manifest.txt +9 -0
- data/app_generators/newjs/newjs_generator.rb +0 -3
- data/app_generators/newjs/templates/script/win_script.cmd +1 -0
- data/app_generators/newjs/templates/tasks/javascript_test_autotest_tasks.rake +2 -1
- data/lib/newjs/version.rb +1 -1
- data/rails_generators/javascript_test/javascript_test_generator.rb +19 -0
- data/rails_generators/javascript_test/templates/config/javascript_test_autotest.yml.sample +15 -0
- data/rails_generators/javascript_test/templates/plugins/javascript_unittest/lib/autotest/javascript_test_autotest.rb +22 -0
- data/rails_generators/javascript_test/templates/plugins/javascript_unittest/lib/autotest/javascript_test_autotest/config.rb +20 -0
- data/rails_generators/javascript_test/templates/plugins/javascript_unittest/lib/autotest/javascript_test_ext.rb +16 -0
- data/rails_generators/javascript_test/templates/plugins/javascript_unittest/tasks/autotest.rake +40 -0
- data/rails_generators/javascript_test/templates/script/js_autotest +1 -0
- data/rails_generators/javascript_test/templates/script/rstakeout +98 -0
- data/rails_generators/javascript_test/templates/script/win_script.cmd +1 -0
- data/test/test_javascript_test_generator.rb +5 -0
- data/website/index.html +1 -1
- metadata +10 -1
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
@@ -14,6 +14,7 @@ app_generators/newjs/templates/lib/jstest.rb
|
|
14
14
|
app_generators/newjs/templates/lib/protodoc.rb
|
15
15
|
app_generators/newjs/templates/script/js_autotest
|
16
16
|
app_generators/newjs/templates/script/rstakeout
|
17
|
+
app_generators/newjs/templates/script/win_script.cmd
|
17
18
|
app_generators/newjs/templates/src/HEADER.erb
|
18
19
|
app_generators/newjs/templates/src/library.js.erb
|
19
20
|
app_generators/newjs/templates/tasks/deploy.rake
|
@@ -58,9 +59,17 @@ rails_generators/javascript_test/USAGE
|
|
58
59
|
rails_generators/javascript_test/javascript_test_generator.rb
|
59
60
|
rails_generators/javascript_test/templates/assets/jsunittest.js
|
60
61
|
rails_generators/javascript_test/templates/assets/unittest.css
|
62
|
+
rails_generators/javascript_test/templates/config/javascript_test_autotest.yml.sample
|
61
63
|
rails_generators/javascript_test/templates/plugins/javascript_unittest/README
|
64
|
+
rails_generators/javascript_test/templates/plugins/javascript_unittest/lib/autotest/javascript_test_autotest.rb
|
65
|
+
rails_generators/javascript_test/templates/plugins/javascript_unittest/lib/autotest/javascript_test_autotest/config.rb
|
66
|
+
rails_generators/javascript_test/templates/plugins/javascript_unittest/lib/autotest/javascript_test_ext.rb
|
62
67
|
rails_generators/javascript_test/templates/plugins/javascript_unittest/lib/jstest.rb
|
68
|
+
rails_generators/javascript_test/templates/plugins/javascript_unittest/tasks/autotest.rake
|
63
69
|
rails_generators/javascript_test/templates/plugins/javascript_unittest/tasks/runner.rake
|
70
|
+
rails_generators/javascript_test/templates/script/js_autotest
|
71
|
+
rails_generators/javascript_test/templates/script/rstakeout
|
72
|
+
rails_generators/javascript_test/templates/script/win_script.cmd
|
64
73
|
rails_generators/javascript_test/templates/test.html.erb
|
65
74
|
script/destroy
|
66
75
|
script/generate
|
@@ -33,9 +33,6 @@ class NewjsGenerator < RubiGen::Base
|
|
33
33
|
m.directory ''
|
34
34
|
BASEDIRS.each { |path| m.directory path }
|
35
35
|
|
36
|
-
# Create stubs
|
37
|
-
# m.template "template.rb", "some_file_after_erb.rb"
|
38
|
-
# m.file "file", "some_file_copied"
|
39
36
|
m.file_copy_each %w[unittest.css jsunittest.js], "test/assets"
|
40
37
|
m.file_copy_each %w[javascript_test_autotest_tasks.rake environment.rake deploy.rake], "tasks"
|
41
38
|
m.file_copy_each %w[javascript_test_autotest.yml.sample], "config"
|
@@ -0,0 +1 @@
|
|
1
|
+
@ruby <%= File.join("script", filename) %> %*
|
@@ -24,9 +24,10 @@ namespace :test do
|
|
24
24
|
end
|
25
25
|
file = "#{APP_ROOT}/#{file}"
|
26
26
|
unless File.exists?(file)
|
27
|
-
puts "Notice: Test file does not exist: #{file}"
|
27
|
+
# puts "Notice: Test file does not exist: #{file}"
|
28
28
|
next
|
29
29
|
end
|
30
|
+
puts "Launching test: #{file}"
|
30
31
|
browsers = JavascriptTestAutotest::Config.get :browsers
|
31
32
|
if browsers.blank?
|
32
33
|
puts "WARNING: No browsers setup in config/javascript_test_autotest.yml"
|
data/lib/newjs/version.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
class JavascriptTestGenerator < Rails::Generator::Base
|
2
|
+
DEFAULT_SHEBANG = File.join(Config::CONFIG['bindir'],
|
3
|
+
Config::CONFIG['ruby_install_name'])
|
2
4
|
|
3
5
|
default_options :author => nil
|
4
6
|
|
@@ -13,8 +15,13 @@ class JavascriptTestGenerator < Rails::Generator::Base
|
|
13
15
|
end
|
14
16
|
|
15
17
|
def manifest
|
18
|
+
script_options = { :chmod => 0755, :shebang => options[:shebang] == DEFAULT_SHEBANG ? nil : options[:shebang] }
|
19
|
+
windows = (RUBY_PLATFORM =~ /dos|win32|cygwin/i) || (RUBY_PLATFORM =~ /(:?mswin|mingw)/)
|
20
|
+
|
16
21
|
record do |m|
|
17
22
|
# Ensure appropriate folder(s) exists
|
23
|
+
m.directory 'config'
|
24
|
+
m.directory 'script'
|
18
25
|
m.directory 'test/javascript/assets'
|
19
26
|
m.directory 'vendor/plugins/javascript_unittest/lib'
|
20
27
|
m.directory 'vendor/plugins/javascript_unittest/tasks'
|
@@ -22,13 +29,25 @@ class JavascriptTestGenerator < Rails::Generator::Base
|
|
22
29
|
# Create stubs
|
23
30
|
m.file "assets/jsunittest.js", "test/javascript/assets/jsunittest.js"
|
24
31
|
m.file "assets/unittest.css", "test/javascript/assets/unittest.css"
|
32
|
+
|
33
|
+
m.file "config/javascript_test_autotest.yml.sample",
|
34
|
+
"config/javascript_test_autotest.yml.sample"
|
35
|
+
|
25
36
|
m.file "plugins/javascript_unittest/lib/jstest.rb",
|
26
37
|
"vendor/plugins/javascript_unittest/lib/jstest.rb"
|
27
38
|
m.file "plugins/javascript_unittest/tasks/runner.rake",
|
28
39
|
"vendor/plugins/javascript_unittest/tasks/runner.rake"
|
40
|
+
m.file "plugins/javascript_unittest/tasks/autotest.rake",
|
41
|
+
"vendor/plugins/javascript_unittest/tasks/autotest.rake"
|
29
42
|
m.file "plugins/javascript_unittest/README",
|
30
43
|
"vendor/plugins/javascript_unittest/README"
|
31
44
|
m.template "test.html.erb", "test/javascript/#{name}_test.html"
|
45
|
+
|
46
|
+
%w[rstakeout js_autotest].each do |file|
|
47
|
+
m.template "script/#{file}", "script/#{file}", script_options
|
48
|
+
m.template "script/win_script.cmd", "script/#{file}.cmd",
|
49
|
+
:assigns => { :filename => file } if windows
|
50
|
+
end
|
32
51
|
end
|
33
52
|
end
|
34
53
|
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# This file has been copied here by the javascript_test_autotest plugin.
|
2
|
+
# Comment/uncomment the browsers you wish to autotest with.
|
3
|
+
# Same schema as per selenium-on-rails plugin, which is nice.
|
4
|
+
browsers:
|
5
|
+
# Windows
|
6
|
+
# firefox: 'c:\Program Files\Mozilla Firefox\firefox.exe'
|
7
|
+
# ie: 'c:\Program Files\Internet Explorer\iexplore.exe'
|
8
|
+
|
9
|
+
# Mac OS X
|
10
|
+
# firefox: '/Applications/Firefox.app/Contents/MacOS/firefox-bin'
|
11
|
+
safari: '/Applications/Safari.app/Contents/MacOS/Safari'
|
12
|
+
|
13
|
+
# Unix
|
14
|
+
# ?
|
15
|
+
# ?
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module JavascriptTestAutotest
|
2
|
+
class Browser
|
3
|
+
class << self
|
4
|
+
def browser(browser, path)
|
5
|
+
case(browser.to_sym)
|
6
|
+
when :firefox
|
7
|
+
JavaScriptTest::FirefoxBrowser.new(path)
|
8
|
+
when :safari
|
9
|
+
JavaScriptTest::SafariBrowser.new(path)
|
10
|
+
when :ie
|
11
|
+
JavaScriptTest::IEBrowser.new(path)
|
12
|
+
when :konqueror
|
13
|
+
JavaScriptTest::KonquerorBrowser.new(path)
|
14
|
+
else
|
15
|
+
browser
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
require "javascript_test_autotest/config"
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
class JavascriptTestAutotest::Config
|
4
|
+
def self.get var, default = nil
|
5
|
+
value = configs[var.to_s]
|
6
|
+
value ||= default
|
7
|
+
value ||= yield if block_given?
|
8
|
+
value
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
def self.configs
|
13
|
+
unless defined? @@configs
|
14
|
+
file = File.expand_path("#{RAILS_ROOT}/config/javascript_test_autotest.yml")
|
15
|
+
@@configs = File.exist?(file) ? YAML.load_file(file) : {}
|
16
|
+
end
|
17
|
+
@@configs
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class JavaScriptTest::Browser
|
2
|
+
def initialize(path)
|
3
|
+
@path = path
|
4
|
+
end
|
5
|
+
end
|
6
|
+
|
7
|
+
if JavaScriptTest::Browser.new('').macos?
|
8
|
+
class JavaScriptTest::SafariBrowser
|
9
|
+
def setup; end # no need to create new Browser, as open command automates this
|
10
|
+
def visit(file)
|
11
|
+
@path ||= 'Safari.app'
|
12
|
+
`open #{file} -a #{@path} -g`
|
13
|
+
end
|
14
|
+
def setup; end # no need to destroy Browser
|
15
|
+
end
|
16
|
+
end
|
data/rails_generators/javascript_test/templates/plugins/javascript_unittest/tasks/autotest.rake
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
namespace :test do
|
2
|
+
namespace :recent do
|
3
|
+
desc "Open recently modified files into browser"
|
4
|
+
task :javascript => :environment do
|
5
|
+
APP_ROOT = RAILS_ROOT unless Object.const_defined?("APP_ROOT")
|
6
|
+
since = TEST_CHANGES_SINCE
|
7
|
+
touched = FileList[
|
8
|
+
'test/javascript/*_test.html',
|
9
|
+
'public/javascripts/*.js'].select { |path| File.mtime(path) > since }
|
10
|
+
next if touched.blank?
|
11
|
+
|
12
|
+
gem 'newjs'
|
13
|
+
require 'newjs'
|
14
|
+
require 'newjs/autotest'
|
15
|
+
|
16
|
+
touched.each do |file|
|
17
|
+
if file =~ /\/([^\/]+)\.js$/
|
18
|
+
file = "test/unit/#{$1}_test.html"
|
19
|
+
end
|
20
|
+
file = "#{RAILS_ROOT}/#{file}"
|
21
|
+
unless File.exists?(file)
|
22
|
+
# puts "Notice: Test file does not exist: #{file}"
|
23
|
+
next
|
24
|
+
end
|
25
|
+
puts "Launching test: #{file}"
|
26
|
+
browsers = JavascriptTestAutotest::Config.get :browsers
|
27
|
+
if browsers.blank?
|
28
|
+
puts "WARNING: No browsers setup in config/javascript_test_autotest.yml"
|
29
|
+
next
|
30
|
+
end
|
31
|
+
browsers.each_pair do |name, path|
|
32
|
+
browser = JavascriptTestAutotest::Browser.browser(name, path)
|
33
|
+
browser.setup
|
34
|
+
browser.visit(file)
|
35
|
+
browser.teardown
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
script/rstakeout "rake test:recent:javascript" test/javascript/*_test.html public/javascripts/*.js
|
@@ -0,0 +1,98 @@
|
|
1
|
+
#!/usr/local/bin/ruby -w
|
2
|
+
|
3
|
+
|
4
|
+
config = File.dirname(__FILE__) + "/../config/javascript_test_autotest.yml"
|
5
|
+
unless File.exists?(config)
|
6
|
+
puts <<-EOS
|
7
|
+
Edit config/javascript_test_autotest.yml for the browser(s) to use for autotesting.
|
8
|
+
See config/javascript_test_autotest.yml.sample for examples.
|
9
|
+
EOS
|
10
|
+
exit
|
11
|
+
end
|
12
|
+
|
13
|
+
##
|
14
|
+
# Originally by Mike Clark.
|
15
|
+
#
|
16
|
+
# From http://www.pragmaticautomation.com/cgi-bin/pragauto.cgi/Monitor/StakingOutFileChanges.rdoc
|
17
|
+
#
|
18
|
+
# Runs a user-defined command when files are modified.
|
19
|
+
#
|
20
|
+
# Like autotest, but more customizable. This is useful when you want to do
|
21
|
+
# something other than run tests. For example, generate a PDF book, run
|
22
|
+
# a single test, or run a legacy Test::Unit suite in an app that also
|
23
|
+
# has an rSpec suite.
|
24
|
+
#
|
25
|
+
# Can use Ruby's Dir[] to get file glob. Quote your args to take advantage of this.
|
26
|
+
#
|
27
|
+
# rstakeout 'rake test:recent' **/*.rb
|
28
|
+
# => Only watches Ruby files one directory down (no quotes)
|
29
|
+
#
|
30
|
+
# rstakeout 'rake test:recent' '**/*.rb'
|
31
|
+
# => Watches all Ruby files in all directories and subdirectories
|
32
|
+
#
|
33
|
+
# Modified (with permission) by Geoffrey Grosenbach to call growlnotify for
|
34
|
+
# rspec and Test::Unit output.
|
35
|
+
#
|
36
|
+
# See the PeepCode screencast on rSpec or other blog articles for instructions on
|
37
|
+
# setting up growlnotify.
|
38
|
+
|
39
|
+
def growl(title, msg, img, pri=0, sticky="")
|
40
|
+
system "growlnotify -n autotest --image ~/.autotest_images/#{img} -p #{pri} -m #{msg.inspect} #{title} #{sticky}"
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.growl_fail(output)
|
44
|
+
growl "FAIL", "#{output}", "fail.png", 2
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.growl_pass(output)
|
48
|
+
growl "Pass", "#{output}", "pass.png"
|
49
|
+
end
|
50
|
+
|
51
|
+
command = ARGV.shift
|
52
|
+
files = {}
|
53
|
+
|
54
|
+
ARGV.each do |arg|
|
55
|
+
Dir[arg].each { |file|
|
56
|
+
files[file] = File.mtime(file)
|
57
|
+
}
|
58
|
+
end
|
59
|
+
|
60
|
+
puts "Watching #{files.keys.join(', ')}\n\nFiles: #{files.keys.length}"
|
61
|
+
|
62
|
+
trap('INT') do
|
63
|
+
puts "\nQuitting..."
|
64
|
+
exit
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
loop do
|
69
|
+
|
70
|
+
sleep 1
|
71
|
+
|
72
|
+
changed_file, last_changed = files.find { |file, last_changed|
|
73
|
+
File.mtime(file) > last_changed
|
74
|
+
}
|
75
|
+
|
76
|
+
if changed_file
|
77
|
+
files[changed_file] = File.mtime(changed_file)
|
78
|
+
puts "=> #{changed_file} changed, running #{command}"
|
79
|
+
results = `#{command}`
|
80
|
+
puts results
|
81
|
+
|
82
|
+
if results.include? 'tests'
|
83
|
+
output = results.slice(/(\d+)\s+tests?,\s*(\d+)\s+assertions?,\s*(\d+)\s+failures?(,\s*(\d+)\s+errors)?/)
|
84
|
+
if output
|
85
|
+
$~[3].to_i + $~[5].to_i > 0 ? growl_fail(output) : growl_pass(output)
|
86
|
+
end
|
87
|
+
else
|
88
|
+
output = results.slice(/(\d+)\s+examples?,\s*(\d+)\s+failures?(,\s*(\d+)\s+not implemented)?/)
|
89
|
+
if output
|
90
|
+
$~[2].to_i > 0 ? growl_fail(output) : growl_pass(output)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
# TODO Generic growl notification for other actions
|
94
|
+
|
95
|
+
puts "=> done"
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
@ruby <%= File.join("script", filename) %> %*
|
@@ -37,14 +37,19 @@ class TestJavascriptTestGenerator < Test::Unit::TestCase
|
|
37
37
|
run_generator('javascript_test', [name], sources)
|
38
38
|
assert_directory_exists "test/javascript/assets"
|
39
39
|
assert_directory_exists "vendor/plugins/javascript_unittest"
|
40
|
+
assert_directory_exists "script"
|
40
41
|
assert_generated_file "test/javascript/assets/jsunittest.js"
|
41
42
|
assert_generated_file "test/javascript/assets/unittest.css"
|
42
43
|
assert_generated_file "test/javascript/#{name}_test.html" do |body|
|
43
44
|
expected = %Q{src="assets/jsunittest.js"}
|
44
45
|
assert_match(expected, body)
|
45
46
|
end
|
47
|
+
assert_generated_file "script/rstakeout"
|
48
|
+
assert_generated_file "script/js_autotest"
|
49
|
+
assert_generated_file "config/javascript_test_autotest.yml.sample"
|
46
50
|
assert_generated_file "vendor/plugins/javascript_unittest/lib/jstest.rb"
|
47
51
|
assert_generated_file "vendor/plugins/javascript_unittest/tasks/runner.rake"
|
52
|
+
assert_generated_file "vendor/plugins/javascript_unittest/tasks/autotest.rake"
|
48
53
|
assert_generated_file "vendor/plugins/javascript_unittest/README"
|
49
54
|
end
|
50
55
|
|
data/website/index.html
CHANGED
@@ -31,7 +31,7 @@
|
|
31
31
|
<h1>JavaScript Project Generator</h1>
|
32
32
|
<div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/newjs"; return false'>
|
33
33
|
<p>Get Version</p>
|
34
|
-
<a href="http://rubyforge.org/projects/newjs" class="numbers">1.3.
|
34
|
+
<a href="http://rubyforge.org/projects/newjs" class="numbers">1.3.1</a>
|
35
35
|
</div>
|
36
36
|
<h1>→ ‘newjs’</h1>
|
37
37
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: newjs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dr Nic Williams
|
@@ -79,6 +79,7 @@ files:
|
|
79
79
|
- app_generators/newjs/templates/lib/protodoc.rb
|
80
80
|
- app_generators/newjs/templates/script/js_autotest
|
81
81
|
- app_generators/newjs/templates/script/rstakeout
|
82
|
+
- app_generators/newjs/templates/script/win_script.cmd
|
82
83
|
- app_generators/newjs/templates/src/HEADER.erb
|
83
84
|
- app_generators/newjs/templates/src/library.js.erb
|
84
85
|
- app_generators/newjs/templates/tasks/deploy.rake
|
@@ -123,9 +124,17 @@ files:
|
|
123
124
|
- rails_generators/javascript_test/javascript_test_generator.rb
|
124
125
|
- rails_generators/javascript_test/templates/assets/jsunittest.js
|
125
126
|
- rails_generators/javascript_test/templates/assets/unittest.css
|
127
|
+
- rails_generators/javascript_test/templates/config/javascript_test_autotest.yml.sample
|
126
128
|
- rails_generators/javascript_test/templates/plugins/javascript_unittest/README
|
129
|
+
- rails_generators/javascript_test/templates/plugins/javascript_unittest/lib/autotest/javascript_test_autotest.rb
|
130
|
+
- rails_generators/javascript_test/templates/plugins/javascript_unittest/lib/autotest/javascript_test_autotest/config.rb
|
131
|
+
- rails_generators/javascript_test/templates/plugins/javascript_unittest/lib/autotest/javascript_test_ext.rb
|
127
132
|
- rails_generators/javascript_test/templates/plugins/javascript_unittest/lib/jstest.rb
|
133
|
+
- rails_generators/javascript_test/templates/plugins/javascript_unittest/tasks/autotest.rake
|
128
134
|
- rails_generators/javascript_test/templates/plugins/javascript_unittest/tasks/runner.rake
|
135
|
+
- rails_generators/javascript_test/templates/script/js_autotest
|
136
|
+
- rails_generators/javascript_test/templates/script/rstakeout
|
137
|
+
- rails_generators/javascript_test/templates/script/win_script.cmd
|
129
138
|
- rails_generators/javascript_test/templates/test.html.erb
|
130
139
|
- script/destroy
|
131
140
|
- script/generate
|