<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Automated Builds &#8211; Xojo Programming Blog</title>
	<atom:link href="https://blog.xojo.com/tag/automated-builds/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.xojo.com</link>
	<description>Blog about the Xojo programming language and IDE</description>
	<lastBuildDate>Fri, 17 Dec 2021 22:04:06 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Automated Testing: How We Test Xojo Builds</title>
		<link>https://blog.xojo.com/2021/12/17/automated-testing-how-we-test-xojo-builds/</link>
		
		<dc:creator><![CDATA[Geoff Perlman]]></dc:creator>
		<pubDate>Fri, 17 Dec 2021 22:04:03 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Automated Builds]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Build Automation]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Multi-Platform Development]]></category>
		<category><![CDATA[Rapid Application Development]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=9831</guid>

					<description><![CDATA[Xojo has an extensive testing period where actual users test a pre-release version with their projects but if you are wondering what kind of testing we do internally before each pre-release of Xojo, we have quite a bit of automated testing processes. There are over 400 tests just for the compiler alone. Already, we are approaching 300 tests for our Android framework. In total, across all supported platforms, there are over 2500 automated tests. ]]></description>
										<content:encoded><![CDATA[
<p>Xojo has an extensive testing period where actual users test a pre-release version with their projects but if you are wondering what kind of testing we do internally before each pre-release of Xojo,&nbsp;we have quite a bit of automated testing processes. There are over 400 tests just for the compiler alone. Already, we are approaching 300 tests for our Android framework. In total, across all supported platforms, there are over 2500 automated tests. Most tests run every time we do a full build of Xojo (also a fully automated process) which occurs 2 to 5 times a week. When one of these tests fails, the unlucky engineer responsible is informed and gets to work fixing it. More automated tests are being added to our system regularly.</p>



<p>Primarily, <a href="https://blog.xojo.com/2020/09/29/how-do-we-decide-what-goes-into-xojo/\">we focus</a> on the issues having the greatest impact on the Xojo community. However, that focus is not absolute. The engineering team at Xojo is using Xojo all-day, every day. They will often catch bugs in the early stages of the development of a new feature or as a side effect of fixing some other bug, long before that release gets to pre-release testers. The number of combinations of interactions between various parts of the Xojo frameworks is effectively infinite and no system can test everything. That&#8217;s why pre-release testing by actual users is so important. When you look at the bugs that are reported, 95.6% have only one user reporting them. Though we provide, in fact require, users to search Feedback before submitting a case, users often describe the same bug in varying ways resulting in&nbsp;duplicates. Given both the infinite number of interactions and some number of duplicate reports, the fact that overwhelming majority of reports have just one user is understandable. That we focus on the reports that have multiple users is also understandable. And of course there are exceptions, if it&#8217;s obvious that a new bug is going to effect a lot of users, we will get to work on it ASAP.&nbsp;In addition, if an engineer is working in a particular part of the IDE or a particular framework, since they have take the time to refamiliarize themselves with that code, they will often look for bugs that have been reported against it.&nbsp;</p>



<p>Development tools are special because the type of people who use them are more likely to report bugs and are more likely to want to search the list of open cases, get updates about bugs and more. While it&#8217;s important to report bugs, and we can’t stress enough how much we appreciate the time and care you take in doing so, even if the bug is fixed, you still have to wait for the release in which it&#8217;s fixed. Even our engineers have to wait for bugs fixes just like you do. Still, when you run into a bug, please search <a href="http://www.xojo.com/download">Feedback</a> first to see if it&#8217;s been reported, perhaps think of a few ways it could have been reported and do a few searches. If you find a match, add yourself to the case. If you don&#8217;t, please file a case. If you haven&#8217;t found a workaround, ask on the <a href="https://forum.xojo.com/">forum</a> or contact us directly and we see what we can do to help. </p>



<p>There is a lot of automated testing that goes on before we put out a pre-release to Testers. And we will continue to add more because automated testing is a terrific and efficient way to test anything that can be automatically tested. We are always on the lookout for ways to improve efficiency in our processes. </p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>IDECommunicator Protocol v2</title>
		<link>https://blog.xojo.com/2017/06/30/idecommunicator-protocol-v2/</link>
		
		<dc:creator><![CDATA[Greg O'Lone]]></dc:creator>
		<pubDate>Fri, 30 Jun 2017 15:00:43 +0000</pubDate>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Automated Builds]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[IDECommunicator]]></category>
		<guid isPermaLink="false">http://blog.xojo.com/?p=3064</guid>

					<description><![CDATA[About two years ago, at XDC 2015 in Austin, Philippe Casgrain from LightSpeed did a bonus presentation on the benefits of Continuous Integration when building&#8230;]]></description>
										<content:encoded><![CDATA[<p>About two years ago, at XDC 2015 in Austin, Philippe Casgrain from LightSpeed did a bonus presentation on the benefits of Continuous Integration when building projects with Xojo. Coincidentally, we at Xojo had decided just days before that we needed to move away from manual builds and automate as much of our build process as possible to keep up with the increasing complexity and number of our frameworks (later that summer we would be going from 3 to 8). After the presentation, we heard from several developers asking when the limitations of automated builds would be addressed and because we were working on our own process, it gave us an excellent place to try out new things while ironing out the wrinkles.</p>
<p><span id="more-3064"></span></p>
<h3>Challenges</h3>
<p>The foremost issue that we had to fix was that the original protocol was designed so that it required you to close the IPCSocket to get your command to run. That meant there was no longer a connection on which the IDE could send any kind of response. It also meant that dealing with issues required making multiple connections.</p>
<p>The second was that there were many things that raised dialogs when something went wrong, which meant that an unattended IDE could get &#8220;stuck&#8221; waiting for user input which would never come. We&#8217;d heard that developers would have their systems take a screenshot if an hour had passed with no activity so they could figure out what had gone wrong, but that can be a huge waste of time if you&#8217;re waiting on a build.</p>
<h3>Solutions</h3>
<p>The new protocol (which was beta in 2016r4 and officially released in 2017r1) addresses both of these problems. The new protocol uses JSON for the command format and the IDE can send back all kinds of information including (but not limited to):</p>
<p>* Script syntax errors<br />
* Script runtime errors<br />
* IDE version conflicts<br />
* Missing assets<br />
* Compile errors</p>
<p>All of these things are returned to your calling script so you can take appropriate action. Because this is truly a two-way protocol now, you can also send data back to your script, like if you wanted to return the path of the built app back to your build system.</p>
<p>We&#8217;ve also been working to make anything that would normally show a dialog to the user gets sent back to the app communicating with the Xojo IDE. As far was we know, all but one was caught, and a fix for it has been submitted for 2017r2.</p>
<p>If you&#8217;d like to see the new IDECommunicator protocol in action, look in the Examples folder next to the IDE: Examples &gt; Advanced &gt; IDE Scripting &gt; IDECommunicator &gt; v2 &gt; IDECommunicator-Tester.xojo_binary_project</p>
<p>For documentation and more information refer to the doc page here: <a href="http://developer.xojo.com/userguide/ide-communicator">IDE Communicator</a></p>
<p><em>Just a note for those of you who have already been using the IDECommunicator project (or something similar) for controlling your builds, when updating to the new protocol make sure you don&#8217;t include a QuitIDE command in the script you initially send to the IDE. Doing so will cause the IDE to quit before you get a response which would present as a false positive. I suggest waiting until you do get a response and then issue a separate QuitIDE command at the end.</em></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
