<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'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'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'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'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"><<a href="mailto:spencer@ccrma.stanford.edu" target="_blank">spencer@ccrma.stanford.edu</a>></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"><<a href="mailto:tetha.z@gmail.com" target="_blank">tetha.z@gmail.com</a>></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 => 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 => int foo;</div><div><br></div><div> <<< "a", foo >>>;</div></div><div> if (true) {</div><div><div> <<< "b", foo >>>;</div>
<div> }</div><div> <<< "c", foo >>>;</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"><<a href="mailto:ian.southd@gmail.com" target="_blank">ian.southd@gmail.com</a>></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"><<a href="mailto:tetha.z@gmail.com" target="_blank">tetha.z@gmail.com</a>></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'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"><<a href="mailto:ian.southd@gmail.com" target="_blank">ian.southd@gmail.com</a>></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 => int foo;<br>}<br><br>class B extends A <br>{<br> fun void bar()<br> {<br> 0 => int foo;<br><br> <<< "a", foo >>>;<br>
{<br> <<< "b", foo >>>;<br> }<br> <<< "c", foo >>>;<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>