mirror of
https://github.com/samsonjs/Marshmallows.git
synced 2026-04-06 11:05:51 +00:00
162 lines
4.9 KiB
Objective-C
162 lines
4.9 KiB
Objective-C
//
|
|
// GHTestRunner.h
|
|
//
|
|
// Created by Gabriel Handford on 1/16/09.
|
|
// Copyright 2008 Gabriel Handford
|
|
//
|
|
// Permission is hereby granted, free of charge, to any person
|
|
// obtaining a copy of this software and associated documentation
|
|
// files (the "Software"), to deal in the Software without
|
|
// restriction, including without limitation the rights to use,
|
|
// copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
// copies of the Software, and to permit persons to whom the
|
|
// Software is furnished to do so, subject to the following
|
|
// conditions:
|
|
//
|
|
// The above copyright notice and this permission notice shall be
|
|
// included in all copies or substantial portions of the Software.
|
|
//
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
// OTHER DEALINGS IN THE SOFTWARE.
|
|
//
|
|
|
|
//! @cond DEV
|
|
|
|
//
|
|
// Portions of this file fall under the following license, marked with:
|
|
// GTM_BEGIN : GTM_END
|
|
//
|
|
// Copyright 2008 Google Inc.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
|
// use this file except in compliance with the License. You may obtain a copy
|
|
// of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
// License for the specific language governing permissions and limitations under
|
|
// the License.
|
|
//
|
|
|
|
#import "GHTestGroup.h"
|
|
#import "GHTestSuite.h"
|
|
|
|
@class GHTestRunner;
|
|
|
|
// Delegates can be guaranteed to be notified on the main thread (using #delegateOnMainThread)
|
|
@protocol GHTestRunnerDelegate <NSObject>
|
|
@optional
|
|
- (void)testRunnerDidStart:(GHTestRunner *)runner;
|
|
- (void)testRunner:(GHTestRunner *)runner didStartTest:(id<GHTest>)test; // Test started
|
|
- (void)testRunner:(GHTestRunner *)runner didUpdateTest:(id<GHTest>)test; // Test changed
|
|
- (void)testRunner:(GHTestRunner *)runner didEndTest:(id<GHTest>)test; // Test finished
|
|
- (void)testRunnerDidCancel:(GHTestRunner *)runner;
|
|
- (void)testRunnerDidEnd:(GHTestRunner *)runner;
|
|
|
|
- (void)testRunner:(GHTestRunner *)runner didLog:(NSString *)message; // Runner logged message
|
|
- (void)testRunner:(GHTestRunner *)runner test:(id<GHTest>)test didLog:(NSString *)message; // Test logged message
|
|
@end
|
|
|
|
/*!
|
|
Runs the tests.
|
|
Tests are run a separate thread though delegates are called on the
|
|
main thread by default (see #delegateOnMainThread).
|
|
*/
|
|
@interface GHTestRunner : NSObject <GHTestDelegate> {
|
|
|
|
id<GHTest> test_; // The test to run; Could be a GHTestGroup (suite), GHTestGroup (test case), or GHTest (target/selector)
|
|
|
|
NSObject<GHTestRunnerDelegate> *delegate_; // weak
|
|
|
|
GHTestOptions options_;
|
|
|
|
BOOL running_;
|
|
BOOL cancelling_;
|
|
|
|
NSTimeInterval startInterval_;
|
|
|
|
NSOperationQueue *operationQueue_; //! If running a suite in operation queue
|
|
}
|
|
|
|
@property (retain) id<GHTest> test;
|
|
@property (assign) NSObject<GHTestRunnerDelegate> *delegate;
|
|
@property (assign) GHTestOptions options;
|
|
@property (readonly) GHTestStats stats;
|
|
@property (readonly, getter=isRunning) BOOL running;
|
|
@property (readonly, getter=isCancelling) BOOL cancelling;
|
|
@property (readonly) NSTimeInterval interval;
|
|
@property (retain, nonatomic) NSOperationQueue *operationQueue;
|
|
|
|
|
|
/*!
|
|
Create runner for test.
|
|
@param test
|
|
*/
|
|
- (id)initWithTest:(id<GHTest>)test;
|
|
|
|
/*!
|
|
Create runner for all tests.
|
|
@see GHTesting#loadAllTestCases.
|
|
@result Runner
|
|
*/
|
|
+ (GHTestRunner *)runnerForAllTests;
|
|
|
|
/*!
|
|
Create runner for test suite.
|
|
@param suite
|
|
@result Runner
|
|
*/
|
|
+ (GHTestRunner *)runnerForSuite:(GHTestSuite *)suite;
|
|
|
|
/*!
|
|
Create runner for class and method.
|
|
@param testClassName
|
|
@param methodName
|
|
@result Runner
|
|
*/
|
|
+ (GHTestRunner *)runnerForTestClassName:(NSString *)testClassName methodName:(NSString *)methodName;
|
|
|
|
/*!
|
|
Get the runner from the environment.
|
|
If the TEST env is set, then we will only run that test case or test method.
|
|
*/
|
|
+ (GHTestRunner *)runnerFromEnv;
|
|
|
|
/*!
|
|
Run the test runner. Usually called from the test main.
|
|
Reads the TEST environment variable and filters on that; or all tests are run.
|
|
@result 0 is success, otherwise the failure count
|
|
*/
|
|
+ (int)run;
|
|
|
|
- (void)runInBackground;
|
|
|
|
/*!
|
|
Start the test runner with the default test.
|
|
@result 0 is success, otherwise the failure count
|
|
*/
|
|
- (int)runTests;
|
|
|
|
- (void)cancel;
|
|
|
|
- (void)setInParallel:(BOOL)inParallel;
|
|
- (BOOL)isInParallel;
|
|
|
|
/*!
|
|
Write message to console.
|
|
*/
|
|
- (void)log:(NSString *)message;
|
|
|
|
@end
|
|
|
|
//! @endcond
|
|
|