summaryrefslogtreecommitdiff
path: root/test/suite/test.sh
diff options
context:
space:
mode:
Diffstat (limited to 'test/suite/test.sh')
-rwxr-xr-xtest/suite/test.sh77
1 files changed, 77 insertions, 0 deletions
diff --git a/test/suite/test.sh b/test/suite/test.sh
new file mode 100755
index 0000000..8d22206
--- /dev/null
+++ b/test/suite/test.sh
@@ -0,0 +1,77 @@
+#!/bin/bash
+
+function fail
+{
+ echo "*** Failure at line $1"
+ exit 1
+}
+
+function ctor
+{
+ echo "*** Running: ./ctor $*"
+ ./ctor $*
+}
+
+# Wipe the board
+rm -Rf build
+rm -f configuration.cc
+rm -f ctor
+
+cp ctor_files/ctor.cc.base ctor.cc
+
+# Compile bootstrap binary
+g++ -pthread -std=c++20 -L../../build -lctor -I../../src ctor.cc -o ctor || fail ${LINENO}
+
+# No build files should have been created yet
+[ -d build ] && fail ${LINENO}
+
+# capture md5 sum of ctor binary before configure is called
+MD5=`md5sum ctor`
+ctor configure --ctor-includedir ../../src --ctor-libdir ../../build
+
+# ctor should be rebuilt at this point, so md5 sum should have changed
+(echo $MD5 | md5sum --status -c) && fail ${LINENO}
+
+# configuration.cc should have been generated now
+[ ! -f configuration.cc ] && fail ${LINENO}
+
+# Shouldn't compile anything yet - only configure
+[ -f build/hello-hello_cc.o ] && fail ${LINENO}
+
+MD5=`md5sum ctor`
+
+# Run normally to build project
+ctor -v
+
+# Compiled object should now exist
+[ ! -f build/hello-hello_cc.o ] && fail ${LINENO}
+
+# ctor should not have been rebuilt, so md5 sum should be the same
+(echo $MD5 | md5sum --status -c) || fail ${LINENO}
+
+MOD1=`stat -c %Y build/hello-hello_cc.o`
+touch hello.cc
+sleep 1.1
+
+# Run normally to rebuild hello.cc
+ctor -v
+
+# Object file should have been recompiled
+MOD2=`stat -c %Y build/hello-hello_cc.o`
+[[ $MOD1 == $MOD2 ]] && fail ${LINENO}
+
+# Replacve -DFOO with -DBAR in foo external.cxxflags
+cp ctor_files/ctor.cc.bar ctor.cc
+
+MD5C=`md5sum configuration.cc`
+MD5=`md5sum ctor`
+MOD1=`stat -c %Y build/hello-hello_cc.o`
+sleep 1.1
+
+# Run normally to reconfigure, rebuild ctor and rebuild hello.cc
+ctor -v
+
+MOD2=`stat -c %Y build/hello-hello_cc.o`
+[[ $MOD1 == $MOD2 ]] && fail ${LINENO}
+(echo $MD5C | md5sum --status -c) && fail ${LINENO}
+(echo $MD5 | md5sum --status -c) && fail ${LINENO}