-
Notifications
You must be signed in to change notification settings - Fork 27
4. Release Plan
In addition to manual testing as features are implemented or updated, extensive automated testing has already been performed via GitHub Actions on every pull request, which ensures successful compilation and functional testing on a variety of platforms and compilers, including with sanitizers.
Furthermore, we test all graphs up to isomorphism for graph orders up to and including N=11 by performing the following:
- Generate the slice files containing all graphs for each edge count using the
graph_generation_orchestrator.py(see 3. Test Support - Graph Generation Orchestrator) - Run the
planarity_testAllGraphs_orchestrator.pyon those slice files (see 3. Test Support - Algorithm Testing Orchestrator - Regenerate the test tables without the
numInvalidOKcounts using thetest_table_generator.py(see 3. Test Support - Test Table Generator) to compare theOK/NONEMBEDDABLEcounts haven't changed.
A key step of making the distribution is performing make distcheck, which runs functional regression tests using the -test command line parameter, including:
-
runSpecificGraphTests()- Runs each of the graph algorithm extensions on appropriate sample files and ensures the expected output is produced -
runGraphTransformationTests()- Transforms input graphs in each of the supported formats to the other formats, and ensures the expected output is produced. -
runTestAllGraphsTests()- RunsTestAllGraphs()onc/samples/n8.mALL.g6for all graph algorithm extensions and ensures the expectedOK/NONEMBEDDABLEcounts are reproduced.
Before building the release (e.g. on Debian Linux or on Windows via MSYS2), follow the setup steps outlined on 2. Dev Env Setup to ensure you have installed the developer dependencies (i.e. gcc and autotools).
Ensure that configure.ac has been updated to match the values from from c/graphLib/graphLib.h, and that this change has been committed to master:
- Update the
AC_INITstatement so that the project version number matches the values forGP_PROJECTVERSION_MAJOR,GP_PROJECTVERSION_MINOR,GP_PROJECTVERSION_MAINT, andGP_PROJECTVERSION_TWEAK. - Update the values for
LT_CURRENT,LT_REVISION, andLT_AGEso that they matchGP_LIBPLANARITYVERSION_CURRENT,GP_LIBPLANARITYVERSION_REVISION, andGP_LIBPLANARITYVERSION_AGE.
Ensure your local environment is clean (i.e. no untracked local changes that could affect compilation) by running:
git clean -x -d -e .vscode -e TestSupport -e adjlist -e embedded -e error -e missing -e obstructed -e random -e m4 -e Debug -e Release -f
Finally, build the release tarball by following the instructions for making the distribution.
Install the distribution tarball on Debian Linux using Making and running the software from the distribution, and then run:
planarity -test /usr/local/share/doc/planarity/samples
In addition to the release tarball, we produce standalone executables for macOS and Windows using VSCode.
After performing the final dev env setup steps, your .vscode directory should contain the tasks.json which includes the Debug and Release build configurations for each supported platform. In the VSCode menu bar, open the "Terminal" item and choose "Run Build Task...", then select the Release target for your current platform.
Then, make sure to update the planarity-X.X.X.X_(MacOS-Silicon|Windows-Intel)_buildinfo.txt contents to include the chipset info, compiler version, tasks.json build task configuration, build task output, and SHA256 of the resulting executable.
Finally, add the executable, buildinfo file, and a copy of the c/samples directory to a .zip archive and record the SHA256 of the .zip to include in the release notes.
- Download the assets into a
RELEASE-N.N.N.Ndirectory - For
planarity-N.N.N.N.tar.gz- Right-click and choose Extract All…
- Follow the instructions on the project home page for Making and running the software from the distribution
- Launch MSYS2 UCRT64 terminal
- Navigate to the
planarity-N.N.N.Ndirectory that contains the makefile - Run
./configure && make - Run
./planarity -test ./c/samples
- Test the hash of the file:
- Open Windows PowerShell
- Navigate into the directory containing the release tarball
- Run
Get-FileHash planarity-N.N.N.N.tar.gzand check that the hash matches the one that was placed in the "Read More" of the Release Notes (if it was placed there by the release creator).
- For
planarity-N.N.N.N.Windows-Intel.zip- Right-click and choose Extract All…
- Open Windows PowerShell
- Navigate into the extracted
Releasedirectory - Run
.\planarity.exe -test c\samplesto see if all tests succeed - Run
.\planarity.exeand check the version on the menu - Run
Get-FileHash .\planarity.exeand check that the hash matches the one in theplanarity-N.N.N.N.Windows-Intel_buildinfo.txtfile - Check whether the buildinfo file shows that the
(Windows) [Release]job was used to generate theplanarity.exe
- For checking
planarity-N.N.N.N.MacOS-Silicon.zipunder Windows:- You can still Extract All…, then in PowerShell navigate to the extracted Release directory (which will likely be called
Release 1if the folderReleasealready exists) - Run
Get-FileHash .\planarityand check whether the hash matches the one in the buildinfo.txt file (modulo capitalizations, MacOSshasum -a 256produces the same output as Microsoft PowershellGet-FileHash) - Check that the buildinfo shows the
(MacOS) [Release]target was used to generate the planarity executable.
- You can still Extract All…, then in PowerShell navigate to the extracted Release directory (which will likely be called
- Go to repo releases and click “Draft a new release”
- Click “Select tag” and define a new tag, e.g.,
Version_5.0.0.0 - Leave the “Target” at
main/master(assumes all code merged tomain/master) - Type in a “Release title” e.g., "Version 5.0.0.0"
- Write the “Release notes”
- Include
SHA256hash values for each additional binary
- Include
- Drag and drop to attach binaries, e.g.,
planarity-5.0.0.0.tar.gz,planarity-5.0.0.0.Windows-Intel.zip, andplanarity-5.0.0.0.MacOS-Silicon.zip - Leave the checkboxes along (unselected for “Set as a pre-release” and selected for “Set as the latest issue”), then hit the “Publish release” button