Refactor travis testing
12
.travis.yml
@@ -4,16 +4,25 @@ os:
|
|||||||
- mac
|
- mac
|
||||||
- linux
|
- linux
|
||||||
- windows
|
- windows
|
||||||
|
|
||||||
haxe:
|
haxe:
|
||||||
- stable
|
- stable
|
||||||
- development
|
- development
|
||||||
|
|
||||||
env:
|
env:
|
||||||
|
# Run basic tests for each combination of target language and operating system
|
||||||
- KISS_TARGET=cpp
|
- KISS_TARGET=cpp
|
||||||
- KISS_TARGET=interp
|
- KISS_TARGET=interp
|
||||||
- KISS_TARGET=js
|
- KISS_TARGET=js
|
||||||
- KISS_TARGET=nodejs
|
- KISS_TARGET=nodejs
|
||||||
- KISS_TARGET=py
|
- KISS_TARGET=py
|
||||||
- KISS_TARGET=projects
|
# Test projects on every operating system
|
||||||
|
- KISS_PROJECT=aoc
|
||||||
|
- KISS_PROJECT=asciilib2
|
||||||
|
- KISS_PROJECT=file-watch
|
||||||
|
- KISS_PROJECT=kiss-vscode
|
||||||
|
- KISS_PROJECT=nat-archive-tool
|
||||||
|
- KISS_PROJECT=pdf-salad
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
# Allow Haxe development to fail.
|
# Allow Haxe development to fail.
|
||||||
@@ -25,6 +34,7 @@ jobs:
|
|||||||
- script: haxelib install formatter && haxelib run formatter --check -s .
|
- script: haxelib install formatter && haxelib run formatter --check -s .
|
||||||
os: linux
|
os: linux
|
||||||
haxe: stable
|
haxe: stable
|
||||||
|
# TODO Check that every project is tested in this file
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- if [ "${TRAVIS_OS_NAME}" = "windows" ]; then
|
- if [ "${TRAVIS_OS_NAME}" = "windows" ]; then
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 984 B After Width: | Height: | Size: 984 B |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -1,3 +0,0 @@
|
|||||||
# HaxeFlixel Projects
|
|
||||||
|
|
||||||
Various examples of how to combine Kiss with HaxeFlixel
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
#! /bin/bash
|
|
||||||
|
|
||||||
# Make sure the examples with backends compile, at least:
|
|
||||||
EXAMPLE_DIRS=./**/
|
|
||||||
|
|
||||||
for EXAMPLE_DIR in $EXAMPLE_DIRS
|
|
||||||
do
|
|
||||||
echo "Building $EXAMPLE_DIR for html5"
|
|
||||||
(cd $EXAMPLE_DIR && haxelib run lime build html5)
|
|
||||||
echo "Building $EXAMPLE_DIR for cpp"
|
|
||||||
(cd $EXAMPLE_DIR && haxelib run lime build cpp)
|
|
||||||
done
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
#! /bin/bash
|
|
||||||
|
|
||||||
haxelib dev nap .
|
|
||||||
haxe test.hxml
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "nap",
|
"name": "nat-archive-tool",
|
||||||
"url": "https://github.com/hissvn/kisslang",
|
"url": "https://github.com/hissvn/kisslang",
|
||||||
"license": "LGPL",
|
"license": "LGPL",
|
||||||
"tags": ["cross"],
|
"tags": ["cross"],
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package nap;
|
package nat;
|
||||||
|
|
||||||
import sys.FileSystem;
|
import sys.FileSystem;
|
||||||
import kiss.Prelude;
|
import kiss.Prelude;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package nap;
|
package nat;
|
||||||
|
|
||||||
import kiss.KissInterp;
|
import kiss.KissInterp;
|
||||||
import hscript.Parser;
|
import hscript.Parser;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package nap;
|
package nat;
|
||||||
|
|
||||||
typedef Entry = {
|
typedef Entry = {
|
||||||
id:String,
|
id:String,
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package nap;
|
package nat;
|
||||||
|
|
||||||
import kiss.Prelude;
|
import kiss.Prelude;
|
||||||
import sys.io.File;
|
import sys.io.File;
|
||||||
@@ -6,10 +6,10 @@
|
|||||||
|
|
||||||
// TODO add to the documentation a hint that macros should use fully qualified paths so macro caller classes don't need to import everything
|
// TODO add to the documentation a hint that macros should use fully qualified paths so macro caller classes don't need to import everything
|
||||||
(defmacro getComponent [archive e componentType]
|
(defmacro getComponent [archive e componentType]
|
||||||
`(the nap.components ,componentType
|
`(the nat.components ,componentType
|
||||||
(tink.Json.parse
|
(tink.Json.parse
|
||||||
(sys.io.File.getContent
|
(sys.io.File.getContent
|
||||||
(haxe.io.Path.join [.archiveDir (the nap.Archive ,archive) "components" (+ (dictGet (the Map<String,String> .components ,e) ,(symbolName componentType)) ".json")])))))
|
(haxe.io.Path.join [.archiveDir (the nat.Archive ,archive) "components" (+ (dictGet (the Map<String,String> .components ,e) ,(symbolName componentType)) ".json")])))))
|
||||||
|
|
||||||
(defun tagList [archive e]
|
(defun tagList [archive e]
|
||||||
(let [t
|
(let [t
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package nap;
|
package nat;
|
||||||
|
|
||||||
import kiss.Prelude;
|
import kiss.Prelude;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package nap;
|
package nat;
|
||||||
|
|
||||||
interface Template {
|
interface Template {
|
||||||
function prepareEntry(e:Entry):Void;
|
function prepareEntry(e:Entry):Void;
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
package nap.components;
|
package nat.components;
|
||||||
|
|
||||||
typedef Tags = Map<String, Date>;
|
typedef Tags = Map<String, Date>;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package nap.components;
|
package nat.components;
|
||||||
|
|
||||||
typedef Name = String;
|
typedef Name = String;
|
||||||
typedef Author = String;
|
typedef Author = String;
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
package nap.components;
|
package nat.components;
|
||||||
|
|
||||||
typedef Tags = Map<String, Int>;
|
typedef Tags = Map<String, Int>;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package nap.systems;
|
package nat.systems;
|
||||||
|
|
||||||
import kiss.Prelude;
|
import kiss.Prelude;
|
||||||
|
|
||||||
@@ -2,10 +2,10 @@ package test;
|
|||||||
|
|
||||||
import kiss.Kiss;
|
import kiss.Kiss;
|
||||||
import kiss.Prelude;
|
import kiss.Prelude;
|
||||||
import nap.BoolExpInterp;
|
import nat.BoolExpInterp;
|
||||||
import nap.Archive;
|
import nat.Archive;
|
||||||
import nap.Lib;
|
import nat.Lib;
|
||||||
import nap.components.*;
|
import nat.components.*;
|
||||||
|
|
||||||
@:build(kiss.Kiss.build())
|
@:build(kiss.Kiss.build())
|
||||||
class TestMain {}
|
class TestMain {}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
// TODO external programs need to be able to find and (load) this path to get the macros:
|
// TODO external programs need to be able to find and (load) this path to get the macros:
|
||||||
// ^ That should be solved by allowing an optional first argument to load that is a symbol
|
// ^ That should be solved by allowing an optional first argument to load that is a symbol
|
||||||
// of a library name that can be used to resolve the source dir in the user's Haxelib maybe?
|
// of a library name that can be used to resolve the source dir in the user's Haxelib maybe?
|
||||||
(load "../nap/Lib.kiss")
|
(load "../nat/Lib.kiss")
|
||||||
|
|
||||||
|
|
||||||
(defun :Void main []
|
(defun :Void main []
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
-D test
|
-D test
|
||||||
-lib kiss
|
-lib kiss
|
||||||
-lib nap
|
-lib nat-archive-tool
|
||||||
-cp test
|
-cp test
|
||||||
--main test.TestMain
|
--main test.TestMain
|
||||||
--interp
|
--interp
|
||||||
4
projects/nat-archive-tool/test.sh
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
haxelib dev nat-archive-tool .
|
||||||
|
haxe test.hxml
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
-lib kiss
|
-lib kiss
|
||||||
-lib nap
|
-lib nat-archive-tool
|
||||||
-cp src
|
-cp src
|
||||||
--main Main
|
--main Main
|
||||||
--interp
|
--interp
|
||||||
@@ -2,7 +2,7 @@ package;
|
|||||||
|
|
||||||
import kiss.Kiss;
|
import kiss.Kiss;
|
||||||
import kiss.Prelude;
|
import kiss.Prelude;
|
||||||
import nap.Archive;
|
import nat.Archive;
|
||||||
|
|
||||||
@:build(kiss.Kiss.build())
|
@:build(kiss.Kiss.build())
|
||||||
class Main {}
|
class Main {}
|
||||||
19
test-all.sh
@@ -1,19 +0,0 @@
|
|||||||
#! /bin/bash
|
|
||||||
|
|
||||||
# For local testing. Runs manual project tests, which cannot run headless.
|
|
||||||
# Dependencies won't be installed first
|
|
||||||
|
|
||||||
# Test the Kiss compiler on every target language:
|
|
||||||
TEST_FILES=kiss/build-scripts/**/test.hxml
|
|
||||||
|
|
||||||
for TEST_FILE in $TEST_FILES
|
|
||||||
do
|
|
||||||
echo $TEST_FILE
|
|
||||||
haxe kiss/build-scripts/common-args.hxml kiss/build-scripts/common-test-args.hxml $TEST_FILE
|
|
||||||
if [ ! $? -eq 0 ]
|
|
||||||
then
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
./test-projects.sh
|
|
||||||
29
test-project.sh
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
KISS_PROJECT=${KISS_PROJECT:-$1}
|
||||||
|
KISS_PROJECT=${KISS_PROJECT:-aoc}
|
||||||
|
|
||||||
|
haxelib dev kiss kiss
|
||||||
|
|
||||||
|
# If project starts with flixel-, test that its code compiles for HTML5 and C++
|
||||||
|
if [[ $KISS_PROJECT == flixel-* ]]
|
||||||
|
then
|
||||||
|
# If running through Travis, install HaxeFlixel with c++ tooling and
|
||||||
|
if [ ! -z "$TRAVIS_OS_NAME" ]
|
||||||
|
then
|
||||||
|
haxelib install lime
|
||||||
|
haxelib install openfl
|
||||||
|
haxelib install flixel
|
||||||
|
haxelib install flixel-addons
|
||||||
|
haxelib install hxcpp
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Building $KISS_PROJECT for html5"
|
||||||
|
(cd projects/$KISS_PROJECT && haxelib run lime build html5)
|
||||||
|
echo "Building $KISS_PROJECT for cpp"
|
||||||
|
(cd projects/$KISS_PROJECT && haxelib run lime build cpp)
|
||||||
|
# Test other projects with their test.sh file
|
||||||
|
else
|
||||||
|
(cd projects/$KISS_PROJECT && haxelib install all --always)
|
||||||
|
(cd projects/$KISS_PROJECT && ./test.sh)
|
||||||
|
fi
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
#! /bin/bash
|
|
||||||
# Test the Kiss projects. If run manually, this runs extra manual tests that may involve GUI stuff.
|
|
||||||
PROJECT_DIRS=projects/**/
|
|
||||||
|
|
||||||
if [ ! -z "${TRAVIS_OS_NAME}" ]; then
|
|
||||||
# Install basic dependencies for Kiss testing
|
|
||||||
(cd kiss/build-scripts && haxelib install all --always)
|
|
||||||
|
|
||||||
# Install HaxeFlixel with c++ tooling because many Kiss projects use it
|
|
||||||
haxelib install lime
|
|
||||||
haxelib install openfl
|
|
||||||
haxelib install flixel
|
|
||||||
haxelib install flixel-addons
|
|
||||||
haxelib install hxcpp
|
|
||||||
fi
|
|
||||||
|
|
||||||
for PROJECT_DIR in $PROJECT_DIRS
|
|
||||||
do
|
|
||||||
if [ ! -z "${TRAVIS_OS_NAME}" ]; then
|
|
||||||
haxelib dev kiss kiss
|
|
||||||
(cd $PROJECT_DIR && haxelib install all --always)
|
|
||||||
fi
|
|
||||||
|
|
||||||
AUTO_TEST_FILE=${PROJECT_DIR}test.sh
|
|
||||||
if [ -e $AUTO_TEST_FILE ]
|
|
||||||
then
|
|
||||||
echo $AUTO_TEST_FILE
|
|
||||||
(cd $PROJECT_DIR && ./test.sh)
|
|
||||||
if [ ! $? -eq 0 ]
|
|
||||||
then
|
|
||||||
echo "failed"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
MANUAL_TEST_FILE=${PROJECT_DIR}manual-test.sh
|
|
||||||
if [ -z "$KISS_HEADLESS" ] && [ -e $MANUAL_TEST_FILE ]
|
|
||||||
then
|
|
||||||
echo $MANUAL_TEST_FILE
|
|
||||||
(cd $PROJECT_DIR && ./manual-test.sh)
|
|
||||||
if [ ! $? -eq 0 ]
|
|
||||||
then
|
|
||||||
echo "failed"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
20
test.sh
@@ -3,16 +3,18 @@
|
|||||||
KISS_TARGET=${KISS_TARGET:-$1}
|
KISS_TARGET=${KISS_TARGET:-$1}
|
||||||
KISS_TARGET=${KISS_TARGET:-interp}
|
KISS_TARGET=${KISS_TARGET:-interp}
|
||||||
|
|
||||||
if [ "$KISS_TARGET" = "projects" ]
|
# If Travis is running tests, basic dependencies need to be installed
|
||||||
|
if [ ! -z "$TRAVIS_OS_NAME" ]
|
||||||
then
|
then
|
||||||
KISS_HEADLESS="$TRAVIS_OS_NAME" ./test-projects.sh
|
(cd kiss/build-scripts && haxelib install all --always)
|
||||||
else
|
(cd kiss/build-scripts/$KISS_TARGET && haxelib install all --always)
|
||||||
# For CI tests, force install the dependencies
|
fi
|
||||||
if [ ! -z "$TRAVIS_OS_NAME" ]
|
|
||||||
then
|
|
||||||
(cd kiss/build-scripts && haxelib install all --always)
|
|
||||||
(cd kiss/build-scripts/$KISS_TARGET && haxelib install all --always)
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
# Test projects with test-project.sh
|
||||||
|
if [ ! -z "$KISS_PROJECT" ]
|
||||||
|
then
|
||||||
|
./test-project.sh
|
||||||
|
# Test Kiss with utest cases in kiss/src/test/cases
|
||||||
|
else
|
||||||
haxe kiss/build-scripts/common-args.hxml kiss/build-scripts/common-test-args.hxml kiss/build-scripts/$KISS_TARGET/test.hxml
|
haxe kiss/build-scripts/common-args.hxml kiss/build-scripts/common-test-args.hxml kiss/build-scripts/$KISS_TARGET/test.hxml
|
||||||
fi
|
fi
|
||||||
|
|||||||