jordi-xml_struct 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1 @@
1
+ Version 1.0 (2008):: everything-done release.
@@ -0,0 +1,146 @@
1
+ # Rakefile for testspec. -*-ruby-*-
2
+ require 'rake/rdoctask'
3
+ require 'rake/testtask'
4
+
5
+
6
+ desc "Run all the tests"
7
+ task :default => [:test]
8
+
9
+ desc "Do predistribution stuff"
10
+ task :predist => [:chmod, :changelog, :rdoc]
11
+
12
+
13
+ desc "Make an archive as .tar.gz"
14
+ task :dist => :test do
15
+ system "export DARCS_REPO=#{File.expand_path "."}; " +
16
+ "darcs dist -d test-spec-#{get_darcs_tree_version}"
17
+ end
18
+
19
+ # Helper to retrieve the "revision number" of the darcs tree.
20
+ def get_darcs_tree_version
21
+ unless File.directory? "_darcs"
22
+ load 'lib/test/spec/version.rb'
23
+ return Test::Spec::VERSION
24
+ end
25
+
26
+ changes = `darcs changes`
27
+ count = 0
28
+ tag = "0.0"
29
+
30
+ changes.each("\n\n") { |change|
31
+ head, title, desc = change.split("\n", 3)
32
+
33
+ if title =~ /^ \*/
34
+ # Normal change.
35
+ count += 1
36
+ elsif title =~ /tagged (.*)/
37
+ # Tag. We look for these.
38
+ tag = $1
39
+ break
40
+ else
41
+ warn "Unparsable change: #{change}"
42
+ end
43
+ }
44
+
45
+ tag + "." + count.to_s
46
+ end
47
+
48
+ def manifest
49
+ `darcs query manifest 2>/dev/null`.split("\n").map { |f| f.gsub(/\A\.\//, '') }
50
+ end
51
+
52
+
53
+ desc "Make binaries executable"
54
+ task :chmod do
55
+ Dir["bin/*"].each { |binary| File.chmod(0775, binary) }
56
+ end
57
+
58
+ desc "Generate a ChangeLog"
59
+ task :changelog do
60
+ system "darcs changes --repo=#{ENV["DARCS_REPO"] || "."} >ChangeLog"
61
+ end
62
+
63
+
64
+ desc "Generate RDox"
65
+ task "SPECS" do
66
+ ruby "bin/specrb -Ilib:test -a --rdox >SPECS"
67
+ end
68
+
69
+ desc "Run all the tests"
70
+ task :test => :chmod do
71
+ ruby "bin/specrb -Ilib:test -w #{ENV['TEST'] || '-a'} #{ENV['TESTOPTS']}"
72
+ end
73
+
74
+
75
+ begin
76
+ require 'rubygems'
77
+
78
+ require 'rake'
79
+ require 'rake/clean'
80
+ require 'rake/packagetask'
81
+ require 'rake/gempackagetask'
82
+ require 'fileutils'
83
+ rescue LoadError
84
+ # Too bad.
85
+ else
86
+ spec = Gem::Specification.new do |s|
87
+ s.name = "test-spec"
88
+ s.version = get_darcs_tree_version
89
+ s.platform = Gem::Platform::RUBY
90
+ s.summary = "a Behaviour Driven Development interface for Test::Unit"
91
+ s.description = <<-EOF
92
+ test/spec layers an RSpec-inspired interface on top of Test::Unit, so
93
+ you can mix TDD and BDD (Behavior-Driven Development).
94
+
95
+ test/spec is a clean-room implementation that maps most kinds of
96
+ Test::Unit assertions to a `should'-like syntax.
97
+ EOF
98
+
99
+ s.files = manifest + %w(SPECS)
100
+ s.bindir = 'bin'
101
+ s.executables << 'specrb'
102
+ s.require_path = 'lib'
103
+ s.has_rdoc = true
104
+ s.extra_rdoc_files = ['README', 'SPECS', 'ROADMAP']
105
+ s.test_files = Dir['test/{test,spec}_*.rb']
106
+
107
+ s.author = 'Christian Neukirchen'
108
+ s.email = 'chneukirchen@gmail.com'
109
+ s.homepage = "http://test-spec.rubyforge.org"
110
+ s.rubyforge_project = 'test-spec'
111
+ end
112
+
113
+ task :package => [:dist]
114
+
115
+ Rake::GemPackageTask.new(spec) do |p|
116
+ p.gem_spec = spec
117
+ p.need_tar = false
118
+ p.need_zip = false
119
+ end
120
+ end
121
+
122
+
123
+ desc "Generate RDoc documentation"
124
+ Rake::RDocTask.new(:rdoc) do |rdoc|
125
+ rdoc.options << '--line-numbers' << '--inline-source'
126
+ rdoc.rdoc_dir = "doc"
127
+ rdoc.rdoc_files.include 'README'
128
+ rdoc.rdoc_files.include 'ROADMAP'
129
+ rdoc.rdoc_files.include 'SPECS'
130
+ rdoc.rdoc_files.include('lib/**/*.rb')
131
+ end
132
+ task :rdoc => "SPECS"
133
+
134
+
135
+ begin
136
+ require 'rcov/rcovtask'
137
+
138
+ Rcov::RcovTask.new do |t|
139
+ t.test_files = FileList['test/{spec,test}_*.rb'] + ['--', '-rs'] # evil
140
+ t.verbose = true # uncomment to see the executed command
141
+ t.rcov_opts = ["--text-report",
142
+ "--include-file", "^lib,^test",
143
+ "--exclude-only", "^/usr,^/home/.*/src"]
144
+ end
145
+ rescue LoadError
146
+ end
@@ -0,0 +1,161 @@
1
+
2
+ == TestUnit
3
+ * still works on its own
4
+ * supports should good enough
5
+ * works inside test/spec
6
+
7
+ == CustomTestUnitSubclass
8
+ * truth
9
+
10
+ == test/spec
11
+ * has should.satisfy
12
+ * has should.equal
13
+ * has should.raise
14
+ * has should.raise with a block
15
+ * should.raise should return the exception
16
+ * has should.be.an.instance_of
17
+ * has should.be.nil
18
+ * has should.include
19
+ * has should.be.a.kind_of
20
+ * has should.match
21
+ * has should.be
22
+ * has should.not.raise
23
+ * has should.not.satisfy
24
+ * has should.not.be
25
+ * has should.not.equal
26
+ * has should.not.match
27
+ * has should.throw
28
+ * has should.not.throw
29
+ * has should.respond_to
30
+ * has should.be_close
31
+ * multiple negation works
32
+ * has should.<predicate>
33
+ * has should.<predicate>?
34
+ * has should <operator> (>, >=, <, <=, ===)
35
+ * is robust against careless users
36
+ * should detect warnings
37
+ * should message/blame faults
38
+ * should allow for custom shoulds
39
+ * disabled specification (disabled)
40
+ * empty specification (disabled)
41
+ === more disabled
42
+ * this is intentional (disabled)
43
+ * an empty specification (empty)
44
+ ==== even more disabled
45
+ * we can cut out (disabled)
46
+ * entire contexts, now (disabled)
47
+
48
+ == setup/teardown
49
+ * run in the right order
50
+
51
+ == before all
52
+ * runs parent before all
53
+
54
+ == nested teardown
55
+ === nested
56
+ * should call local teardown then parent teardown
57
+
58
+ == before all
59
+ === nested
60
+ * should call parent then local
61
+
62
+ == after all
63
+ === after nested
64
+ * should call local then parent
65
+
66
+ == contexts
67
+ * are defined in class scope
68
+ * can include modules
69
+
70
+ == contexts with subclasses
71
+ * use the supplied class as the superclass
72
+ * truth
73
+
74
+ == xcontexts with subclasses
75
+ * work great! (disabled)
76
+ * truth
77
+
78
+ == Shared contexts
79
+ * can be included several times
80
+ * can include other shared contexts
81
+ * can be included several times
82
+ * can include other shared contexts
83
+ * can be nested
84
+ * can access data
85
+ * should raise when the context cannot be found
86
+
87
+ == SpecDox
88
+ * can unmangle Test::Unit names correctly
89
+ * can unmangle Test::Spec names correctly
90
+ * has sensible fallbacks
91
+
92
+ == flexmock
93
+ * should receive and return
94
+ * should receive without a block
95
+ * should receive and return with a block
96
+ * should have a return value
97
+ * should handle missing methods
98
+ * should ignore missing methods
99
+ * should count correctly
100
+ * should raise on bad counts
101
+ * should handle undetermined counts
102
+ * should handle zero counts
103
+ * should have file IO with use
104
+ * should have use
105
+ * should handle failures during use
106
+ * should deal with sequential values
107
+ * respond_to? should return false for non handled methods
108
+ * respond_to? should return true for explicit methods
109
+ * respond_to? should return true for missing_methods when should_ignore_missing
110
+ * should raise error on unknown method proc
111
+ * should return callable proc on method
112
+ * should return do nothing proc for missing methods
113
+ * works with test/spec
114
+
115
+ == mocha
116
+ * works with test/spec
117
+ * works with test/spec and Enterprise example
118
+
119
+ == stubba
120
+ * works with test/spec and instance method stubbing
121
+ * works with test/spec and class method stubbing
122
+ * works with test/spec and global instance method stubbing
123
+
124
+ == Outer context
125
+ === Inner context
126
+ * is nested (empty)
127
+ * has multiple empty specifications (empty)
128
+ === Second Inner context
129
+ * is indented properly (empty)
130
+ * still runs in order of definition (empty)
131
+ ==== Inmost context
132
+ * works too! (empty)
133
+ * whoo! (empty)
134
+
135
+ == A new-style description
136
+ * should run before-clauses
137
+ * should behave like context/specify
138
+ * this is disabled (disabled)
139
+ * should raise on unimplement{ed,able} before/after
140
+ * should work as well with shared descriptions
141
+ === when nested
142
+ * should work
143
+
144
+ == An disabled description
145
+ * should not be run (disabled)
146
+
147
+ == should.output
148
+ * works for print
149
+ * works for puts
150
+ * works with readline
151
+
152
+ == Context First
153
+ * runs before Second
154
+
155
+ == Context Second
156
+ * runs before Last
157
+
158
+ == Context Last
159
+ * runs last
160
+
161
+ 104 specifications, 8 disabled, 7 empty (636 requirements), 0 failures
@@ -0,0 +1,2 @@
1
+ - see ROADMAP
2
+ - better handling of .should outside of specify(?)
@@ -0,0 +1,107 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- ruby -*-
3
+
4
+ require 'optparse'
5
+
6
+ testrbargv = []
7
+ automatic = false
8
+
9
+ opts = OptionParser.new("", 24, ' ') { |opts|
10
+ opts.banner = "Usage: specrb [options] [files | -a] [-- untouched arguments]"
11
+
12
+ opts.separator ""
13
+ opts.separator "Ruby options:"
14
+
15
+ lineno = 1
16
+ opts.on("-e", "--eval LINE", "evaluate a LINE of code") { |line|
17
+ eval line, TOPLEVEL_BINDING, "-e", lineno
18
+ lineno += 1
19
+ }
20
+
21
+ opts.on("-d", "--debug", "set debugging flags (set $DEBUG to true)") {
22
+ $DEBUG = true
23
+ }
24
+ opts.on("-w", "--warn", "turn warnings on for your script") {
25
+ $-w = true
26
+ }
27
+
28
+ opts.on("-I", "--include PATH",
29
+ "specify $LOAD_PATH (may be used more than once)") { |path|
30
+ $LOAD_PATH.unshift(*path.split(":"))
31
+ }
32
+
33
+ opts.on("-r", "--require LIBRARY",
34
+ "require the library, before executing your script") { |library|
35
+ require library
36
+ }
37
+
38
+ opts.separator ""
39
+ opts.separator "test/spec options:"
40
+
41
+ opts.on("-s", "--specdox", "do AgileDox-like output") {
42
+ testrbargv << "--runner=specdox"
43
+ }
44
+ opts.on("--rdox", "do AgileDox-like output with RDoc formatting") {
45
+ testrbargv << "--runner=rdox"
46
+ }
47
+
48
+ opts.on("-a", "--automatic", "gather tests from ./test/, include ./lib/") {
49
+ $LOAD_PATH.unshift "lib" if File.directory? "lib"
50
+ automatic = true
51
+ }
52
+
53
+ opts.separator ""
54
+ opts.separator "test/unit options:"
55
+
56
+ opts.on('-n', '--name NAME', String,
57
+ "runs tests matching regexp NAME") { |n|
58
+ testrbargv << "-n" << "/#{n}/"
59
+ }
60
+
61
+ opts.on('-t', '--testcase TESTCASE', String,
62
+ "runs tests in TestCases matching regexp TESTCASE") { |t|
63
+ testrbargv << "-t" << "/#{t}/"
64
+ }
65
+
66
+ opts.separator ""
67
+ opts.separator "Common options:"
68
+
69
+ opts.on_tail("-h", "--help", "Show this message") do
70
+ puts opts
71
+ exit
72
+ end
73
+
74
+ opts.on_tail("--version", "Show version") do
75
+ require 'test/spec'
76
+ puts "specrb #{Test::Spec::VERSION}"
77
+ exit
78
+ end
79
+
80
+ opts.parse! ARGV
81
+ }
82
+
83
+ files = ARGV
84
+
85
+ if automatic
86
+ files.concat Dir["test/test_*.rb"]
87
+ files.concat Dir["test/spec_*.rb"]
88
+ files.concat Dir["spec/spec_*.rb"]
89
+ end
90
+
91
+ if files.empty?
92
+ puts opts.banner
93
+ exit 1
94
+ end
95
+
96
+ argv = testrbargv + files
97
+ # Should use -- to separate them *but* there's a bug in
98
+ # Test::Unit::AutoRunner#process_args: arguments after -- are ignored.
99
+ # (You could also argue that it's a bug in optparse.rb).
100
+
101
+ require 'test/spec'
102
+
103
+ Test::Unit.run = false
104
+ runner = Test::Unit::AutoRunner.new true
105
+ runner.process_args(argv) ||
106
+ abort("internal error calling Test::Unit, please report a bug")
107
+ exit runner.run
@@ -0,0 +1,38 @@
1
+ # Copied without code changes from RSpec.
2
+
3
+ class StackUnderflowError < RuntimeError
4
+ end
5
+
6
+ class StackOverflowError < RuntimeError
7
+ end
8
+
9
+ class Stack
10
+
11
+ def initialize
12
+ @items = []
13
+ end
14
+
15
+ def push object
16
+ raise StackOverflowError if @items.length == 10
17
+ @items.push object
18
+ end
19
+
20
+ def pop
21
+ raise StackUnderflowError if @items.empty?
22
+ @items.delete @items.last
23
+ end
24
+
25
+ def peek
26
+ raise StackUnderflowError if @items.empty?
27
+ @items.last
28
+ end
29
+
30
+ def empty?
31
+ @items.empty?
32
+ end
33
+
34
+ def full?
35
+ @items.length == 10
36
+ end
37
+
38
+ end