On Mon, Jan 19, 2009 at 12:33 PM, Christiaan Hofman <cmhof...@gmail.com> wrote: > > > On Mon, Jan 19, 2009 at 7:09 PM, Christiaan Hofman <cmhof...@gmail.com> > wrote: >> >> On 19 Jan 2009, at 6:51 PM, Maxwell, Adam R wrote: >> >>> >>> >>> >>> On 01/19/09 08:16, "Christiaan Hofman" <cmhof...@gmail.com> wrote: >>> >>>> >>>> On 19 Jan 2009, at 4:56 PM, Gregory Jefferis wrote: >>>> >>>>> On 2009-01-19 04:31, "Michael McCracken" <michael.mccrac...@gmail.com> >>>>> wrote: >>>>> >>>>>> On Sun, Jan 18, 2009 at 8:58 PM, Gregory Jefferis >>>>>> <jeffe...@gmail.com> wrote: >>>>>>> >>>>>>> On 2009-01-19 01:42, "Christiaan Hofman" <cmhof...@gmail.com> wrote: >>>>>>> >>>>>>>> >>>>>>>> On 19 Jan 2009, at 2:20 AM, Gregory Jefferis wrote: >>>>>>>> >>>>>>>>> On 2009-01-19 00:39, "Adam R. Maxwell" <amaxw...@mac.com> wrote: >>>>>>>>> >>>>>>>> I don't think that's possible, but I don't know too much about unit >>>>>>>> tests. I'd rather say that the tests should be designed to be >>>>>>>> independent of the prefs. >>>>>>> >>>>>>> Yes and no. I think that there could be sensible reasons to want >>>>>>> to test >>>>>>> the effect of a preference on program behaviour. >>>>>> >>>>>> This is possible- you can remove the application domain prefs (the >>>>>> ones the user sets) from NSUserDefaults: >>>>>> [[NSUserDefaults standardUserDefaults] >>>>>> removePersistentDomainForName:@"edu.ucsd.cs.mmccrack.bibdesk"] >>>>>> >>>>>> this is probably a good idea to do - so the tests are always testing >>>>>> the same thing, and if we need to test the effects of a pref, you >>>>>> just >>>>>> set it in the test. >>>>> >>>>> Hmm, it turns out that clears all user defaults from the preferences >>>>> file - >>>>> ie it hoses ~/Library/Preferences/edu.ucsd.cs.mmccrack.bibdesk.plist ! >>>>> So it 'works' ... permanently. Any further suggestions? I'm finding >>>>> the >>>>> NSUserDefaults docs a bit opaque. >>>>> >>>> >>>> All I can think of is to save a dictionaryRepresentation containing >>>> all keys and values, so you can afterwards use >>>> setPersistentDomain:forName: to reinsert everything. But I'm not sure >>>> if that's safe, because dictionaryRepresentation will contain both >>>> values that have actually been set and values that came from the >>>> defaults. Also, how does the unit test report an error? It's important >>>> that the test will reach the last step even when a test fails! >>> >>> This sounds like a guarantee that doing a nightly build will wipe out my >>> prefs at some point, and I really don't want that to happen! I'm not >>> sure >>> there's a good way to do this, since you can't control synchronization, >>> and >>> OFPreference is adding an additional layer. Is there any way to use a >>> different bundle identifier for the tests? >> >> >> Add a script phase to the unit test target that changes the >> CFBundleIdentifier inside the Debug built product. This could also make sure >> the corresponding pref file is removed. >> >> defaults write "${BUILT_PRODUCTS_DIR}/BibDesk.app/Contents/Info.plist" >> CFBundleIdentifier edu.ucsd.cs.mmccrack.bibdesk.test >> defaults delete edu.ucsd.cs.mmccrack.bibdesk.test >> >> Christiaan >> > > The defaults CLT does not seem to accept it like this, here's a corrected > script > > BUNDLE_IDENTIFIER=edu.ucsd.cs.mmccrack.bibdesk.test > BIBDESK_INFO="${BUILT_PRODUCTS_DIR}/BibDesk.app/Contents/Info" > defaults write "$BIBDESK_INFO" CFBundleIdentifier $BUNDLE_IDENTIFIER > plutil -convert xml1 "${BIBDESK_INFO}.plist" > rm -f ~/Library/Preferences/${BUNDLE_IDENTIFIER}.plist > > If we want, we could revert this in another script phase after the test.
The test-only bundle ID is a good idea. I didn't realize that my sample code would actually remove the prefs for more than the running app, sorry about that - the docs are indeed a little thin on this point. To answer the question about removing the 'default' prefs, though - those are in a different domain, the NSRegistrationDomain, so I'm pretty sure that the method I wrote about only kills the user prefs domain. -mike > Christiaan > > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by: > SourcForge Community > SourceForge wants to tell your story. > http://p.sf.net/sfu/sf-spreadtheword > _______________________________________________ > Bibdesk-develop mailing list > Bibdesk-develop@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/bibdesk-develop > > -- Michael McCracken UCSD CSE PhD Candidate research: http://www.cse.ucsd.edu/~mmccrack/ misc: http://michael-mccracken.net/wp/ ------------------------------------------------------------------------------ This SF.net email is sponsored by: SourcForge Community SourceForge wants to tell your story. http://p.sf.net/sfu/sf-spreadtheword _______________________________________________ Bibdesk-develop mailing list Bibdesk-develop@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bibdesk-develop