shubox 0.9 → 0.9.1

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.
@@ -1,3 +1,8 @@
1
+ == 0.9.1 2009-11-1
2
+
3
+ * 1 minor enhancement:
4
+ * Clojure learning tests now auto-discovered; thanks, Stu.
5
+
1
6
  == 0.9 2009-10-22
2
7
 
3
8
  * 1 major enhancement:
@@ -8,16 +8,17 @@ app_generators/clojure/USAGE
8
8
  app_generators/clojure/clojure_generator.rb
9
9
  app_generators/clojure/templates/README.rdoc
10
10
  app_generators/clojure/templates/bin/repl.sh
11
- app_generators/clojure/templates/bin/runtests.sh
11
+ app_generators/clojure/templates/build.xml
12
12
  app_generators/clojure/templates/lib/clojure-contrib.jar
13
13
  app_generators/clojure/templates/lib/clojure.jar
14
14
  app_generators/clojure/templates/lib/jline-0.9.94.jar
15
15
  app_generators/clojure/templates/project.iml
16
16
  app_generators/clojure/templates/project.ipr
17
17
  app_generators/clojure/templates/src/repl.clj
18
- app_generators/clojure/templates/test/core/about_clojure_testing.clj
19
- app_generators/clojure/templates/test/core/about_forms.clj
20
- app_generators/clojure/templates/test/tests.clj
18
+ app_generators/clojure/templates/test/learning/about_clojure_testing.clj
19
+ app_generators/clojure/templates/test/learning/about_forms.clj
20
+ app_generators/clojure/templates/test/learning/about_sequences.clj
21
+ app_generators/clojure/templates/test/test_runner.clj
21
22
  app_generators/java/USAGE
22
23
  app_generators/java/java_generator.rb
23
24
  app_generators/java/templates/Greeting.java
@@ -32,11 +32,9 @@ on newgem, so extending the framework is as simple as creating new generator scr
32
32
 
33
33
  The <code>shubox</code> application is distributed as a RubyGem and is available immediately after installation.
34
34
 
35
- <code>$ gem sources -a http:http://gems.github.com</code>
35
+ <code>$ gem sources -a http:http://gemcutter.org</code>
36
36
 
37
- <code>$ sudo gem install bobbyno-shubox</code>
38
-
39
- Alternately, download the gem and install manually from github.
37
+ <code>$ sudo gem install shubox</code>
40
38
 
41
39
  == RUBY USAGE
42
40
 
@@ -81,7 +79,7 @@ shubox also supports Clojure:
81
79
 
82
80
  <code>$ cd /tmp/learn_clojure</code>
83
81
 
84
- <code>$ bin/runtests.sh</code>
82
+ <code>$ ant</code>
85
83
 
86
84
  The Clojure command will also generate a <project name>.ipr file to allow the project to easily be
87
85
  opened in IntelliJ 8.
data/Rakefile CHANGED
@@ -33,7 +33,7 @@ Dir['tasks/**/*.rake'].each { |t| load t }
33
33
  # task :default => [:spec, :features]
34
34
 
35
35
  desc "Create the gem and install it"
36
- task :dev => [:clean, :manifest, :clean_manifest, :gemspec, :package, :install_gem, :uat]
36
+ task :dev => [:clean, :manifest, :gemspec, :package, :install_gem, :uat]
37
37
 
38
38
  desc "Strip out the entries in the .git folder for ppl who haven't updated .hoerc"
39
39
  task :clean_manifest do
@@ -17,7 +17,7 @@ class ClojureGenerator < ShuboxAppGenerator
17
17
 
18
18
  # bin
19
19
  m.directory "bin"
20
- m.file_copy_each %w(repl.sh runtests.sh), "bin", script_options
20
+ m.file "bin/repl.sh", "bin/repl.sh", script_options
21
21
 
22
22
  # lib
23
23
  m.directory "lib"
@@ -28,19 +28,16 @@ class ClojureGenerator < ShuboxAppGenerator
28
28
  m.file("src/repl.clj", "src/repl.clj")
29
29
 
30
30
  # test
31
- m.directory "test/core"
32
- m.file("test/core/about_clojure_testing.clj", "test/core/about_clojure_testing.clj")
33
- m.file("test/core/about_forms.clj", "test/core/about_forms.clj")
34
- m.file("test/tests.clj", "test/tests.clj")
31
+ m.directory "test/learning"
32
+ m.file("test/learning/about_clojure_testing.clj", "test/learning/about_clojure_testing.clj")
33
+ m.file("test/learning/about_forms.clj", "test/learning/about_forms.clj")
34
+ m.file("test/learning/about_sequences.clj", "test/learning/about_sequences.clj")
35
+ m.file("test/test_runner.clj", "test/test_runner.clj")
36
+ m.file("build.xml", "build.xml")
35
37
  end
36
38
  end
37
39
 
38
40
  protected
39
41
  # Installation skeleton.
40
- BASEDIRS = %w(
41
- build
42
- lib
43
- src
44
- test
45
- )
42
+ BASEDIRS = %w(bin lib src test)
46
43
  end
@@ -4,21 +4,24 @@ Generated from http://www.github.com/bobbyno/shubox
4
4
 
5
5
  == Running via command line
6
6
 
7
- REPL: <code>bin/repl.sh</code>
7
+ Run Tests: <code>ant</code>
8
8
 
9
- Tests: <code>bin/runtests.sh</code>
9
+ Start REPL: <code>bin/repl.sh</code>
10
10
 
11
11
  == Running in IntelliJ
12
12
 
13
13
  * Install the La Clojure plugin
14
- * Create a run configuration for tests.clj
14
+ * Create a run configuration for test/test-runner.clj
15
15
  * Check "Run script in REPL" and uncheck "Display settings before launching"
16
- * Run tests.clj - output displays in the run tab
16
+ * Run test-runner.clj - output displays in the run tab
17
17
  * Enter <code>(. System exit 0)</code> or hit the stop button if the REPL doesn't exit.
18
+ * Run src/repl.clj in the "Run script in REPL" option to keep the REPL running in the IDE.
18
19
 
19
20
  == Credits
20
21
 
21
- Project structure based on Stuart Halloway's clojure-bowling: http://github.com/stuarthalloway/clojure-bowling/
22
+ Programming Clojure by Stuart Halloway: http://www.pragprog.com/titles/shcloj
23
+
24
+ Project structure based on Stu's clojure-bowling: http://github.com/stuarthalloway/clojure-bowling/
22
25
 
23
26
  Note that this requires a post-1.0 version of Clojure and contrib to use the new 'are' syntax.
24
27
 
@@ -0,0 +1,15 @@
1
+ <project name="learn_clojure" default="test" basedir=".">
2
+
3
+ <path id="test.classpath">
4
+ <fileset dir="lib" includes="*.jar"/>
5
+ </path>
6
+
7
+ <target name="test">
8
+ <java classname="clojure.main" classpathref="test.classpath" dir="test" fork="true" failonerror="true">
9
+ <classpath path="test"/>
10
+ <arg value="-e"/>
11
+ <arg value="(use 'test-runner)"/>
12
+ </java>
13
+ </target>
14
+
15
+ </project>
@@ -1,3 +1,2 @@
1
1
  ; making the REPL nicer
2
- (use '[clojure.contrib java-utils pprint seq-utils repl-utils duck-streams]
3
- 'sicp.week_one)
2
+ (use '[clojure.contrib java-utils pprint seq-utils repl-utils duck-streams])
@@ -1,4 +1,4 @@
1
- (ns core.about_clojure_testing
1
+ (ns learning.about-clojure-testing
2
2
  (:use clojure.test))
3
3
 
4
4
  ; Define a simple "Hello, World" function to test
@@ -0,0 +1,18 @@
1
+ (ns learning.about-forms
2
+ (:use clojure.test))
3
+
4
+ (deftest division
5
+ (are [desc expression expected] (= expression expected)
6
+ "do some simple division" (/ 6 2) 3
7
+ "show that ratio is a built-in type" (/ 1 2) 1/2
8
+ "use a floating-point literal for the dividend for decimal division" (/ 1 2.0) 0.5
9
+ "obtain the integer quotient" (quot 22 7) 3
10
+ "obtain the remainder" (rem 23 7) 2
11
+ ))
12
+
13
+ (deftest strings
14
+ (are [desc expression expected] (= expression expected)
15
+ "convert a lowercase string to uppercase" (.toUpperCase "str") "STR"
16
+ "append several strings - show that nil is ignored" (str 1 nil "two") "1two"
17
+ ))
18
+
@@ -0,0 +1,24 @@
1
+ (ns learning.about-sequences
2
+ (:use clojure.test))
3
+
4
+ (deftest seq-functions-work-for-lists
5
+ (are [x expected] (= x expected)
6
+ ; first, rest, cons on lists
7
+ (first '(1 2 3)) 1
8
+ (rest '(1 2 3)) '(2 3)
9
+ (cons 0 '(1 2 3)) '(0 1 2 3)
10
+ ))
11
+
12
+ (deftest seq-functions-work-on-vectors
13
+ (are [x expected] (= x expected)
14
+ ; first, rest, cons on vectors
15
+ (first [1 2 3]) 1
16
+ (rest [1 2 3]) [2 3]
17
+ (cons 0 [1 2 3]) [0 1 2 3]
18
+ ))
19
+
20
+ (deftest rest-and-cons-returns-a-seq-not-a-vector
21
+ (are [x expected] (= x expected)
22
+ ; call class on rest to prove that lists and vectors are seqs
23
+ (class (rest [1 2 3])) clojure.lang.LazilyPersistentVector$ChunkedSeq
24
+ ))
@@ -0,0 +1,19 @@
1
+ (ns test-runner
2
+ (:use clojure.test))
3
+
4
+ (defn load-test-namespaces [directory]
5
+ (let [test-files
6
+ (for [f (file-seq (java.io.File. directory)) :when (re-find #".clj$" (.getPath f))]
7
+ (re-find #"[^.]+" (.getPath f)))]
8
+ (doseq [file test-files] (load file))))
9
+
10
+ (defn run-learning-tests
11
+ "Finds, loads, and runs all tests."
12
+ []
13
+ (try
14
+ (load-test-namespaces "learning")
15
+ (run-all-tests #"^learning.*")
16
+ (finally
17
+ (shutdown-agents))))
18
+
19
+ (run-learning-tests)
@@ -5,7 +5,7 @@ $:.unshift(File.dirname(__FILE__) + '/../cleaner_generators') unless
5
5
  $:.include?(File.dirname(__FILE__) + '/../cleaner_generators') || $:.include?(File.expand_path(File.dirname(__FILE__) + '../cleaner_generators'))
6
6
 
7
7
  module Shubox
8
- VERSION = '0.9'
8
+ VERSION = '0.9.1'
9
9
  end
10
10
 
11
11
  require 'test_unit_cleaner/lib/test_unit_cleaner'
@@ -19,11 +19,11 @@ class TestClojureGenerator < Test::Unit::TestCase
19
19
  assert_generated_file "README.rdoc"
20
20
  assert_generated_file "myproject.ipr"
21
21
  assert_generated_file "myproject.iml"
22
+ assert_generated_file "build.xml"
22
23
  assert_file_contains(PROJECT_NAME, "myproject.ipr")
23
24
 
24
25
  assert_directory_exists "bin"
25
26
  assert_generated_file "bin/repl.sh"
26
- assert_generated_file "bin/runtests.sh"
27
27
 
28
28
  assert_directory_exists "lib"
29
29
  assert_generated_file "lib/clojure.jar"
@@ -34,11 +34,11 @@ class TestClojureGenerator < Test::Unit::TestCase
34
34
  assert_generated_file "src/repl.clj"
35
35
 
36
36
  assert_directory_exists "test"
37
- assert_directory_exists "test/core"
38
- assert_generated_file "test/core/about_clojure_testing.clj"
39
- assert_generated_file "test/core/about_forms.clj"
40
- assert_generated_file "test/tests.clj"
37
+ assert_directory_exists "test/learning"
38
+ assert_generated_file "test/learning/about_clojure_testing.clj"
39
+ assert_generated_file "test/learning/about_forms.clj"
40
+ assert_generated_file "test/test_runner.clj"
41
41
 
42
- run_generated_build_script("bin/runtests.sh")
42
+ run_generated_build_script("ant")
43
43
  end
44
44
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shubox
3
3
  version: !ruby/object:Gem::Version
4
- version: "0.9"
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bobby Norton
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-22 00:00:00 -05:00
12
+ date: 2009-11-01 01:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -58,16 +58,17 @@ files:
58
58
  - app_generators/clojure/clojure_generator.rb
59
59
  - app_generators/clojure/templates/README.rdoc
60
60
  - app_generators/clojure/templates/bin/repl.sh
61
- - app_generators/clojure/templates/bin/runtests.sh
61
+ - app_generators/clojure/templates/build.xml
62
62
  - app_generators/clojure/templates/lib/clojure-contrib.jar
63
63
  - app_generators/clojure/templates/lib/clojure.jar
64
64
  - app_generators/clojure/templates/lib/jline-0.9.94.jar
65
65
  - app_generators/clojure/templates/project.iml
66
66
  - app_generators/clojure/templates/project.ipr
67
67
  - app_generators/clojure/templates/src/repl.clj
68
- - app_generators/clojure/templates/test/core/about_clojure_testing.clj
69
- - app_generators/clojure/templates/test/core/about_forms.clj
70
- - app_generators/clojure/templates/test/tests.clj
68
+ - app_generators/clojure/templates/test/learning/about_clojure_testing.clj
69
+ - app_generators/clojure/templates/test/learning/about_forms.clj
70
+ - app_generators/clojure/templates/test/learning/about_sequences.clj
71
+ - app_generators/clojure/templates/test/test_runner.clj
71
72
  - app_generators/java/USAGE
72
73
  - app_generators/java/java_generator.rb
73
74
  - app_generators/java/templates/Greeting.java
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- java -Xmx1G -cp test:src:lib/clojure.jar:lib/clojure-contrib.jar:lib/hsqldb.jar:lib/ant.jar:lib/ant-launcher.jar clojure.lang.Script test/tests.clj
@@ -1,22 +0,0 @@
1
- (ns core.about_forms
2
- (:use clojure.test))
3
-
4
- (deftest division-in-clojure-is-surprising
5
- (are [expression expected] (= expression expected)
6
- (/ 6 3) 2
7
- ; Ratio is a built-in type
8
- (/ 3 6) 1/2
9
- ; use a floating-point literal for the dividend for decimal division
10
- (/ 3.0 6) 0.5
11
- ; integer quotient
12
- (quot 22 7) 3
13
- ; remainder
14
- (rem 22 7) 1
15
- ))
16
-
17
- (deftest strings
18
- (are [expression expected] (= expression expected)
19
- (.toUpperCase "str") "STR"
20
- (str 1 2 nil 3) "123"
21
- ))
22
-
@@ -1,11 +0,0 @@
1
- (ns test
2
- (:use clojure.test))
3
-
4
- (def tests
5
- ['core.about_clojure_testing 'core.about_forms])
6
-
7
- (doseq [test tests] (require test))
8
-
9
- (apply run-tests tests)
10
-
11
- (shutdown-agents)