cairo 1.8.5 → 1.10.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of cairo might be problematic. Click here for more details.
- data/NEWS +2 -2
- data/Rakefile +44 -7
- data/ext/cairo/cairo.def +28 -1
- data/ext/cairo/extconf.rb +14 -16
- data/ext/cairo/rb_cairo.c +4 -1
- data/ext/cairo/rb_cairo.h +65 -1
- data/ext/cairo/rb_cairo_constants.c +150 -3
- data/ext/cairo/rb_cairo_context.c +17 -0
- data/ext/cairo/rb_cairo_device.c +406 -0
- data/ext/cairo/rb_cairo_exception.c +83 -32
- data/ext/cairo/rb_cairo_io.c +166 -0
- data/ext/cairo/rb_cairo_io.h +44 -0
- data/ext/cairo/rb_cairo_matrix.c +1 -1
- data/ext/cairo/rb_cairo_private.h +3 -0
- data/ext/cairo/rb_cairo_region.c +385 -0
- data/ext/cairo/rb_cairo_surface.c +674 -199
- data/samples/blur.rb +2 -3
- data/samples/{pac2.rb → pac-nomralize.rb} +5 -6
- data/samples/pac-tee.rb +170 -0
- data/samples/pac.rb +2 -3
- data/samples/png.rb +2 -3
- data/samples/scalable.rb +2 -3
- data/samples/text-on-path.rb +2 -3
- data/samples/text2.rb +2 -3
- data/test/cairo-test-utils.rb +15 -0
- data/test/run-test.rb +5 -4
- data/test/test_context.rb +4 -4
- data/test/test_font_face.rb +34 -21
- data/test/test_recording_surface.rb +18 -0
- data/test/test_region.rb +102 -0
- data/test/test_script_device.rb +46 -0
- data/test/test_script_surface.rb +13 -0
- data/test/test_surface.rb +14 -4
- data/test/test_tee_surface.rb +32 -0
- data/test/test_xml_device.rb +22 -0
- data/test/test_xml_surface.rb +32 -0
- metadata +49 -77
- data/pkg-config.rb +0 -313
- data/test-unit/Rakefile +0 -30
- data/test-unit/bin/testrb +0 -5
- data/test-unit/lib/test/unit.rb +0 -280
- data/test-unit/lib/test/unit/assertionfailederror.rb +0 -14
- data/test-unit/lib/test/unit/assertions.rb +0 -722
- data/test-unit/lib/test/unit/attribute.rb +0 -125
- data/test-unit/lib/test/unit/autorunner.rb +0 -254
- data/test-unit/lib/test/unit/collector.rb +0 -43
- data/test-unit/lib/test/unit/collector/descendant.rb +0 -23
- data/test-unit/lib/test/unit/collector/dir.rb +0 -108
- data/test-unit/lib/test/unit/collector/load.rb +0 -135
- data/test-unit/lib/test/unit/collector/objectspace.rb +0 -34
- data/test-unit/lib/test/unit/color.rb +0 -61
- data/test-unit/lib/test/unit/diff.rb +0 -524
- data/test-unit/lib/test/unit/error.rb +0 -124
- data/test-unit/lib/test/unit/exceptionhandler.rb +0 -39
- data/test-unit/lib/test/unit/failure.rb +0 -110
- data/test-unit/lib/test/unit/fixture.rb +0 -185
- data/test-unit/lib/test/unit/notification.rb +0 -125
- data/test-unit/lib/test/unit/omission.rb +0 -143
- data/test-unit/lib/test/unit/pending.rb +0 -146
- data/test-unit/lib/test/unit/priority.rb +0 -146
- data/test-unit/lib/test/unit/runner/console.rb +0 -46
- data/test-unit/lib/test/unit/runner/emacs.rb +0 -8
- data/test-unit/lib/test/unit/testcase.rb +0 -281
- data/test-unit/lib/test/unit/testresult.rb +0 -89
- data/test-unit/lib/test/unit/testsuite.rb +0 -110
- data/test-unit/lib/test/unit/ui/console/outputlevel.rb +0 -14
- data/test-unit/lib/test/unit/ui/console/testrunner.rb +0 -195
- data/test-unit/lib/test/unit/ui/emacs/testrunner.rb +0 -49
- data/test-unit/lib/test/unit/ui/testrunner.rb +0 -20
- data/test-unit/lib/test/unit/ui/testrunnermediator.rb +0 -77
- data/test-unit/lib/test/unit/ui/testrunnerutilities.rb +0 -41
- data/test-unit/lib/test/unit/util/backtracefilter.rb +0 -41
- data/test-unit/lib/test/unit/util/observable.rb +0 -90
- data/test-unit/lib/test/unit/util/procwrapper.rb +0 -48
- data/test-unit/lib/test/unit/version.rb +0 -7
- data/test-unit/sample/adder.rb +0 -13
- data/test-unit/sample/subtracter.rb +0 -12
- data/test-unit/sample/tc_adder.rb +0 -18
- data/test-unit/sample/tc_subtracter.rb +0 -18
- data/test-unit/sample/ts_examples.rb +0 -7
- data/test-unit/test/collector/test_descendant.rb +0 -135
- data/test-unit/test/collector/test_dir.rb +0 -406
- data/test-unit/test/collector/test_load.rb +0 -333
- data/test-unit/test/collector/test_objectspace.rb +0 -98
- data/test-unit/test/run-test.rb +0 -13
- data/test-unit/test/test_assertions.rb +0 -693
- data/test-unit/test/test_attribute.rb +0 -86
- data/test-unit/test/test_color.rb +0 -37
- data/test-unit/test/test_diff.rb +0 -477
- data/test-unit/test/test_emacs_runner.rb +0 -60
- data/test-unit/test/test_error.rb +0 -26
- data/test-unit/test/test_failure.rb +0 -33
- data/test-unit/test/test_fixture.rb +0 -252
- data/test-unit/test/test_notification.rb +0 -33
- data/test-unit/test/test_omission.rb +0 -81
- data/test-unit/test/test_pending.rb +0 -70
- data/test-unit/test/test_priority.rb +0 -89
- data/test-unit/test/test_testcase.rb +0 -430
- data/test-unit/test/test_testresult.rb +0 -113
- data/test-unit/test/test_testsuite.rb +0 -129
- data/test-unit/test/testunit_test_util.rb +0 -14
- data/test-unit/test/ui/test_testrunmediator.rb +0 -20
- data/test-unit/test/util/test_backtracefilter.rb +0 -41
- data/test-unit/test/util/test_observable.rb +0 -102
- data/test-unit/test/util/test_procwrapper.rb +0 -36
- data/test/test_pkg_config.rb +0 -123
@@ -1,48 +0,0 @@
|
|
1
|
-
#--
|
2
|
-
#
|
3
|
-
# Author:: Nathaniel Talbott.
|
4
|
-
# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
|
5
|
-
# License:: Ruby license.
|
6
|
-
|
7
|
-
module Test
|
8
|
-
module Unit
|
9
|
-
module Util
|
10
|
-
|
11
|
-
# Allows the storage of a Proc passed through '&' in a
|
12
|
-
# hash.
|
13
|
-
#
|
14
|
-
# Note: this may be inefficient, since the hash being
|
15
|
-
# used is not necessarily very good. In Observable,
|
16
|
-
# efficiency is not too important, since the hash is
|
17
|
-
# only accessed when adding and removing listeners,
|
18
|
-
# not when notifying.
|
19
|
-
|
20
|
-
class ProcWrapper
|
21
|
-
|
22
|
-
# Creates a new wrapper for a_proc.
|
23
|
-
def initialize(a_proc)
|
24
|
-
@a_proc = a_proc
|
25
|
-
@hash = a_proc.inspect.sub(/^(#<#{a_proc.class}:)/){''}.sub(/(>)$/){''}.hex
|
26
|
-
end
|
27
|
-
|
28
|
-
def hash
|
29
|
-
return @hash
|
30
|
-
end
|
31
|
-
|
32
|
-
def ==(other)
|
33
|
-
case(other)
|
34
|
-
when ProcWrapper
|
35
|
-
return @a_proc == other.to_proc
|
36
|
-
else
|
37
|
-
return super
|
38
|
-
end
|
39
|
-
end
|
40
|
-
alias :eql? :==
|
41
|
-
|
42
|
-
def to_proc
|
43
|
-
return @a_proc
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
data/test-unit/sample/adder.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
# Author:: Nathaniel Talbott.
|
2
|
-
# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
|
3
|
-
# License:: Ruby license.
|
4
|
-
|
5
|
-
class Adder
|
6
|
-
def initialize(number)
|
7
|
-
@number = number
|
8
|
-
end
|
9
|
-
def add(number)
|
10
|
-
return @number + number
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
@@ -1,12 +0,0 @@
|
|
1
|
-
# Author:: Nathaniel Talbott.
|
2
|
-
# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
|
3
|
-
# License:: Ruby license.
|
4
|
-
|
5
|
-
class Subtracter
|
6
|
-
def initialize(number)
|
7
|
-
@number = number
|
8
|
-
end
|
9
|
-
def subtract(number)
|
10
|
-
return @number - number
|
11
|
-
end
|
12
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# Author:: Nathaniel Talbott.
|
2
|
-
# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
|
3
|
-
# License:: Ruby license.
|
4
|
-
|
5
|
-
require 'test/unit'
|
6
|
-
require 'adder'
|
7
|
-
|
8
|
-
class TC_Adder < Test::Unit::TestCase
|
9
|
-
def setup
|
10
|
-
@adder = Adder.new(5)
|
11
|
-
end
|
12
|
-
def test_add
|
13
|
-
assert_equal(7, @adder.add(2), "Should have added correctly")
|
14
|
-
end
|
15
|
-
def teardown
|
16
|
-
@adder = nil
|
17
|
-
end
|
18
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# Author:: Nathaniel Talbott.
|
2
|
-
# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
|
3
|
-
# License:: Ruby license.
|
4
|
-
|
5
|
-
require 'test/unit'
|
6
|
-
require 'subtracter'
|
7
|
-
|
8
|
-
class TC_Subtracter < Test::Unit::TestCase
|
9
|
-
def setup
|
10
|
-
@subtracter = Subtracter.new(5)
|
11
|
-
end
|
12
|
-
def test_subtract
|
13
|
-
assert_equal(3, @subtracter.subtract(2), "Should have subtracted correctly")
|
14
|
-
end
|
15
|
-
def teardown
|
16
|
-
@subtracter = nil
|
17
|
-
end
|
18
|
-
end
|
@@ -1,135 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
require 'test/unit/collector/descendant'
|
3
|
-
|
4
|
-
class TestUnitCollectorDescendant < Test::Unit::TestCase
|
5
|
-
def setup
|
6
|
-
@previous_descendants = Test::Unit::TestCase::DESCENDANTS.dup
|
7
|
-
Test::Unit::TestCase::DESCENDANTS.clear
|
8
|
-
|
9
|
-
@test_case1 = Class.new(Test::Unit::TestCase) do
|
10
|
-
def self.name
|
11
|
-
"test-case1"
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_1
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_2
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
@test_case2 = Class.new(Test::Unit::TestCase) do
|
22
|
-
def self.name
|
23
|
-
"test-case2"
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_0
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
@no_test_case = Class.new do
|
31
|
-
def self.name
|
32
|
-
"no-test-case"
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_4
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def teardown
|
41
|
-
Test::Unit::TestCase::DESCENDANTS.replace(@previous_descendants)
|
42
|
-
end
|
43
|
-
|
44
|
-
def test_basic_collection
|
45
|
-
assert_collect(full_suite("name"), "name")
|
46
|
-
|
47
|
-
assert_collect(full_suite("name"), "name") do |collector|
|
48
|
-
collector.filter = []
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
def test_filtered_collection
|
53
|
-
assert_collect(empty_suite) do |collector|
|
54
|
-
collector.filter = Proc.new {false}
|
55
|
-
end
|
56
|
-
|
57
|
-
assert_collect(full_suite) do |collector|
|
58
|
-
collector.filter = Proc.new {true}
|
59
|
-
end
|
60
|
-
|
61
|
-
assert_collect(full_suite) do |collector|
|
62
|
-
collector.filter = Proc.new {nil}
|
63
|
-
end
|
64
|
-
|
65
|
-
assert_collect(empty_suite) do |collector|
|
66
|
-
collector.filter = [Proc.new {false}, Proc.new {true}]
|
67
|
-
end
|
68
|
-
|
69
|
-
assert_collect(full_suite) do |collector|
|
70
|
-
collector.filter = [Proc.new {true}, Proc.new {false}]
|
71
|
-
end
|
72
|
-
|
73
|
-
assert_collect(empty_suite) do |collector|
|
74
|
-
collector.filter = [Proc.new {nil}, Proc.new {false}]
|
75
|
-
end
|
76
|
-
|
77
|
-
assert_collect(full_suite) do |collector|
|
78
|
-
collector.filter = [Proc.new {nil}, Proc.new {true}]
|
79
|
-
end
|
80
|
-
|
81
|
-
expected = empty_suite
|
82
|
-
suite1 = Test::Unit::TestSuite.new(@test_case1.name)
|
83
|
-
suite1 << @test_case1.new("test_1")
|
84
|
-
suite2 = Test::Unit::TestSuite.new(@test_case2.name)
|
85
|
-
suite2 << @test_case2.new("test_0")
|
86
|
-
expected << suite1 << suite2
|
87
|
-
assert_collect(expected) do |collector|
|
88
|
-
collector.filter = Proc.new do |test|
|
89
|
-
['test_1', 'test_0'].include?(test.method_name)
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
expected = empty_suite
|
94
|
-
suite1 = Test::Unit::TestSuite.new(@test_case1.name)
|
95
|
-
suite1 << @test_case1.new("test_1")
|
96
|
-
suite2 = Test::Unit::TestSuite.new(@test_case2.name)
|
97
|
-
suite2 << @test_case2.new("test_0")
|
98
|
-
expected << suite1 << suite2
|
99
|
-
assert_collect(expected) do |collector|
|
100
|
-
filters = [Proc.new {|test| test.method_name == 'test_1' ? true : nil},
|
101
|
-
Proc.new {|test| test.method_name == 'test_0' ? true : nil},
|
102
|
-
Proc.new {false}]
|
103
|
-
collector.filter = filters
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
private
|
108
|
-
def assert_collect(expected, *collect_args)
|
109
|
-
collector = Test::Unit::Collector::Descendant.new
|
110
|
-
yield(collector) if block_given?
|
111
|
-
assert_equal(expected, collector.send(:collect, *collect_args))
|
112
|
-
end
|
113
|
-
|
114
|
-
def default_name
|
115
|
-
Test::Unit::Collector::Descendant::NAME
|
116
|
-
end
|
117
|
-
|
118
|
-
def empty_suite(name=nil)
|
119
|
-
Test::Unit::TestSuite.new(name || default_name)
|
120
|
-
end
|
121
|
-
|
122
|
-
def full_suite(name=nil)
|
123
|
-
sub_suite1 = Test::Unit::TestSuite.new(@test_case1.name)
|
124
|
-
sub_suite1 << @test_case1.new('test_1')
|
125
|
-
sub_suite1 << @test_case1.new('test_2')
|
126
|
-
|
127
|
-
sub_suite2 = Test::Unit::TestSuite.new(@test_case2.name)
|
128
|
-
sub_suite2 << @test_case2.new('test_0')
|
129
|
-
|
130
|
-
suite = empty_suite(name)
|
131
|
-
suite << sub_suite1
|
132
|
-
suite << sub_suite2
|
133
|
-
suite
|
134
|
-
end
|
135
|
-
end
|
@@ -1,406 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
require 'test/unit/collector/dir'
|
3
|
-
require 'pp'
|
4
|
-
|
5
|
-
module Test
|
6
|
-
module Unit
|
7
|
-
module Collector
|
8
|
-
class TestDir < TestCase
|
9
|
-
class FileSystem
|
10
|
-
class Directory
|
11
|
-
def initialize(name, fs, parent=self, &block)
|
12
|
-
@name = name
|
13
|
-
@fs = fs
|
14
|
-
@parent = parent
|
15
|
-
@contents = {'.' => self, '..' => parent}
|
16
|
-
instance_eval(&block) if(block)
|
17
|
-
end
|
18
|
-
|
19
|
-
def file(name, contents)
|
20
|
-
@contents[name] = contents
|
21
|
-
end
|
22
|
-
|
23
|
-
def dir(name, &block)
|
24
|
-
@contents[name] = self.class.new(name, @fs, self, &block)
|
25
|
-
end
|
26
|
-
|
27
|
-
def entries
|
28
|
-
@contents.keys
|
29
|
-
end
|
30
|
-
|
31
|
-
def directory?(name)
|
32
|
-
return true if(name.nil? || name.empty?)
|
33
|
-
return false unless(@contents.include?(name))
|
34
|
-
@contents[name].kind_of?(self.class)
|
35
|
-
end
|
36
|
-
|
37
|
-
def file?(name)
|
38
|
-
return false unless(@contents.include?(name))
|
39
|
-
!directory?(name)
|
40
|
-
end
|
41
|
-
|
42
|
-
def exist?(name)
|
43
|
-
@contents.include?(name)
|
44
|
-
end
|
45
|
-
|
46
|
-
def [](name)
|
47
|
-
raise Errno::ENOENT, name unless(@contents.include?(name))
|
48
|
-
@contents[name]
|
49
|
-
end
|
50
|
-
|
51
|
-
def path_to(name=nil)
|
52
|
-
if(!name)
|
53
|
-
@parent.path_to(@name)
|
54
|
-
elsif(@parent == self)
|
55
|
-
@fs.join('/', name)
|
56
|
-
else
|
57
|
-
@fs.join(@parent.path_to(@name), name)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
class ObjectSpace
|
63
|
-
def initialize
|
64
|
-
@objects = []
|
65
|
-
end
|
66
|
-
|
67
|
-
def each_object(klass, &block)
|
68
|
-
@objects.find_all{|o| o.kind_of?(klass)}.each(&block)
|
69
|
-
end
|
70
|
-
|
71
|
-
def <<(object)
|
72
|
-
@objects << object
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
attr_reader :object_space
|
77
|
-
|
78
|
-
def initialize(&block)
|
79
|
-
@root = Directory.new('/', self, &block)
|
80
|
-
@pwd = @root
|
81
|
-
@object_space = ObjectSpace.new
|
82
|
-
@required = []
|
83
|
-
end
|
84
|
-
|
85
|
-
def entries(dir)
|
86
|
-
e = find(dir)
|
87
|
-
require_directory(dir)
|
88
|
-
e.entries
|
89
|
-
end
|
90
|
-
|
91
|
-
def directory?(name)
|
92
|
-
return true if (base = basename(name)) == '/'
|
93
|
-
e = find(dirname(name))
|
94
|
-
return false unless(e)
|
95
|
-
e.directory?(base)
|
96
|
-
end
|
97
|
-
|
98
|
-
def find(path)
|
99
|
-
if(/\A\// =~ path)
|
100
|
-
thing = @root
|
101
|
-
else
|
102
|
-
thing = @pwd
|
103
|
-
end
|
104
|
-
path.scan(/[^\/]+/) do |e|
|
105
|
-
break thing = false unless(thing.kind_of?(Directory))
|
106
|
-
thing = thing[e]
|
107
|
-
end
|
108
|
-
thing
|
109
|
-
end
|
110
|
-
|
111
|
-
def dirname(name)
|
112
|
-
if (name = name.tr_s('/', '/')) == '/'
|
113
|
-
name
|
114
|
-
else
|
115
|
-
name[%r"\A.+(?=/[^/]+/?\z)|\A/"] || "."
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
def basename(name)
|
120
|
-
name[%r"(\A/|[^/]+)/*\z", 1]
|
121
|
-
end
|
122
|
-
|
123
|
-
def split(name)
|
124
|
-
[dirname(name), basename(name)]
|
125
|
-
end
|
126
|
-
|
127
|
-
def join(*parts)
|
128
|
-
parts.join('/').gsub(%r{/+}, '/')
|
129
|
-
end
|
130
|
-
|
131
|
-
def file?(name)
|
132
|
-
e = find(dirname(name))
|
133
|
-
return false unless(e)
|
134
|
-
e.file?(basename(name))
|
135
|
-
end
|
136
|
-
|
137
|
-
def pwd
|
138
|
-
@pwd.path_to
|
139
|
-
end
|
140
|
-
|
141
|
-
def chdir(to)
|
142
|
-
e = find(to)
|
143
|
-
require_directory(to)
|
144
|
-
@pwd = e
|
145
|
-
end
|
146
|
-
|
147
|
-
def expand_path(path, base = nil)
|
148
|
-
until /\A\// =~ path
|
149
|
-
base ||= pwd
|
150
|
-
path = join(base, path)
|
151
|
-
base = nil
|
152
|
-
end
|
153
|
-
path.gsub!(%r"(?:/\.)+(?=/)", '')
|
154
|
-
nil while path.sub!(%r"/(?!\.\./)[^/]+/\.\.(?=/)", '')
|
155
|
-
path.sub!(%r"\A(?:/\.\.)+(?=/)", '')
|
156
|
-
path.sub!(%r"(?:\A(/)|/)\.\.?\z", '\1')
|
157
|
-
path
|
158
|
-
end
|
159
|
-
|
160
|
-
def require_directory(path)
|
161
|
-
raise Errno::ENOTDIR, path unless(directory?(path))
|
162
|
-
end
|
163
|
-
|
164
|
-
def require(file)
|
165
|
-
return false if(@required.include?(file))
|
166
|
-
begin
|
167
|
-
e = find(file)
|
168
|
-
rescue Errno::ENOENT => e
|
169
|
-
if(/\.rb\Z/ =~ file)
|
170
|
-
raise LoadError, file
|
171
|
-
end
|
172
|
-
e = find(file + '.rb')
|
173
|
-
end
|
174
|
-
@required << file
|
175
|
-
@object_space << e
|
176
|
-
true
|
177
|
-
rescue Errno::ENOENT
|
178
|
-
raise LoadError, file
|
179
|
-
end
|
180
|
-
end
|
181
|
-
|
182
|
-
def test_dir
|
183
|
-
inner_dir = nil
|
184
|
-
dirs = FileSystem::Directory.new('/', nil) do
|
185
|
-
file 'a', nil
|
186
|
-
inner_dir = dir 'b'
|
187
|
-
end
|
188
|
-
assert_equal(inner_dir, dirs['b'])
|
189
|
-
end
|
190
|
-
|
191
|
-
def test_fs
|
192
|
-
fs = FileSystem.new do
|
193
|
-
file 'a', nil
|
194
|
-
dir 'b'
|
195
|
-
end
|
196
|
-
assert_equal(['.', '..', 'a', 'b'].sort, fs.entries('/').sort)
|
197
|
-
assert(fs.directory?('/'))
|
198
|
-
assert(!fs.directory?('/a'))
|
199
|
-
assert(!fs.directory?('/bogus'))
|
200
|
-
assert(fs.file?('/a'))
|
201
|
-
assert(!fs.file?('/'))
|
202
|
-
assert(!fs.file?('/bogus'))
|
203
|
-
assert(fs.directory?('/b'))
|
204
|
-
assert(fs.file?('a'))
|
205
|
-
assert(fs.directory?('b'))
|
206
|
-
end
|
207
|
-
|
208
|
-
def test_fs_sub
|
209
|
-
fs = FileSystem.new do
|
210
|
-
dir 'a' do
|
211
|
-
file 'b', nil
|
212
|
-
dir 'c' do
|
213
|
-
file 'd', nil
|
214
|
-
end
|
215
|
-
end
|
216
|
-
end
|
217
|
-
assert(fs.file?('/a/b'))
|
218
|
-
assert(!fs.file?('/a/b/c/d'))
|
219
|
-
assert(fs.file?('/a/c/d'))
|
220
|
-
end
|
221
|
-
|
222
|
-
def test_fs_pwd
|
223
|
-
fs = FileSystem.new do
|
224
|
-
file 'a', nil
|
225
|
-
dir 'b' do
|
226
|
-
file 'c', nil
|
227
|
-
dir 'd' do
|
228
|
-
file 'e', nil
|
229
|
-
end
|
230
|
-
end
|
231
|
-
end
|
232
|
-
assert_equal('/', fs.pwd)
|
233
|
-
assert_raises(Errno::ENOENT) do
|
234
|
-
fs.chdir('bogus')
|
235
|
-
end
|
236
|
-
assert_raises(Errno::ENOTDIR) do
|
237
|
-
fs.chdir('a')
|
238
|
-
end
|
239
|
-
fs.chdir('b')
|
240
|
-
assert_equal('/b', fs.pwd)
|
241
|
-
fs.chdir('d')
|
242
|
-
assert_equal('/b/d', fs.pwd)
|
243
|
-
fs.chdir('..')
|
244
|
-
assert_equal('/b', fs.pwd)
|
245
|
-
fs.chdir('..')
|
246
|
-
assert_equal('/', fs.pwd)
|
247
|
-
end
|
248
|
-
|
249
|
-
def test_fs_entries
|
250
|
-
fs = FileSystem.new do
|
251
|
-
file 'a', nil
|
252
|
-
dir 'b' do
|
253
|
-
file 'c', nil
|
254
|
-
file 'd', nil
|
255
|
-
end
|
256
|
-
file 'e', nil
|
257
|
-
dir 'f' do
|
258
|
-
file 'g', nil
|
259
|
-
dir 'h' do
|
260
|
-
file 'i', nil
|
261
|
-
end
|
262
|
-
end
|
263
|
-
end
|
264
|
-
assert_equal(['.', '..', 'a', 'b', 'e', 'f'], fs.entries('/').sort)
|
265
|
-
assert_equal(['.', '..', 'a', 'b', 'e', 'f'], fs.entries('.').sort)
|
266
|
-
assert_equal(['.', '..', 'a', 'b', 'e', 'f'], fs.entries('b/..').sort)
|
267
|
-
assert_equal(['.', '..', 'c', 'd'], fs.entries('b').sort)
|
268
|
-
assert_raises(Errno::ENOENT) do
|
269
|
-
fs.entries('z')
|
270
|
-
end
|
271
|
-
assert_raises(Errno::ENOTDIR) do
|
272
|
-
fs.entries('a')
|
273
|
-
end
|
274
|
-
fs.chdir('f')
|
275
|
-
assert_equal(['.', '..', 'i'], fs.entries('h').sort)
|
276
|
-
end
|
277
|
-
|
278
|
-
class TestClass1
|
279
|
-
end
|
280
|
-
class TestClass2
|
281
|
-
end
|
282
|
-
def test_fs_require
|
283
|
-
fs = FileSystem.new do
|
284
|
-
file 'test_class1.rb', TestClass1
|
285
|
-
dir 'dir' do
|
286
|
-
file 'test_class2.rb', TestClass2
|
287
|
-
end
|
288
|
-
end
|
289
|
-
c = []
|
290
|
-
fs.object_space.each_object(Class) do |o|
|
291
|
-
c << o
|
292
|
-
end
|
293
|
-
assert_equal([], c)
|
294
|
-
|
295
|
-
assert_raises(LoadError) do
|
296
|
-
fs.require('bogus')
|
297
|
-
end
|
298
|
-
|
299
|
-
assert(fs.require('test_class1.rb'))
|
300
|
-
assert(!fs.require('test_class1.rb'))
|
301
|
-
c = []
|
302
|
-
fs.object_space.each_object(Class) do |o|
|
303
|
-
c << o
|
304
|
-
end
|
305
|
-
assert_equal([TestClass1], c)
|
306
|
-
|
307
|
-
fs.require('dir/test_class2')
|
308
|
-
c = []
|
309
|
-
fs.object_space.each_object(Class) do |o|
|
310
|
-
c << o
|
311
|
-
end
|
312
|
-
assert_equal([TestClass1, TestClass2], c)
|
313
|
-
|
314
|
-
c = []
|
315
|
-
fs.object_space.each_object(Time) do |o|
|
316
|
-
c << o
|
317
|
-
end
|
318
|
-
assert_equal([], c)
|
319
|
-
end
|
320
|
-
|
321
|
-
def setup
|
322
|
-
@t1 = t1 = create_test(1)
|
323
|
-
@t2 = t2 = create_test(2)
|
324
|
-
@t3 = t3 = create_test(3)
|
325
|
-
@t4 = t4 = create_test(4)
|
326
|
-
@t5 = t5 = create_test(5)
|
327
|
-
@t6 = t6 = create_test(6)
|
328
|
-
fs = FileSystem.new do
|
329
|
-
file 'test_1.rb', t1
|
330
|
-
file 'test_2.rb', t2
|
331
|
-
dir 'd1' do
|
332
|
-
file 'test_3.rb', t3
|
333
|
-
end
|
334
|
-
file 't4.rb', t4
|
335
|
-
dir 'd2' do
|
336
|
-
file 'test_5', t5
|
337
|
-
file 'test_6.rb', Time
|
338
|
-
end
|
339
|
-
file 't6.rb', t6
|
340
|
-
end
|
341
|
-
fs.require('t6')
|
342
|
-
@c = Dir.new(fs, fs, fs.object_space, fs)
|
343
|
-
end
|
344
|
-
|
345
|
-
def create_test(name)
|
346
|
-
t = Class.new(TestCase)
|
347
|
-
t.class_eval <<-EOC
|
348
|
-
def self.name
|
349
|
-
"T\#{#{name}}"
|
350
|
-
end
|
351
|
-
def test_#{name}a
|
352
|
-
end
|
353
|
-
def test_#{name}b
|
354
|
-
end
|
355
|
-
EOC
|
356
|
-
t
|
357
|
-
end
|
358
|
-
|
359
|
-
def test_simple_collect
|
360
|
-
expected = TestSuite.new('d1')
|
361
|
-
expected << (@t3.suite)
|
362
|
-
assert_equal(expected, @c.collect('d1'))
|
363
|
-
end
|
364
|
-
|
365
|
-
def test_multilevel_collect
|
366
|
-
expected = TestSuite.new('.')
|
367
|
-
expected << @t1.suite << @t2.suite
|
368
|
-
expected << (TestSuite.new('d1') << @t3.suite)
|
369
|
-
assert_equal(expected, @c.collect)
|
370
|
-
end
|
371
|
-
|
372
|
-
def test_collect_file
|
373
|
-
expected = TestSuite.new('test_1.rb')
|
374
|
-
expected << @t1.suite
|
375
|
-
assert_equal(expected, @c.collect('test_1.rb'))
|
376
|
-
|
377
|
-
expected = TestSuite.new('t4.rb')
|
378
|
-
expected << @t4.suite
|
379
|
-
assert_equal(expected, @c.collect('t4.rb'))
|
380
|
-
end
|
381
|
-
|
382
|
-
def test_nil_pattern
|
383
|
-
expected = TestSuite.new('d2')
|
384
|
-
expected << @t5.suite
|
385
|
-
@c.pattern.clear
|
386
|
-
assert_equal(expected, @c.collect('d2'))
|
387
|
-
end
|
388
|
-
|
389
|
-
def test_filtering
|
390
|
-
expected = TestSuite.new('.')
|
391
|
-
expected << @t1.suite
|
392
|
-
@c.filter = proc{|t| t.method_name == 'test_1a' || t.method_name == 'test_1b'}
|
393
|
-
assert_equal(expected, @c.collect)
|
394
|
-
end
|
395
|
-
|
396
|
-
def test_collect_multi
|
397
|
-
expected = TestSuite.new('[d1, d2]')
|
398
|
-
expected << (TestSuite.new('d1') << @t3.suite)
|
399
|
-
expected << (TestSuite.new('d2') << @t5.suite)
|
400
|
-
@c.pattern.replace([/\btest_/])
|
401
|
-
assert_equal(expected, @c.collect('d1', 'd2'))
|
402
|
-
end
|
403
|
-
end
|
404
|
-
end
|
405
|
-
end
|
406
|
-
end
|