FBControlCore/Configuration/FBTestLaunchConfiguration.m (79 lines of code) (raw):
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#import "FBTestLaunchConfiguration.h"
#import "FBCollectionInformation.h"
#import "FBCollectionOperations.h"
#import "FBControlCoreError.h"
#import "FBiOSTarget.h"
#import "FBXCTestCommands.h"
#import "FBXCTestShimConfiguration.h"
#import "FBFuture+Sync.h"
@implementation FBTestLaunchConfiguration
- (instancetype)initWithTestBundle:(FBBundleDescriptor *)testBundle applicationLaunchConfiguration:(FBApplicationLaunchConfiguration *)applicationLaunchConfiguration testHostBundle:(nullable FBBundleDescriptor *)testHostBundle timeout:(NSTimeInterval)timeout initializeUITesting:(BOOL)initializeUITesting useXcodebuild:(BOOL)useXcodebuild testsToRun:(NSSet<NSString *> *)testsToRun testsToSkip:(NSSet<NSString *> *)testsToSkip targetApplicationBundle:(nullable FBBundleDescriptor *)targetApplicationBundle xcTestRunProperties:(NSDictionary *)xcTestRunProperties resultBundlePath:(NSString *)resultBundlePath reportActivities:(BOOL)reportActivities coverageDirectoryPath:(NSString *)coverageDirectoryPath logDirectoryPath:(nullable NSString *)logDirectoryPath
{
self = [super init];
if (!self) {
return nil;
}
_testBundle = testBundle;
_applicationLaunchConfiguration = applicationLaunchConfiguration;
_testHostBundle = testHostBundle;
_timeout = timeout;
_shouldInitializeUITesting = initializeUITesting;
_shouldUseXcodebuild = useXcodebuild;
_testsToRun = testsToRun;
_testsToSkip = testsToSkip;
_targetApplicationBundle = targetApplicationBundle;
_xcTestRunProperties = xcTestRunProperties;
_resultBundlePath = resultBundlePath;
_reportActivities = reportActivities;
_coverageDirectoryPath = coverageDirectoryPath;
_logDirectoryPath = logDirectoryPath;
return self;
}
#pragma mark NSCopying
- (instancetype)copyWithZone:(NSZone *)zone
{
return self;
}
#pragma mark NSObject
- (BOOL)isEqual:(FBTestLaunchConfiguration *)configuration
{
if (![configuration isKindOfClass:self.class]) {
return NO;
}
return (self.testBundle == configuration.testBundle || [self.testBundle isEqualTo:configuration.testBundle]) &&
(self.applicationLaunchConfiguration == configuration.applicationLaunchConfiguration || [self.applicationLaunchConfiguration isEqual:configuration.applicationLaunchConfiguration]) &&
(self.testHostBundle == configuration.testHostBundle || [self.testHostBundle isEqual:configuration.testHostBundle]) &&
(self.targetApplicationBundle == configuration.targetApplicationBundle || [self.targetApplicationBundle isEqual:configuration.targetApplicationBundle]) &&
(self.testsToRun == configuration.testsToRun || [self.testsToRun isEqual:configuration.testsToRun]) &&
(self.testsToSkip == configuration.testsToSkip || [self.testsToSkip isEqual:configuration.testsToSkip]) &&
self.timeout == configuration.timeout &&
self.shouldInitializeUITesting == configuration.shouldInitializeUITesting &&
self.shouldUseXcodebuild == configuration.shouldUseXcodebuild &&
(self.xcTestRunProperties == configuration.xcTestRunProperties || [self.xcTestRunProperties isEqual:configuration.xcTestRunProperties]) &&
(self.resultBundlePath == configuration.resultBundlePath || [self.resultBundlePath isEqual:configuration.resultBundlePath]) &&
(self.coverageDirectoryPath == configuration.coverageDirectoryPath || [self.coverageDirectoryPath isEqualToString:configuration.coverageDirectoryPath]) &&
(self.logDirectoryPath == configuration.logDirectoryPath || [self.logDirectoryPath isEqualToString:configuration.logDirectoryPath]);
}
- (NSUInteger)hash
{
return self.testBundle.hash ^ self.applicationLaunchConfiguration.hash ^ self.testHostBundle.hash ^ (unsigned long) self.timeout ^ (unsigned long) self.shouldInitializeUITesting ^ (unsigned long) self.shouldUseXcodebuild ^ self.testsToRun.hash ^ self.testsToSkip.hash ^ self.targetApplicationBundle.hash ^ self.xcTestRunProperties.hash ^ self.resultBundlePath.hash ^ self.coverageDirectoryPath.hash ^ self.logDirectoryPath.hash;
}
- (NSString *)description
{
return [NSString stringWithFormat:
@"FBTestLaunchConfiguration TestBundle %@ | AppConfig %@ | HostBundle %@ | UITesting %d | UseXcodebuild %d | TestsToRun %@ | TestsToSkip %@ | Target application bundle %@ xcTestRunProperties %@ | ResultBundlePath %@ | CoverageDirPath %@ | LogDirectoryPath %@" ,
self.testBundle,
self.applicationLaunchConfiguration,
self.testHostBundle,
self.shouldInitializeUITesting,
self.shouldUseXcodebuild,
self.testsToRun,
self.testsToSkip,
self.targetApplicationBundle,
self.xcTestRunProperties,
self.resultBundlePath,
self.coverageDirectoryPath,
self.logDirectoryPath
];
}
@end