<div dir="ltr">Probably a good time to mention (emailed chuck-dev a few weeks back) that we now have unit tests that run every time changes are made to ChucK.<div><br></div><div>Any time bugs are found, concise code that reproduces it (like the code provided above) is great, because we can then just copy-and-paste it into a new test file. :)
<div><br></div><div>Original email below for anyone who wants to know more or contribute tests. </div><div><br></div><div>Thanks!</div><div><br></div><div>mc</div><div><br></div><div>---------</div><div><br></div></div><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">Hi all,</span><br>


<font face="arial, sans-serif"><br></font><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">In between some intense StarCrafting, Spencer and I set up</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"> </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">ChucK</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"> </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">to be continuously integrated on Travis CI. This means every commit/change to </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">ChucK</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"> </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">ensures</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"> </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">ChucK</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"> </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">compiles on Mac (10.9.2) and Linux (Ubuntu 12.04), as well as running a bunch of</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"> </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">unit</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"> </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">tests</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"> </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">on both platforms. </span><br>


<font face="arial, sans-serif"><br></font><a href="https://travis-ci.org/ccrma/chuck/builds" style="font-family:arial,sans-serif;font-size:12.727272033691406px" target="_blank">https://travis-ci.org/ccrma/<span>chuck</span>/builds</a><br>


<font face="arial, sans-serif"><br></font><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">This was spurred by the recent 147th shred removal causing a segmentation fault, given we could easily</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"> </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">test</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"> </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">(and even further stress</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"> </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">test</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">)</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"> </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">ChucK </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">automatically.</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"> </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">Tests</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"> </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">are currently in the src/</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">test</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"> </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">folder of the</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"> </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">ChucK</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"> </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">repo on GitHub, including</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"> </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">tests</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"> </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">like Michael Heuer&#39;s 147 spork (and one with over 9000 shreds) removal code in the 04-Stress folder:</span><br>


<font face="arial, sans-serif"><br></font><a href="https://github.com/ccrma/chuck/tree/master/src/test" style="font-family:arial,sans-serif;font-size:12.727272033691406px" target="_blank">https://github.com/ccrma/<span>chuck</span>/tree/master/src/<span>test</span></a><br>


<font face="arial, sans-serif"><br></font><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">Want to contribute? Feel free to fork the</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"> </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">ChucK</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"> </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">repo, add</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"> </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">tests</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">, and send a pull request. We&#39;re not quite sure how we want to organize the</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"> </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">tests</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"> </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">yet so put them in whatever folder you want. Once your</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"> </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">tests</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"> </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">are pulled in, they&#39;ll be run every time a new commit is pushed to</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"> </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">ChucK</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">.</span><br>


<font face="arial, sans-serif"><br></font><div><div><div style="font-family:arial,sans-serif;font-size:12.727272033691406px">We&#39;re hoping this will make <span>ChucK</span> more stable as well as decreasing the chance for regressing bugs.</div>


</div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Aug 6, 2014 at 2:00 PM, Spencer Salazar <span dir="ltr">&lt;<a href="mailto:spencer@ccrma.stanford.edu" target="_blank">spencer@ccrma.stanford.edu</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">That looks like a bug alright. Thanks for letting us know! We will take a look into it. <span class="HOEnZb"><font color="#888888"><div>

<br></div><div>spencer</div><div><br></div></font></span></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Aug 6, 2014 at 10:56 AM, Dealga McArdle <span dir="ltr">&lt;<a href="mailto:tetha.z@gmail.com" target="_blank">tetha.z@gmail.com</a>&gt;</span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Ah, yes.. i see now<div><br></div><div><div><div>class A </div><div>{</div><div>    10000 =&gt; int foo;</div>


<div>}</div><div><br></div><div>class B extends A </div><div>{</div><div>    fun void bar()</div><div>

    {</div><div>        0 =&gt; int foo;</div><div><br></div><div>        &lt;&lt;&lt; &quot;a&quot;, foo &gt;&gt;&gt;;</div></div><div>        if (true) {</div><div><div>            &lt;&lt;&lt; &quot;b&quot;, foo &gt;&gt;&gt;;</div>




<div>        }</div><div>        &lt;&lt;&lt; &quot;c&quot;, foo &gt;&gt;&gt;;</div><div>    }</div><div>}</div><div><br></div></div><div>B bobj;</div><div>bobj.bar();</div><div><br></div></div><div>indeed.</div></div><div>


<div><div class="gmail_extra">

<br><br><div class="gmail_quote">On Wed, Aug 6, 2014 at 4:51 PM, Ian South-Dickinson <span dir="ltr">&lt;<a href="mailto:ian.southd@gmail.com" target="_blank">ian.southd@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">




<div dir="ltr">The bug appears in other inner scopes, such as an if-statement, and probably for/while loops.<br></div><div><div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Aug 6, 2014 at 7:40 AM, Dealga McArdle <span dir="ltr">&lt;<a href="mailto:tetha.z@gmail.com" target="_blank">tetha.z@gmail.com</a>&gt;</span> wrote:<br>





<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Ian, why do you have that innermost scope? that&#39;s not intended use of syntax I think.</div><div class="gmail_extra">





<br><br><div class="gmail_quote"><div><div>On Wed, Aug 6, 2014 at 9:00 AM, Ian South-Dickinson <span dir="ltr">&lt;<a href="mailto:ian.southd@gmail.com" target="_blank">ian.southd@gmail.com</a>&gt;</span> wrote:<br>


</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><div dir="ltr"><div>I encountered a strange case where a variable was changing value within the scope of an if statement, because I had a superclass with an identical variable name. I am able to reproduce it with this simple case:<br>








<br><span style="font-family:courier new,monospace">class A <br>{<br>    10000 =&gt; int foo;<br>}<br><br>class B extends A <br>{<br>    fun void bar()<br>    {<br>        0 =&gt; int foo;<br><br>        &lt;&lt;&lt; &quot;a&quot;, foo &gt;&gt;&gt;;<br>








        {<br>            &lt;&lt;&lt; &quot;b&quot;, foo &gt;&gt;&gt;;<br>        }<br>        &lt;&lt;&lt; &quot;c&quot;, foo &gt;&gt;&gt;;<br>    }<br>}</span><br><br></div>Prints out:<br><span style="font-family:courier new,monospace"><br>








a 0 <br>b 10000 <br>c 0 </span><br></div>
<br></div></div>_______________________________________________<br>
chuck-users mailing list<br>
<a href="mailto:chuck-users@lists.cs.princeton.edu" target="_blank">chuck-users@lists.cs.princeton.edu</a><br>
<a href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users" target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a><br>
<br></blockquote></div><br></div>
<br>_______________________________________________<br>
chuck-users mailing list<br>
<a href="mailto:chuck-users@lists.cs.princeton.edu" target="_blank">chuck-users@lists.cs.princeton.edu</a><br>
<a href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users" target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a><br>
<br></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
chuck-users mailing list<br>
<a href="mailto:chuck-users@lists.cs.princeton.edu" target="_blank">chuck-users@lists.cs.princeton.edu</a><br>
<a href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users" target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a><br>
<br></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
chuck-users mailing list<br>
<a href="mailto:chuck-users@lists.cs.princeton.edu" target="_blank">chuck-users@lists.cs.princeton.edu</a><br>
<a href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users" target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a><br>
<br></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
chuck-users mailing list<br>
<a href="mailto:chuck-users@lists.cs.princeton.edu">chuck-users@lists.cs.princeton.edu</a><br>
<a href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users" target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a><br>
<br></blockquote></div><br></div>