aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar gtm.daemon <gtm.daemon@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3>2010-11-04 22:00:47 +0000
committerGravatar gtm.daemon <gtm.daemon@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3>2010-11-04 22:00:47 +0000
commit2e0d716e8fe85d33f1b68e2830d2f33c79dd8289 (patch)
tree1cbf70170d2a4c66bc708d02edb47e0bf5f4f95e
parent5dcfbf8df7de8cbdc2dbd699cdb980b4d18fb1c7 (diff)
[Author: dmaclach]
Clean up GTMServiceManagement so that it works with sockets. Add better tests. R=thomasvl DELTA=478 (303 added, 109 deleted, 66 changed)
-rw-r--r--Foundation/GTMServiceManagement.c295
-rw-r--r--Foundation/GTMServiceManagement.h4
-rw-r--r--Foundation/GTMServiceManagementTest.m82
-rw-r--r--Foundation/GTMServiceManagementTestingHarness.c31
-rw-r--r--GTM.xcodeproj/project.pbxproj314
5 files changed, 557 insertions, 169 deletions
diff --git a/Foundation/GTMServiceManagement.c b/Foundation/GTMServiceManagement.c
index d6b009d..20fb6cc 100644
--- a/Foundation/GTMServiceManagement.c
+++ b/Foundation/GTMServiceManagement.c
@@ -16,6 +16,15 @@
// the License.
//
+// As per http://openp2p.com/pub/a/oreilly/ask_tim/2001/codepolicy.html
+// The following functions
+// open_devnull
+// spc_sanitize_files
+// spc_drop_privileges
+// are derived from Chapter 1 of "Secure Programming Cookbook for C and C++" by
+// John Viega and Matt Messier. Copyright 2003 O'Reilly & Associates.
+// ISBN 0-596-00394-3
+
// Note: launch_data_t have different ownership semantics than CFType/NSObjects.
// In general if you create one, you are responsible for releasing it.
// However, if you add it to a collection (LAUNCH_DATA_DICTIONARY,
@@ -25,6 +34,10 @@
// launch_data_t can only be in one collection at any given time.
#include "GTMServiceManagement.h"
+#include <paths.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <vproc.h>
#if MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_4
@@ -271,7 +284,9 @@ exit:
if (error) {
*error = local_error;
} else if (local_error) {
+#ifdef DEBUG
CFShow(local_error);
+#endif // DEBUG
CFRelease(local_error);
}
return result;
@@ -394,92 +409,182 @@ exit:
if (error) {
*error = local_error;
} else if (local_error) {
+#ifdef DEBUG
CFShow(local_error);
+#endif // DEBUG
CFRelease(local_error);
}
return cf_type_ref;
}
+// open the standard file descs to devnull.
+static int open_devnull(int fd) {
+ FILE *f = NULL;
+
+ if (fd == STDIN_FILENO) {
+ f = freopen(_PATH_DEVNULL, "rb", stdin);
+ }
+ else if (fd == STDOUT_FILENO) {
+ f = freopen(_PATH_DEVNULL, "wb", stdout);
+ }
+ else if (fd == STDERR_FILENO) {
+ f = freopen(_PATH_DEVNULL, "wb", stderr);
+ }
+ return (f && fileno(f) == fd);
+}
+
+void spc_sanitize_files(void) {
+ int standard_fds[] = { STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO };
+ int standard_fds_count = sizeof(standard_fds) / sizeof(standard_fds[0]);
+
+ // Make sure all open descriptors other than the standard ones are closed
+ int fds = getdtablesize();
+ for (int fd = standard_fds_count; fd < fds; fd++) close(fd);
+
+ // Verify that the standard descriptors are open. If they're not, attempt to
+ // open them using /dev/null. If any are unsuccessful, abort.
+ for (int fd = 0; fd < standard_fds_count; fd++) {
+ struct stat st;
+ if (fstat(fd, &st) == -1 && (errno != EBADF || !open_devnull(fd))) {
+ abort();
+ }
+ }
+}
+
+void spc_drop_privileges(void) {
+ gid_t newgid = getgid(), oldgid = getegid();
+ uid_t newuid = getuid(), olduid = geteuid();
+
+ // If root privileges are to be dropped, be sure to pare down the ancillary
+ // groups for the process before doing anything else because the setgroups()
+ // system call requires root privileges. Drop ancillary groups regardless of
+ // whether privileges are being dropped temporarily or permanently.
+ if (!olduid) setgroups(1, &newgid);
+
+ if (newgid != oldgid) {
+ if (setregid(-1, newgid) == -1) {
+ abort();
+ }
+ }
+
+ if (newuid != olduid) {
+ if (setregid(-1, newuid) == -1) {
+ abort();
+ }
+ }
+
+ // verify that the changes were successful
+ if (newgid != oldgid && (setegid(oldgid) != -1 || getegid() != newgid)) {
+ abort();
+ }
+ if (newuid != olduid && (seteuid(olduid) != -1 || geteuid() != newuid)) {
+ abort();
+ }
+}
+
Boolean GTMSMJobSubmit(CFDictionaryRef cf_job, CFErrorRef *error) {
+ // We launch our jobs using launchctl instead of doing it by hand
+ // because launchctl does a whole pile of parsing of the job internally
+ // to handle the sockets cases that we don't want to duplicate here.
+ int fd = -1;
+ CFDataRef xmlData = NULL;
+ char fileName[] = _PATH_TMP "GTMServiceManagement.XXXXXX";
CFErrorRef local_error = NULL;
- launch_data_t launch_job = GTMLaunchDataCreateFromCFType(cf_job,
- &local_error);
- if (!local_error) {
- launch_data_t jobs = launch_data_alloc(LAUNCH_DATA_ARRAY);
- launch_data_array_set_index(jobs, launch_job, 0);
- launch_data_t msg = launch_data_alloc(LAUNCH_DATA_DICTIONARY);
- launch_data_dict_insert(msg, jobs, LAUNCH_KEY_SUBMITJOB);
- launch_data_t resp = launch_msg(msg);
- if (resp) {
- launch_data_type_t resp_type = launch_data_get_type(resp);
- switch (resp_type) {
- case LAUNCH_DATA_ARRAY:
- for (size_t i = 0; i < launch_data_array_get_count(jobs); i++) {
- launch_data_t job_response = launch_data_array_get_index(resp, i);
- launch_data_t job = launch_data_array_get_index(jobs, i);
- launch_data_t job_label
- = launch_data_dict_lookup(job, LAUNCH_JOBKEY_LABEL);
- const char *job_string
- = job_label ? launch_data_get_string(job_label) : "Unlabeled job";
- if (LAUNCH_DATA_ERRNO == launch_data_get_type(job_response)) {
- int job_err = launch_data_get_errno(job_response);
- if (job_err != 0) {
- // We only keep the last error
- if (local_error) {
- CFRelease(local_error);
- local_error = NULL;
- }
- switch (job_err) {
- case EEXIST:
- local_error
- = GTMCFLaunchCreateUnlocalizedError(job_err,
- CFSTR("%s already loaded"),
- job_string);
- break;
- case ESRCH:
- local_error
- = GTMCFLaunchCreateUnlocalizedError(job_err,
- CFSTR("%s not loaded"),
- job_string);
- break;
- default:
- local_error
- = GTMCFLaunchCreateUnlocalizedError(job_err,
- CFSTR("%s failed to load"),
- job_string);
- break;
- }
- }
- }
- }
- break;
- case LAUNCH_DATA_ERRNO: {
- int e = launch_data_get_errno(resp);
- if (e) {
- local_error = GTMCFLaunchCreateUnlocalizedError(e, CFSTR(""));
- }
- break;
- }
+ if (!cf_job) {
+ local_error
+ = GTMCFLaunchCreateUnlocalizedError(EINVAL,
+ CFSTR("NULL Job."),
+ NULL);
+ goto exit;
+ }
- default:
- local_error
- = GTMCFLaunchCreateUnlocalizedError(EINVAL,
- CFSTR("unknown response from launchd %d"),
- resp_type);
- break;
- }
- launch_data_free(resp);
- launch_data_free(msg);
- } else {
- local_error = GTMCFLaunchCreateUnlocalizedError(errno, CFSTR(""));
- }
+ CFStringRef jobLabel = CFDictionaryGetValue(cf_job,
+ CFSTR(LAUNCH_JOBKEY_LABEL));
+ if (!jobLabel) {
+ local_error
+ = GTMCFLaunchCreateUnlocalizedError(EINVAL,
+ CFSTR("Job missing label."),
+ NULL);
+ goto exit;
+ }
+
+ CFDictionaryRef jobDict = GTMSMJobCopyDictionary(jobLabel);
+ if (jobDict) {
+ CFRelease(jobDict);
+ local_error
+ = GTMCFLaunchCreateUnlocalizedError(EEXIST,
+ CFSTR("Job already exists %@."),
+ jobLabel);
+ goto exit;
+ }
+ xmlData = CFPropertyListCreateXMLData(NULL, cf_job);
+ if (!xmlData) {
+ local_error
+ = GTMCFLaunchCreateUnlocalizedError(EINVAL,
+ CFSTR("Invalid Job %@."),
+ jobLabel);
+ goto exit;
+ }
+
+ fd = mkstemp(fileName);
+ if (fd == -1) {
+ local_error
+ = GTMCFLaunchCreateUnlocalizedError(errno,
+ CFSTR("Unable to create %s."),
+ fileName);
+ goto exit;
+ }
+ write(fd, CFDataGetBytePtr(xmlData), CFDataGetLength(xmlData));
+ close(fd);
+
+ pid_t childpid = fork();
+ if (childpid == -1) {
+ local_error
+ = GTMCFLaunchCreateUnlocalizedError(errno,
+ CFSTR("Unable to fork."),
+ NULL);
+ goto exit;
+ }
+ if (childpid != 0) {
+ // Parent process
+ int status = 0;
+ pid_t pid = -1;
+ do {
+ pid = waitpid(childpid, &status, 0);
+ } while (pid == -1 && errno == EINTR);
+ if (pid == -1 || WEXITSTATUS(status)) {
+ local_error
+ = GTMCFLaunchCreateUnlocalizedError(errno,
+ CFSTR("Child Process Error.\n"
+ "Cmd: /bin/launchctl\n"
+ "pid: %d\n"
+ "ExitStatus: %d\n"),
+ childpid, WEXITSTATUS(status));
+ goto exit;
+ }
+ } else {
+ // Child Process
+ spc_sanitize_files();
+ spc_drop_privileges();
+ const char *args[] = { "launchctl", "load", fileName, NULL };
+ execve("/bin/launchctl", (char* const*)args, NULL);
+ abort();
+ }
+exit:
+ if (xmlData) {
+ CFRelease(xmlData);
+ }
+ if (fd != -1) {
+ unlink(fileName);
}
if (error) {
*error = local_error;
} else if (local_error) {
+#ifdef DEBUG
CFShow(local_error);
+#endif // DEBUG
CFRelease(local_error);
}
return local_error == NULL;
@@ -520,7 +625,9 @@ CFDictionaryRef GTMSMJobCheckIn(CFErrorRef *error) {
if (error) {
*error = local_error;
} else if (local_error) {
+#ifdef DEBUG
CFShow(local_error);
+#endif // DEBUG
CFRelease(local_error);
}
return check_in_dict;
@@ -556,7 +663,9 @@ Boolean GTMSMJobRemove(CFStringRef jobLabel, CFErrorRef *error) {
if (error) {
*error = local_error;
} else if (local_error) {
+#ifdef DEBUG
CFShow(local_error);
+#endif // DEBUG
CFRelease(local_error);
}
return local_error == NULL;
@@ -580,7 +689,9 @@ CFDictionaryRef GTMSMJobCopyDictionary(CFStringRef jobLabel) {
launch_data_free(resp);
}
if (error) {
+#ifdef DEBUG
CFShow(error);
+#endif // DEBUG
CFRelease(error);
}
return dict;
@@ -608,10 +719,54 @@ CFDictionaryRef GTMSMCopyAllJobDictionaries(void) {
= GTMCFLaunchCreateUnlocalizedError(errno, CFSTR(""));
}
if (error) {
+#ifdef DEBUG
CFShow(error);
+#endif // DEBUG
CFRelease(error);
}
return dict;
}
+// Some private SPIs defined by apple in the launchd sources
+// http://opensource.apple.com/source/launchd/launchd-258.25/launchd/src/
+// and
+// http://opensource.apple.com/source/launchd/launchd-329.3/launchd/src/
+// It turns out that they renamed the enum that I need to use between 10.5 and
+// 10.6. Luckily if we request the 10_5 value on 10_6 we get an error
+// so we just ask for the 10_5 value first, and then the 10_6 value second.
+
+typedef enum {
+ VPROC_GSK_ENVIRONMENT_10_5 = 10,
+ VPROC_GSK_ENVIRONMENT_10_6 = 11
+} vproc_gsk_t;
+
+extern vproc_err_t vproc_swap_complex(vproc_t vp,
+ vproc_gsk_t key,
+ launch_data_t inval,
+ launch_data_t *outval);
+
+CFDictionaryRef GTMCopyLaunchdExports(void) {
+ launch_data_t resp;
+ CFDictionaryRef dict = NULL;
+ vproc_err_t err = vproc_swap_complex(NULL,
+ VPROC_GSK_ENVIRONMENT_10_5,
+ NULL,
+ &resp);
+ if (err) {
+ err = vproc_swap_complex(NULL, VPROC_GSK_ENVIRONMENT_10_6, NULL, &resp);
+ }
+ if (err == NULL) {
+ CFErrorRef error = NULL;
+ dict = GTMCFTypeCreateFromLaunchData(resp, false, &error);
+ if (error) {
+#ifdef DEBUG
+ CFShow(error);
+#endif // DEBUG
+ CFRelease(error);
+ }
+ launch_data_free(resp);
+ }
+ return dict;
+}
+
#endif // if MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_4
diff --git a/Foundation/GTMServiceManagement.h b/Foundation/GTMServiceManagement.h
index dc7f5ff..7a8e6b2 100644
--- a/Foundation/GTMServiceManagement.h
+++ b/Foundation/GTMServiceManagement.h
@@ -68,6 +68,10 @@ CFTypeRef GTMCFTypeCreateFromLaunchData(launch_data_t ldata,
bool convert_non_standard_objects,
CFErrorRef *error);
+// Returns the list of exports defined by launchd.
+// Caller is takes ownership of the returned type.
+CFDictionaryRef GTMCopyLaunchdExports();
+
GTM_EXTERN_C_END
#endif // if MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_4
diff --git a/Foundation/GTMServiceManagementTest.m b/Foundation/GTMServiceManagementTest.m
index 45bf478..a2eda4a 100644
--- a/Foundation/GTMServiceManagementTest.m
+++ b/Foundation/GTMServiceManagementTest.m
@@ -22,10 +22,18 @@
#import "GTMSenTestCase.h"
#import "GTMGarbageCollection.h"
+#import <servers/bootstrap.h>
#define STANDARD_JOB_LABEL "com.apple.launchctl.Background"
#define OUR_JOB_LABEL "com.google.gtm.GTMServiceManagementTest.job"
#define BAD_JOB_LABEL "com.google.gtm.GTMServiceManagementTest.badjob"
+#define TEST_HARNESS_LABEL "com.google.gtm.GTMServiceManagementTestHarness"
+#define GTM_MACH_PORT_NAME "GTMServiceManagementTestingHarnessMachPort"
+
+static NSString const *kGTMSocketKey
+ = @"COM_GOOGLE_GTM_GTMSERVICEMANAGEMENT_TEST_SOCKET";
+static NSString const *kGTMSocketName
+ = @"GTMServiceManagementTesting";
@interface GTMServiceManagementTest : GTMTestCase
@end
@@ -114,14 +122,6 @@
STAssertEquals([(NSError *)error code], (NSInteger)EEXIST, nil);
CFRelease(error);
- NSDictionary *emptyJob
- = [NSDictionary dictionaryWithObject:@"Empty Job"
- forKey:@LAUNCH_JOBKEY_LABEL];
- isGood = GTMSMJobSubmit((CFDictionaryRef)emptyJob, &error);
- STAssertFalse(isGood, nil);
- STAssertEquals([(NSError *)error code], (NSInteger)EINVAL, nil);
- CFRelease(error);
-
NSDictionary *goodJob
= [NSDictionary dictionaryWithObjectsAndKeys:
@OUR_JOB_LABEL, @LAUNCH_JOBKEY_LABEL,
@@ -142,16 +142,76 @@
CFRelease(error);
}
+- (void)testCopyExports {
+ CFDictionaryRef exports = GTMCopyLaunchdExports();
+ STAssertNotNULL(exports, nil);
+ NSString *user = [(NSDictionary *)exports objectForKey:@"USER"];
+ STAssertEqualObjects(user, NSUserName(), nil);
+ CFRelease(exports);
+}
+
- (void)testCheckin {
CFErrorRef error = NULL;
- // TODO(dmaclach): to actually test checkin we would need a subprocess to
- // launch, which is too complex at this point. Perhaps
- // in the future if bugs are found.
+ // Can't check ourselves in
NSDictionary *badTest
= GTMCFAutorelease(GTMSMJobCheckIn(&error));
STAssertNil(badTest, nil);
STAssertNotNULL(error, nil);
CFRelease(error);
+
+ NSBundle *testBundle = [NSBundle bundleForClass:[self class]];
+ STAssertNotNil(testBundle, nil);
+ NSString *testHarnessPath
+ = [testBundle pathForResource:@"GTMServiceManagementTestingHarness"
+ ofType:nil];
+ STAssertNotNil(testHarnessPath, nil);
+ NSDictionary *machServices
+ = [NSDictionary dictionaryWithObjectsAndKeys:
+ [NSNumber numberWithBool:YES], @GTM_MACH_PORT_NAME,
+ nil];
+
+ NSDictionary *socket
+ = [NSDictionary dictionaryWithObjectsAndKeys:
+ kGTMSocketKey,@LAUNCH_JOBSOCKETKEY_SECUREWITHKEY,
+ nil];
+
+ NSDictionary *sockets
+ = [NSDictionary dictionaryWithObjectsAndKeys:
+ socket, kGTMSocketName,
+ nil];
+
+ // LAUNCH_JOBKEY_WAITFORDEBUGGER left commented out
+ // so that it can easily be reenabled for debugging.
+ NSDictionary *job = [NSDictionary dictionaryWithObjectsAndKeys:
+ @TEST_HARNESS_LABEL, @LAUNCH_JOBKEY_LABEL,
+ testHarnessPath, @LAUNCH_JOBKEY_PROGRAM,
+ [NSNumber numberWithBool:YES], @LAUNCH_JOBKEY_RUNATLOAD,
+ [NSNumber numberWithBool:YES], @LAUNCH_JOBKEY_DEBUG,
+ //[NSNumber numberWithBool:YES], @LAUNCH_JOBKEY_WAITFORDEBUGGER,
+ machServices, @LAUNCH_JOBKEY_MACHSERVICES,
+ sockets, @LAUNCH_JOBKEY_SOCKETS,
+ nil];
+
+ // This is allowed to fail.
+ GTMSMJobRemove(CFSTR(TEST_HARNESS_LABEL), NULL);
+
+ BOOL isGood = GTMSMJobSubmit((CFDictionaryRef)job, &error);
+ STAssertTrue(isGood, @"Error %@", error);
+
+ NSDictionary* exports = GTMCFAutorelease(GTMCopyLaunchdExports());
+ STAssertNotNULL(exports, nil);
+ NSString *socketPath = [exports objectForKey:kGTMSocketKey];
+ STAssertNotNULL(socketPath, nil);
+ STAssertEqualObjects([socketPath lastPathComponent], kGTMSocketName, nil);
+
+ mach_port_t sp = 0;
+ kern_return_t rt = bootstrap_look_up(bootstrap_port,
+ GTM_MACH_PORT_NAME,
+ &sp);
+ STAssertNotEquals(sp, (mach_port_t)0, nil);
+ STAssertEquals(rt, KERN_SUCCESS, nil);
+ isGood = GTMSMJobRemove(CFSTR(TEST_HARNESS_LABEL), &error);
+ STAssertTrue(isGood, @"Error %@", error);
}
@end
diff --git a/Foundation/GTMServiceManagementTestingHarness.c b/Foundation/GTMServiceManagementTestingHarness.c
new file mode 100644
index 0000000..dadff13
--- /dev/null
+++ b/Foundation/GTMServiceManagementTestingHarness.c
@@ -0,0 +1,31 @@
+//
+// GTMServiceManagementTestingHarness.c
+//
+// Copyright 2010 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.
+//
+
+#include "GTMServiceManagement.h"
+
+#if MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_4
+
+int main(int argc, const char** argv) {
+ CFErrorRef error = NULL;
+ CFDictionaryRef dict = GTMSMJobCheckIn(&error);
+ if (!dict) {
+ CFShow(error);
+ }
+ return 0;
+}
+#endif // if MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_4
diff --git a/GTM.xcodeproj/project.pbxproj b/GTM.xcodeproj/project.pbxproj
index 0696e02..38afd17 100644
--- a/GTM.xcodeproj/project.pbxproj
+++ b/GTM.xcodeproj/project.pbxproj
@@ -39,28 +39,20 @@
/* Begin PBXBuildFile section */
0B1B9B8710FECD870084EE4B /* GTMStringEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B1B9B8410FECD870084EE4B /* GTMStringEncoding.h */; settings = {ATTRIBUTES = (Public, ); }; };
0B1B9B8810FECD870084EE4B /* GTMStringEncoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B1B9B8510FECD870084EE4B /* GTMStringEncoding.m */; };
- 0B1B9B8A10FECDA00084EE4B /* GTMStringEncodingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B1B9B8610FECD870084EE4B /* GTMStringEncodingTest.m */; };
0BFAD4C8104D06EF002BEB27 /* GTMNSDictionary+CaseInsensitive.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BFAD4C2104D06EF002BEB27 /* GTMNSDictionary+CaseInsensitive.h */; settings = {ATTRIBUTES = (Public, ); }; };
0BFAD4C9104D06EF002BEB27 /* GTMNSDictionary+CaseInsensitive.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BFAD4C3104D06EF002BEB27 /* GTMNSDictionary+CaseInsensitive.m */; };
- 0BFAD4CC104D06FE002BEB27 /* GTMNSDictionary+CaseInsensitiveTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BFAD4C4104D06EF002BEB27 /* GTMNSDictionary+CaseInsensitiveTest.m */; };
1012DF560F4252BD004794DB /* GTMAbstractDOListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 1012DF540F4252BD004794DB /* GTMAbstractDOListener.h */; settings = {ATTRIBUTES = (Public, ); }; };
1012DF570F4252BD004794DB /* GTMAbstractDOListener.m in Sources */ = {isa = PBXBuildFile; fileRef = 1012DF550F4252BD004794DB /* GTMAbstractDOListener.m */; };
- 1012DF5A0F425525004794DB /* GTMAbstractDOListenerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1012DF590F425525004794DB /* GTMAbstractDOListenerTest.m */; };
- 108930850F4CCB380018D4A0 /* GTMTransientRootPortProxyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 108930840F4CCB380018D4A0 /* GTMTransientRootPortProxyTest.m */; };
10998E8F0F4B593E007F179D /* GTMTransientRootProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 10A4028E0F44DB2B003B511C /* GTMTransientRootProxy.m */; };
10998E920F4B5952007F179D /* GTMTransientRootProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 10A4028F0F44DB2B003B511C /* GTMTransientRootProxy.h */; settings = {ATTRIBUTES = (Public, ); }; };
10998EF40F4B5D1A007F179D /* GTMTransientRootPortProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 10998EF20F4B5D1A007F179D /* GTMTransientRootPortProxy.m */; };
10998EF50F4B5D1A007F179D /* GTMTransientRootPortProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 10998EF30F4B5D1A007F179D /* GTMTransientRootPortProxy.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 10998F8B0F4B5F1B007F179D /* GTMTransientRootProxyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 10A4028D0F44DB2B003B511C /* GTMTransientRootProxyTest.m */; };
33C372A60DD8A88500E97817 /* GTMNSString+URLArguments.h in Headers */ = {isa = PBXBuildFile; fileRef = 33C372A40DD8A88500E97817 /* GTMNSString+URLArguments.h */; settings = {ATTRIBUTES = (Public, ); }; };
33C372A70DD8A88500E97817 /* GTMNSString+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = 33C372A50DD8A88500E97817 /* GTMNSString+URLArguments.m */; };
- 33C372B40DD8A93000E97817 /* GTMNSString+URLArgumentsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 33C372AE0DD8A8D700E97817 /* GTMNSString+URLArgumentsTest.m */; };
33C374380DD8D44800E97817 /* GTMNSDictionary+URLArguments.h in Headers */ = {isa = PBXBuildFile; fileRef = 33C374360DD8D44800E97817 /* GTMNSDictionary+URLArguments.h */; settings = {ATTRIBUTES = (Public, ); }; };
33C374390DD8D44800E97817 /* GTMNSDictionary+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = 33C374370DD8D44800E97817 /* GTMNSDictionary+URLArguments.m */; };
- 33C3745F0DD8D85B00E97817 /* GTMNSDictionary+URLArgumentsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 33C3745E0DD8D85B00E97817 /* GTMNSDictionary+URLArgumentsTest.m */; };
629445400EDDF647009295EA /* GTMNSArray+Merge.h in Headers */ = {isa = PBXBuildFile; fileRef = 6294453E0EDDF647009295EA /* GTMNSArray+Merge.h */; settings = {ATTRIBUTES = (Public, ); }; };
629445410EDDF647009295EA /* GTMNSArray+Merge.m in Sources */ = {isa = PBXBuildFile; fileRef = 6294453F0EDDF647009295EA /* GTMNSArray+Merge.m */; };
- 6294454C0EDDF89A009295EA /* GTMNSArray+MergeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 6294454B0EDDF89A009295EA /* GTMNSArray+MergeTest.m */; };
7F3EB38E0E5E09C700A7A75E /* GTMNSImage+Scaling.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F3EB38C0E5E09C700A7A75E /* GTMNSImage+Scaling.h */; settings = {ATTRIBUTES = (Public, ); }; };
7F3EB38F0E5E09C700A7A75E /* GTMNSImage+Scaling.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F3EB38D0E5E09C700A7A75E /* GTMNSImage+Scaling.m */; };
7F3EB5540E5F0B0400A7A75E /* GTMUnitTestingImage.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BEEA90A0DA7446300894774 /* GTMUnitTestingImage.tiff */; };
@@ -97,26 +89,19 @@
8B1802420E25592200280961 /* GTMLargeTypeWindowMediumTextTest.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8B1802410E25592200280961 /* GTMLargeTypeWindowMediumTextTest.gtmUTState */; };
8B1B49180E5F8E2100A08972 /* GTMExceptionalInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B1B49160E5F8E2100A08972 /* GTMExceptionalInlines.h */; settings = {ATTRIBUTES = (Public, ); }; };
8B1B49190E5F8E2100A08972 /* GTMExceptionalInlines.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B1B49170E5F8E2100A08972 /* GTMExceptionalInlines.m */; };
- 8B1B49260E5F97C800A08972 /* GTMExceptionalInlinesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B1B491B0E5F904C00A08972 /* GTMExceptionalInlinesTest.m */; };
8B21BE9211532CDC00DD2686 /* GTMNSAnimatablePropertyContainerTest.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8B21BE9111532CDC00DD2686 /* GTMNSAnimatablePropertyContainerTest.xib */; };
8B21DE56117E5CB7000E004F /* GTMLocalizedString.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B21DE54117E5CB7000E004F /* GTMLocalizedString.h */; settings = {ATTRIBUTES = (Public, ); }; };
8B2789960EF855FB00D68C01 /* GTMUnitTestingWindow.10.5.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8B2789950EF855FB00D68C01 /* GTMUnitTestingWindow.10.5.6.tiff */; };
8B29078711F8D1BF0064F50F /* GTMNSFileHandle+UniqueName.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B29078511F8D1BF0064F50F /* GTMNSFileHandle+UniqueName.m */; };
- 8B29078811F8D1BF0064F50F /* GTMNSFileHandle+UniqueNameTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B29078611F8D1BF0064F50F /* GTMNSFileHandle+UniqueNameTest.m */; };
8B29080911F8E1630064F50F /* GTMNSFileHandle+UniqueName.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B29078511F8D1BF0064F50F /* GTMNSFileHandle+UniqueName.m */; };
8B29080A11F8E1670064F50F /* GTMNSFileHandle+UniqueName.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B29078411F8D1BF0064F50F /* GTMNSFileHandle+UniqueName.h */; settings = {ATTRIBUTES = (Public, ); }; };
8B307FF81056B773006C4C7A /* GTMNSNumber+64Bit.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B307FF61056B773006C4C7A /* GTMNSNumber+64Bit.m */; };
8B307FF91056B773006C4C7A /* GTMNSNumber+64Bit.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B307FF71056B773006C4C7A /* GTMNSNumber+64Bit.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8B3080151056B917006C4C7A /* GTMNSNumber+64BitTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3080141056B917006C4C7A /* GTMNSNumber+64BitTest.m */; };
- 8B3344210DBF7A36009FD32C /* GTMNSAppleScript+HandlerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3344170DBF7A36009FD32C /* GTMNSAppleScript+HandlerTest.m */; };
- 8B3344230DBF7A36009FD32C /* GTMNSAppleEventDescriptor+HandlerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B33441A0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+HandlerTest.m */; };
- 8B3344250DBF7A36009FD32C /* GTMNSAppleEventDescriptor+FoundationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B33441D0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+FoundationTest.m */; };
8B3345890DBF8A55009FD32C /* GTMNSAppleEvent+HandlerTest.applescript in AppleScript */ = {isa = PBXBuildFile; fileRef = 8B3344200DBF7A36009FD32C /* GTMNSAppleEvent+HandlerTest.applescript */; settings = {ATTRIBUTES = (Debug, ); }; };
8B3590160E8190FA0041E21C /* GTMTestTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3590150E8190FA0041E21C /* GTMTestTimer.h */; settings = {ATTRIBUTES = (Public, ); }; };
8B35901B0E8191750041E21C /* GTMTestTimerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B35901A0E8191750041E21C /* GTMTestTimerTest.m */; };
8B3AA9F10E033E23007E31B5 /* GTMValidatingContainers.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3AA9EF0E033E23007E31B5 /* GTMValidatingContainers.h */; settings = {ATTRIBUTES = (Public, ); }; };
8B3AA9F20E033E23007E31B5 /* GTMValidatingContainers.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3AA9F00E033E23007E31B5 /* GTMValidatingContainers.m */; };
- 8B3AA9F80E033E5F007E31B5 /* GTMValidatingContainersTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3AA9F70E033E5F007E31B5 /* GTMValidatingContainersTest.m */; };
8B3E292E0EEB53F8000681D8 /* GTMCarbonEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3E292A0EEB53F3000681D8 /* GTMCarbonEvent.m */; };
8B3E292F0EEB53F8000681D8 /* GTMCarbonEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3E292B0EEB53F3000681D8 /* GTMCarbonEvent.h */; settings = {ATTRIBUTES = (Public, ); }; };
8B3E2A3F0EEB564D000681D8 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F42E09AD0D19A62F00D5DDE0 /* Carbon.framework */; };
@@ -135,7 +120,6 @@
8B414E881226FB1000D0064F /* GTMServiceManagement.c in Sources */ = {isa = PBXBuildFile; fileRef = 8B414E861226FB1000D0064F /* GTMServiceManagement.c */; };
8B414E891226FB1000D0064F /* GTMServiceManagement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B414E871226FB1000D0064F /* GTMServiceManagement.h */; settings = {ATTRIBUTES = (Public, ); }; };
8B414E8B1226FB1800D0064F /* GTMServiceManagementTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B414E8A1226FB1800D0064F /* GTMServiceManagementTest.m */; };
- 8B455F5E1193870A00ABD707 /* GTMLocalizedStringTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B455F5D1193870A00ABD707 /* GTMLocalizedStringTest.m */; };
8B45A03A0DA46A2A001148C5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
8B45A0B80DA46A2F001148C5 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F42E089B0D199B1800D5DDE0 /* SenTestingKit.framework */; };
8B45A0D50DA46A57001148C5 /* GTMNSObject+UnitTesting.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE29C0D198D36009257D2 /* GTMNSObject+UnitTesting.m */; };
@@ -160,8 +144,6 @@
8B61FDC00E4CDB8000FF9C21 /* GTMStackTrace.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B61FDBF0E4CDB8000FF9C21 /* GTMStackTrace.m */; };
8B6C15930F356E6400E51E5D /* GTMNSObject+KeyValueObserving.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B6C15910F356E6400E51E5D /* GTMNSObject+KeyValueObserving.h */; settings = {ATTRIBUTES = (Public, ); }; };
8B6C15940F356E6400E51E5D /* GTMNSObject+KeyValueObserving.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6C15920F356E6400E51E5D /* GTMNSObject+KeyValueObserving.m */; };
- 8B6C161C0F3580DA00E51E5D /* GTMNSObject+KeyValueObservingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6C161B0F3580DA00E51E5D /* GTMNSObject+KeyValueObservingTest.m */; };
- 8B6F32080DA34A1B0052CA40 /* GTMObjC2RuntimeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6F32050DA34A1B0052CA40 /* GTMObjC2RuntimeTest.m */; };
8B6F32160DA34C830052CA40 /* GTMMethodCheckTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6F31F10DA347720052CA40 /* GTMMethodCheckTest.m */; };
8B6F4B630E8856CA00425D9F /* GTMDebugThreadValidation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B6F4B610E8856CA00425D9F /* GTMDebugThreadValidation.h */; settings = {ATTRIBUTES = (Public, ); }; };
8B6F4B640E8856CA00425D9F /* GTMDebugThreadValidation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6F4B620E8856CA00425D9F /* GTMDebugThreadValidation.m */; };
@@ -191,7 +173,6 @@
8B8B10F90EEB8B9E00E543D0 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F42E09AD0D19A62F00D5DDE0 /* Carbon.framework */; };
8B8EC87D0EF17C270044D13F /* GTMNSFileManager+Carbon.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8EC87B0EF17C270044D13F /* GTMNSFileManager+Carbon.h */; settings = {ATTRIBUTES = (Public, ); }; };
8B8EC87E0EF17C270044D13F /* GTMNSFileManager+Carbon.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B8EC87C0EF17C270044D13F /* GTMNSFileManager+Carbon.m */; };
- 8B8EC8800EF17C2F0044D13F /* GTMNSFileManager+CarbonTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B8EC87F0EF17C2F0044D13F /* GTMNSFileManager+CarbonTest.m */; };
8BA01B5D0F144BD800926923 /* GTMNSWorkspace+Running.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BA01B5B0F144BD800926923 /* GTMNSWorkspace+Running.m */; };
8BA01B5E0F144BD800926923 /* GTMNSWorkspace+Running.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA01B5C0F144BD800926923 /* GTMNSWorkspace+Running.h */; settings = {ATTRIBUTES = (Public, ); }; };
8BA7148111B57EC700EB4781 /* GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA7147E11B57EC700EB4781 /* GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.tiff */; };
@@ -252,22 +233,22 @@
8BB77A0511B5A09900AB31AF /* GTMGoogleSearchTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BB77A0311B5A09900AB31AF /* GTMGoogleSearchTest.m */; };
8BB77A0611B5A0A100AB31AF /* GTMGoogleSearch.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BB77A0211B5A09900AB31AF /* GTMGoogleSearch.m */; };
8BB7802E11B6C4EA00AB31AF /* GTMGoogleSearch.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BB77A0111B5A09900AB31AF /* GTMGoogleSearch.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8BC045C20DAE899100C2D1CA /* GTMGeometryUtilsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE2800D198D0E009257D2 /* GTMGeometryUtilsTest.m */; };
8BC046B90DAE8C4B00C2D1CA /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BC046B80DAE8C4B00C2D1CA /* ApplicationServices.framework */; };
8BC04CD80DB003D800C2D1CA /* GTMMethodCheck.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B6F31F40DA3489B0052CA40 /* GTMMethodCheck.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 8BC85150127A18D50046E0FB /* GTMServiceManagement.c in Sources */ = {isa = PBXBuildFile; fileRef = 8B414E861226FB1000D0064F /* GTMServiceManagement.c */; };
+ 8BC851D4127A19020046E0FB /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BC851D3127A19020046E0FB /* CoreFoundation.framework */; };
+ 8BC85202127A19370046E0FB /* GTMServiceManagementTestingHarness.c in Sources */ = {isa = PBXBuildFile; fileRef = 8BC85201127A19370046E0FB /* GTMServiceManagementTestingHarness.c */; };
+ 8BC8520E127A19B60046E0FB /* GTMServiceManagementTestingHarness in Resources */ = {isa = PBXBuildFile; fileRef = 8BC85131127A18AE0046E0FB /* GTMServiceManagementTestingHarness */; };
8BCB59F011C00ED6009B6C40 /* GTMNSScanner+Unsigned.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BCB59EE11C00ED6009B6C40 /* GTMNSScanner+Unsigned.h */; settings = {ATTRIBUTES = (Public, ); }; };
8BCB59F111C00ED6009B6C40 /* GTMNSScanner+Unsigned.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BCB59EF11C00ED6009B6C40 /* GTMNSScanner+Unsigned.m */; };
- 8BCB59F311C00EF6009B6C40 /* GTMNSScanner+UnsignedTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BCB59F211C00EF6009B6C40 /* GTMNSScanner+UnsignedTest.m */; };
8BD35B910FB22980009058F5 /* GTMNSScanner+JSON.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BD35B8E0FB22980009058F5 /* GTMNSScanner+JSON.h */; settings = {ATTRIBUTES = (Public, ); }; };
8BD35B920FB22980009058F5 /* GTMNSScanner+JSON.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BD35B8F0FB22980009058F5 /* GTMNSScanner+JSON.m */; };
- 8BD35B940FB22986009058F5 /* GTMNSScanner+JSONTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BD35B900FB22980009058F5 /* GTMNSScanner+JSONTest.m */; };
8BDB8A991152E1B200C411B1 /* GTMNSAnimatablePropertyContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BDB8A971152E1B200C411B1 /* GTMNSAnimatablePropertyContainer.h */; settings = {ATTRIBUTES = (Public, ); }; };
8BDB8A9A1152E1B200C411B1 /* GTMNSAnimatablePropertyContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BDB8A981152E1B200C411B1 /* GTMNSAnimatablePropertyContainer.m */; };
8BDB8C3A115329EC00C411B1 /* GTMNSAnimatablePropertyContainerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BDB8C39115329EC00C411B1 /* GTMNSAnimatablePropertyContainerTest.m */; };
8BE281B00DEC7E930035B3F8 /* GTMNSAppleScript+Handler.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3344190DBF7A36009FD32C /* GTMNSAppleScript+Handler.h */; settings = {ATTRIBUTES = (Public, ); }; };
8BE281B10DEC7E930035B3F8 /* GTMNSAppleEventDescriptor+Handler.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B33441C0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+Handler.h */; settings = {ATTRIBUTES = (Public, ); }; };
8BE281B20DEC7E930035B3F8 /* GTMNSAppleEventDescriptor+Foundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B33441F0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+Foundation.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8BE2836F0DED0F130035B3F8 /* GTMFourCharCodeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BE2836C0DED0F130035B3F8 /* GTMFourCharCodeTest.m */; };
8BE283730DED13AB0035B3F8 /* GTMFourCharCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BE2836D0DED0F130035B3F8 /* GTMFourCharCode.h */; settings = {ATTRIBUTES = (Public, ); }; };
8BE839AA0E8AF72E00C611B0 /* GTMDebugThreadValidationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BE839A80E8AF72500C611B0 /* GTMDebugThreadValidationTest.m */; };
8BE869730DBE89C100749827 /* GTMNSBezierPath+RoundRectTest.x86_64.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BE869720DBE89C100749827 /* GTMNSBezierPath+RoundRectTest.x86_64.tiff */; };
@@ -286,32 +267,67 @@
8BFE15970FB0F3C9001BE894 /* GTMSenTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7DCE180DFF39850017E983 /* GTMSenTestCase.m */; };
8BFE17F40FB1F6E5001BE894 /* GTMABAddressBook.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8BFE13B20FB0F2B9001BE894 /* GTMABAddressBook.strings */; };
8BFE17F50FB1F6EA001BE894 /* phone.png in Resources */ = {isa = PBXBuildFile; fileRef = 8BFE13B50FB0F2B9001BE894 /* phone.png */; };
+ 8BFE6E7A1282371200B5C894 /* GTMAbstractDOListenerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1012DF590F425525004794DB /* GTMAbstractDOListenerTest.m */; };
+ 8BFE6E7B1282371200B5C894 /* GTMCalculatedRangeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F47F1D2F0D4914AD00925B8F /* GTMCalculatedRangeTest.m */; };
+ 8BFE6E7C1282371200B5C894 /* GTMExceptionalInlinesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B1B491B0E5F904C00A08972 /* GTMExceptionalInlinesTest.m */; };
+ 8BFE6E7D1282371200B5C894 /* GTMFileSystemKQueueTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F49FA88A0EEF303D00077669 /* GTMFileSystemKQueueTest.m */; };
+ 8BFE6E7E1282371200B5C894 /* GTMFourCharCodeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BE2836C0DED0F130035B3F8 /* GTMFourCharCodeTest.m */; };
+ 8BFE6E7F1282371200B5C894 /* GTMGeometryUtilsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE2800D198D0E009257D2 /* GTMGeometryUtilsTest.m */; };
+ 8BFE6E801282371200B5C894 /* GTMLightweightProxyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F41711340ECDFBD500B9B276 /* GTMLightweightProxyTest.m */; };
+ 8BFE6E811282371200B5C894 /* GTMLocalizedStringTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B455F5D1193870A00ABD707 /* GTMLocalizedStringTest.m */; };
+ 8BFE6E821282371200B5C894 /* GTMLogger+ASLTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F98681950E2C20C100CEE8BF /* GTMLogger+ASLTest.m */; };
+ 8BFE6E831282371200B5C894 /* GTMLoggerRingBufferWriterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F95803F80E2FB0760049A088 /* GTMLoggerRingBufferWriterTest.m */; };
+ 8BFE6E841282371200B5C894 /* GTMLoggerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F98680B10E2C15C300CEE8BF /* GTMLoggerTest.m */; };
+ 8BFE6E851282371200B5C894 /* GTMNSAppleEventDescriptor+FoundationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B33441D0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+FoundationTest.m */; };
+ 8BFE6E861282371200B5C894 /* GTMNSAppleEventDescriptor+HandlerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B33441A0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+HandlerTest.m */; };
+ 8BFE6E871282371200B5C894 /* GTMNSAppleScript+HandlerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3344170DBF7A36009FD32C /* GTMNSAppleScript+HandlerTest.m */; };
+ 8BFE6E881282371200B5C894 /* GTMNSArray+MergeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 6294454B0EDDF89A009295EA /* GTMNSArray+MergeTest.m */; };
+ 8BFE6E891282371200B5C894 /* GTMNSData+zlibTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F43E4E600D4E5EC90041161F /* GTMNSData+zlibTest.m */; };
+ 8BFE6E8A1282371200B5C894 /* GTMNSDictionary+CaseInsensitiveTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BFAD4C4104D06EF002BEB27 /* GTMNSDictionary+CaseInsensitiveTest.m */; };
+ 8BFE6E8B1282371200B5C894 /* GTMNSDictionary+URLArgumentsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 33C3745E0DD8D85B00E97817 /* GTMNSDictionary+URLArgumentsTest.m */; };
+ 8BFE6E8C1282371200B5C894 /* GTMNSEnumerator+FilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F43E4DD80D4E56320041161F /* GTMNSEnumerator+FilterTest.m */; };
+ 8BFE6E8D1282371200B5C894 /* GTMNSFileHandle+UniqueNameTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B29078611F8D1BF0064F50F /* GTMNSFileHandle+UniqueNameTest.m */; };
+ 8BFE6E8E1282371200B5C894 /* GTMNSFileManager+CarbonTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B8EC87F0EF17C2F0044D13F /* GTMNSFileManager+CarbonTest.m */; };
+ 8BFE6E8F1282371200B5C894 /* GTMNSFileManager+PathTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F413908E0D75F63C00F72B31 /* GTMNSFileManager+PathTest.m */; };
+ 8BFE6E901282371200B5C894 /* GTMNSNumber+64BitTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3080141056B917006C4C7A /* GTMNSNumber+64BitTest.m */; };
+ 8BFE6E911282371200B5C894 /* GTMNSObject+KeyValueObservingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6C161B0F3580DA00E51E5D /* GTMNSObject+KeyValueObservingTest.m */; };
+ 8BFE6E921282371200B5C894 /* GTMNSScanner+JSONTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BD35B900FB22980009058F5 /* GTMNSScanner+JSONTest.m */; };
+ 8BFE6E931282371200B5C894 /* GTMNSScanner+UnsignedTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BCB59F211C00EF6009B6C40 /* GTMNSScanner+UnsignedTest.m */; };
+ 8BFE6E941282371200B5C894 /* GTMNSString+FindFolderTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F42597780E23FE3A003BEA3E /* GTMNSString+FindFolderTest.m */; };
+ 8BFE6E951282371200B5C894 /* GTMNSString+HTMLTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE2900D198D24009257D2 /* GTMNSString+HTMLTest.m */; };
+ 8BFE6E961282371200B5C894 /* GTMNSString+ReplaceTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F42597470E23AA57003BEA3E /* GTMNSString+ReplaceTest.m */; };
+ 8BFE6E971282371200B5C894 /* GTMNSString+URLArgumentsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 33C372AE0DD8A8D700E97817 /* GTMNSString+URLArgumentsTest.m */; };
+ 8BFE6E981282371200B5C894 /* GTMNSString+XMLTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F43E4C270D4E361D0041161F /* GTMNSString+XMLTest.m */; };
+ 8BFE6E991282371200B5C894 /* GTMObjC2RuntimeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6F32050DA34A1B0052CA40 /* GTMObjC2RuntimeTest.m */; };
+ 8BFE6E9A1282371200B5C894 /* GTMPathTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F9FD945D0E1D30F80005867E /* GTMPathTest.m */; };
+ 8BFE6E9B1282371200B5C894 /* GTMRegexTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F437F55C0D50BC0A00F5C3A4 /* GTMRegexTest.m */; };
+ 8BFE6E9C1282371200B5C894 /* GTMScriptRunnerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F47A79870D746EE9002302AB /* GTMScriptRunnerTest.m */; };
+ 8BFE6E9D1282371200B5C894 /* GTMSignalHandlerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F41A6F810E02EC3600788A6C /* GTMSignalHandlerTest.m */; };
+ 8BFE6E9E1282371200B5C894 /* GTMSQLiteTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F95B567D0F46208E0051A6F1 /* GTMSQLiteTest.m */; };
+ 8BFE6E9F1282371200B5C894 /* GTMStackTraceTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F431221B0DD4E3B800F45252 /* GTMStackTraceTest.m */; };
+ 8BFE6EA01282371200B5C894 /* GTMStringEncodingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B1B9B8610FECD870084EE4B /* GTMStringEncodingTest.m */; };
+ 8BFE6EA11282371200B5C894 /* GTMSystemVersionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE2E10D198E4C009257D2 /* GTMSystemVersionTest.m */; };
+ 8BFE6EA21282371200B5C894 /* GTMTransientRootPortProxyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 108930840F4CCB380018D4A0 /* GTMTransientRootPortProxyTest.m */; };
+ 8BFE6EA31282371200B5C894 /* GTMTransientRootProxyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 10A4028D0F44DB2B003B511C /* GTMTransientRootProxyTest.m */; };
+ 8BFE6EA41282371200B5C894 /* GTMURITemplateTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F42866B71267340A0090FE0F /* GTMURITemplateTest.m */; };
+ 8BFE6EA51282371200B5C894 /* GTMValidatingContainersTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3AA9F70E033E5F007E31B5 /* GTMValidatingContainersTest.m */; };
F413908F0D75F63C00F72B31 /* GTMNSFileManager+Path.h in Headers */ = {isa = PBXBuildFile; fileRef = F413908C0D75F63C00F72B31 /* GTMNSFileManager+Path.h */; settings = {ATTRIBUTES = (Public, ); }; };
F41390900D75F63C00F72B31 /* GTMNSFileManager+Path.m in Sources */ = {isa = PBXBuildFile; fileRef = F413908D0D75F63C00F72B31 /* GTMNSFileManager+Path.m */; };
- F41390920D75F64D00F72B31 /* GTMNSFileManager+PathTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F413908E0D75F63C00F72B31 /* GTMNSFileManager+PathTest.m */; };
F41711350ECDFBD500B9B276 /* GTMLightweightProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = F41711320ECDFBD500B9B276 /* GTMLightweightProxy.h */; settings = {ATTRIBUTES = (Public, ); }; };
F41711360ECDFBD500B9B276 /* GTMLightweightProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = F41711330ECDFBD500B9B276 /* GTMLightweightProxy.m */; };
- F41711380ECDFBE100B9B276 /* GTMLightweightProxyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F41711340ECDFBD500B9B276 /* GTMLightweightProxyTest.m */; };
F41A6F820E02EC3600788A6C /* GTMSignalHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = F41A6F7F0E02EC3600788A6C /* GTMSignalHandler.h */; settings = {ATTRIBUTES = (Public, ); }; };
F41A6F830E02EC3600788A6C /* GTMSignalHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = F41A6F800E02EC3600788A6C /* GTMSignalHandler.m */; };
- F41A6F850E02EC4D00788A6C /* GTMSignalHandlerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F41A6F810E02EC3600788A6C /* GTMSignalHandlerTest.m */; };
- F424F7010D9AA02B000B87EF /* GTMNSData+zlibTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F43E4E600D4E5EC90041161F /* GTMNSData+zlibTest.m */; };
F424F75F0D9AF019000B87EF /* GTMDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B1A16050D90344B00CA1E8E /* GTMDefines.h */; settings = {ATTRIBUTES = (Public, ); }; };
F42597480E23AA57003BEA3E /* GTMNSString+Replace.h in Headers */ = {isa = PBXBuildFile; fileRef = F42597450E23AA57003BEA3E /* GTMNSString+Replace.h */; settings = {ATTRIBUTES = (Public, ); }; };
F42597490E23AA57003BEA3E /* GTMNSString+Replace.m in Sources */ = {isa = PBXBuildFile; fileRef = F42597460E23AA57003BEA3E /* GTMNSString+Replace.m */; };
- F425974B0E23AA94003BEA3E /* GTMNSString+ReplaceTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F42597470E23AA57003BEA3E /* GTMNSString+ReplaceTest.m */; };
F42597790E23FE3A003BEA3E /* GTMNSString+FindFolder.h in Headers */ = {isa = PBXBuildFile; fileRef = F42597760E23FE3A003BEA3E /* GTMNSString+FindFolder.h */; settings = {ATTRIBUTES = (Public, ); }; };
F425977A0E23FE3A003BEA3E /* GTMNSString+FindFolder.m in Sources */ = {isa = PBXBuildFile; fileRef = F42597770E23FE3A003BEA3E /* GTMNSString+FindFolder.m */; };
- F425977F0E23FE43003BEA3E /* GTMNSString+FindFolderTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F42597780E23FE3A003BEA3E /* GTMNSString+FindFolderTest.m */; };
F42866B81267340A0090FE0F /* GTMURITemplate.h in Headers */ = {isa = PBXBuildFile; fileRef = F42866B51267340A0090FE0F /* GTMURITemplate.h */; settings = {ATTRIBUTES = (Public, ); }; };
F42866B91267340A0090FE0F /* GTMURITemplate.m in Sources */ = {isa = PBXBuildFile; fileRef = F42866B61267340A0090FE0F /* GTMURITemplate.m */; };
- F42866BC1267340A0090FE0F /* GTMURITemplateTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F42866B71267340A0090FE0F /* GTMURITemplateTest.m */; };
F428670312673C490090FE0F /* GTMURITemplateExtraTests.json in Resources */ = {isa = PBXBuildFile; fileRef = F428670112673C490090FE0F /* GTMURITemplateExtraTests.json */; };
F428670412673C490090FE0F /* GTMURITemplateRFCTests.json in Resources */ = {isa = PBXBuildFile; fileRef = F428670212673C490090FE0F /* GTMURITemplateRFCTests.json */; };
F428FF030D48E55E00382ED1 /* GTMNSBezierPath+CGPath.h in Headers */ = {isa = PBXBuildFile; fileRef = F428FEFF0D48E55E00382ED1 /* GTMNSBezierPath+CGPath.h */; settings = {ATTRIBUTES = (Public, ); }; };
F428FF040D48E55E00382ED1 /* GTMNSBezierPath+CGPath.m in Sources */ = {isa = PBXBuildFile; fileRef = F428FF000D48E55E00382ED1 /* GTMNSBezierPath+CGPath.m */; };
- F42E08330D19992100D5DDE0 /* GTMNSString+HTMLTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE2900D198D24009257D2 /* GTMNSString+HTMLTest.m */; };
- F42E08340D19992100D5DDE0 /* GTMSystemVersionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE2E10D198E4C009257D2 /* GTMSystemVersionTest.m */; };
F42E08610D199A2B00D5DDE0 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */; };
F42E08640D199A2F00D5DDE0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
F42E087F0D199AB400D5DDE0 /* GoogleToolboxForMac.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F42E086D0D199A5B00D5DDE0 /* GoogleToolboxForMac.framework */; };
@@ -344,13 +360,11 @@
F42E2D26102B24E5004DF054 /* GTMUILocalizerAndLayoutTweakerTest2-2.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F42E2D23102B24E5004DF054 /* GTMUILocalizerAndLayoutTweakerTest2-2.tiff */; };
F42F50F91057E99200BFC735 /* GTMUnitTestingWindow.10.5.8.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F42F50E81057E91A00BFC735 /* GTMUnitTestingWindow.10.5.8.tiff */; };
F431221D0DD4E3B800F45252 /* GTMStackTrace.h in Headers */ = {isa = PBXBuildFile; fileRef = F431221A0DD4E3B800F45252 /* GTMStackTrace.h */; settings = {ATTRIBUTES = (Public, ); }; };
- F431221F0DD4E3C900F45252 /* GTMStackTraceTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F431221B0DD4E3B800F45252 /* GTMStackTraceTest.m */; };
F435DE7C0DC0B6580069CDE8 /* GTMNSBezierPath+CGPathTest.ppc64.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F435DE7A0DC0B6580069CDE8 /* GTMNSBezierPath+CGPathTest.ppc64.tiff */; };
F435DE7D0DC0B6580069CDE8 /* GTMNSBezierPath+CGPathTest.x86_64.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F435DE7B0DC0B6580069CDE8 /* GTMNSBezierPath+CGPathTest.x86_64.tiff */; };
F435DE8B0DC0B7620069CDE8 /* GTMNSBezierPath+RoundRectTest.ppc64.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F435DE8A0DC0B7620069CDE8 /* GTMNSBezierPath+RoundRectTest.ppc64.tiff */; };
F437F55D0D50BC0A00F5C3A4 /* GTMRegex.h in Headers */ = {isa = PBXBuildFile; fileRef = F437F55A0D50BC0A00F5C3A4 /* GTMRegex.h */; settings = {ATTRIBUTES = (Public, ); }; };
F437F55E0D50BC0A00F5C3A4 /* GTMRegex.m in Sources */ = {isa = PBXBuildFile; fileRef = F437F55B0D50BC0A00F5C3A4 /* GTMRegex.m */; };
- F437F5620D50BC1D00F5C3A4 /* GTMRegexTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F437F55C0D50BC0A00F5C3A4 /* GTMRegexTest.m */; };
F43A43531146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-Min-0.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F43A434B1146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-Min-0.tiff */; };
F43A43541146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-Min-1.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F43A434C1146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-Min-1.tiff */; };
F43A43551146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-Min-2.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F43A434D1146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-Min-2.tiff */; };
@@ -367,27 +381,22 @@
F43E447B0D4918B20041161F /* GTMLinearRGBShading.m in Sources */ = {isa = PBXBuildFile; fileRef = F43E44780D4918B20041161F /* GTMLinearRGBShading.m */; };
F43E4C280D4E361D0041161F /* GTMNSString+XML.h in Headers */ = {isa = PBXBuildFile; fileRef = F43E4C250D4E361D0041161F /* GTMNSString+XML.h */; settings = {ATTRIBUTES = (Public, ); }; };
F43E4C290D4E361D0041161F /* GTMNSString+XML.m in Sources */ = {isa = PBXBuildFile; fileRef = F43E4C260D4E361D0041161F /* GTMNSString+XML.m */; };
- F43E4C2D0D4E36230041161F /* GTMNSString+XMLTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F43E4C270D4E361D0041161F /* GTMNSString+XMLTest.m */; };
F43E4DD90D4E56320041161F /* GTMNSEnumerator+Filter.h in Headers */ = {isa = PBXBuildFile; fileRef = F43E4DD60D4E56320041161F /* GTMNSEnumerator+Filter.h */; settings = {ATTRIBUTES = (Public, ); }; };
F43E4DDA0D4E56320041161F /* GTMNSEnumerator+Filter.m in Sources */ = {isa = PBXBuildFile; fileRef = F43E4DD70D4E56320041161F /* GTMNSEnumerator+Filter.m */; };
- F43E4DDE0D4E56380041161F /* GTMNSEnumerator+FilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F43E4DD80D4E56320041161F /* GTMNSEnumerator+FilterTest.m */; };
F43E4E610D4E5EC90041161F /* GTMNSData+zlib.h in Headers */ = {isa = PBXBuildFile; fileRef = F43E4E5E0D4E5EC90041161F /* GTMNSData+zlib.h */; settings = {ATTRIBUTES = (Public, ); }; };
F43E4E620D4E5EC90041161F /* GTMNSData+zlib.m in Sources */ = {isa = PBXBuildFile; fileRef = F43E4E5F0D4E5EC90041161F /* GTMNSData+zlib.m */; };
F43E4F6D0D4E60C50041161F /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F43E4F6C0D4E60C50041161F /* libz.dylib */; };
F47A79880D746EE9002302AB /* GTMScriptRunner.h in Headers */ = {isa = PBXBuildFile; fileRef = F47A79850D746EE9002302AB /* GTMScriptRunner.h */; settings = {ATTRIBUTES = (Public, ); }; };
F47A79890D746EE9002302AB /* GTMScriptRunner.m in Sources */ = {isa = PBXBuildFile; fileRef = F47A79860D746EE9002302AB /* GTMScriptRunner.m */; };
- F47A798B0D746EFC002302AB /* GTMScriptRunnerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F47A79870D746EE9002302AB /* GTMScriptRunnerTest.m */; };
F47F1C120D490BC000925B8F /* GTMNSBezierPath+Shading.h in Headers */ = {isa = PBXBuildFile; fileRef = F47F1C0D0D490BC000925B8F /* GTMNSBezierPath+Shading.h */; settings = {ATTRIBUTES = (Public, ); }; };
F47F1C130D490BC000925B8F /* GTMNSBezierPath+Shading.m in Sources */ = {isa = PBXBuildFile; fileRef = F47F1C0E0D490BC000925B8F /* GTMNSBezierPath+Shading.m */; };
F47F1C750D490E5C00925B8F /* GTMShading.h in Headers */ = {isa = PBXBuildFile; fileRef = F47F1C740D490E5C00925B8F /* GTMShading.h */; settings = {ATTRIBUTES = (Public, ); }; };
F47F1D300D4914AD00925B8F /* GTMCalculatedRange.h in Headers */ = {isa = PBXBuildFile; fileRef = F47F1D2D0D4914AD00925B8F /* GTMCalculatedRange.h */; settings = {ATTRIBUTES = (Public, ); }; };
F47F1D310D4914AD00925B8F /* GTMCalculatedRange.m in Sources */ = {isa = PBXBuildFile; fileRef = F47F1D2E0D4914AD00925B8F /* GTMCalculatedRange.m */; };
- F47F1D350D4914B600925B8F /* GTMCalculatedRangeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F47F1D2F0D4914AD00925B8F /* GTMCalculatedRangeTest.m */; };
F48D000D0FE994C900428D0B /* GTMUnitTestingWindow.10.5.7.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F48D000C0FE994BF00428D0B /* GTMUnitTestingWindow.10.5.7.tiff */; };
F493E3591146CD97005F994E /* GTMUILocalizerAndLayoutTweakerTest7.xib in Resources */ = {isa = PBXBuildFile; fileRef = F493E3581146CD97005F994E /* GTMUILocalizerAndLayoutTweakerTest7.xib */; };
F49FA8440EEF2AB700077669 /* GTMFileSystemKQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = F49FA8420EEF2AB700077669 /* GTMFileSystemKQueue.h */; settings = {ATTRIBUTES = (Public, ); }; };
F49FA8450EEF2AB700077669 /* GTMFileSystemKQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = F49FA8430EEF2AB700077669 /* GTMFileSystemKQueue.m */; };
- F49FA88B0EEF303D00077669 /* GTMFileSystemKQueueTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F49FA88A0EEF303D00077669 /* GTMFileSystemKQueueTest.m */; };
F4A420EF0EDDF8E000397A11 /* GTMHotKeyTextField.h in Headers */ = {isa = PBXBuildFile; fileRef = F4A420EC0EDDF8E000397A11 /* GTMHotKeyTextField.h */; settings = {ATTRIBUTES = (Public, ); }; };
F4A420F00EDDF8E000397A11 /* GTMHotKeyTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = F4A420ED0EDDF8E000397A11 /* GTMHotKeyTextField.m */; };
F4A486ED1097EA0A00513483 /* GTMUnitTestingView.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F4A486EC1097EA0A00513483 /* GTMUnitTestingView.10.6.tiff */; };
@@ -429,17 +438,12 @@
F93207DE0F4B82DB005F37EA /* GTMSQLite.h in Headers */ = {isa = PBXBuildFile; fileRef = F95B567B0F46208E0051A6F1 /* GTMSQLite.h */; settings = {ATTRIBUTES = (Public, ); }; };
F95803F90E2FB0850049A088 /* GTMLoggerRingBufferWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = F95803F70E2FB0760049A088 /* GTMLoggerRingBufferWriter.m */; };
F95803FA0E2FB08F0049A088 /* GTMLoggerRingBufferWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = F95803F60E2FB0760049A088 /* GTMLoggerRingBufferWriter.h */; settings = {ATTRIBUTES = (Public, ); }; };
- F95803FB0E2FB0A80049A088 /* GTMLoggerRingBufferWriterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F95803F80E2FB0760049A088 /* GTMLoggerRingBufferWriterTest.m */; };
- F95B567F0F46208E0051A6F1 /* GTMSQLiteTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F95B567D0F46208E0051A6F1 /* GTMSQLiteTest.m */; };
F95B56840F4628B30051A6F1 /* GTMSQLite.m in Sources */ = {isa = PBXBuildFile; fileRef = F95B567C0F46208E0051A6F1 /* GTMSQLite.m */; };
F98680C30E2C163D00CEE8BF /* GTMLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = F98680B00E2C15C300CEE8BF /* GTMLogger.m */; };
- F98680C40E2C164300CEE8BF /* GTMLoggerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F98680B10E2C15C300CEE8BF /* GTMLoggerTest.m */; };
- F98681960E2C20C100CEE8BF /* GTMLogger+ASLTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F98681950E2C20C100CEE8BF /* GTMLogger+ASLTest.m */; };
F98681970E2C20C800CEE8BF /* GTMLogger+ASL.m in Sources */ = {isa = PBXBuildFile; fileRef = F98681680E2C1E3A00CEE8BF /* GTMLogger+ASL.m */; };
F99161B50F0B151400213D3B /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F99161B40F0B151400213D3B /* libsqlite3.dylib */; };
F99163270F14100F00213D3B /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F99161B40F0B151400213D3B /* libsqlite3.dylib */; };
F9FD94630E1D31280005867E /* GTMPath.m in Sources */ = {isa = PBXBuildFile; fileRef = F9FD945C0E1D30F80005867E /* GTMPath.m */; };
- F9FD94640E1D312E0005867E /* GTMPathTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F9FD945D0E1D30F80005867E /* GTMPathTest.m */; };
F9FD94CD0E1D50450005867E /* GTMPath.h in Headers */ = {isa = PBXBuildFile; fileRef = F9FD945E0E1D30F80005867E /* GTMPath.h */; settings = {ATTRIBUTES = (Public, ); }; };
/* End PBXBuildFile section */
@@ -465,6 +469,13 @@
remoteGlobalIDString = 8B45A2890DA49B99001148C5;
remoteInfo = UIUnitTestingHarness;
};
+ 8BC8514E127A18B60046E0FB /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 8BC85130127A18AE0046E0FB;
+ remoteInfo = GTMServiceManagementHarness;
+ };
8BFE13C00FB0F2D8001BE894 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
@@ -744,6 +755,9 @@
8BB77A0311B5A09900AB31AF /* GTMGoogleSearchTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMGoogleSearchTest.m; sourceTree = "<group>"; };
8BC046B80DAE8C4B00C2D1CA /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = "<absolute>"; };
8BC04D140DB0061300C2D1CA /* RunMacOSUnitTests.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = RunMacOSUnitTests.sh; sourceTree = "<group>"; };
+ 8BC85131127A18AE0046E0FB /* GTMServiceManagementTestingHarness */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = GTMServiceManagementTestingHarness; sourceTree = BUILT_PRODUCTS_DIR; };
+ 8BC851D3127A19020046E0FB /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; };
+ 8BC85201127A19370046E0FB /* GTMServiceManagementTestingHarness.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = GTMServiceManagementTestingHarness.c; sourceTree = "<group>"; };
8BCB59EE11C00ED6009B6C40 /* GTMNSScanner+Unsigned.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSScanner+Unsigned.h"; sourceTree = "<group>"; };
8BCB59EF11C00ED6009B6C40 /* GTMNSScanner+Unsigned.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSScanner+Unsigned.m"; sourceTree = "<group>"; };
8BCB59F211C00EF6009B6C40 /* GTMNSScanner+UnsignedTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSScanner+UnsignedTest.m"; sourceTree = "<group>"; };
@@ -971,6 +985,14 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 8BC8512F127A18AE0046E0FB /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 8BC851D4127A19020046E0FB /* CoreFoundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
8BFE13EC0FB0F2D8001BE894 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
@@ -1030,6 +1052,7 @@
8B45A0280DA4696C001148C5 /* UnitTest - UnitTesting.octest */,
8B45A28A0DA49B99001148C5 /* GTMUIUnitTestingHarness.app */,
8BFE13FC0FB0F2D8001BE894 /* UnitTest - AddressBook.octest */,
+ 8BC85131127A18AE0046E0FB /* GTMServiceManagementTestingHarness */,
);
name = Products;
sourceTree = "<group>";
@@ -1060,6 +1083,7 @@
0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */ = {
isa = PBXGroup;
children = (
+ 8BC851D3127A19020046E0FB /* CoreFoundation.framework */,
8BFE158C0FB0F34C001BE894 /* AddressBook.framework */,
F99161B40F0B151400213D3B /* libsqlite3.dylib */,
8B45A1990DA46AAA001148C5 /* QuartzCore.framework */,
@@ -1495,6 +1519,7 @@
F47A79870D746EE9002302AB /* GTMScriptRunnerTest.m */,
8B414E871226FB1000D0064F /* GTMServiceManagement.h */,
8B414E861226FB1000D0064F /* GTMServiceManagement.c */,
+ 8BC85201127A19370046E0FB /* GTMServiceManagementTestingHarness.c */,
8B414E8A1226FB1800D0064F /* GTMServiceManagementTest.m */,
F41A6F7F0E02EC3600788A6C /* GTMSignalHandler.h */,
F41A6F800E02EC3600788A6C /* GTMSignalHandler.m */,
@@ -1765,6 +1790,22 @@
productReference = 8B45A28A0DA49B99001148C5 /* GTMUIUnitTestingHarness.app */;
productType = "com.apple.product-type.application";
};
+ 8BC85130127A18AE0046E0FB /* GTMServiceManagementTestingHarness */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 8BC85153127A18F30046E0FB /* Build configuration list for PBXNativeTarget "GTMServiceManagementTestingHarness" */;
+ buildPhases = (
+ 8BC8512E127A18AE0046E0FB /* Sources */,
+ 8BC8512F127A18AE0046E0FB /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = GTMServiceManagementTestingHarness;
+ productName = GTMServiceManagementHarness;
+ productReference = 8BC85131127A18AE0046E0FB /* GTMServiceManagementTestingHarness */;
+ productType = "com.apple.product-type.tool";
+ };
8BFE13BC0FB0F2D8001BE894 /* UnitTest - AddressBook */ = {
isa = PBXNativeTarget;
buildConfigurationList = 8BFE13F20FB0F2D8001BE894 /* Build configuration list for PBXNativeTarget "UnitTest - AddressBook" */;
@@ -1797,6 +1838,7 @@
buildRules = (
);
dependencies = (
+ 8BC8514F127A18B60046E0FB /* PBXTargetDependency */,
F42E08790D199AA600D5DDE0 /* PBXTargetDependency */,
);
name = "UnitTest - Foundation";
@@ -1853,6 +1895,7 @@
};
buildConfigurationList = 1DEB918108733D990010E9CD /* Build configuration list for PBXProject "GTM" */;
compatibilityVersion = "Xcode 3.1";
+ developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
English,
@@ -1888,6 +1931,7 @@
F48FE2630D198C1E009257D2 /* UnitTest - AppKit */,
F42E08110D19987200D5DDE0 /* UnitTest - Foundation */,
8B45A0270DA4696C001148C5 /* UnitTest - UnitTesting */,
+ 8BC85130127A18AE0046E0FB /* GTMServiceManagementTestingHarness */,
8B45A2890DA49B99001148C5 /* UIUnitTestingHarness */,
F41A6EE00E02DB4F00788A6C /* Build GTM All SDKs */,
F41A6EF80E02DCFC00788A6C /* All UnitTests All SDKs */,
@@ -1941,6 +1985,7 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ 8BC8520E127A19B60046E0FB /* GTMServiceManagementTestingHarness in Resources */,
F428670312673C490090FE0F /* GTMURITemplateExtraTests.json in Resources */,
F428670412673C490090FE0F /* GTMURITemplateRFCTests.json in Resources */,
);
@@ -2174,6 +2219,15 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 8BC8512E127A18AE0046E0FB /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 8BC85150127A18D50046E0FB /* GTMServiceManagement.c in Sources */,
+ 8BC85202127A19370046E0FB /* GTMServiceManagementTestingHarness.c in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
8BFE13D70FB0F2D8001BE894 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@@ -2187,58 +2241,58 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- F42E08330D19992100D5DDE0 /* GTMNSString+HTMLTest.m in Sources */,
- F42E08340D19992100D5DDE0 /* GTMSystemVersionTest.m in Sources */,
- F47F1D350D4914B600925B8F /* GTMCalculatedRangeTest.m in Sources */,
- F43E4C2D0D4E36230041161F /* GTMNSString+XMLTest.m in Sources */,
- F43E4DDE0D4E56380041161F /* GTMNSEnumerator+FilterTest.m in Sources */,
- F437F5620D50BC1D00F5C3A4 /* GTMRegexTest.m in Sources */,
- F47A798B0D746EFC002302AB /* GTMScriptRunnerTest.m in Sources */,
- F41390920D75F64D00F72B31 /* GTMNSFileManager+PathTest.m in Sources */,
- F424F7010D9AA02B000B87EF /* GTMNSData+zlibTest.m in Sources */,
- 8B6F32080DA34A1B0052CA40 /* GTMObjC2RuntimeTest.m in Sources */,
8B6F32160DA34C830052CA40 /* GTMMethodCheckTest.m in Sources */,
- 8BC045C20DAE899100C2D1CA /* GTMGeometryUtilsTest.m in Sources */,
- F431221F0DD4E3C900F45252 /* GTMStackTraceTest.m in Sources */,
- 33C372B40DD8A93000E97817 /* GTMNSString+URLArgumentsTest.m in Sources */,
- 33C3745F0DD8D85B00E97817 /* GTMNSDictionary+URLArgumentsTest.m in Sources */,
- 8B3344210DBF7A36009FD32C /* GTMNSAppleScript+HandlerTest.m in Sources */,
- 8B3344230DBF7A36009FD32C /* GTMNSAppleEventDescriptor+HandlerTest.m in Sources */,
- 8B3344250DBF7A36009FD32C /* GTMNSAppleEventDescriptor+FoundationTest.m in Sources */,
- 8BE2836F0DED0F130035B3F8 /* GTMFourCharCodeTest.m in Sources */,
8B7DCBC20DFF0F7F0017E983 /* GTMMethodCheck.m in Sources */,
8B7DCBEE0DFF1A4F0017E983 /* GTMUnitTestDevLog.m in Sources */,
8B7DCE1A0DFF39850017E983 /* GTMSenTestCase.m in Sources */,
- F41A6F850E02EC4D00788A6C /* GTMSignalHandlerTest.m in Sources */,
- 8B3AA9F80E033E5F007E31B5 /* GTMValidatingContainersTest.m in Sources */,
- F9FD94640E1D312E0005867E /* GTMPathTest.m in Sources */,
- F425974B0E23AA94003BEA3E /* GTMNSString+ReplaceTest.m in Sources */,
- F425977F0E23FE43003BEA3E /* GTMNSString+FindFolderTest.m in Sources */,
- F98680C40E2C164300CEE8BF /* GTMLoggerTest.m in Sources */,
- F98681960E2C20C100CEE8BF /* GTMLogger+ASLTest.m in Sources */,
- F95803FB0E2FB0A80049A088 /* GTMLoggerRingBufferWriterTest.m in Sources */,
- 8B1B49260E5F97C800A08972 /* GTMExceptionalInlinesTest.m in Sources */,
8BE839AA0E8AF72E00C611B0 /* GTMDebugThreadValidationTest.m in Sources */,
- F41711380ECDFBE100B9B276 /* GTMLightweightProxyTest.m in Sources */,
- 6294454C0EDDF89A009295EA /* GTMNSArray+MergeTest.m in Sources */,
- F49FA88B0EEF303D00077669 /* GTMFileSystemKQueueTest.m in Sources */,
- 8B8EC8800EF17C2F0044D13F /* GTMNSFileManager+CarbonTest.m in Sources */,
- 8B6C161C0F3580DA00E51E5D /* GTMNSObject+KeyValueObservingTest.m in Sources */,
- 1012DF5A0F425525004794DB /* GTMAbstractDOListenerTest.m in Sources */,
- F95B567F0F46208E0051A6F1 /* GTMSQLiteTest.m in Sources */,
- 10998F8B0F4B5F1B007F179D /* GTMTransientRootProxyTest.m in Sources */,
- 108930850F4CCB380018D4A0 /* GTMTransientRootPortProxyTest.m in Sources */,
- 8BD35B940FB22986009058F5 /* GTMNSScanner+JSONTest.m in Sources */,
- 0BFAD4CC104D06FE002BEB27 /* GTMNSDictionary+CaseInsensitiveTest.m in Sources */,
- 8B3080151056B917006C4C7A /* GTMNSNumber+64BitTest.m in Sources */,
- 0B1B9B8A10FECDA00084EE4B /* GTMStringEncodingTest.m in Sources */,
8B17FD15117638D500E7A908 /* GTMFoundationUnitTestingUtilities.m in Sources */,
- 8B455F5E1193870A00ABD707 /* GTMLocalizedStringTest.m in Sources */,
- 8BCB59F311C00EF6009B6C40 /* GTMNSScanner+UnsignedTest.m in Sources */,
8B29078711F8D1BF0064F50F /* GTMNSFileHandle+UniqueName.m in Sources */,
- 8B29078811F8D1BF0064F50F /* GTMNSFileHandle+UniqueNameTest.m in Sources */,
8B414E8B1226FB1800D0064F /* GTMServiceManagementTest.m in Sources */,
- F42866BC1267340A0090FE0F /* GTMURITemplateTest.m in Sources */,
+ 8BFE6E7A1282371200B5C894 /* GTMAbstractDOListenerTest.m in Sources */,
+ 8BFE6E7B1282371200B5C894 /* GTMCalculatedRangeTest.m in Sources */,
+ 8BFE6E7C1282371200B5C894 /* GTMExceptionalInlinesTest.m in Sources */,
+ 8BFE6E7D1282371200B5C894 /* GTMFileSystemKQueueTest.m in Sources */,
+ 8BFE6E7E1282371200B5C894 /* GTMFourCharCodeTest.m in Sources */,
+ 8BFE6E7F1282371200B5C894 /* GTMGeometryUtilsTest.m in Sources */,
+ 8BFE6E801282371200B5C894 /* GTMLightweightProxyTest.m in Sources */,
+ 8BFE6E811282371200B5C894 /* GTMLocalizedStringTest.m in Sources */,
+ 8BFE6E821282371200B5C894 /* GTMLogger+ASLTest.m in Sources */,
+ 8BFE6E831282371200B5C894 /* GTMLoggerRingBufferWriterTest.m in Sources */,
+ 8BFE6E841282371200B5C894 /* GTMLoggerTest.m in Sources */,
+ 8BFE6E851282371200B5C894 /* GTMNSAppleEventDescriptor+FoundationTest.m in Sources */,
+ 8BFE6E861282371200B5C894 /* GTMNSAppleEventDescriptor+HandlerTest.m in Sources */,
+ 8BFE6E871282371200B5C894 /* GTMNSAppleScript+HandlerTest.m in Sources */,
+ 8BFE6E881282371200B5C894 /* GTMNSArray+MergeTest.m in Sources */,
+ 8BFE6E891282371200B5C894 /* GTMNSData+zlibTest.m in Sources */,
+ 8BFE6E8A1282371200B5C894 /* GTMNSDictionary+CaseInsensitiveTest.m in Sources */,
+ 8BFE6E8B1282371200B5C894 /* GTMNSDictionary+URLArgumentsTest.m in Sources */,
+ 8BFE6E8C1282371200B5C894 /* GTMNSEnumerator+FilterTest.m in Sources */,
+ 8BFE6E8D1282371200B5C894 /* GTMNSFileHandle+UniqueNameTest.m in Sources */,
+ 8BFE6E8E1282371200B5C894 /* GTMNSFileManager+CarbonTest.m in Sources */,
+ 8BFE6E8F1282371200B5C894 /* GTMNSFileManager+PathTest.m in Sources */,
+ 8BFE6E901282371200B5C894 /* GTMNSNumber+64BitTest.m in Sources */,
+ 8BFE6E911282371200B5C894 /* GTMNSObject+KeyValueObservingTest.m in Sources */,
+ 8BFE6E921282371200B5C894 /* GTMNSScanner+JSONTest.m in Sources */,
+ 8BFE6E931282371200B5C894 /* GTMNSScanner+UnsignedTest.m in Sources */,
+ 8BFE6E941282371200B5C894 /* GTMNSString+FindFolderTest.m in Sources */,
+ 8BFE6E951282371200B5C894 /* GTMNSString+HTMLTest.m in Sources */,
+ 8BFE6E961282371200B5C894 /* GTMNSString+ReplaceTest.m in Sources */,
+ 8BFE6E971282371200B5C894 /* GTMNSString+URLArgumentsTest.m in Sources */,
+ 8BFE6E981282371200B5C894 /* GTMNSString+XMLTest.m in Sources */,
+ 8BFE6E991282371200B5C894 /* GTMObjC2RuntimeTest.m in Sources */,
+ 8BFE6E9A1282371200B5C894 /* GTMPathTest.m in Sources */,
+ 8BFE6E9B1282371200B5C894 /* GTMRegexTest.m in Sources */,
+ 8BFE6E9C1282371200B5C894 /* GTMScriptRunnerTest.m in Sources */,
+ 8BFE6E9D1282371200B5C894 /* GTMSignalHandlerTest.m in Sources */,
+ 8BFE6E9E1282371200B5C894 /* GTMSQLiteTest.m in Sources */,
+ 8BFE6E9F1282371200B5C894 /* GTMStackTraceTest.m in Sources */,
+ 8BFE6EA01282371200B5C894 /* GTMStringEncodingTest.m in Sources */,
+ 8BFE6EA11282371200B5C894 /* GTMSystemVersionTest.m in Sources */,
+ 8BFE6EA21282371200B5C894 /* GTMTransientRootPortProxyTest.m in Sources */,
+ 8BFE6EA31282371200B5C894 /* GTMTransientRootProxyTest.m in Sources */,
+ 8BFE6EA41282371200B5C894 /* GTMURITemplateTest.m in Sources */,
+ 8BFE6EA51282371200B5C894 /* GTMValidatingContainersTest.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -2371,6 +2425,11 @@
target = 8B45A2890DA49B99001148C5 /* UIUnitTestingHarness */;
targetProxy = 8BAA9A340F7AF50600DF4F12 /* PBXContainerItemProxy */;
};
+ 8BC8514F127A18B60046E0FB /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 8BC85130127A18AE0046E0FB /* GTMServiceManagementTestingHarness */;
+ targetProxy = 8BC8514E127A18B60046E0FB /* PBXContainerItemProxy */;
+ };
8BFE13BF0FB0F2D8001BE894 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = F42E086C0D199A5B00D5DDE0 /* GTM */;
@@ -2917,6 +2976,69 @@
};
name = "TigerOrLater-Release";
};
+ 8BC85143127A18AE0046E0FB /* TigerOrLater-Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = GTMServiceManagementTestingHarness;
+ };
+ name = "TigerOrLater-Debug";
+ };
+ 8BC85144127A18AE0046E0FB /* TigerOrLater-Debug-gcov */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = GTMServiceManagementTestingHarness;
+ };
+ name = "TigerOrLater-Debug-gcov";
+ };
+ 8BC85145127A18AE0046E0FB /* TigerOrLater-Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = GTMServiceManagementTestingHarness;
+ };
+ name = "TigerOrLater-Release";
+ };
+ 8BC85146127A18AE0046E0FB /* LeopardOrLater-Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = GTMServiceManagementTestingHarness;
+ };
+ name = "LeopardOrLater-Debug";
+ };
+ 8BC85147127A18AE0046E0FB /* LeopardOrLater-Debug-gcov */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = GTMServiceManagementTestingHarness;
+ };
+ name = "LeopardOrLater-Debug-gcov";
+ };
+ 8BC85148127A18AE0046E0FB /* LeopardOrLater-Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = GTMServiceManagementTestingHarness;
+ };
+ name = "LeopardOrLater-Release";
+ };
+ 8BC85149127A18AE0046E0FB /* SnowLeopardOrLater-Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = GTMServiceManagementTestingHarness;
+ };
+ name = "SnowLeopardOrLater-Debug";
+ };
+ 8BC8514A127A18AE0046E0FB /* SnowLeopardOrLater-Debug-gcov */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = GTMServiceManagementTestingHarness;
+ };
+ name = "SnowLeopardOrLater-Debug-gcov";
+ };
+ 8BC8514B127A18AE0046E0FB /* SnowLeopardOrLater-Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = GTMServiceManagementTestingHarness;
+ };
+ name = "SnowLeopardOrLater-Release";
+ };
8BFE13F30FB0F2D8001BE894 /* TigerOrLater-Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */;
@@ -3630,6 +3752,22 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = "TigerOrLater-Release";
};
+ 8BC85153127A18F30046E0FB /* Build configuration list for PBXNativeTarget "GTMServiceManagementTestingHarness" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 8BC85143127A18AE0046E0FB /* TigerOrLater-Debug */,
+ 8BC85144127A18AE0046E0FB /* TigerOrLater-Debug-gcov */,
+ 8BC85145127A18AE0046E0FB /* TigerOrLater-Release */,
+ 8BC85146127A18AE0046E0FB /* LeopardOrLater-Debug */,
+ 8BC85147127A18AE0046E0FB /* LeopardOrLater-Debug-gcov */,
+ 8BC85148127A18AE0046E0FB /* LeopardOrLater-Release */,
+ 8BC85149127A18AE0046E0FB /* SnowLeopardOrLater-Debug */,
+ 8BC8514A127A18AE0046E0FB /* SnowLeopardOrLater-Debug-gcov */,
+ 8BC8514B127A18AE0046E0FB /* SnowLeopardOrLater-Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = "TigerOrLater-Release";
+ };
8BFE13F20FB0F2D8001BE894 /* Build configuration list for PBXNativeTarget "UnitTest - AddressBook" */ = {
isa = XCConfigurationList;
buildConfigurations = (