]> git.wincent.com - WOTest.git/blob - WOTestApplicationTestsController.h
Fix object-to-pointer comparisons on Leopard
[WOTest.git] / WOTestApplicationTestsController.h
1 //
2 //  WOTestApplicationTestsController.h
3 //  WOTest
4 //
5 //  Created by Wincent Colaiuta on 15 December 2006.
6 //
7 //  Copyright 2006-2007 Wincent Colaiuta.
8 //  This program is free software: you can redistribute it and/or modify
9 //  it under the terms of the GNU General Public License as published by
10 //  the Free Software Foundation, either version 3 of the License, or
11 //  (at your option) any later version.
12 //
13 //  This program is distributed in the hope that it will be useful,
14 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
15 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 //  GNU General Public License for more details.
17 //
18 //  You should have received a copy of the GNU General Public License
19 //  along with this program.  If not, see <http://www.gnu.org/licenses/>.
20 //
21
22 #import <Cocoa/Cocoa.h>
23
24 //! Abstract example class that demonstrates how to automate the running of application tests without having to link against the WOTest framework.
25 //!
26 //! In itself this class does nothing but if you write a subclass or category that implements an appropriate +load method (or a constructor) then you can use this class as a means of automatically running the application unit tests once the program has finished launching.
27 //!
28 //! A more advanced subclass could also be used to manage more complicated test configurations, such as checking for and loading plug-ins and the corresponding tests in an application with a plug-in based architecture.
29 //!
30 //! The test bundle itself can be automatically injected using the WOTestInjectBundle environment variable, and the WOTest framework can be inserted dynamically using the DYLD_INSERT_LIBRARIES environment variable without any modifications to the application code under testing.
31 //!
32 //! See the implementation file for an example +load method that a subclass or category would have to implement in order to take advantage of this class.
33 //!
34 @interface WOTestApplicationTestsController : NSObject {
35
36     unsigned    _trimPathComponents;
37     
38 }
39
40 //! For example, if your test controller was implemented in a source file at:
41 //!
42 //!     /Users/yourusername/work/project_name/source/tests/MyTestsController.m
43 //!
44 //! That path has 8 components (the root directory, "/", 6 other directories, and the source file); you could pass the inbuilt GCC __FILE__ macro as \p sourcePath, and pass 4 for \p count, and WOTest would omit the first 4 path components (8 take 4 equals 4) when printing paths in test results; as such the above path would be printed as:
45 //!
46 //!     tests/MyTestsController.m
47 //!
48 //! If you want to retain clickable test results in the Xcode build results window you should either use absolute paths or paths relative to the project source root.
49 //!
50 - (id)initWithPath:(const char *)sourcePath keepComponents:(unsigned)count;
51
52 - (void)runTests:(NSNotification *)aNotification;
53
54 @end