railscheck 0.1.3 → 0.1.4
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 +14 -5
- data/Manifest.txt +2 -0
- data/README.txt +4 -1
- data/TODO.txt +1 -3
- data/config/hoe.rb +1 -1
- data/lib/railscheck/testcase.rb +23 -0
- data/lib/railscheck/version.rb +1 -1
- data/lib/railscheck.rb +2 -1
- data/lib/test/tc_associations.rb +21 -0
- data/lib/test/tc_config.rb +1 -1
- data/lib/test/tc_database_models.rb +5 -13
- data/lib/test/tc_html_and_css.rb +1 -1
- data/lib/test/tc_project.rb +3 -3
- data/lib/test/tc_views.rb +1 -1
- data/lib/test/test_helper.rb +19 -0
- metadata +6 -4
data/History.txt
CHANGED
@@ -1,10 +1,19 @@
|
|
1
|
-
== 0.1.
|
1
|
+
== 0.1.5 2008-yet to be releases
|
2
|
+
* Adding javascript parse validation.
|
3
|
+
* Adding preliminary ruby code parse validation.
|
4
|
+
|
5
|
+
== 0.1.4 2008-04-26
|
6
|
+
* Fix: sqlite3 compatibility.
|
7
|
+
* Fix: changed check for plugin lib/init files to warnings.
|
8
|
+
* Added test that has_many, has_one, belongs_to and has_and_belongs_to_many associations uses the correct pluralization for names.
|
9
|
+
|
10
|
+
== 0.1.3 2008-04-15
|
2
11
|
* Fixed typing mistake.
|
3
12
|
|
4
|
-
== 0.1.2 2008-
|
5
|
-
* Included w3c_validators dependency in gem spec.
|
13
|
+
== 0.1.2 2008-04-15
|
14
|
+
* Included missing w3c_validators dependency in gem spec.
|
6
15
|
|
7
|
-
== 0.1.1 2008-
|
16
|
+
== 0.1.1 2008-04-15
|
8
17
|
* First proper beta
|
9
18
|
|
10
19
|
== 0.1.0 2008-03-15
|
@@ -14,4 +23,4 @@
|
|
14
23
|
* Internal release converted into a ruby gem (no longer a rails plugin)
|
15
24
|
|
16
25
|
== 0.0.0 2008-03-03
|
17
|
-
* Initial proof of concept prerelease as a rails plugin (as
|
26
|
+
* Initial proof of concept prerelease as a rails plugin (as demo'ed at copenhagen.rb)
|
data/Manifest.txt
CHANGED
@@ -11,11 +11,13 @@ config/requirements.rb
|
|
11
11
|
lib/railscheck.rb
|
12
12
|
lib/railscheck/testcase.rb
|
13
13
|
lib/railscheck/version.rb
|
14
|
+
lib/test/tc_associations.rb
|
14
15
|
lib/test/tc_config.rb
|
15
16
|
lib/test/tc_database_models.rb
|
16
17
|
lib/test/tc_html_and_css.rb
|
17
18
|
lib/test/tc_project.rb
|
18
19
|
lib/test/tc_views.rb
|
20
|
+
lib/test/test_helper.rb
|
19
21
|
log/debug.log
|
20
22
|
script/console
|
21
23
|
script/destroy
|
data/README.txt
CHANGED
@@ -126,10 +126,13 @@ information. See also my blog postings at "http://techblog.41concepts.com/" abou
|
|
126
126
|
|
127
127
|
* ----> Submit your code additions and get your name added here!! <----
|
128
128
|
|
129
|
-
INSPIRATION AND
|
129
|
+
INSPIRATION, ATTRIBUTIONS AND SPECIAL CREDITS:
|
130
130
|
* Fail Early Task written by Mike Naberezny for Advanced Rail Recipes.
|
131
131
|
* DZone Snippet Rails task to find code typos in rhtml templates by "dseverin"
|
132
132
|
|
133
|
+
+ Aaron Patterson for the Johnson javascript gem, Ryan Davis for the ruby parser,
|
134
|
+
Alex Dunae for the W3C wrapper gem.
|
135
|
+
|
133
136
|
LICENSE INFORMATION:
|
134
137
|
This software is FREE for both public and commercial use - with the possible exception of commercial
|
135
138
|
software development tool makers that require a license (see License.txt file for details).
|
data/TODO.txt
CHANGED
@@ -5,8 +5,6 @@ See below for a list of some future checks that are considered:
|
|
5
5
|
|
6
6
|
SHORT/MID TERM:
|
7
7
|
|
8
|
-
* Verify javascript
|
9
|
-
* Syntax check where possible of *.rb
|
10
8
|
* Syntax check *.rjs
|
11
9
|
* Verify other markup than erb.
|
12
10
|
* Additional verification of migration files
|
@@ -19,7 +17,7 @@ SHORT/MID TERM:
|
|
19
17
|
* Check (some) model validations against data in database (looking for illegal data in database).
|
20
18
|
|
21
19
|
LONGER TERM:
|
22
|
-
* Code analysis checks of ruby and
|
20
|
+
* Code analysis checks of ruby and javascript code looking for, static detectable, ruby code
|
23
21
|
that may have "simple" errors like accessing a variable before it is declared etc. This
|
24
22
|
may in turn open up for many more features.
|
25
23
|
|
data/config/hoe.rb
CHANGED
@@ -2,7 +2,7 @@ require 'railscheck/version'
|
|
2
2
|
|
3
3
|
AUTHOR = 'Morten M. Christensen / 41concepts' # can also be an array of Authors
|
4
4
|
EMAIL = "mmc@41concepts.com"
|
5
|
-
DESCRIPTION = "Static verifier for
|
5
|
+
DESCRIPTION = "Static verifier for Ruby On Rails projects"
|
6
6
|
GEM_NAME = 'railscheck' # what ppl will type to install your gem
|
7
7
|
RUBYFORGE_PROJECT = 'railscheck' # The unix name for your project
|
8
8
|
HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
|
data/lib/railscheck/testcase.rb
CHANGED
@@ -8,7 +8,30 @@ module Railscheck
|
|
8
8
|
def default_test
|
9
9
|
# Do nothing
|
10
10
|
end
|
11
|
+
|
12
|
+
protected
|
13
|
+
# Helper: Retrive array of all model classes in current rails project
|
14
|
+
def lookup_active_record_models_classes
|
15
|
+
# Cache loaded model classes so we don't need to reload.
|
16
|
+
if !defined? @@model_classes
|
17
|
+
@@model_classes = []
|
18
|
+
Dir["#{RAILS_ROOT}/app/models/*rb"].each do |fname|
|
19
|
+
class_names = load(fname, false)
|
20
|
+
class_names.each do |class_name|
|
21
|
+
c = Object.const_get(class_name)
|
22
|
+
# Note: "c.kind_of?(ActiveRecord::Base)" not working here so do alt. check instead.
|
23
|
+
if (c.respond_to? 'abstract_class') && !c.abstract_class? &&
|
24
|
+
(c.respond_to? 'descends_from_active_record?')
|
25
|
+
@@model_classes << c
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
@@model_classes
|
32
|
+
end
|
11
33
|
|
34
|
+
# Helper: Handle warnings
|
12
35
|
def warn(msg)
|
13
36
|
puts "Warning: "+msg
|
14
37
|
end
|
data/lib/railscheck/version.rb
CHANGED
data/lib/railscheck.rb
CHANGED
@@ -42,7 +42,8 @@ BANNER
|
|
42
42
|
"Exclude test files satisfying specified the regular expresssion string (without //)"
|
43
43
|
) { |OPTIONS[:exclude_test_files]| }
|
44
44
|
|
45
|
-
opts.on("-h", "--help", "Show this help message.") { puts opts; exit }
|
45
|
+
opts.on("-h", "-?", "--help", "Show this help message.") { puts opts; exit }
|
46
|
+
|
46
47
|
opts.parse!(ARGV)
|
47
48
|
|
48
49
|
if MANDATORY_OPTIONS && MANDATORY_OPTIONS.find { |option| OPTIONS[option.to_sym].nil? }
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'test/test_helper'
|
2
|
+
|
3
|
+
module Railscheck
|
4
|
+
module Test
|
5
|
+
class Associations < Railscheck::TestCase
|
6
|
+
# Test that associations uses the correct pluralization.
|
7
|
+
def test_associations_pluralization
|
8
|
+
lookup_active_record_models_classes.each do |clazz|
|
9
|
+
clazz.reflect_on_all_associations.each do |a|
|
10
|
+
#puts "Checking associations #{a.macro} #{a.name} for #{clazz}"
|
11
|
+
if a.macro==:has_many || a.macro==:has_and_belongs_to_many
|
12
|
+
assert plural?(a.name), "#{a.macro} association #{a.name} in model class #{clazz} should be be a plural name (as known by rails pluralizer)"
|
13
|
+
elsif a.macro==:has_one || a.macro==:belongs_to
|
14
|
+
assert singular?(a.name), "#{a.macro} association #{a.name} in model class #{clazz} should be be a singular name (as known by rails pluralizer)"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/test/tc_config.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'test/test_helper'
|
2
2
|
|
3
3
|
module Railscheck
|
4
4
|
module Test
|
@@ -7,9 +7,9 @@ module Railscheck
|
|
7
7
|
def test_database_connection_working
|
8
8
|
assert File.file?("#{RAILS_ROOT}/config/database.yml"), "Database configuration file database.yml must be present"
|
9
9
|
|
10
|
-
assert_nothing_raised("Could not open database connection") do
|
10
|
+
assert_nothing_raised("Could not open database connection / no migration schema_info table in database") do
|
11
11
|
ActiveRecord::Base.establish_connection
|
12
|
-
ActiveRecord::Base.connection.select_all('
|
12
|
+
ActiveRecord::Base.connection.select_all('select * from schema_info')
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
@@ -25,16 +25,8 @@ module Railscheck
|
|
25
25
|
|
26
26
|
# Check that correctly named database tables exist for each rails model
|
27
27
|
def test_database_tables_and_models_consistency
|
28
|
-
|
29
|
-
|
30
|
-
class_names.each do |class_name|
|
31
|
-
c = Object.const_get(class_name)
|
32
|
-
# Note: "c.kind_of?(ActiveRecord::Base)" not working here so do alt. check instead.
|
33
|
-
if (c.respond_to? 'abstract_class') && !c.abstract_class? &&
|
34
|
-
(c.respond_to? 'descends_from_active_record?') #&& c.descends_from_active_record?
|
35
|
-
assert c.table_exists?, "Error - Could not find database table #{c.table_name} corresponding to rails model #{c.name}"
|
36
|
-
end
|
37
|
-
end
|
28
|
+
lookup_active_record_models_classes.each do |clazz|
|
29
|
+
assert clazz.table_exists?, "Error - Could not find database table #{clazz.table_name} corresponding to rails model #{clazz.name}"
|
38
30
|
end
|
39
31
|
end
|
40
32
|
|
data/lib/test/tc_html_and_css.rb
CHANGED
data/lib/test/tc_project.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'test/test_helper'
|
2
2
|
|
3
3
|
module Railscheck
|
4
4
|
module Test
|
@@ -97,8 +97,8 @@ module Railscheck
|
|
97
97
|
lib_dir = File.join(plugindir, "lib")
|
98
98
|
init_file = File.join(plugindir, "init.rb")
|
99
99
|
|
100
|
-
|
101
|
-
|
100
|
+
warn "No lib sub-directory in plugin at \"#{plugindir}\"" if !File.directory?(lib_dir)
|
101
|
+
warn "No init file in plugin at \"#{plugindir}\"" if !File.file?(init_file)
|
102
102
|
end
|
103
103
|
end
|
104
104
|
end
|
data/lib/test/tc_views.rb
CHANGED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'test/test_helper'
|
2
|
+
require 'railscheck/testcase'
|
3
|
+
|
4
|
+
# Read and return filename content as string.
|
5
|
+
def get_file_as_string(filename)
|
6
|
+
File.open(filename, "r") { |f|
|
7
|
+
return f.read
|
8
|
+
}
|
9
|
+
end
|
10
|
+
|
11
|
+
# Helper: Checks if a string/symbol is pluralized.
|
12
|
+
def plural?(str)
|
13
|
+
str.to_s.pluralize==str.to_s
|
14
|
+
end
|
15
|
+
|
16
|
+
# Helper: Checks if a string/symbol is singularized.
|
17
|
+
def singular?(str)
|
18
|
+
str.to_s.singularize==str.to_s
|
19
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: railscheck
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Morten M. Christensen / 41concepts
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-04-
|
12
|
+
date: 2008-04-27 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: 0.9.2
|
23
23
|
version:
|
24
|
-
description: Static verifier for
|
24
|
+
description: Static verifier for Ruby On Rails projects
|
25
25
|
email:
|
26
26
|
- mmc@41concepts.com
|
27
27
|
executables:
|
@@ -49,11 +49,13 @@ files:
|
|
49
49
|
- lib/railscheck.rb
|
50
50
|
- lib/railscheck/testcase.rb
|
51
51
|
- lib/railscheck/version.rb
|
52
|
+
- lib/test/tc_associations.rb
|
52
53
|
- lib/test/tc_config.rb
|
53
54
|
- lib/test/tc_database_models.rb
|
54
55
|
- lib/test/tc_html_and_css.rb
|
55
56
|
- lib/test/tc_project.rb
|
56
57
|
- lib/test/tc_views.rb
|
58
|
+
- lib/test/test_helper.rb
|
57
59
|
- log/debug.log
|
58
60
|
- script/console
|
59
61
|
- script/destroy
|
@@ -92,7 +94,7 @@ rubyforge_project: railscheck
|
|
92
94
|
rubygems_version: 1.1.1
|
93
95
|
signing_key:
|
94
96
|
specification_version: 2
|
95
|
-
summary: Static verifier for
|
97
|
+
summary: Static verifier for Ruby On Rails projects
|
96
98
|
test_files:
|
97
99
|
- test/test_helper.rb
|
98
100
|
- test/test_railscheck.rb
|