Skip to content
Browse files

synching @marcesher/SVN version 2.0.3

  • Loading branch information...
1 parent 2273f49 commit 3a7e6ccd827c513ebe0f7ce94509ef86e8cd40ad bill shelton committed
View
23 PluginDemoTests/CFScriptExpectedExceptionTest.cfc
@@ -0,0 +1,23 @@
+component extends="mxunit.framework.TestCase" {
+
+ /**
+ * @mxunit:expectedException MyCustomException
+ */
+ function thisShouldFail_BecauseExpectedExceptionIsNotThrown(){
+ throw("hi mom!", "SomeOtherKindOfException");
+ }
+
+ /**
+ * @mxunit:expectedException MyCustomException
+ */
+ function thisShouldPass_BecauseExpectedExceptionIsThrown(){
+ throw("hi mom!", "MyCustomException");
+ }
+
+ /**
+ * @mxunit:expectedException MyCustom.Exception
+ */
+ function thisShouldPass_BecauseExpectedExceptionIsThrown2(){
+ throw("hi mom!", "MyCustom.Exception");
+ }
+}
View
2 build.xml
@@ -432,7 +432,7 @@
=================================
-->
<target name="testFTP" depends="init">
- <ftp server="${ftp.site}" userid="${ftp.username}" password="${ftp.password}" action="list" listing="ftp.listing">
+ <ftp server="${ftp.site}" userid="${ftp.username}" password="${ftp.password}" action="list" listing="ftp.listing" verbose="true">
<fileset>
<include name="index.html" />
</fileset>
View
6 buildprops/version.properties
@@ -1,8 +1,8 @@
#Build version info
-#Fri Nov 19 07:35:15 EST 2010
+#Thu May 05 12:06:01 EDT 2011
+build.buildnum=3
build.minor=0
-build.buildnum=2
build.versiondescription=Release
build.notation=
-build.date=11/19/2010
+build.date=05/05/2011
build.major=2
View
6 framework/ComponentUtils.cfc
@@ -90,8 +90,10 @@
</cffunction>
- <cffunction name="dump"><cfargument name="o" />
- <cfdump var="#arguments.o#" /></cffunction>
+ <cffunction name="dump">
+ <cfargument name="o" />
+ <cfdump var="#arguments.o#" />
+ </cffunction>
<cffunction name="hasJ2EEContext">
<cfreturn getContextRootPath() is not "">
View
227 framework/MXUnitAssertionExtensions.cfc
@@ -3,140 +3,177 @@
--->
<cfcomponent displayname="MXUnitAssertionExtensions" extends="Assert" output="false" hint="Extends core mxunit assertions.">
- <cfparam name="request.__mxunitInheritanceTree__" type="string" default="" />
+ <cfparam name="request.__mxunitInheritanceTree__" type="string" default="" />
- <cffunction name="assertIsXMLDoc" access="public" returntype="boolean">
- <cfargument name="xml" required="yes" type="any" />
- <cfargument name="message" required="no" default="The test result is not a valid ColdFusion XML DOC object." type="string">
+ <cffunction name="assertIsXMLDoc" access="public" returntype="boolean">
+ <cfargument name="xml" required="yes" type="any" />
+ <cfargument name="message" required="no" default="The test result is not a valid ColdFusion XML DOC object." type="string">
+
+ <cfset assertTrue(isXMLDoc(arguments.xml),arguments.message)>
- <cfset assertTrue(isXMLDoc(arguments.xml),arguments.message)>
- <cfreturn true>
- </cffunction>
-
-
- <cffunction name="assertIsEmptyArray" access="public" returntype="boolean">
- <cfargument name="a" required="yes" type="any" />
- <cfargument name="message" required="no" default="The test result is NOT an empty ARRAY. It has #ArrayLen(arguments.a)# elements" type="string">
- <cfset assertEquals(0,ArrayLen(arguments.a),arguments.message)>
- <cfreturn true>
- </cffunction>
-
-
- <cffunction name="assertIsArray" access="public" returntype="boolean">
- <cfargument name="a" required="yes" type="any" />
- <cfargument name="message" type="string" required="false" default="The test result is not a valid ColdFusion ARRAY."/>
- <cfset assertTrue(isArray(arguments.a),arguments.message)>
<cfreturn true>
- </cffunction>
-
+
+ </cffunction>
- <cffunction name="assertIsEmptyQuery" access="public" returntype="boolean">
- <cfargument name="q" required="yes" type="any" />
- <cfargument name="message" type="string" required="false" default="There should be 0 records returned but there were #arguments.q.recordcount#"/>
- <cfset assertEquals(0,arguments.q.recordcount,arguments.message)>
+ <cffunction name="assertIsEmptyArray" access="public" returntype="boolean">
+ <cfargument name="a" required="yes" type="any" />
+ <cfargument name="message" required="no" default="The test result is NOT an empty ARRAY. It has #ArrayLen(arguments.a)# elements" type="string">
+
+ <cfset assertEquals(0,ArrayLen(arguments.a),arguments.message)>
+
<cfreturn true>
- </cffunction>
-
+
+ </cffunction>
- <cffunction name="assertIsQuery" access="public" returntype="boolean">
- <cfargument name="q" required="yes" type="any" />
- <cfargument name="message" type="string" required="false" default="The test result is not a valid ColdFusion QUERY."/>
- <cfset assertTrue(isQuery(arguments.q),arguments.message)>
+ <cffunction name="assertIsArray" access="public" returntype="boolean">
+ <cfargument name="a" required="yes" type="any" />
+ <cfargument name="message" type="string" required="false" default="The test result is not a valid ColdFusion ARRAY."/>
+
+ <cfset assertTrue(isArray(arguments.a),arguments.message)>
+
<cfreturn true>
- </cffunction>
-
+
+ </cffunction>
- <cffunction name="assertIsStruct" access="public" returntype="boolean">
- <cfargument name="struct" required="yes" type="any" />
- <cfargument name="message" type="string" required="false" default="The test result is not a valid ColdFusion STRUCTURE."/>
- <cfset assertTrue(isStruct(arguments.struct),arguments.message)>
+ <cffunction name="assertIsEmptyQuery" access="public" returntype="boolean">
+ <cfargument name="q" required="yes" type="any" />
+ <cfargument name="message" type="string" required="false" default="There should be 0 records returned but there were #arguments.q.recordcount#"/>
+
+ <cfset assertEquals(0,arguments.q.recordcount,arguments.message)>
+
<cfreturn true>
- </cffunction>
+
+ </cffunction>
+ <cffunction name="assertIsQuery" access="public" returntype="boolean">
+ <cfargument name="q" required="yes" type="any" />
+ <cfargument name="message" type="string" required="false" default="The test result is not a valid ColdFusion QUERY."/>
+
+ <cfset assertTrue(isQuery(arguments.q),arguments.message)>
+
+ <cfreturn true>
+
+ </cffunction>
- <cffunction name="assertIsEmptyStruct" access="public" returntype="boolean">
- <cfargument name="struct" required="yes" type="any" />
- <cfargument name="message" type="string" required="false" default="The test result is NOT an empty STRUCTURE. It has #StructCount(arguments.struct)# top-level keys"/>
- <cfset assertEquals(0,StructCount(arguments.Struct),arguments.message)>
+ <cffunction name="assertIsStruct" access="public" returntype="boolean">
+ <cfargument name="struct" required="yes" type="any" />
+ <cfargument name="message" type="string" required="false" default="The test result is not a valid ColdFusion STRUCTURE."/>
+
+ <cfset assertTrue(isStruct(arguments.struct),arguments.message)>
+
<cfreturn true>
- </cffunction>
+
+ </cffunction>
+ <cffunction name="assertIsEmptyStruct" access="public" returntype="boolean">
+ <cfargument name="struct" required="yes" type="any" />
+ <cfargument name="message" type="string" required="false" default="The test result is NOT an empty STRUCTURE. It has #StructCount(arguments.struct)# top-level keys"/>
+
+ <cfset assertEquals(0,StructCount(arguments.Struct),arguments.message)>
+
+ <cfreturn true>
+
+ </cffunction>
- <cffunction name="assertIsEmpty" access="public" returntype="boolean">
- <cfargument name="o" required="yes" type="String" />
- <cfargument name="message" type="string" required="false" default="The test result is NOT EMPTY. It is [#o#]"/>
+ <cffunction name="assertIsEmpty" access="public" returntype="boolean">
+ <cfargument name="o" required="yes" type="String" />
+ <cfargument name="message" type="string" required="false" default="The test result is NOT EMPTY. It is [#o#]"/>
+
<cfset assertEquals("",o,arguments.message)>
- <cfreturn true>
- </cffunction>
-
- <cffunction name="assertIsDefined" access="public" returntype="boolean">
- <cfargument name="o" required="yes" type="any" />
- <cfargument name="message" type="string" required="false" default="The value [#arguments.o#] is NOT DEFINED"/>
- <cfset assertTrue( isDefined(evaluate("arguments.o")) , arguments.message )>
+
<cfreturn true>
- </cffunction>
-
-
+
+ </cffunction>
+ <cffunction name="assertIsDefined" access="public" returntype="boolean">
+ <cfargument name="o" required="yes" type="any" />
+ <cfargument name="message" type="string" required="false" default="The value [#arguments.o#] is NOT DEFINED"/>
+
+ <cfset assertTrue( isDefined(evaluate("arguments.o")) , arguments.message )>
+
+ <cfreturn true>
+
+ </cffunction>
<cffunction name="assertIsTypeOf" access="public" returntype="boolean" hint="returns true if 'type' argument matches the object's type or if the object is in the inheritance tree of the type.">
<cfargument name="o" required="yes" type="WEB-INF.cftags.component" />
<cfargument name="type" required="yes" type="string" />
+
<cfset var md = getMetaData(o)>
<cfset var oType = md.name>
<cfset var ancestry = buildInheritanceTree(md) />
-
+
<cfset var message = "The object [#oType#] is not of type #arguments.type#. Searched inheritance tree: [#ancestry#]">
<cfif listFindNoCase(ancestry,arguments.type) eq 0>
<cfset fail(message)>
</cfif>
+
<cfreturn true>
+
</cffunction>
-
<cffunction name="assertIsExactTypeOf" output="false" access="public" returntype="boolean" hint="returns true if 'type' argument matches exactly the object's type. inheritance tree is not considered">
<cfargument name="o" required="yes" type="WEB-INF.cftags.component" />
- <cfargument name="type" required="yes" type="string" />
+ <cfargument name="type" required="yes" type="string" />
+
<cfset var oType = getMetaData(o).name>
+
<cfif oType neq arguments.type>
<cfset failNotEquals(arguments.type,oType,"The object [#oType#] is not of exact type #arguments.type#")>
</cfif>
+
<cfreturn true>
+
+ </cffunction>
+
+ <cffunction name="assertEqualsWithTolerance" access="public" returntype="boolean" output="false" hint="returns true of actual and expected are within a certain tolerance(epsilon) of each other. good for comparing floating point values.">
+ <cfargument name="expected" type="any" required="yes" hint="The expected object to compare." />
+ <cfargument name="actual" type="any" required="yes" hint="The actual object to compare." />
+ <cfargument name="tolerance" type="numeric" required="yes" hint="">
+ <cfargument name="message" type="string" required="false" default="" hint="Optional custom message to display if comparison fails." />
+
+ <cfset var err = 0 />
+
+ <cfif isNumeric(arguments.expected) and isNumeric(arguments.actual)>
+ <cfset err = ABS(arguments.expected - arguments.actual) />
+ <cfif err gt arguments.tolerance>
+ <cfset failNotEquals(arguments.expected, arguments.actual, arguments.message) />
+ </cfif>
+ </cfif>
+
+ <cfreturn true />
+
</cffunction>
-
-
- <cffunction name="buildInheritanceTree" access="public" returntype="string">
- <cfargument name="metaData" type="struct" />
- <cfargument name="accumulator" type="string" required="false" default=""/>
-
- <cfscript>
- var key = "";
-
- if( structKeyExists(arguments.metadata,"name") AND listFindNoCase(accumulator,arguments.metaData.name) eq 0 ){
- accumulator = accumulator & arguments.metaData.name & ",";
- }
- if(structKeyExists(arguments.metaData,"extends")){
- //why, oh why, is the structure different for interfaces vs. extends? For F**k's sake!
- if( structKeyExists( metadata.extends, "name" ) ){
- accumulator = buildInheritanceTree(metaData.extends, accumulator);
- }else{
- accumulator = buildInheritanceTree(metadata.extends[ structKeyList(metadata.extends) ], accumulator);
- }
- }
- if(structKeyExists(arguments.metaData,"implements")){
- for(key in arguments.metadata.implements){
- accumulator = buildInheritanceTree(metaData.implements[ key ], accumulator);
- }
- }
-
- return accumulator;
- </cfscript>
- </cffunction>
-
-
-
-
-
+ <cffunction name="buildInheritanceTree" access="public" returntype="string">
+ <cfargument name="metaData" type="struct" />
+ <cfargument name="accumulator" type="string" required="false" default=""/>
+
+ <cfscript>
+ var key = "";
+
+ if( structKeyExists(arguments.metadata,"name") AND listFindNoCase(accumulator,arguments.metaData.name) eq 0 ){
+ accumulator = accumulator & arguments.metaData.name & ",";
+ }
+
+ if(structKeyExists(arguments.metaData,"extends")){
+ //why, oh why, is the structure different for interfaces vs. extends? For F**k's sake!
+ if( structKeyExists( metadata.extends, "name" ) ){
+ accumulator = buildInheritanceTree(metaData.extends, accumulator);
+ }else{
+ accumulator = buildInheritanceTree(metadata.extends[ structKeyList(metadata.extends) ], accumulator);
+ }
+ }
+
+ if(structKeyExists(arguments.metaData,"implements")){
+ for(key in arguments.metadata.implements){
+ accumulator = buildInheritanceTree(metaData.implements[ key ], accumulator);
+ }
+ }
+
+ return accumulator;
+ </cfscript>
+
+ </cffunction>
</cfcomponent>
View
6 framework/RemoteFacade.cfc
@@ -97,6 +97,12 @@
<cfreturn methods>
</cffunction>
+
+<!--- <cffunction name="getComponentMethodsRich2" access="remote" returntype="array">
+ <cfset var bean = {dataprovidertype="excel", rows=50}>
+ <cfreturn [bean]>
+ </cffunction>--->
+
<cffunction name="actOnTestCase" access="public" hint="an 'Interceptor' for custom remote facades. This will enable you to act on each test case object, possibly injecting additional data, etc" output="false">
<cfargument name="testCase" required="true" hint="">
View
1 ftp.listing
@@ -0,0 +1 @@
+02-04-08 08:47AM 91 index.html
View
17 samples/RemoteFacadeTester.cfm
@@ -62,4 +62,19 @@ then you'll need to copy this file into your application
TestRunKey=""
returnvariable="remoteRunResults">
-<cfdump var="#remoteRunResults#" label="remoteRunResults" expand="false">
+<cfdump var="#remoteRunResults#" label="remoteRunResults" expand="false">
+
+
+<!---
+<cfinvoke webservice="#remoteURL#"
+ method="getComponentMethodsRich"
+ returnvariable="getResults" >
+
+ <cfdump var="#getResults#">
+ <cfdump var="#getResults[1].getData()#">
+
+
+<cfset rf = createObject("mxunit.framework.RemoteFacade")>
+<cfset beans = rf.getComponentMethodsRich()>
+<cfdump var="#beans[1].getData()#">
+--->
View
76 samples/build.xml
@@ -1,15 +1,30 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<project name="Sample Build. Replace Me!" basedir="." default="runtests">
-
-
+<project name="Sample Build. Replace Me!" basedir="." default="runUnitTests">
+
+
+ <!--
+ Jenkins / Hudson Tips:
+
+ If you stick with the defaults configured in "init", use the following as a guide for populating the Jenkins job configuration for this project
+
+ 1) "Test Report XMLs" configuration will be something like
+
+ DirectoryNameOfYourProject/test/testresults/xml/**/*.xml
+
+ 2) "Archive the artifacts" configuration will be something like
+
+ DirectoryNameOfYourProject/deploy/*.zip
+
+ -->
+
<target name="init">
<!-- //////// DIRECTORY AND CFC PATH SETUP (used in all targets) -->
<!-- what's the directory name of your application? this value will be used throughout this build file; if you don't want that, just replace the references to ${application.name} with your desired values -->
<property name="application.name" value="DirectoryNameOfYourProject" />
-
+
<!-- what's the name of the directory where your tests live? Note: this is just the name of the directory, not the full path-->
<property name="test.dir.name" value="test" />
@@ -29,20 +44,22 @@
<property name="test.serverport" value="80" />
<!-- what "runner" URL should the tests hit. In this example, you'd be hitting http://localhost:80/DirectoryNameOfYourProject/test/HttpAntRunner.cfc Simply copy mxunit/samples/HttpAntRunner.cfc into your test directory! -->
<property name="test.runner" value="/${application.name}/${test.dir.name}/HttpAntRunner.cfc" />
- <!-- this is where the xml and html will live for the report generator -->
+
+ <!-- this is where the xml and html will live for the report generator and Jenkins -->
<property name="test.output" location="${test.dir.name}/testresults" />
<property name="test.output.xml" location="${test.output}/xml" />
<property name="test.junitoutput" location="${test.output}/html" />
-
<!-- //////// ZIP-FILE SETUP (used by "dist" target) -->
<!-- where the zip file for deployment will live -->
<property name="dist.dir" location="deploy" />
- <!-- what to call it -->
+
+ <!-- what to call it -->
<property name="dist.zip" value="${application.name}.zip" />
+
<!-- what to start the "path" in the zip with -->
<property name="dist.prefixInZip" value="${application.name}" />
@@ -51,13 +68,15 @@
<!-- //////// JAR FILES WE NEED FOR EXTERNAL TASKS -->
<!-- where does the mxunit ant jar file live? it's easiest to copy it out of the mxunit install and put it into your app
- You can also put any other ant-relatd jars in this directory; for example, if you want to use svnant, you'll need to put those jars here
+ You can also put any other ant-related jars in this directory; for example, if you want to use svnant, you'll need to put those jars here
-->
<path id="project.classpath">
<fileset dir="lib">
<include name="**/*.jar" />
</fileset>
</path>
+
+ <taskdef name="mxunittask" classname="org.mxunit.ant.MXUnitAntTask" classpathref="project.classpath" />
<!-- dump the properties -->
<echoproperties prefix="test" />
@@ -72,24 +91,38 @@
<target name="svn.update" depends="init">
<typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="project.classpath" />
- <echo message="updating ${test.dir.location}" />
+ <echo message="updating ${basedir}" />
<svn svnkit="true">
- <update dir="${test.dir.location}" />
+ <update dir="${basedir}" />
</svn>
</target>
- <target name="runtests" description="Make output directories and run the MXUnit task" depends="init,clean">
- <delete dir="${test.output}" failonerror="false" />
- <delete dir="${dist.dir}" failonerror="false" />
- <taskdef name="mxunittask" classname="org.mxunit.ant.MXUnitAntTask" classpathref="project.classpath" />
- <mxunittask server="${test.server}" port="${test.serverport}" defaultrunner="${test.runner}" outputdir="${test.output.xml}" verbose="true">
- <directory path="${test.dir.location}" recurse="true" packageName="${test.cfcpath}" componentPath="${test.cfcpath}" />
- </mxunittask>
+ <target name="runUnitTests" depends="init">
+ <mkdir dir="${test.output.xml}/unit" />
+ <runTestDirectory directoryName="unit" excludes=""/>
+ </target>
+
+ <target name="runUITests" depends="init,reinitApp">
+ <mkdir dir="${test.output.xml}/UI" />
+ <runTestDirectory directoryName="UI" excludes=""/>
+ </target>
+
+ <target name="reinitApp" depends="init">
+ <!-- replace 'reset_app' with any url params you use to reset your application (e.g., init=true, etc) -->
+ <property name="reinitURL" value="http://${test.server}:${test.serverport}/${application.name}/index.cfm?reset_app=true"/>
+ <echo message="reiniting app at ${reinitURL}"/>
+ <loadresource property="test.reinitAppOutput">
+ <url url="${reinitURL}"/>
+ </loadresource>
+ </target>
+ <target name="runAllTests" description="Make output directories and run the MXUnit task" depends="init,clean,runUnitTests,runUITests">
<!-- generate pretty reports -->
<antcall target="junitreport" />
+ <fail if="tests.bombed" message="Failing the build due to test failures"/>
</target>
+
<target name="junitreport" depends="init" description="Runs the report without running the tests">
<junitreport todir="${test.junitoutput}">
<fileset dir="${test.output.xml}">
@@ -105,6 +138,15 @@
</zip>
</target>
+ <macrodef name="runTestDirectory">
+ <attribute name="directoryName"/>
+ <attribute name="excludes" default=""/>
+ <sequential>
+ <mxunittask server="${test.server}" port="${test.serverport}" defaultrunner="${test.runner}" outputdir="${test.output.xml}/@{directoryName}" verbose="true" failureproperty="tests.bombed" errorproperty="tests.bombed">
+ <directory path="${test.dir.location}/@{directoryName}" recurse="true" packageName="${test.cfcpath}.@{directoryName}" componentPath="${test.cfcpath}.@{directoryName}" excludes="@{excludes}" />
+ </mxunittask>
+ </sequential>
+ </macrodef>
</project>
View
4 tests/framework/DataProviderTest.cfc
@@ -15,7 +15,7 @@
<!--- Just run this test 100 times --->
<cffunction name="dataproviderShouldAcceptSimpleValueForNumericLoops" mxunit:dataprovider="201">
<cfargument name="cnt">
- <cfset debug(cnt)>
+ <cfset debug(cnt)>
<cfset r=randrange(cnt,1000+cnt)>
</cffunction>
@@ -37,7 +37,7 @@
<cfargument name="myArray" />
<cfscript>
-
+ debug(myArray);
if(arguments.index == 1){
assertEquals( myarray[1] , _2dA[1][1] );
assertEquals( myarray[2] , _2dA[1][2] );
View
28 tests/framework/DynamicTestCaseGenerationTest.cfc
@@ -0,0 +1,28 @@
+<cfscript>
+
+component extends="mxunit.framework.TestCase" {
+
+a = [1,2,3,4];
+
+
+
+function setUp(){
+
+}
+
+
+
+
+/**
+ * @dataprovider a
+ */
+ function testThis(a){
+ debug(a);
+}
+
+
+}
+
+</cfscript>
+
+
View
551 tests/framework/MXUnitAssertionExtensionsTest.cfc
@@ -1,44 +1,43 @@
<cfcomponent generatedOn="12-04-2007 9:29:57 PM EST" extends="mxunit.framework.TestCase">
+ <cffunction name="assertIsTypeOfPassesForCompleteAncestry" returntype="void" access="public">
+ <cfscript>
+ //itself
+ assertIsTypeOf(this,"mxunit.tests.framework.MXUnitAssertionExtensionsTest");
+ //immediate parent
+ assertIsTypeOf(this,"mxunit.framework.TestCase");
+ // grandparent
+ assertIsTypeOf(this,"mxunit.framework.Assert");
+ //last of the mohicans
+ assertIsTypeOf(this,"WEB-INF.cftags.component");
+ </cfscript>
+ </cffunction>
- <cffunction name="assertIsTypeOfPassesForCompleteAncestry" returntype="void" access="public">
- <cfscript>
- //itself
- assertIsTypeOf(this,"mxunit.tests.framework.MXUnitAssertionExtensionsTest");
- //immediate parent
- assertIsTypeOf(this,"mxunit.framework.TestCase");
- // grandparent
- assertIsTypeOf(this,"mxunit.framework.Assert");
- //last of the mohicans
- assertIsTypeOf(this,"WEB-INF.cftags.component");
- </cfscript>
- </cffunction>
-
- <cffunction name="assertIsTypeOfFailsForIncorrectType" returntype="void" access="public">
- <cfscript>
- //itself
- assertIsTypeOf(this.MXUnitAssertionExtensions,"mxunit.framework.MXUnitAssertionExtensions");
- assertIsTypeOf(this.MXUnitAssertionExtensions,"WEB-INF.cftags.component");
- try{
- assertIsTypeOf(this.MXUnitAssertionExtensions,"mxunit.framework.TestCase");
- } catch(mxunit.exception.AssertionFailedError e){
- //no worries
- }
- </cfscript>
- </cffunction>
-
- <cffunction name="assertIsTypeOfFailsForBogusType" returntype="void" access="public">
- <cfscript>
- var webinf = createObject("component","WEB-INF.cftags.component");
- //guard - thanks Marc!
- assertIsTypeOf(webinf,"Web-INF.cftags.component");
- try{
- assertIsTypeOf(webinf,"mxunit.bogus.cfc.package.I'm not here");
- } catch(mxunit.exception.AssertionFailedError e){
+ <cffunction name="assertIsTypeOfFailsForIncorrectType" returntype="void" access="public">
+ <cfscript>
+ //itself
+ assertIsTypeOf(this.MXUnitAssertionExtensions,"mxunit.framework.MXUnitAssertionExtensions");
+ assertIsTypeOf(this.MXUnitAssertionExtensions,"WEB-INF.cftags.component");
+ try{
+ assertIsTypeOf(this.MXUnitAssertionExtensions,"mxunit.framework.TestCase");
+ } catch(mxunit.exception.AssertionFailedError e){
+ //no worries
+ }
+ </cfscript>
+ </cffunction>
- }
- </cfscript>
- </cffunction>
+ <cffunction name="assertIsTypeOfFailsForBogusType" returntype="void" access="public">
+ <cfscript>
+ var webinf = createObject("component","WEB-INF.cftags.component");
+ //guard - thanks Marc!
+ assertIsTypeOf(webinf,"Web-INF.cftags.component");
+ try{
+ assertIsTypeOf(webinf,"mxunit.bogus.cfc.package.I'm not here");
+ } catch(mxunit.exception.AssertionFailedError e){
+
+ }
+ </cfscript>
+ </cffunction>
<cffunction name="assertIsExactTypePassesForExactType" output="false" access="public" returntype="any" hint="">
<cfset var thisType = getMetadata(this).name>
@@ -47,243 +46,297 @@
<cffunction name="assertIsExactTypeOfFailsForSuperclass" output="false" access="public" returntype="any" hint="">
<cftry>
+
<cfset assertIsExactTypeOf(this,"Web-INF.cftags.component")>
- <cfcatch type="mxunit.exception.AssertionFailedError">
- <cfset debug(cfcatch)>
- </cfcatch>
+
+ <cfcatch type="mxunit.exception.AssertionFailedError">
+ <cfset debug(cfcatch)>
+ </cfcatch>
</cftry>
</cffunction>
<cffunction name="testAssertIsEmptyStruct">
- <cfscript>
- var s = structNew();
- var actual = "";
- s.foo = "bar";
- </cfscript>
-
-
- <cftry>
- <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsEmptyStruct" returnVariable="actual">
- <cfinvokeargument name="struct" value="#s#" />
- </cfinvoke>
- <cfcatch type="mxunit.exception.AssertionFailedError" />
- <!--- no worries. we want this to fail --->
- </cftry>
-
+
+ <cfscript>
+ var s = structNew();
+ var actual = "";
+ s.foo = "bar";
+ </cfscript>
+
+ <cftry>
+
+ <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsEmptyStruct" returnVariable="actual">
+ <cfinvokeargument name="struct" value="#s#" />
+ </cfinvoke>
+
+ <cfcatch type="mxunit.exception.AssertionFailedError" />
+ <!--- no worries. we want this to fail --->
+ </cftry>
+
<cfset StructClear(s)>
<cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsEmptyStruct" returnVariable="actual">
- <cfinvokeargument name="struct" value="#s#" />
- </cfinvoke>
-
-
+ <cfinvokeargument name="struct" value="#s#" />
+ </cfinvoke>
+
</cffunction>
-
<cffunction name="testAssertIsStruct">
- <cfset var actual = "" />
- <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsStruct" returnVariable="actual">
- <cfinvokeargument name="struct" value="#structNew()#" />
- </cfinvoke>
- <cftry>
- <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsStruct" returnVariable="actual">
- <cfinvokeargument name="struct" value="a string and not a struct" />
- </cfinvoke>
- <cfcatch type="mxunit.exception.AssertionFailedError" />
- <!--- no worries. we want this to fail --->
- </cftry>
-
+
+ <cfset var actual = "" />
+
+ <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsStruct" returnVariable="actual">
+
+ <cfinvokeargument name="struct" value="#structNew()#" />
+ </cfinvoke>
+
+ <cftry>
+
+ <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsStruct" returnVariable="actual">
+ <cfinvokeargument name="struct" value="a string and not a struct" />
+ </cfinvoke>
+
+ <cfcatch type="mxunit.exception.AssertionFailedError" />
+ <!--- no worries. we want this to fail --->
+ </cftry>
+
</cffunction>
-
<cffunction name="testAssertIsEmpty">
- <cfset var actual = "" />
- <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsEmpty" returnVariable="actual">
- <cfinvokeargument name="o" value="" />
- </cfinvoke>
-
- <cftry>
- <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsEmpty" returnVariable="actual">
- <cfinvokeargument name="o" value="asd" />
- </cfinvoke>
- <cfcatch type="mxunit.exception.AssertionFailedError" />
- <!--- no worries. we want this to fail --->
- </cftry>
-
+
+ <cfset var actual = "" />
+
+ <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsEmpty" returnVariable="actual">
+ <cfinvokeargument name="o" value="" />
+ </cfinvoke>
+
+ <cftry>
+
+ <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsEmpty" returnVariable="actual">
+ <cfinvokeargument name="o" value="asd" />
+ </cfinvoke>
+
+ <cfcatch type="mxunit.exception.AssertionFailedError" />
+ <!--- no worries. we want this to fail --->
+ </cftry>
+
</cffunction>
+ <cffunction name="testAssertIsDefined">
+
+ <cfset var actual = "" />
+
+ <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsDefined" returnVariable="actual">
+ <cfinvokeargument name="o" value="url" />
+ </cfinvoke>
+
+ <cftry>
+
+ <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsDefined" returnVariable="actual">
+ <cfinvokeargument name="o" value="zxcasdqweoiuqweoiquweqiowueqwieuqwjekjbq" />
+ </cfinvoke>
+
+ <cfcatch type="mxunit.exception.AssertionFailedError" />
+ <!--- no worries. we want this to fail --->
+ </cftry>
+
+ </cffunction>
-<cffunction name="testAssertIsDefined">
- <cfset var actual = "" />
- <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsDefined" returnVariable="actual">
- <cfinvokeargument name="o" value="url" />
- </cfinvoke>
-
- <cftry>
- <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsDefined" returnVariable="actual">
- <cfinvokeargument name="o" value="zxcasdqweoiuqweoiquweqiowueqwieuqwjekjbq" />
- </cfinvoke>
- <cfcatch type="mxunit.exception.AssertionFailedError" />
- <!--- no worries. we want this to fail --->
- </cftry>
-
-</cffunction>
-
-
-<cffunction name="testAssertIsArray">
- <cfset var a = arrayNew(1) />
- <cfset var actual = "" />
- <cfset a[1] = 1 />
- <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsArray" returnVariable="actual">
- <cfinvokeargument name="a" value="#a#" />
- </cfinvoke>
- <cftry>
- <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsArray" returnVariable="actual">
- <cfinvokeargument name="a" value="a string not an array" />
- </cfinvoke>
- <cfcatch type="mxunit.exception.AssertionFailedError" />
- <!--- no worries. we want this to fail --->
- </cftry>
-</cffunction>
-
-
-<cffunction name="testAssertIsEmptyArray">
- <cfset var a = arrayNew(1) />
- <cfset var a2 = arrayNew(1) />
- <cfset var actual = "" />
- <cfset a[1] = "" />
-
-
-
- <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsEmptyArray" returnVariable="actual">
- <cfinvokeargument name="a" value="#a2#" />
- </cfinvoke>
-
- <cftry>
- <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsEmptyArray" returnVariable="actual">
- <cfinvokeargument name="a" value="#a#" />
- </cfinvoke>
- <cfcatch type="mxunit.exception.AssertionFailedError">
- <cfset debug(cfcatch)>
- </cfcatch>
- <!--- no worries. we want this to fail --->
- </cftry>
-
-
-
-</cffunction>
-
-
-<cffunction name="testAssertIsTypeOf">
- <cfset var actual = "" />
- Tests if THIS is the correct type (mxunit.tests.framework.MXUnitAssertionExtensionsTest)
- <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsTypeOf" returnVariable="actual">
- <cfinvokeargument name="o" value="#this#" />
- <cfinvokeargument name="type" value="mxunit.tests.framework.MXUnitAssertionExtensionsTest" />
- </cfinvoke>
-
- <cftry>
- <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsTypeOf" returnVariable="actual">
- <cfinvokeargument name="o" value="#this#" />
- <cfinvokeargument name="type" value="some.bogus.ass.component.name.that.should.fail.no.matter.what" />
- </cfinvoke>
- <cfcatch type="mxunit.exception.AssertionFailedError">
- <cfset debug(cfcatch)>
- </cfcatch>
- <!--- no worries. we want this to fail --->
- </cftry>
-
-</cffunction>
-
-
-<cffunction name="testAssertIsQuery">
- <cfscript>
- var q = queryNew("foo");
- var actual = "";
- queryAddRow(q,1);
- querySetCell(q, "foo","bar");
- </cfscript>
- <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsQuery" returnVariable="actual">
- <cfinvokeargument name="q" value="#q#" />
- </cfinvoke>
-
- <cftry>
- <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsQuery" returnVariable="actual">
- <cfinvokeargument name="q" value="foo" />
- </cfinvoke>
- <cfcatch type="mxunit.exception.AssertionFailedError" />
- <!--- no worries. we want this to fail --->
- </cftry>
-</cffunction>
-
-
-<cffunction name="testAssertIsEmptyQuery">
- <cfscript>
- var q2 = queryNew("foo");
- var q = queryNew("foo");
- var actual = "";
- queryAddRow(q,1);
- querySetCell(q, "foo","bar");
- </cfscript>
- <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsEmptyQuery" returnVariable="actual">
- <cfinvokeargument name="q" value="#q2#" />
- </cfinvoke>
-
- <cftry>
- <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsEmptyQuery" returnVariable="actual">
- <cfinvokeargument name="q" value="#q#" />
- </cfinvoke>
- <cfcatch type="mxunit.exception.AssertionFailedError">
- <cfset debug(cfcatch)>
- </cfcatch>
- <!--- no worries. we want this to fail --->
- </cftry>
-</cffunction>
-
-
-<cffunction name="testAssertIsXMLDoc">
- <cfscript>
- var xml1 = xmlNew();
- var actual = "";
- </cfscript>
- <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsXMLDoc" returnVariable="actual">
- <cfinvokeargument name="xml" value="#xml1#" />
- <cfinvokeargument name="message" value="This is not an XML Dom Object" />
- </cfinvoke>
-
- <cftry>
- <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsXMLDoc" returnVariable="actual">
- <cfinvokeargument name="xml" value="a string is not XML and should fail" />
- <cfinvokeargument name="message" value="This is not an XML Dom Object" />
- </cfinvoke>
- <cfcatch type="mxunit.exception.AssertionFailedError" />
- <!--- no worries. we want this to fail --->
- </cftry>
-
-
-</cffunction>
+ <cffunction name="testAssertIsArray">
+
+ <cfset var a = arrayNew(1) />
+ <cfset var actual = "" />
+ <cfset a[1] = 1 />
+
+ <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsArray" returnVariable="actual">
+ <cfinvokeargument name="a" value="#a#" />
+ </cfinvoke>
+
+ <cftry>
+
+ <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsArray" returnVariable="actual">
+ <cfinvokeargument name="a" value="a string not an array" />
+ </cfinvoke>
+
+ <cfcatch type="mxunit.exception.AssertionFailedError" />
+ <!--- no worries. we want this to fail --->
+ </cftry>
+
+ </cffunction>
-<cffunction name="assertIsTypeOfPassesForInterfaces" returntype="void">
- <cfset var component = createObject("fixture.interfaces.AComponent")>
+ <cffunction name="testAssertIsEmptyArray">
+
+ <cfset var a = arrayNew(1) />
+ <cfset var a2 = arrayNew(1) />
+ <cfset var actual = "" />
+ <cfset a[1] = "" />
+
+ <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsEmptyArray" returnVariable="actual">
+ <cfinvokeargument name="a" value="#a2#" />
+ </cfinvoke>
+
+ <cftry>
+
+ <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsEmptyArray" returnVariable="actual">
+ <cfinvokeargument name="a" value="#a#" />
+ </cfinvoke>
+
+ <cfcatch type="mxunit.exception.AssertionFailedError">
+ <cfset debug(cfcatch)>
+ </cfcatch>
+ <!--- no worries. we want this to fail --->
+ </cftry>
+
+ </cffunction>
- <cfset assertIsTypeOf( component, "mxunit.tests.framework.fixture.interfaces.AnInterface" )>
- <cfset assertIsTypeOf( component, "mxunit.tests.framework.fixture.interfaces.OtherInterface" )>
- <cfset assertIsTypeOf( component, "mxunit.tests.framework.fixture.interfaces.SubInterface" )>
+ <cffunction name="testAssertIsTypeOf">
+
+ <cfset var actual = "" />
+
+ <!---Tests if THIS is the correct type (mxunit.tests.framework.MXUnitAssertionExtensionsTest) --->
+
+ <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsTypeOf" returnVariable="actual">
+ <cfinvokeargument name="o" value="#this#" />
+ <cfinvokeargument name="type" value="mxunit.tests.framework.MXUnitAssertionExtensionsTest" />
+ </cfinvoke>
+
+ <cftry>
+
+ <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsTypeOf" returnVariable="actual">
+ <cfinvokeargument name="o" value="#this#" />
+ <cfinvokeargument name="type" value="some.bogus.ass.component.name.that.should.fail.no.matter.what" />
+ </cfinvoke>
+
+ <cfcatch type="mxunit.exception.AssertionFailedError">
+ <cfset debug(cfcatch)>
+ </cfcatch>
+ <!--- no worries. we want this to fail --->
+ </cftry>
+
+ </cffunction>
-</cffunction>
+ <cffunction name="testAssertIsQuery">
+
+ <cfscript>
+ var q = queryNew("foo");
+ var actual = "";
+ queryAddRow(q,1);
+ querySetCell(q, "foo","bar");
+ </cfscript>
+
+ <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsQuery" returnVariable="actual">
+ <cfinvokeargument name="q" value="#q#" />
+ </cfinvoke>
+
+ <cftry>
+
+ <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsQuery" returnVariable="actual">
+ <cfinvokeargument name="q" value="foo" />
+ </cfinvoke>
+
+ <cfcatch type="mxunit.exception.AssertionFailedError" />
+ <!--- no worries. we want this to fail --->
+ </cftry>
+
+ </cffunction>
+ <cffunction name="testAssertIsEmptyQuery">
+ <cfscript>
+ var q2 = queryNew("foo");
+ var q = queryNew("foo");
+ var actual = "";
+ queryAddRow(q,1);
+ querySetCell(q, "foo","bar");
+ </cfscript>
+
+ <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsEmptyQuery" returnVariable="actual">
+ <cfinvokeargument name="q" value="#q2#" />
+ </cfinvoke>
+
+ <cftry>
+
+ <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsEmptyQuery" returnVariable="actual">
+ <cfinvokeargument name="q" value="#q#" />
+ </cfinvoke>
+
+ <cfcatch type="mxunit.exception.AssertionFailedError">
+ <cfset debug(cfcatch)>
+ </cfcatch>
+ <!--- no worries. we want this to fail --->
+ </cftry>
+ </cffunction>
+ <cffunction name="testAssertIsXMLDoc">
+
+ <cfscript>
+ var xml1 = xmlNew();
+ var actual = "";
+ </cfscript>
+
+ <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsXMLDoc" returnVariable="actual">
+ <cfinvokeargument name="xml" value="#xml1#" />
+ <cfinvokeargument name="message" value="This is not an XML Dom Object" />
+ </cfinvoke>
+
+ <cftry>
+
+ <cfinvoke component="#this.MXUnitAssertionExtensions#" method="assertIsXMLDoc" returnVariable="actual">
+ <cfinvokeargument name="xml" value="a string is not XML and should fail" />
+ <cfinvokeargument name="message" value="This is not an XML Dom Object" />
+ </cfinvoke>
+
+ <cfcatch type="mxunit.exception.AssertionFailedError" />
+ <!--- no worries. we want this to fail --->
+ </cftry>
+
+ </cffunction>
-<!--- Override these methods as needed. Note that the call to setUp() is Required if using a this-scoped instance--->
+ <cffunction name="assertIsTypeOfPassesForInterfaces" returntype="void">
+
+ <cfset var component = createObject("fixture.interfaces.AComponent")>
+
+ <cfset assertIsTypeOf( component, "mxunit.tests.framework.fixture.interfaces.AnInterface" )>
+ <cfset assertIsTypeOf( component, "mxunit.tests.framework.fixture.interfaces.OtherInterface" )>
+ <cfset assertIsTypeOf( component, "mxunit.tests.framework.fixture.interfaces.SubInterface" )>
+
+ </cffunction>
-<cffunction name="setUp">
-<!--- Assumption: Instantiate an instance of the component we want to test --->
-<cfset this.MXUnitAssertionExtensions = createObject("component","mxunit.framework.MXUnitAssertionExtensions") />
-<!--- Add additional set up code here--->
-</cffunction>
+ <cffunction name="testAssertEqualsWithTolerance">
+ <!--- should pass all the same tests as testAssertEqualsNumbers with a tolerance of zero --->
+ <cfset assertEqualsWithTolerance(1,1,0,"boo") />
+ <cfset assertEqualsWithTolerance(1.0,1,0) />
+ <cfset assertEqualsWithTolerance(1000000000000.0,1000000000000,0) />
+ <cfset assertEqualsWithTolerance(-5,-5.0,0) />
+ <cfset assertEqualsWithTolerance(-100.222,-100.222,0) />
+ <cfset assertEqualsWithTolerance("1",1,0) />
+ <cfset assertEqualsWithTolerance(2,"2",0) />
+ <cfset assertEqualsWithTolerance("2.222",2.222,0) />
+
+ <cfset assertEqualsWithTolerance(1/3,1/3+1-1,0.01) />
+
+ <cftry>
+
+ <cfset assertEqualsWithTolerance(1/3,1/3+1-1,0.00000000000000005) />
+
+ <cfthrow type="failure" message="this code should never be reached.">
+
+ <cfcatch type="mxunit.exception.AssertionFailedError">
+ <cfset assertTrue(true) />
+ </cfcatch>
+ <cfcatch type="failure">
+ <cfset fail("testAssertEqualsWithTolerance should have failed when tolerance was really small.") >
+ </cfcatch>
+ </cftry>
+ </cffunction>
+ <!--- Override these methods as needed. Note that the call to setUp() is Required if using a this-scoped instance--->
-<cffunction name="tearDown">
-</cffunction>
+ <cffunction name="setUp">
+ <!--- Assumption: Instantiate an instance of the component we want to test --->
+ <cfset this.MXUnitAssertionExtensions = createObject("component","mxunit.framework.MXUnitAssertionExtensions") />
+ <!--- Add additional set up code here--->
+ </cffunction>
+ <cffunction name="tearDown">
+ </cffunction>
</cfcomponent>
View
23 tests/framework/RemoteFacadeTest.cfc
@@ -27,7 +27,7 @@
<cfset assertTrue(isStruct(results),"results should be struct")>
<cfset assertEquals(ArrayLen(methods),ArrayLen(StructKeyArray(results[name])),"")>
</cffunction>
-
+
<cffunction name="testExecuteTestCaseWithFailure" returntype="void" hint="">
<cfset var name = "mxunit.PluginDemoTests.SingleFailureTest">
<cfset var methods = "">
@@ -40,10 +40,10 @@
<cfset assertEquals(ArrayLen(methods),ArrayLen(StructKeyArray(results[name])),"")>
<cfset assertTrue(StructKeyExists(results[name]["testFail"],"EXCEPTION"))>
<cfset assertTrue(StructKeyExists(results[name]["testFail"],"TAGCONTEXT"))>
-
+
<cfset isArray(results["mxunit.PluginDemoTests.SingleFailureTest"]["testFail"]["TAGCONTEXT"])>
</cffunction>
-
+
<cffunction name="testExecuteTestCaseWithComplexErrorTypeError">
<cfset var name = "mxunit.PluginDemoTests.ComplexExceptionTypeErrorTest">
<cfset var method = "willThrowFunkyNonArrayException">
@@ -52,7 +52,7 @@
<cfset results = rf.executeTestCase(name,"","")>
<cfset assertTrue(isSimpleValue(results[name][method]["EXCEPTION"]))>
<cfset assertTrue( findNoCase("complex", results[name][method]["EXCEPTION"]),"mxunit should convert the complex exception value into a string and prefix it with 'complexvalue' but didn't: #results[name][method]['EXCEPTION']#" )>
- <cfset assertTrue(StructKeyExists(results[name][method],"TAGCONTEXT"))>
+ <cfset assertTrue(StructKeyExists(results[name][method],"TAGCONTEXT"))>
<cfset isArray(results[name][method]["TAGCONTEXT"])>
</cffunction>
@@ -65,7 +65,7 @@
<cfset var type = rf.getServerType()>
<cfset assertTrue( len(type) GT 0 )>
</cffunction>
-
+
<cffunction name="getFrameworkVersionShouldReturnVersion">
<cfset var version = rf.getFrameworkVersion()>
<cfset assertEquals(3, listLen(version,".") )>
@@ -75,11 +75,11 @@
<cfset var dt = rf.getFrameworkDate()>
<cfset assertTrue(isDate(dt))>
</cffunction>
-
+
<cffunction name="assertExpectedKeysArePresent" access="private">
<cfargument name="TestResult" type="struct" required="true"/>
<cfset var basicKeys = "actual,expected,message,output,result,time">
-
+
<cfloop collection="#TestResult#" item="componentName">
<cfloop collection="#TestResult[componentName]#" item="methodName">
<cfset methodStruct = TestResult[componentName][methodName]>
@@ -88,8 +88,13 @@
</cfloop>
</cfloop>
</cfloop>
-
-
+
+
</cffunction>
+<!--- <cffunction name="hey">
+ <cfset var beans = rf.getComponentMethodsRich2()>
+ <cfdump var="#beans#">
+ </cffunction>--->
+
</cfcomponent>
View
4 tests/framework/XPathAssertionTest.cfc
@@ -69,7 +69,7 @@
<cffile action="read" file="#expandPath("/mxunit/tests/framework/fixture/xpath/nodes.html")#" variable="nodes">
<cfset xml = xmlParse(nodes)>
<cfset assertXPath('/ul/li',xml)>
- </cffunction>
+ </cffunction>
@@ -149,7 +149,7 @@
dom = buildXMLDom("http://google.com",true);
//debug(dom);
- dom = buildXMLDom("http://washingtonpost.com",true);
+ dom = buildXMLDom("http://hotchickswithdouchebags.com/",true);
//debug(dom);
</cfscript>
</cffunction>

0 comments on commit 3a7e6cc

Please sign in to comment.
Something went wrong with that request. Please try again.