From 64750f4c7032b461614e22650e70b4e2219deed4 Mon Sep 17 00:00:00 2001 From: Thomas Van Lenten Date: Tue, 18 Aug 2015 15:17:45 -0400 Subject: Update the project for github migration - Update URL - Add README.md/License/Contributing info to be up to spec. - Remove a bunch of executable bits on sources. --- README.md | 591 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 591 insertions(+) create mode 100644 README.md (limited to 'README.md') diff --git a/README.md b/README.md new file mode 100644 index 0000000..b62c221 --- /dev/null +++ b/README.md @@ -0,0 +1,591 @@ +# GTM: Google Toolbox for Mac # + +**Project site**
+**Discussion group** + + +## Release History ## + +Release 2.0.?? +Changes since 1.6.0 +??-??-?? + +- Removed iPhone/GTMABAddressBook in favor of AddressBook/GTMABAddressBook. + +- Removed Foundation/GTMHTTPServer and UnitTesting/GTMTestHTTPServer, they + are going to go live with the fetcher used by GData (since they were done + for that testing). + +- Removed Foundation/GTMBase64 and Foundation/GTMNSData+Hex in favor of + Foundation/GTMStringEncoding. + +- Added Foundation/GTMURITemplate to support the pending standard. + +- Changed the xcconfig files so that the SDK and the minimum supported OS + version must be set in the project file. This is the model Apple is pushing + for and since they are removing older SDKs with each tool chain release it + has forced GTM into this model. By default the SDK will be set to the most + recent SDK installed. + +- Initial support for using the Xcode provided OCUnit/XCTest for unittesting on iOS. + Define GTM_IPHONE_USE_SENTEST or GTM_USING_XCTEST to 1 to use this. + GTM_IPHONE_USE_SENTEST is going to be deprecated shortly. + +- Removed support for Garbage Collection, leaving just the shell for other code + that might have depended on some of the constants/method GTM provided. + +- Removed GTMNSNumber+64Bit methods as obsolete. + + +Release 1.6.0 +Changes since 1.5.1 +18-August-2010 + +- Added GTMNSImage+SearchCache for fetching images based on a variety of + specification methods (path, OSType, etc) + +- Added GTMFadeTruncatingTextFieldCell, for eliding with a gradient + +- Added GTMWindowSheetController for creating and controlling tab-modal sheets. + +- Added GTMNSArray+Merge for merging one array into another with or without + a custom merging function, returning a new array with the merged contents. + +- Added GTMSignalHandler for simple signal handling (via kqueue/runloop). This + has gotten an api tweak, so some code that started using it will need + updating. Initial landing had a bug where it could leak memory due to + how CFRunLoops work, now fixed. + +- Fixed up GTMIPhoneUnitTestDelegate to be pickier about which tests it runs + +- Added GTMNSString+URLArguments to GTMiPhone + +- Added GTMHTTPFetcher and GTMHTTPServer to GTMiPhone + +- Made sure that build would work with iPhone device attached, and that all + tests run directly on the phone. + +- Added GTMValidatingContainers which are a set of mutable container classes + that allow you to have a selector on a target that is called to verify that + the objects being put into the container are valid. This can be controlled + at compile time so that you don't take the performance hit in a release build. + +- Added GTMPath, which represents an existing absolute path on the file system. + It also makes it very easy to construct new paths in the file system as well + as whole directory hierarchies. + +- Added GTMNSString+Replace for a common replacement need. + +- Added NSString+FindFolder for two comment helpers for building paths to common + locations. + +- Added GTMLargeTypeWindow for doing display windows similar to Address Book + Large Type display for phone numbers. + +- Removed GTMNSWorkspace+ScreenSaver as it has always been a little dodgy due + to it's dependencies on undocumented frameworks, and the ScreenSaver + framework doesn't play nicely in GC mode. + +- Added property methods to GTMHTTPFetcher. These are convenient alternatives + to storing an NSDictionary in the userData. + +- Renamed GTMDevLog.m to GTMDevLogUnitTestingBridge.m and added some more + comments where it comes into play to hopefully make it more clear that it + isn't needed in most cases. + +- Fixed a potential GTMHTTPFetcher crash on failed authentication. + +- Added a obj-c logging package, GTMLogger, for applications that want an + application level logging system. See GTMLogger.h, GTMLogger+ASL.h, and + GTMLoggerRingBufferWriter.h for what the basic system and two optional + additions can do. + +- Added GTMNSMakeUncollectable for forcing objects to survive in a GC world. + +- Added GTMCFAutorelease to make the [GTMNSMakeCollectable(cfFoo) autorelease] + simpler and clearer, it's now just GTMCFAutorelease(cfFoo), and works in + both GC and non-GC world. + +- Added GTMIsGarbageCollectionEnabled to GTMGarbageCollection.h. See the note + there for it's usage. + +- Disabled the unittests for things on top of NSAppleScript in a GC world since + Apple has bugs and it can crash. See the unittest for a note about it. + +- GTMStackTrace now can figure out ObjC symbols. Downside it is now ObjC only. + +- GTMFourCharCode can now be used with NSAppleEventDescriptors easily. + typeType, typeKeyword, typeApplSignature, and typeEnumerated all get + turned into GTMFourCharCodes. + +- Fixed up crash in GTMLoggerRingBufferWriter when used with GC on. + +- Significant updates to GTMNSAppleScript+Handler allowing you to + list all handlers and properties (including inherited) and cleans up + several errors in how scripting was being handled. + +- Added GTMGetURLHandler class that gives you a very easy way of supporting + Get URL events just by adding a key to your plists, and adding a single + method to your class. See GTMGetURLHandler.m for more details. + +- Added XcodeProject, AppleScript, and InterfaceBuilder Spotlight Plugins. + Allows you to index .xcodeproj, .scpt, .scptd, .xib, .nib, and + .aib files. See ReadMes beside individual projects in SpotlightPlugins. + +- Added GTMExceptionalInlines for dealing with cases where you get + warning: variable 'r' might be clobbered by 'longjmp' or 'vfork' + when using certain Apple inlined functions in @synchronized/@try blocks. + +- Updated to Xcode 3.1 so the GTM and iPhone project have the same baseline. + The code should work in other version of xcode, but the projects and + xcconfig files now use 3.1 features. + +- Added GTMABAddressBook which is a cocoa wrapper for the 'C' AddressBook + APIs on the iPhone. + +- Added several set environment variable statements to RunIPhoneUnitTest.sh + to encourage bugs to come out of the woodwork. + +- Added GTMTestTimer.h for doing high fidelity timings. + +- Added ability to control using zombies to iPhone unittest script. It can be + controlled by the GTM_DISABLE_ZOMBIES environment variable + +- Added ability to control termination to iPhone unittest script. It can be + controlled by the GTM_DISABLE_TERMINATION environment variable + +- Fixed several leaks found with leak checking enabled. + +- Updated the iPhone xcconfigs to support the different OS versions. + +- GTM_INLINE will make sure a function gets inlined, and provides a consistent + way for all GTM code to do it. + +- Added GTMDebugThreadValidation to allow you to enforce the fact that your + code must run in the main thread in DEBUG builds. + +- Updated some internals of the iPhone unittesting so it doesn't double print + the test descriptions, file names, or lines numbers of a test failure line. + Also includes the test names in the error output. + +- Changed the xcconfigs so that know it's easier to set different settings at + the different levels and not accidentally overwrite settings set at lower + levels in the "settings collapse". Also tightened up warnings significantly. + +- Changed how gtm_unitTestExposedBindingsTestValues works. If you have an + implementation of gtm_unitTestExposedBindingsTestValues in your own code + you will need to update to the new way of calling. See implementations in + GTMNSObject+BindingUnitTesting.m for details. + +- Added support for grabbing the build number for a particular OS in + GTMSystemVersion and easily comparing it to known build numbers, and switched + some types from in GTMSystemVersion from "int" to SInt32 to make 64 bit work + better. + +- Added support for SnowLeopard (10A96). We build cleanly with the 10.6 SDKs and + all radar checks were updated accordingly. Build All script was also updated + to build on SnowLeopard if you have the SDK available. + +- Turned off building ppc64 GTM because the SnowLeopard SDK currently + doesn't have ppc64 support, so SenTestCase isn't defined. This makes it + impossible to build the ppc64 10.5 config on SnowLeopard. We have left the + setting in the xcconfig for those of you who need it, but have disabled + it in the GTM project settings. + +- Turned on stack smashing protection on the debug builds for all Leopard + and above. + +- Added ability to easily do leak checking by defining the GTM_ENABLE_LEAKS + environment variable. It isn't on by default because several of Apple's + frameworks leak. You can work around these false positives by using the + GTM_LEAKS_SYMBOLS_TO_IGNORE environment variable. Also if you turn on leaks + make sure to turn off zombies by defining the GTM_DISABLE_ZOMBIES variable, + otherwise every memory allocation you do will look like a leak. + +- Added has ability to check if a script has an open handler to + GTMNSAppleScript+Handler. + +- GTMStackTrace support for building a trace from the call stack in an + NSException (for 10.5+ and iPhone). + +- GTMStackTrace works on 10.5+ (and iPhone) using NSThread to build the call + stack. + +- GTMLightweightProxy for breaking retain cycles. + +- Added GTM_EXTERN that makes it easier to mix and match objc and objc++ code. + +- Added GTMHotKeysTextField for display and editing of hot key settings. + +- Added GTMCarbonEvent for dealing with Carbon Events and HotKeys in a ObjC + like way. + +- Backported the Atomic Barrier Swap functions for Objective C back to Tiger. + +- Added a variety of new functions to GTMUnitTestingUtilities for checking + if the screensaver is in the way, waiting on user events, and generating + keystrokes. + +- If you are using any Carbon routines that log (DebugStr, AssertMacros.h) and + use GTMUnitTestDevLog, the log routines now go through _GTMDevLog so that + they can be caught in GTMUnitTestDevLog and verified like any _GTMDevLog calls + you may make. For an example of this in action see GTMCarbonEventTest.m. + Since we have turned this on, we have turned off using _debug frameworks + from the RunUnitTests.sh because it was reporting a pile of uninteresting + issues that were interfering with unittests. + +- Added GTMFileSystemKQueue. It provides a simple wrapper for kqueuing + something in the file system and tracking changes to it. Initial landing + had a bug where it could leak memory due to how CFRunLoops work, now fixed. + +- RunIPhoneUnitTest.sh now cleans up the user home directory and creates + a documents directory within it, used when requesting a NSDocumentDirectory. + +- Added GTMNSFileManager+Carbon which contains routines for path <-> Alias + conversion and path <-> FSRef conversion. + +- Added GTM_EXPORT as a standard way of exporting symbols. + +- Added GTMUnitTestDevLogDebug which extends GTMUnitTestDevLog to only look + for the messages in debug builds, to make it easier to validate messages + that are only present in debug builds. + +- Added GTM_SUPPORT_GC for controlling the inclusion of GC related code. + +- If you are using GTMUnitTestDevLog, it also tries to capture logs from + NSAssert. + +- Added GTM_FOREACH_OBJECT/GTM_FOREACH_KEY/GTM_FOREACH_ENUMEREE that uses + NSEnumerator and objectEnumerator/keyEnumerator on 10.4, but on 10.5+/iPhone + uses FastEnumeration. + +- GTMNSWorkspace+Running gives a variety of ways of determining the attributes + of running processes. + +- If the iPhone unittesting support is exiting when done, it now properly sets + the exit code based on test success/failure. + +- Added GTMNSObject+KeyValueObserving to make it easier on folks to do KVO + "correctly". Based on some excellent code by Michael Ash. + http://www.mikeash.com/?page=pyblog/key-value-observing-done-right.html + This has been added for iPhone and OS X. + +- Fixed up GTMSenTestCase on iPhone so that it has a description that matches + that of OCUnit. + +- Added GTMAbstractDOListener, GTMTransientRootProxy, and + GTMTransientRootPortProxy. These classes can be used to simplify the + use of distributed objects. GTMAbstractDOListener can be used to handle + connections from any type of port. GTMTransientRootProxy is designed for + using named connections while GTMTransientRootPortProxy is for connections + with supplied NSPorts. + +- Finally dropped GTMHTTPFetcher and GTMProgressMonitorInputStream, GData + versions now pretty much line up with these, so rather then both projects + maintaining them, we've dropped them and point folks at the gdata versions + which can be used independent of the rest of GData. + +- Changed gtm_createCGPath to gtm_cgPath in GTMNSBezier+CGPath. The path + returned is now autoreleased so you don't need to worry about releasing it. + +- Made some changes to the GTMNSObject+UnitTesting APIs. Specifically renamed + gtm_createUnitTestImage to gtm_unitTestImage. The value it returns is now + autoreleased, so no need to release it. Also change + gtm_createUnitTestBitmapOfSize:withData: to a C function. + +- Cleaned up GTM so that it passes the Clang checker without any warnings. + +- Added GTMLuminance for working with colors in HSL space easily. + +- Added GTMTheme for doing product wide theme modifications. + +- The Run*UnitTest.sh script now delete the current projects *.gcda files to + avoid coverage data warning when you edit source. If you do not want this to + occur, you can set GTM_DO_NOT_REMOVE_GCOV_DATA to a non-zero value. + +- Added OBJC_DEBUG_UNLOAD=YES, and OBJC_DEBUG_NIL_SYNC=YES to our unittest shell + scripts to try and flush out some more bugs. We have intentionally NOT turned + on OBJC_DEBUG_FINALIZERS because it spits out a lot of unnecessary false + positives. + +- Added GTMUILocalizer.m for automatically localizing nib files with strings. + +- Added better support for NSTabViews to GTMAppKit+UnitTesting. Previously we + didn't check the tabs, or recurse into the views. + +- Adds support for toolTips, accessibilityHelp and accessibilityDescription to + GTMAppKit+UnitTesting. This will break your UI tests based on the older + state information. + +- Added support for duration to GTMLargeTypeWindow mainly to make the unittests + run at a decent speed. + +- All calls to GTMNSAppleScript+Handler execute: calls will now actually + execute the script on the main thread. + +- Added gtm_launchedApplications to GTMNSWorkspace+Running. It is significantly + faster than calling [NSWorkspace launchedApplications] + +- Moved GTMABAddressBook out of iPhone and into the AddressBook directory, + because it now works on both the Desktop and the iPhone giving you a single + interface to do AddressBook work on both platforms. + +- Added GTMNSScanner+JSON for scanning out JSON objects and arrays. We don't + parse JSON as there are several other frameworks out there for doing that. + +- Fixed up GTMABAddressBook so that it will compile and run on Tiger as well. + This did mean some slight functional differences in terms of the + *WithCompositeNameWithPrefix methods as they can't do diacritic or width + insensitive search on Tiger, but this shouldn't affect most users. + +- Added GTMGoogleSearch to foundation to make doing google searches easier. + +- Added GTMUIImage+Resize for iPhone to conveniently handle generating resized + UIImages while preserving aspect ratios. + +- Added support for passing in a context object to some of the + GTMNSEnumerator+Filter routines. + +- Fixed up bug in GTMFileSystemKQueue where we were passing the kqueue argument + in incorrectly. Added appropriate tests. + +- Added NSMatrix to the UIState support. + +- Added NSMatrix and NSCell to GTMLocalizer support. + +- Added gtm_dictionaryWithHttpArgumentsString to NSDictionary+URLArguments. + +- Added GTMDebugKeyValueObserving category to NSObject. This makes debugging + KVO a little easier in some cases. To turn it on, set the "GTMDebugKVO" + environment variable to "1". It will output a lot of data about adding and + removing KVO observers, and when the values are actually changed. + +- Added better support for NSBox to GTMAppKit+UnitTesting. Previously we + didn't check any box specific attributes. + +- Updated how GTMNSObject+UnitTesting searches for files to include the Target + SDK from compile time. Also removed some of the formatting options so + try and make it simpler to follow. + +- Added GTMNSDictionary+CaseInsensitive, e.g. for use with HTTP headers. + +- Added GTMNSData+Hex for conversion to and from hex strings. + +- Added GTMNSNumber+64Bit for working with CGFloats, NSIntegers and + NSUIntegers using NSNumber on all supported SDKs. + +- Added GTMIBArray for building arrays in nib files. + +- Added SDEFCompiler.sh for making it easier to error check SDEFs at + compile time. See BuildScripts/SDEFCompiler.sh for details on how to set it + up. If you work with SDEFs at all, this one is worth checking out. + +- GTMNSAnimation+Duration.m adds support for checking for control and shift + keys when trying to decide how to calculate durations for animations. + +- Added Xcode configs for iPhone 2.2, 2.2.1, 3.0, 3.1, 3.1.2. + +- Added configurations GTMiPhone for all the new configs, updated the build + scripts to build all iPhone SDKs also. + +- RunMacOSUnitTests supports GTM_REMOVE_TARGET_GCOV_ONLY to have only gcda + removed from the target and not the whole project. + +- RunMacOSUnitTests supports GTM_ONE_TEST_AT_A_TIME to have only one test + run at a time to support global state (color sync profile, etc.). + +- Added the GTM XcodePlugin. This plugin enhances Xcode with the following + features: + - Cleanup line ending white space on saves. + See Xcode Preferences > Google panel to turn this on. + - Create Unit Test Executable. + Select a unittest target, and then select "Create Unit Test Executable" + from the project menu, and it will create an executable you can debug. + - Turn Code Coverage On + Turns on code coverage for the current target. Nice when working with + CoverStory. + - Show Code Coverage/Clean Code Coverage/Clean Project Coverage and Build + Utilities for working with CoverStory. + - Under the help menu, quick links to the Google Style guides, Radar, + and our favorite tech note. + + Note that you can see all the menu items that GTM Xcode Plugin has added by + turning on the "Show Icon on Menu Items" option in the Xcode Preferences > + Google panel. + +- iPhone unittests now print "Test Case '-[TEST SELECTOR]' started." before + each test. + +- Added GTMTypeCasting.h which gives you safer objective-c casts based on + C++ static_cast and dynamic_cast. + +- Added GTMStringEncoding which is a generic base 2-128 encoder/decoder with + support for custom character maps. + +- Added support for localizing binding options in GTMUILocalizer. + +- Cleaned up several leaks in tests and elsewhere. + +- Added PListCompiler.sh for compiling plists. + +- Added GTM_NSSTRINGIFY_MACRO for turning other macros into NSStrings. + +- Removed GTMTheme because it wasn't generic enough for inclusion in GTM, and + was never fully implemented + +- Added GTM_NONNULL, NS_RETURNS_RETAINED, and CF_RETURNS_RETAINED macrs to + support clang analysis. + +- Changed GTMStackTrace to put out a cleaner trace, and to work on 64 bit. + NOTE that if you are parsing this format, that it has changed. + eg 32 bit + #0 UnitTest - Foundation 0x0001c392 -[SenTest run] + and 64 bit + #0 UnitTest - Foundation 0x10010000001c3921 -[SenTest run] + +- Added GTMNSAnimatablePropertyContainer methods that allow you to stop + animations properly in 10.5. + +- Added gtm_imageByRotating for rotating a UIImage. Based on code by Trevor + Harmon: + http://vocaro.com/trevor/blog/wp-content/uploads/2009/10/UIImage+Resize.h + http://vocaro.com/trevor/blog/wp-content/uploads/2009/10/UIImage+Resize.m + +- Added support for creating uniquely named files and directories easily with + GTMNSFileHandle+UniqueName. + + +Release 1.5.1 +Changes since 1.5.0 +16-June-2008 + +- Fixed building tiger gcov with a directory path that contains a space. + + +Release 1.5.0 +Changes since 1.0.0 +13-June-2008 + +- Updated the project to Xcode 3. This is the only supported Xcode version + for the project. The code can build against the Tiger or Leopard SDKs, and + developers can pull individual files into a Xcode 2.x project and things + should work just fine. + +- Fixed up the prefix header of the project and prefix handing in the Unittest + Xcode Config. (thanks schafdog) + +- Fixed error in handling default compression for NSData+zlib + +- Changed name on API in NSString+XML and added another api to make this a + litte more clear. (thanks Kent) + +- GTMRegex + - Found and fixed a bug in the enumerators that was causing them to + incorrectly walk a string when using '^' in an expression. + - Added helpers for substring tests and unittests for the new apis. + - Added initializer that takes an outError to allow the collection of any + pattern parsing error message (in case the pattern came from a user and + complete error information is needed to message the user). + +- Added GTMScriptRunner for spawning scripts. + +- Added GTMNSFileManager+Path for two small helpers. + +- Added GTMNSWorkspace+ScreenSaver + +- Added GTMNSString+Data + +- added a common header (GTMDefines) for any common defines so the conditionals + are all in one place + +- Support for things compiling against the iPhone SDK + - Everything in the GTMiPhone project works in the iPhone + - Added iPhone xcconfig files + - Added iPhone unittests (See below) + +- More work on the UI unittests + - support pretty much any part of a UI + - support for CALayers + - full support for the iPhone + - the iPhone uses the same macro set at OCUnit, but has its own runtime + for running tests. + - extended capabilities of UIUnitTesting to be more flexible and give better + error reporting for states. + +- Renamed the actual framework to "GoogleToolboxForMac.framework" (it should + have matched the project on code.google.com from the start) + +- added a Debug-gcov target that will product debug bits with code coverage + support to check unittests, etc. + +- GTMDebugSelectorValidation to provide something to include in class impls + to get validation of object/selector pair(s) being implemented so you don't + have to wait for a runtime invocation failures. (especially useful for + things that take a success and failure selector so one doesn't always get + called) + +- added _GTMDevLog (really in GTMDefines) that are a set of macros that can be + used for logging. This allows any project to redefine them to direct logging + into its runtime needs. + +- Moved GTMGeometryUtils into Foundation from AppKit + +- Removed several HI* calls from GTMGeometryUtils as Carbon UI in general is + deprecated. + +- Xcode configs + - changed the layout to make it a little easier to tell how to use them. + - added Leopard or later configs + +- Unittest coverage greatly increased + +- Added RunMacOSUnitTests shell script. We run this script for starting up our + unittests because it turns on a variety of "enhancements" (such as zombies, + scribbling etc) to encourage our unittests to fail for us. + + https://connect.apple.com/cgi-bin/WebObjects/MemberSite.woa/wa/getSoftware?bundleID=19915 + +- Remove NSColor+Theme and NSWorkspace+Theme as they are no longer needed for + testing things for unittests, instead GTMUnitTestingUtilities.m(Lines 64-79) + force the user settable things to ensure tests are consistent. + +- Added GTMBase64. + +- Added GTMHTTPFetcher and GTMProgressMonitorInputStream. + +- Moved the data files for unittests into subdirectories call TestData to + help make it a little easier to find files within the main directories. + +- GTMDelegatingTableColumn get an overhaul to match the 10.5 sdk so it's closer + to a dropin for previous sdks. + +- Added a lot of functionality to NSAppleEventDescriptor and NSAppleScript + allowing you to easily call labeled and positional handlers in an AppleScript, + get/set properties and get NSAppleEventDescriptors for most basic datatypes. + +- Added GTMFourCharCode for wrapping FourCharCodes in an ObjC object. Mainly for + use by the NSAppleEventDescriptor code, and also useful for storing them + in ObjC collection classes. + +- Added GTMStackTrace. + +- Added NSString+URLArguments and NSDictionary+URLArguments + +- Added GTMHTTPServer as a simple server but mainly for use in unittesting. + +- Added _GTMCompileAssert for doing compile time assertions to GTMDefines.h + +- Added GTMUnitTestDevLog and GTMTestCase for logging and tracking logs while + running unittests to verify what is being logged is what you expect. All + unittests should now inherit from GTMTestCase instead of SenTestCase to take + advantage of the new log tracking. See GTMUnitTestDevLog.h for details. + +- Extracted GTMIPhoneUnitTestDelegate from GTMIPhoneUnitTestMain.m to its own + file. Tests can now be run from another application. + + +Release 1.0.0 +14-January-2008 + +- Initial public release. Includes some simple utils, xcode configs, and + some support for doing unittests of graphical things. -- cgit v1.2.3