[Checkins] SVN: hurry.resource/trunk/ Test passes without zope.interface
Vincent Fretin
vincent.fretin at gmail.com
Fri Jul 23 12:16:37 EDT 2010
Log message for revision 114962:
Test passes without zope.interface
Changed:
U hurry.resource/trunk/buildout.cfg
U hurry.resource/trunk/src/hurry/resource/README.txt
U hurry.resource/trunk/src/hurry/resource/core.py
U hurry.resource/trunk/src/hurry/resource/interfaces.py
-=-
Modified: hurry.resource/trunk/buildout.cfg
===================================================================
--- hurry.resource/trunk/buildout.cfg 2010-07-23 14:39:01 UTC (rev 114961)
+++ hurry.resource/trunk/buildout.cfg 2010-07-23 16:16:37 UTC (rev 114962)
@@ -1,6 +1,6 @@
[buildout]
develop = .
-parts = test releaser
+parts = test test-wo-zca releaser
versions = versions
unzip = true
@@ -11,6 +11,17 @@
eggs = hurry.resource [test]
defaults = ['--tests-pattern', '^f?tests$', '-v']
+# This is needed to test without zope.interface
+# We use py.test
+# We can't use zope.testing because it depends on zope.interface
+# Test should be run in a clean environment with:
+# bin/py.test --doctest-glob "*.txt" -v src/
+[test-wo-zca]
+recipe = zc.recipe.egg
+eggs =
+ py
+ hurry.resource [test]
+
[releaser]
recipe = zc.recipe.egg
eggs = zest.releaser
Modified: hurry.resource/trunk/src/hurry/resource/README.txt
===================================================================
--- hurry.resource/trunk/src/hurry/resource/README.txt 2010-07-23 14:39:01 UTC (rev 114961)
+++ hurry.resource/trunk/src/hurry/resource/README.txt 2010-07-23 16:16:37 UTC (rev 114962)
@@ -1,6 +1,7 @@
hurry.resource
**************
+
Introduction
============
@@ -70,7 +71,7 @@
Let's now see what resources are needed by this inclusion::
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'b.css' in library 'foo'>,
<ResourceInclusion 'a.js' in library 'foo'>,
<ResourceInclusion 'c.js' in library 'foo'>]
@@ -90,7 +91,7 @@
>>> needed = NeededInclusions()
>>> needed.need(group)
- >>> group.inclusions()
+ >>> group.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'a.js' in library 'foo'>,
<ResourceInclusion 'b.css' in library 'foo'>]
@@ -98,7 +99,7 @@
inclusions directly::
>>> more_stuff = ResourceInclusion(foo, 'more_stuff.js', depends=[group])
- >>> more_stuff.inclusions()
+ >>> more_stuff.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'a.js' in library 'foo'>,
<ResourceInclusion 'b.css' in library 'foo'>,
<ResourceInclusion 'more_stuff.js' in library 'foo'>]
@@ -176,7 +177,7 @@
The resource inclusion will now indeed be needed::
- >>> get_current_needed_inclusions().inclusions()
+ >>> get_current_needed_inclusions().inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'b.css' in library 'foo'>,
<ResourceInclusion 'a.js' in library 'foo'>,
<ResourceInclusion 'c.js' in library 'foo'>]
@@ -238,7 +239,7 @@
We need ``y1`` again::
>>> needed.need(y1)
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'b.css' in library 'foo'>,
<ResourceInclusion 'a.js' in library 'foo'>,
<ResourceInclusion 'c.js' in library 'foo'>]
@@ -248,7 +249,7 @@
in the needed resources::
>>> needed.need(y1)
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'b.css' in library 'foo'>,
<ResourceInclusion 'a.js' in library 'foo'>,
<ResourceInclusion 'c.js' in library 'foo'>]
@@ -257,12 +258,12 @@
already required ``x1`` and ``x2``::
>>> needed.need(x1)
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'b.css' in library 'foo'>,
<ResourceInclusion 'a.js' in library 'foo'>,
<ResourceInclusion 'c.js' in library 'foo'>]
>>> needed.need(x2)
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'b.css' in library 'foo'>,
<ResourceInclusion 'a.js' in library 'foo'>,
<ResourceInclusion 'c.js' in library 'foo'>]
@@ -274,7 +275,7 @@
>>> needed.need(x1)
>>> needed.need(x2)
>>> needed.need(y1)
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'b.css' in library 'foo'>,
<ResourceInclusion 'a.js' in library 'foo'>,
<ResourceInclusion 'c.js' in library 'foo'>]
@@ -287,12 +288,12 @@
>>> a3 = ResourceInclusion(foo, 'a3.js', depends=[a2])
>>> a4 = ResourceInclusion(foo, 'a4.js', depends=[a1])
>>> needed.need(a3)
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'a1.js' in library 'foo'>,
<ResourceInclusion 'a2.js' in library 'foo'>,
<ResourceInclusion 'a3.js' in library 'foo'>]
>>> needed.need(a4)
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'a1.js' in library 'foo'>,
<ResourceInclusion 'a2.js' in library 'foo'>,
<ResourceInclusion 'a3.js' in library 'foo'>,
@@ -304,7 +305,7 @@
>>> needed = NeededInclusions()
>>> needed.need(a4)
>>> needed.need(a3)
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'a1.js' in library 'foo'>,
<ResourceInclusion 'a4.js' in library 'foo'>,
<ResourceInclusion 'a2.js' in library 'foo'>,
@@ -316,7 +317,7 @@
>>> a5 = ResourceInclusion(foo, 'a5.js', depends=[a4, a3])
>>> needed = NeededInclusions()
>>> needed.need(a5)
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'a1.js' in library 'foo'>,
<ResourceInclusion 'a4.js' in library 'foo'>,
<ResourceInclusion 'a2.js' in library 'foo'>,
@@ -330,7 +331,7 @@
>>> needed = NeededInclusions()
>>> needed.need(a3)
>>> needed.need(a5)
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'a1.js' in library 'foo'>,
<ResourceInclusion 'a2.js' in library 'foo'>,
<ResourceInclusion 'a3.js' in library 'foo'>,
@@ -353,14 +354,14 @@
By default, we get ``k.js``::
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'k.js' in library 'foo'>]
We can however also get the resource for mode ``debug`` and get
``k-debug.js``::
>>> needed.mode('debug')
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'k-debug.js' in library 'foo'>]
Modes can also be specified fully with a resource inclusion, which allows
@@ -373,14 +374,14 @@
By default we get ``k2.js``::
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'k2.js' in library 'foo'>]
We can however also get the resource for mode ``debug`` and get
``k2-debug.js``::
>>> needed.mode('debug')
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'k2-debug.js' in library 'foo'>]
Note that modes are assumed to be identical in dependency structure;
@@ -392,7 +393,7 @@
>>> needed = NeededInclusions()
>>> needed.mode('minified')
>>> needed.need(k1)
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'k.js' in library 'foo'>]
``hurry.resource`` suggests resource libraries follow the following
@@ -437,7 +438,7 @@
Let's look at the resources needed by default::
>>> c = get_current_needed_inclusions()
- >>> c.inclusions()
+ >>> c.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'l1.js' in library 'foo'>]
Let's now change the mode using the convenience
@@ -448,7 +449,7 @@
When we request the resources now, we get them in the ``debug`` mode::
- >>> c.inclusions()
+ >>> c.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'l1-debug.js' in library 'foo'>]
"Rollups"
@@ -474,7 +475,7 @@
>>> needed = NeededInclusions()
>>> needed.need(b1)
>>> needed.need(b2)
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'b1.js' in library 'foo'>, <ResourceInclusion 'b2.js' in library 'foo'>]
Let's enable rollups::
@@ -492,7 +493,7 @@
>>> needed.need(b1)
>>> needed.need(b2)
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'giant.js' in library 'foo'>]
The system will by default only consolidate exactly. That is, if only a single
@@ -501,7 +502,7 @@
>>> needed = NeededInclusions()
>>> needed.rollup()
>>> needed.need(b1)
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'b1.js' in library 'foo'>]
Let's look at this with a larger consolidation of 3 resources::
@@ -516,7 +517,7 @@
>>> needed = NeededInclusions()
>>> needed.rollup()
>>> needed.need(c1)
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'c1.css' in library 'foo'>]
Neither will it roll up two resources::
@@ -525,7 +526,7 @@
>>> needed.rollup()
>>> needed.need(c1)
>>> needed.need(c2)
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'c1.css' in library 'foo'>,
<ResourceInclusion 'c2.css' in library 'foo'>]
@@ -536,7 +537,7 @@
>>> needed.need(c1)
>>> needed.need(c2)
>>> needed.need(c3)
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'giantc.css' in library 'foo'>]
The default behavior is to play it safe: we cannot be certain that we
@@ -566,7 +567,7 @@
>>> needed.rollup()
>>> needed.need(d1)
>>> needed.need(d2)
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'giantd.js' in library 'foo'>]
In fact even if we only need a single resource the eager superseder will
@@ -575,7 +576,7 @@
>>> needed = NeededInclusions()
>>> needed.rollup()
>>> needed.need(d1)
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'giantd.js' in library 'foo'>]
If there are two potential eager superseders, the biggest one will
@@ -588,7 +589,7 @@
>>> needed.rollup()
>>> needed.need(d1)
>>> needed.need(d2)
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'giantd-bigger.js' in library 'foo'>]
If there is a potential non-eager superseder and an eager one, the eager one
@@ -602,7 +603,7 @@
>>> needed.need(d2)
>>> needed.need(d3)
>>> needed.need(d4)
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'giantd-bigger.js' in library 'foo'>]
A resource can be part of multiple rollups. In this case the rollup
@@ -622,7 +623,7 @@
>>> needed.need(e1)
>>> needed.need(e2)
>>> needed.need(e3)
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'giante-three.js' in library 'foo'>]
Consolidation also works with modes::
@@ -636,10 +637,10 @@
>>> needed.rollup()
>>> needed.need(f1)
>>> needed.need(f2)
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'giantf.js' in library 'foo'>]
>>> needed.mode('debug')
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'giantf-debug.js' in library 'foo'>]
What if the rolled up resources have no mode but the superseding resource
@@ -654,10 +655,10 @@
>>> needed.rollup()
>>> needed.need(g1)
>>> needed.need(g2)
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'giantg.js' in library 'foo'>]
>>> needed.mode('debug')
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'giantg.js' in library 'foo'>]
What if the rolled up resources have a mode but the superseding resource
@@ -670,14 +671,14 @@
>>> needed.rollup()
>>> needed.need(h1)
>>> needed.need(h2)
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'gianth.js' in library 'foo'>]
Since there is no superseder for the debug mode, we will get the two
resources, not rolled up::
>>> needed.mode('debug')
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'h1-debug.js' in library 'foo'>,
<ResourceInclusion 'h2-debug.js' in library 'foo'>]
@@ -688,7 +689,7 @@
>>> needed = NeededInclusions()
>>> needed.need(y1)
- >>> needed.inclusions()
+ >>> needed.inclusions() #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'b.css' in library 'foo'>,
<ResourceInclusion 'a.js' in library 'foo'>,
<ResourceInclusion 'c.js' in library 'foo'>]
@@ -1084,7 +1085,7 @@
Let's make a list of resource inclusions not sorted by dependency::
>>> i = [a5, a3, a1, a2, a4]
- >>> sort_inclusions_topological(i)
+ >>> sort_inclusions_topological(i) #doctest: +NORMALIZE_WHITESPACE
[<ResourceInclusion 'a1.js' in library 'foo'>,
<ResourceInclusion 'a4.js' in library 'foo'>,
<ResourceInclusion 'a2.js' in library 'foo'>,
@@ -1114,7 +1115,7 @@
>>> a6 = ResourceInclusion(foo, 'nothing.unknown')
>>> from hurry.resource.core import render_inclusions
- >>> render_inclusions([a6])
+ >>> render_inclusions([a6]) #doctest: +NORMALIZE_WHITESPACE +ELLIPSIS
Traceback (most recent call last):
...
UnknownResourceExtension: Unknown resource extension .unknown for resource
Modified: hurry.resource/trunk/src/hurry/resource/core.py
===================================================================
--- hurry.resource/trunk/src/hurry/resource/core.py 2010-07-23 14:39:01 UTC (rev 114961)
+++ hurry.resource/trunk/src/hurry/resource/core.py 2010-07-23 16:16:37 UTC (rev 114962)
@@ -3,10 +3,12 @@
try:
from zope.interface import implements
+ ZCA = True
except ImportError:
# fallback in case zope.interface isn't present
def implements(iface):
pass
+ ZCA = False
from hurry.resource import interfaces
@@ -153,8 +155,8 @@
for inclusion in inclusions]
def normalize_inclusion(library, inclusion):
- # XXX we don't want dependency on zope.interface but
- # it'd be better to say IInclusion.providedBy
+ if ZCA and interfaces.IInclusion.providedBy(inclusion):
+ return inclusion
if isinstance(inclusion, InclusionBase):
return inclusion
assert isinstance(inclusion, basestring)
Modified: hurry.resource/trunk/src/hurry/resource/interfaces.py
===================================================================
--- hurry.resource/trunk/src/hurry/resource/interfaces.py 2010-07-23 14:39:01 UTC (rev 114961)
+++ hurry.resource/trunk/src/hurry/resource/interfaces.py 2010-07-23 16:16:37 UTC (rev 114962)
@@ -5,7 +5,7 @@
class Interface(object):
pass
class Attribute(object):
- def __init__(s):
+ def __init__(self, s):
pass
class ILibrary(Interface):
More information about the checkins
mailing list