Initial import.
Only templates for now. This is based on some code from 2013 and adds a proper build system and tests.
This commit is contained in:
commit
96dec81b87
21 changed files with 5444 additions and 0 deletions
44
tests/Makefile
Normal file
44
tests/Makefile
Normal file
|
@ -0,0 +1,44 @@
|
|||
include ../extra.mk
|
||||
|
||||
PROG_NOINST = tests${PROG_SUFFIX}
|
||||
SRCS = OWTemplateTests.m \
|
||||
TestsAppDelegate.m
|
||||
|
||||
include ../buildsys.mk
|
||||
|
||||
post-all: ${RUN_TESTS}
|
||||
|
||||
.PHONY: run
|
||||
run:
|
||||
rm -f libobjweb.so.${OBJWEB_LIB_MAJOR}
|
||||
rm -f libobjweb.so.${OBJWEB_LIB_MAJOR_MINOR}
|
||||
rm -f libobjweb.dll libobjweb.${OBJWEB_LIB_MAJOR}.dylib
|
||||
if test -f ../src/libobjweb.so; then \
|
||||
${LN_S} ../src/libobjweb.so libobjweb.so.${OBJWEB_LIB_MAJOR}; \
|
||||
${LN_S} ../src/libobjweb.so \
|
||||
libobjweb.so.${OBJWEB_LIB_MAJOR_MINOR}; \
|
||||
elif test -f ../src/libobjweb.so.${OBJWEB_LIB_MAJOR_MINOR}; then \
|
||||
${LN_S} ../src/libobjweb.so.${OBJWEB_LIB_MAJOR_MINOR} \
|
||||
libobjweb.so.${OBJWEB_LIB_MAJOR_MINOR}; \
|
||||
fi
|
||||
if test -f ../src/libobjweb.dll; then \
|
||||
${LN_S} ../src/libobjweb.dll libobjweb.dll; \
|
||||
fi
|
||||
if test -f ../src/libobjweb.dylib; then \
|
||||
${LN_S} ../src/libobjweb.dylib \
|
||||
libobjweb.${OBJWEB_LIB_MAJOR}.dylib; \
|
||||
fi
|
||||
LD_LIBRARY_PATH=.$${LD_LIBRARY_PATH+:}$$LD_LIBRARY_PATH \
|
||||
DYLD_LIBRARY_PATH=.$${DYLD_LIBRARY_PATH+:}$$DYLD_LIBRARY_PATH \
|
||||
LIBRARY_PATH=.$${LIBRARY_PATH+:}$$LIBRARY_PATH \
|
||||
${TEST_LAUNCHER} ./${PROG_NOINST}; EXIT=$$?; \
|
||||
rm -f libobjweb.so.${OBJWEB_LIB_MAJOR}; \
|
||||
rm -f libobjweb.so.${OBJWEB_LIB_MAJOR_MINOR} libobjweb.dll; \
|
||||
rm -f libobjweb.${OBJWEB_LIB_MAJOR}.dylib; \
|
||||
exit $$EXIT
|
||||
|
||||
${PROG_NOINST}: ${LIBOBJWEB_DEP}
|
||||
|
||||
CPPFLAGS += -I../src -I../src/exceptions
|
||||
LIBS += -L../src -lobjweb
|
||||
LD = ${OBJC}
|
60
tests/OWTemplateTests.m
Normal file
60
tests/OWTemplateTests.m
Normal file
|
@ -0,0 +1,60 @@
|
|||
/*
|
||||
* Copyright (c) 2016, Jonathan Schleifer <js@webkeks.org>
|
||||
*
|
||||
* https://heap.zone/git/?p=objweb.git
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice is present in all copies.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#import "OWTemplate.h"
|
||||
|
||||
#import "OWTemplateMissingException.h"
|
||||
|
||||
#import "TestsAppDelegate.h"
|
||||
|
||||
static OFString *module = @"OWTemplate";
|
||||
|
||||
@implementation TestsAppDelegate (OWTemplateTests)
|
||||
- (void)templateTests
|
||||
{
|
||||
void *pool = objc_autoreleasePoolPush();
|
||||
OWTemplate *tmpl;
|
||||
OFDictionary *vars;
|
||||
|
||||
TEST(@"Initialization", [OWTemplate class])
|
||||
|
||||
TEST(@"Loading a template",
|
||||
(tmpl = [OWTemplate templateForName: @"test"]))
|
||||
|
||||
EXPECT_EXCEPTION(@"Template missing exception",
|
||||
OWTemplateMissingException,
|
||||
(tmpl = [OWTemplate templateForName: @"missing"]))
|
||||
|
||||
TEST(@"Template content",
|
||||
[[tmpl content] isEqual: @"This is an ${=unescaped} ${test}.\n"])
|
||||
|
||||
|
||||
vars = [OFDictionary dictionaryWithKeysAndObjects:
|
||||
@"test", @"<b>test</b>",
|
||||
@"=unescaped", @"<i>unescaped</i>", nil];
|
||||
TEST(@"Variables and escaping",
|
||||
[[tmpl contentWithVariables: vars] isEqual:
|
||||
@"This is an <i>unescaped</i> <b>test</b>.\n"])
|
||||
|
||||
objc_autoreleasePoolPop(pool);
|
||||
}
|
||||
@end
|
65
tests/TestsAppDelegate.h
Normal file
65
tests/TestsAppDelegate.h
Normal file
|
@ -0,0 +1,65 @@
|
|||
/*
|
||||
* Copyright (c) 2016, Jonathan Schleifer <js@webkeks.org>
|
||||
*
|
||||
* https://heap.zone/git/?p=objweb.git
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice is present in all copies.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#import <ObjFW/ObjFW.h>
|
||||
|
||||
#define TEST(test, ...) \
|
||||
{ \
|
||||
[of_stdout writeFormat: @"[%@] %@: ", module, test]; \
|
||||
\
|
||||
if (__VA_ARGS__) \
|
||||
[of_stdout writeLine: @"ok"]; \
|
||||
else { \
|
||||
[of_stdout writeLine: @"FAILED"]; \
|
||||
_fails++; \
|
||||
} \
|
||||
}
|
||||
#define EXPECT_EXCEPTION(test, exception, code) \
|
||||
{ \
|
||||
bool caught = false; \
|
||||
\
|
||||
[of_stdout writeFormat: @"[%@] %@: ", module, test]; \
|
||||
\
|
||||
@try { \
|
||||
code; \
|
||||
} @catch (exception *e) { \
|
||||
caught = true; \
|
||||
} \
|
||||
\
|
||||
if (caught) \
|
||||
[of_stdout writeLine: @"ok"]; \
|
||||
else { \
|
||||
[of_stdout writeLine: @"FAILED"]; \
|
||||
_fails++; \
|
||||
} \
|
||||
}
|
||||
#define R(...) (__VA_ARGS__, 1)
|
||||
|
||||
@interface TestsAppDelegate: OFObject <OFApplicationDelegate>
|
||||
{
|
||||
int _fails;
|
||||
}
|
||||
@end
|
||||
|
||||
@interface TestsAppDelegate (OWTemplateTests)
|
||||
- (void)templateTests;
|
||||
@end
|
34
tests/TestsAppDelegate.m
Normal file
34
tests/TestsAppDelegate.m
Normal file
|
@ -0,0 +1,34 @@
|
|||
/*
|
||||
* Copyright (c) 2016, Jonathan Schleifer <js@webkeks.org>
|
||||
*
|
||||
* https://heap.zone/git/?p=objweb.git
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice is present in all copies.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#import "TestsAppDelegate.h"
|
||||
|
||||
OF_APPLICATION_DELEGATE(TestsAppDelegate)
|
||||
|
||||
@implementation TestsAppDelegate
|
||||
- (void)applicationDidFinishLaunching
|
||||
{
|
||||
[self templateTests];
|
||||
|
||||
[OFApplication terminateWithStatus: _fails];
|
||||
}
|
||||
@end
|
1
tests/templates/test.html
Normal file
1
tests/templates/test.html
Normal file
|
@ -0,0 +1 @@
|
|||
This is an ${=unescaped} ${test}.
|
Loading…
Add table
Add a link
Reference in a new issue