how to protocol removal

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

how to protocol removal

rabbit
I have a package PromisesLocal which redefines a trunk class, Promise.
There is some old protocol from trunk Promise which remains as part of
the new definition and this is breaking tests (,
Promise>>#whenResolved:, Promise>>#whenBroken:). Is there a way with
Monticello or loading where I can remove this protocol? Or a better
question is how to best remove this protocol when loading a Monticello
package?

K, r



Reply | Threaded
Open this post in threaded view
|

Re: how to protocol removal

Jakob Reschke
Hi,

What about a preamble script to remove the existing class or methods?

Though it does not sound like a good idea to me if the interface is
not compatible. It will probably break other stuff in the image.

Kind regards,
Jakob

Am So., 4. Okt. 2020 um 19:41 Uhr schrieb rabbit
<[hidden email]>:

>
> I have a package PromisesLocal which redefines a trunk class, Promise.
> There is some old protocol from trunk Promise which remains as part of
> the new definition and this is breaking tests (,
> Promise>>#whenResolved:, Promise>>#whenBroken:). Is there a way with
> Monticello or loading where I can remove this protocol? Or a better
> question is how to best remove this protocol when loading a Monticello
> package?
>
> K, r
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: how to protocol removal

rabbit
Hi Jakob,

Thanks for the info! How could I define such a preamble in Monticello? I
ended up redefining the methods to call the super impl and pass the
tests. So these methods are present in the package I published.

I modified the PromiseTest in KernelTests-Processes to add small delay
to allow for async completions. The only changes in semantics are that
when a second attempt for a resolution, of a previously resolved
promise, I throw a PromiseAlreadyResolved exception. When an arbitrary
rejection value is used I wrap it in a BrokenPromiseValue excption.
These are the only two classes & exceptions I added to the trunk impl.

PromisesLocal pass those tests when it is loaded.

K, r

On 10/5/20 3:29 PM, Jakob Reschke wrote:

> Hi,
>
> What about a preamble script to remove the existing class or methods?
>
> Though it does not sound like a good idea to me if the interface is
> not compatible. It will probably break other stuff in the image.
>
> Kind regards,
> Jakob
>
> Am So., 4. Okt. 2020 um 19:41 Uhr schrieb rabbit
> <[hidden email]>:
>> I have a package PromisesLocal which redefines a trunk class, Promise.
>> There is some old protocol from trunk Promise which remains as part of
>> the new definition and this is breaking tests (,
>> Promise>>#whenResolved:, Promise>>#whenBroken:). Is there a way with
>> Monticello or loading where I can remove this protocol? Or a better
>> question is how to best remove this protocol when loading a Monticello
>> package?
>>
>> K, r
>>
>>
>>


Reply | Threaded
Open this post in threaded view
|

Re: how to protocol removal

Jakob Reschke
You can access the scripts in the Monticello browser by selecting the
package and clicking the Scripts button in the bar.

Am Mo., 5. Okt. 2020 um 22:03 Uhr schrieb rabbit
<[hidden email]>:

>
> Hi Jakob,
>
> Thanks for the info! How could I define such a preamble in Monticello? I
> ended up redefining the methods to call the super impl and pass the
> tests. So these methods are present in the package I published.
>
> I modified the PromiseTest in KernelTests-Processes to add small delay
> to allow for async completions. The only changes in semantics are that
> when a second attempt for a resolution, of a previously resolved
> promise, I throw a PromiseAlreadyResolved exception. When an arbitrary
> rejection value is used I wrap it in a BrokenPromiseValue excption.
> These are the only two classes & exceptions I added to the trunk impl.
>
> PromisesLocal pass those tests when it is loaded.
>
> K, r
>
> On 10/5/20 3:29 PM, Jakob Reschke wrote:
> > Hi,
> >
> > What about a preamble script to remove the existing class or methods?
> >
> > Though it does not sound like a good idea to me if the interface is
> > not compatible. It will probably break other stuff in the image.
> >
> > Kind regards,
> > Jakob
> >
> > Am So., 4. Okt. 2020 um 19:41 Uhr schrieb rabbit
> > <[hidden email]>:
> >> I have a package PromisesLocal which redefines a trunk class, Promise.
> >> There is some old protocol from trunk Promise which remains as part of
> >> the new definition and this is breaking tests (,
> >> Promise>>#whenResolved:, Promise>>#whenBroken:). Is there a way with
> >> Monticello or loading where I can remove this protocol? Or a better
> >> question is how to best remove this protocol when loading a Monticello
> >> package?
> >>
> >> K, r
> >>
> >>
> >>
>

Reply | Threaded
Open this post in threaded view
|

Re: how to protocol removal

rabbit
Great! Thanks! The first time I have 'seen' that button.

On 10/5/20 4:23 PM, Jakob Reschke wrote:

> You can access the scripts in the Monticello browser by selecting the
> package and clicking the Scripts button in the bar.
>
> Am Mo., 5. Okt. 2020 um 22:03 Uhr schrieb rabbit
> <[hidden email]>:
>> Hi Jakob,
>>
>> Thanks for the info! How could I define such a preamble in Monticello? I
>> ended up redefining the methods to call the super impl and pass the
>> tests. So these methods are present in the package I published.
>>
>> I modified the PromiseTest in KernelTests-Processes to add small delay
>> to allow for async completions. The only changes in semantics are that
>> when a second attempt for a resolution, of a previously resolved
>> promise, I throw a PromiseAlreadyResolved exception. When an arbitrary
>> rejection value is used I wrap it in a BrokenPromiseValue excption.
>> These are the only two classes & exceptions I added to the trunk impl.
>>
>> PromisesLocal pass those tests when it is loaded.
>>
>> K, r
>>
>> On 10/5/20 3:29 PM, Jakob Reschke wrote:
>>> Hi,
>>>
>>> What about a preamble script to remove the existing class or methods?
>>>
>>> Though it does not sound like a good idea to me if the interface is
>>> not compatible. It will probably break other stuff in the image.
>>>
>>> Kind regards,
>>> Jakob
>>>
>>> Am So., 4. Okt. 2020 um 19:41 Uhr schrieb rabbit
>>> <[hidden email]>:
>>>> I have a package PromisesLocal which redefines a trunk class, Promise.
>>>> There is some old protocol from trunk Promise which remains as part of
>>>> the new definition and this is breaking tests (,
>>>> Promise>>#whenResolved:, Promise>>#whenBroken:). Is there a way with
>>>> Monticello or loading where I can remove this protocol? Or a better
>>>> question is how to best remove this protocol when loading a Monticello
>>>> package?
>>>>
>>>> K, r
>>>>
>>>>
>>>>