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


------------------------------------------------------------------------------
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

Reply via email to