diff --git a/tests/pillar/default.sls b/tests/pillar/default.sls
new file mode 100644
index 0000000..8f85ef1
--- /dev/null
+++ b/tests/pillar/default.sls
@@ -0,0 +1,69 @@
+aptly:
+  server:
+    enabled: true
+    repo:
+      myrepo:
+        distribution: trusty
+        component: main
+        architectures: amd64
+        comment: "Custom components"
+        sources: false
+        publisher:
+          component: mycomponent
+          distributions:
+            - nightly/trusty
+    mirror_update:
+      enabled: true
+      hour: 2
+      minute: random
+    gpg_passphrase: passphrase
+    gpg_private_key: |
+      -----BEGIN PGP PRIVATE KEY BLOCK-----
+      Version: BCPG C# v1.6.1.0
+
+      lQOsBFjjpiUBCADMp/x13InHXlyQGLDqmXMZrBr5+Qc1fc1Mp2asW1WcxlmA4fMf
+      OOLoQUlMoyl61WL46ldGzRH1wG7UNT6Zoi+3IqOQTr+jMJrspR2YQKSc5jb+yXPf
+      q6p4wxe3emSc7MiYgyspHYjaUpX0A4uWgUB7rlTUPoPU3aDjygSwK8Oxsa1qsw9M
+      3buDrt9ZOU9HDkL5I1zXZ2VIUYGvgrR666EWxbPXfoJTwVimblcw1CdJ5s0js2p4
+      X75jnsNhKaFTM5jziQWrUmRjCQ9HfQq27BeIMR0BqzA+Lr5UW6y1i1yMEVAtmRjY
+      SyC5GP9SUCxsflU56t1OjaKSHgZB7dQIkTpFABEBAAH/AwMCmDb/2n/TZx9goSSD
+      lSRmAWiuEXSqFNJt+ilNYz4+AWxjabc5Yo9Yp7YA9YhtHNo8XLvpd+ORRjna+eCn
+      ZT8mADfJmVEsLMMtgl0IRj84utEggRM2yTz1TXpgEZlhkBPufB/q+JqC8cZ5qgqc
+      jT5gpAgu/aqGlwrww95zsiNPHyvLh00qYhYIie4E9Eoesma5szfXscdcrH55yk7X
+      E75tXd1lGVihH1hMixpAzeMPQtqyf3VATkRJizFmVfDhTFnr3F98DvlsikkT0QiA
+      DHlQ3P9efuSxfbW7FdB36BmwwD2zqW1rsY6+amx9GFq0jjmT6dr1BPzdB0SP/zmC
+      ise/YwjgzdsJi8cfn+6A/ybW7QL/qiVCVxVXxmdWeIOhM3c3gBOAEItfTdgheMTp
+      0+eiC67YwiPhd3uP4VkVkdu4HbiRhbqS2xo0XMU2pdpgQS3nbpPgjOJy2d/zWOIT
+      um36botJhKGSAR+5ZR4ymwEbmu8XRh+bfL/1yP24ajlRAcycgMQ84CKsguo3IMBT
+      SJTdPNZXQ9x6aCyO9a78YwDyT/o8OLU7idKlmrsMfJp5z8y+OeiqAe6FdbsqzyHa
+      XBmwUmsglgVI+NZf5500/fDMh8dx7tS5bHKUnguJSOIzRF+4XAmkB5Z9atZDKHch
+      Pu8HoGH3EfL53V8RNan60o6viQy/9X1l5Pj/YfccsIaYnZVODfjwPCbwZNBGp0Zi
+      sJHyw6WthV0ar1owyY0nIdiis8r7wKn1n1grZW4XRfkO4UmDn1bcNmkIOe2PQ7xg
+      Fi7rZQVRRfhe0/gY/42Kh/cj1+VKY//R5t9E29VvLVfok9QYLLvGPSZAvR80SxVj
+      SU4NYC1H4KCUzpThyWnaYqo+YaDkhKKQ5UAjxtPKxrQAiQEcBBABAgAGBQJY46Yl
+      AAoJEPW/luvR6iT5CwoH/19/jvNqDE6p/YNZmUF3nT0S4WEQ50EjPPOYBA18jN6e
+      /9Wqe4RRxGJhE4VvFBPXDprFrenMI5dts4gXltQU8HOQjAZa5LTehwpvx7cRqlK8
+      tRdQzJrTsYYJlbdpN5yS/wq990HWijyFDYtXSQUKldZhtKS1QiQUtaG0oMSJSb/8
+      xZqpB80D1X6WTNAJS5BawqSclopoDnWe5gPBptJ3Bq/VNY+icQIhh4uAQY/KM8v9
+      AClvbSspsgiMssct0ItHWdZNqicII6TA4yTOQa9Jo1euH8nBA2PQcaAuI9luypBB
+      fyXfDcG/SajyPSgqkryxbqyYSf6WQ8WfN2ZSCEfNWdQ=
+      =tY0L
+      -----END PGP PRIVATE KEY BLOCK-----
+    gpg_public_key: |
+      -----BEGIN PGP PUBLIC KEY BLOCK-----
+      Version: BCPG C# v1.6.1.0
+
+      mQENBFjjpiUBCADMp/x13InHXlyQGLDqmXMZrBr5+Qc1fc1Mp2asW1WcxlmA4fMf
+      OOLoQUlMoyl61WL46ldGzRH1wG7UNT6Zoi+3IqOQTr+jMJrspR2YQKSc5jb+yXPf
+      q6p4wxe3emSc7MiYgyspHYjaUpX0A4uWgUB7rlTUPoPU3aDjygSwK8Oxsa1qsw9M
+      3buDrt9ZOU9HDkL5I1zXZ2VIUYGvgrR666EWxbPXfoJTwVimblcw1CdJ5s0js2p4
+      X75jnsNhKaFTM5jziQWrUmRjCQ9HfQq27BeIMR0BqzA+Lr5UW6y1i1yMEVAtmRjY
+      SyC5GP9SUCxsflU56t1OjaKSHgZB7dQIkTpFABEBAAG0AIkBHAQQAQIABgUCWOOm
+      JQAKCRD1v5br0eok+QsKB/9ff47zagxOqf2DWZlBd509EuFhEOdBIzzzmAQNfIze
+      nv/VqnuEUcRiYROFbxQT1w6axa3pzCOXbbOIF5bUFPBzkIwGWuS03ocKb8e3EapS
+      vLUXUMya07GGCZW3aTeckv8KvfdB1oo8hQ2LV0kFCpXWYbSktUIkFLWhtKDEiUm/
+      /MWaqQfNA9V+lkzQCUuQWsKknJaKaA51nuYDwabSdwav1TWPonECIYeLgEGPyjPL
+      /QApb20rKbIIjLLHLdCLR1nWTaonCCOkwOMkzkGvSaNXrh/JwQNj0HGgLiPZbsqQ
+      QX8l3w3Bv0mo8j0oKpK8sW6smEn+lkPFnzdmUghHzVnU
+      =FoXV
+      -----END PGP PUBLIC KEY BLOCK-----
diff --git a/tests/run_tests.sh b/tests/run_tests.sh
new file mode 100755
index 0000000..ab84ffb
--- /dev/null
+++ b/tests/run_tests.sh
@@ -0,0 +1,172 @@
+#!/usr/bin/env bash
+
+set -e
+[ -n "$DEBUG" ] && set -x
+
+CURDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+METADATA=${CURDIR}/../metadata.yml
+FORMULA_NAME=$(cat $METADATA | python -c "import sys,yaml; print yaml.load(sys.stdin)['name']")
+
+## Overrideable parameters
+PILLARDIR=${PILLARDIR:-${CURDIR}/pillar}
+BUILDDIR=${BUILDDIR:-${CURDIR}/build}
+VENV_DIR=${VENV_DIR:-${BUILDDIR}/virtualenv}
+DEPSDIR=${BUILDDIR}/deps
+
+SALT_FILE_DIR=${SALT_FILE_DIR:-${BUILDDIR}/file_root}
+SALT_PILLAR_DIR=${SALT_PILLAR_DIR:-${BUILDDIR}/pillar_root}
+SALT_CONFIG_DIR=${SALT_CONFIG_DIR:-${BUILDDIR}/salt}
+SALT_CACHE_DIR=${SALT_CACHE_DIR:-${SALT_CONFIG_DIR}/cache}
+
+SALT_OPTS="${SALT_OPTS} --retcode-passthrough --local -c ${SALT_CONFIG_DIR}"
+
+if [ "x${SALT_VERSION}" != "x" ]; then
+    PIP_SALT_VERSION="==${SALT_VERSION}"
+fi
+
+## Functions
+log_info() {
+    echo "[INFO] $*"
+}
+
+log_err() {
+    echo "[ERROR] $*" >&2
+}
+
+setup_virtualenv() {
+    log_info "Setting up Python virtualenv"
+    virtualenv $VENV_DIR
+    source ${VENV_DIR}/bin/activate
+    pip install salt${PIP_SALT_VERSION}
+}
+
+setup_pillar() {
+    [ ! -d ${SALT_PILLAR_DIR} ] && mkdir -p ${SALT_PILLAR_DIR}
+    echo "base:" > ${SALT_PILLAR_DIR}/top.sls
+    for pillar in ${PILLARDIR}/*; do
+        state_name=$(basename ${pillar%.sls})
+        echo -e "  ${state_name}:\n    - ${state_name}" >> ${SALT_PILLAR_DIR}/top.sls
+    done
+}
+
+setup_salt() {
+    [ ! -d ${SALT_FILE_DIR} ] && mkdir -p ${SALT_FILE_DIR}
+    [ ! -d ${SALT_CONFIG_DIR} ] && mkdir -p ${SALT_CONFIG_DIR}
+    [ ! -d ${SALT_CACHE_DIR} ] && mkdir -p ${SALT_CACHE_DIR}
+
+    echo "base:" > ${SALT_FILE_DIR}/top.sls
+    for pillar in ${PILLARDIR}/*.sls; do
+        state_name=$(basename ${pillar%.sls})
+        echo -e "  ${state_name}:\n    - ${FORMULA_NAME}" >> ${SALT_FILE_DIR}/top.sls
+    done
+
+    cat << EOF > ${SALT_CONFIG_DIR}/minion
+file_client: local
+cachedir: ${SALT_CACHE_DIR}
+verify_env: False
+
+file_roots:
+  base:
+  - ${SALT_FILE_DIR}
+  - ${CURDIR}/..
+  - /usr/share/salt-formulas/env
+
+pillar_roots:
+  base:
+  - ${SALT_PILLAR_DIR}
+  - ${PILLARDIR}
+EOF
+}
+
+fetch_dependency() {
+    dep_name="$(echo $1|cut -d : -f 1)"
+    dep_source="$(echo $1|cut -d : -f 2-)"
+    dep_root="${DEPSDIR}/$(basename $dep_source .git)"
+    dep_metadata="${dep_root}/metadata.yml"
+
+    [ -d /usr/share/salt-formulas/env/${dep_name} ] && log_info "Dependency $dep_name already present in system-wide salt env" && return 0
+    [ -d $dep_root ] && log_info "Dependency $dep_name already fetched" && return 0
+
+    log_info "Fetching dependency $dep_name"
+    [ ! -d ${DEPSDIR} ] && mkdir -p ${DEPSDIR}
+    git clone $dep_source ${DEPSDIR}/$(basename $dep_source .git)
+    ln -s ${dep_root}/${dep_name} ${SALT_FILE_DIR}/${dep_name}
+
+    METADATA="${dep_metadata}" install_dependencies
+}
+
+install_dependencies() {
+    grep -E "^dependencies:" ${METADATA} >/dev/null || return 0
+    (python - | while read dep; do fetch_dependency "$dep"; done) << EOF
+import sys,yaml
+for dep in yaml.load(open('${METADATA}', 'ro'))['dependencies']:
+    print '%s:%s' % (dep["name"], dep["source"])
+EOF
+}
+
+clean() {
+    log_info "Cleaning up ${BUILDDIR}"
+    [ -d ${BUILDDIR} ] && rm -rf ${BUILDDIR} || exit 0
+}
+
+salt_run() {
+    [ -e ${VEN_DIR}/bin/activate ] && source ${VENV_DIR}/bin/activate
+    salt-call ${SALT_OPTS} $*
+}
+
+prepare() {
+    [ -d ${BUILDDIR} ] && mkdir -p ${BUILDDIR}
+
+    which salt-call || setup_virtualenv
+    setup_pillar
+    setup_salt
+    install_dependencies
+}
+
+run() {
+    for pillar in ${PILLARDIR}/*.sls; do
+        state_name=$(basename ${pillar%.sls})
+        salt_run --id=${state_name} state.show_sls ${FORMULA_NAME} || (log_err "Execution of ${FORMULA_NAME}.${state_name} failed"; exit 1)
+    done
+}
+
+real_run() {
+    for pillar in ${PILLARDIR}/*.sls; do
+        state_name=$(basename ${pillar%.sls})
+        salt_run --id=${state_name} state.sls ${FORMULA_NAME} || (log_err "Execution of ${FORMULA_NAME}.${state_name} failed"; exit 1)
+    done
+}
+
+_atexit() {
+    RETVAL=$?
+    trap true INT TERM EXIT
+
+    if [ $RETVAL -ne 0 ]; then
+        log_err "Execution failed"
+    else
+        log_info "Execution successful"
+    fi
+    return $RETVAL
+}
+
+## Main
+trap _atexit INT TERM EXIT
+
+case $1 in
+    clean)
+        clean
+        ;;
+    prepare)
+        prepare
+        ;;
+    run)
+        run
+        ;;
+    real-run)
+        real_run
+        ;;
+    *)
+        prepare
+        run
+        ;;
+esac
