~ubuntu-branches/ubuntu/precise/puppet/precise-proposed

« back to all changes in this revision

Viewing changes to .pc/debian-changes-2.6.4-2/test/lib/puppettest/fakes.rb

  • Committer: Bazaar Package Importer
  • Author(s): Chuck Short
  • Date: 2011-02-08 00:28:43 UTC
  • mfrom: (1.1.22 upstream) (3.1.19 sid)
  • Revision ID: james.westby@ubuntu.com-20110208002843-1xrv7w3vqblrn15m
Tags: 2.6.4-2ubuntu1
* Merge from debian unstable.  Remaining changes:
  - debian/puppetmaster-passenger.postinst: Use cacrl instead of hostcrl to
    set the location of the CRL in apache2 configuration. Fix apache2 
    configuration on upgrade as well (LP: #641001)
  - move all puppet dependencies to puppet-common since all the code 
    actually located in puppet-common.
  - move libagueas from a recommend to a dependency.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
require File.expand_path(File.join(File.dirname(__FILE__), '../../../lib/puppet/util'))
 
2
 
 
3
module PuppetTest
 
4
  # A baseclass for the faketypes.
 
5
  class FakeModel
 
6
    include Puppet::Util
 
7
    class << self
 
8
      attr_accessor :name, :realresource
 
9
      @name = :fakeresource
 
10
    end
 
11
 
 
12
    def self.key_attributes
 
13
      @realresource.key_attributes
 
14
    end
 
15
 
 
16
    def self.validproperties
 
17
      Puppet::Type.type(@name).validproperties
 
18
    end
 
19
 
 
20
    def self.validproperty?(name)
 
21
      Puppet::Type.type(@name).validproperty?(name)
 
22
    end
 
23
 
 
24
    def self.to_s
 
25
      "Fake#{@name.to_s.capitalize}"
 
26
    end
 
27
 
 
28
    def [](param)
 
29
      if @realresource.attrtype(param) == :property
 
30
        @is[param]
 
31
      else
 
32
        @params[param]
 
33
      end
 
34
    end
 
35
 
 
36
    def []=(param, value)
 
37
      param = symbolize(param)
 
38
      raise Puppet::DevError, "Invalid attribute #{param} for #{@realresource.name}" unless @realresource.valid_parameter?(param)
 
39
      if @realresource.attrtype(param) == :property
 
40
        @should[param] = value
 
41
      else
 
42
        @params[param] = value
 
43
      end
 
44
    end
 
45
 
 
46
    def initialize(name)
 
47
      @realresource = Puppet::Type.type(self.class.name)
 
48
      raise "Could not find type #{self.class.name}" unless @realresource
 
49
      @is = {}
 
50
      @should = {}
 
51
      @params = {}
 
52
      self[@realresource.key_attributes.first] = name
 
53
    end
 
54
 
 
55
    def inspect
 
56
      "#{self.class.to_s.sub(/.+::/, '')}(#{super()})"
 
57
    end
 
58
 
 
59
    def is(param)
 
60
      @is[param]
 
61
    end
 
62
 
 
63
    def should(param)
 
64
      @should[param]
 
65
    end
 
66
 
 
67
    def to_hash
 
68
      hash = @params.dup
 
69
      [@is, @should].each do |h|
 
70
        h.each do |p, v|
 
71
          hash[p] = v
 
72
        end
 
73
      end
 
74
      hash
 
75
    end
 
76
 
 
77
    def name
 
78
      self[:name]
 
79
    end
 
80
  end
 
81
 
 
82
  class FakeProvider
 
83
    attr_accessor :resource
 
84
    class << self
 
85
      attr_accessor :name, :resource_type, :methods
 
86
    end
 
87
 
 
88
    # A very low number, so these never show up as defaults via the standard
 
89
    # algorithms.
 
90
    def self.defaultnum
 
91
      -50
 
92
    end
 
93
 
 
94
    # Set up methods to fake things
 
95
    def self.apimethods(*ary)
 
96
      @resource_type.validproperties.each do |property|
 
97
        ary << property unless ary.include? property
 
98
      end
 
99
      attr_accessor(*ary)
 
100
 
 
101
      @methods = ary
 
102
    end
 
103
 
 
104
    def self.default?
 
105
      false
 
106
    end
 
107
 
 
108
    def self.initvars
 
109
      @calls = Hash.new do |hash, key|
 
110
        hash[key] = 0
 
111
      end
 
112
    end
 
113
 
 
114
    def self.source
 
115
      self.name
 
116
    end
 
117
 
 
118
    def self.supports_parameter?(param)
 
119
      true
 
120
    end
 
121
 
 
122
    def self.suitable?
 
123
      true
 
124
    end
 
125
 
 
126
    def clear
 
127
      @resource = nil
 
128
    end
 
129
 
 
130
    def initialize(resource)
 
131
      @resource = resource
 
132
    end
 
133
 
 
134
    def properties
 
135
      self.class.resource_type.validproperties.inject({}) do |props, name|
 
136
        props[name] = self.send(name) || :absent
 
137
        props
 
138
      end
 
139
    end
 
140
  end
 
141
 
 
142
  class FakeParsedProvider < FakeProvider
 
143
    def hash
 
144
      ret = {}
 
145
      instance_variables.each do |v|
 
146
        v = v.sub("@", '')
 
147
        if val = self.send(v)
 
148
          ret[v.intern] = val
 
149
        end
 
150
      end
 
151
 
 
152
      ret
 
153
    end
 
154
 
 
155
    def store(hash)
 
156
      hash.each do |n, v|
 
157
        method = n.to_s + "="
 
158
        send(method, v) if respond_to? method
 
159
      end
 
160
    end
 
161
  end
 
162
 
 
163
  @@fakeresources = {}
 
164
  @@fakeproviders = {}
 
165
 
 
166
  def fakeresource(type, name, options = {})
 
167
    type = type.intern if type.is_a? String
 
168
    unless @@fakeresources.include? type
 
169
      @@fakeresources[type] = Class.new(FakeModel)
 
170
      @@fakeresources[type].name = type
 
171
 
 
172
      resource = Puppet::Type.type(type)
 
173
      raise("Could not find type #{type}") unless resource
 
174
      @@fakeresources[type].realresource = resource
 
175
    end
 
176
 
 
177
    obj = @@fakeresources[type].new(name)
 
178
    options.each do |name, val|
 
179
      obj[name] = val
 
180
    end
 
181
    obj
 
182
  end
 
183
 
 
184
  module_function :fakeresource
 
185
 
 
186
  def fakeprovider(type, resource)
 
187
    type = type.intern if type.is_a? String
 
188
    unless @@fakeproviders.include? type
 
189
      @@fakeproviders[type] = Class.new(FakeModel) do
 
190
        @name = type
 
191
      end
 
192
    end
 
193
 
 
194
    @@fakeproviders[type].new(resource)
 
195
  end
 
196
 
 
197
  module_function :fakeprovider
 
198
end
 
199