From 83d69887b7a7f306fc461b14a26cf1fa9b54e7af Mon Sep 17 00:00:00 2001 From: "Zhuohuan LI (CARPE DIEM)" Date: Tue, 8 Nov 2016 00:17:08 +0000 Subject: [PATCH] add docker bats unit test --- .gitignore | 1 + circle.yml | 18 ++++-- test/docker-bot/syntax-error.js | 2 + test/docker-bot/type-error.ts | 3 + .../docker-bot/with-package-json/package.json | 16 ++++++ .../with-package-json/with-import-error.ts | 4 ++ .../with-package-json/with-import.ts | 4 ++ .../with-package-json/with-require-error.js | 4 ++ .../with-package-json/with-require.js | 4 ++ test/docker.bats | 56 +++++++++++++++++++ 10 files changed, 108 insertions(+), 4 deletions(-) create mode 100644 test/docker-bot/syntax-error.js create mode 100644 test/docker-bot/type-error.ts create mode 100644 test/docker-bot/with-package-json/package.json create mode 100644 test/docker-bot/with-package-json/with-import-error.ts create mode 100644 test/docker-bot/with-package-json/with-import.ts create mode 100644 test/docker-bot/with-package-json/with-require-error.js create mode 100644 test/docker-bot/with-package-json/with-require.js create mode 100644 test/docker.bats diff --git a/.gitignore b/.gitignore index 46670a25..33bd746b 100644 --- a/.gitignore +++ b/.gitignore @@ -54,3 +54,4 @@ t.* /dist/ yarn.lock .yarn/ +.yarn-cache/ diff --git a/circle.yml b/circle.yml index a222bdef..68295921 100644 --- a/circle.yml +++ b/circle.yml @@ -2,15 +2,25 @@ machine: services: - docker -# dependencies: -# pre: -# - sudo apt-get update; sudo apt-get install shellcheck +# Add some environment variables +environment: + BATS_VERSION: 0.4.0 + +dependencies: + pre: + - sudo apt-get update; sudo apt-get install shellcheck + - curl -s -o "/tmp/v${BATS_VERSION}.tar.gz" -L \ + "https://github.com/sstephenson/bats/archive/v${BATS_VERSION}.tar.gz" \ + && tar -xzf "/tmp/v${BATS_VERSION}.tar.gz" -C /tmp/ \ + && sudo bash "/tmp/bats-${BATS_VERSION}/install.sh" /usr/local + test: override: - docker info - - docker run -ti -v "$(pwd)":/mnt nlknguyen/alpine-shellcheck bin/*.sh + # - docker run -ti -v "$(pwd)":/mnt nlknguyen/alpine-shellcheck bin/*.sh - ./script/docker.sh build - ./script/docker.sh test + - bats test/ deployment: master: diff --git a/test/docker-bot/syntax-error.js b/test/docker-bot/syntax-error.js new file mode 100644 index 00000000..2a84cea5 --- /dev/null +++ b/test/docker-bot/syntax-error.js @@ -0,0 +1,2 @@ + +hello, I'm not a javascript file diff --git a/test/docker-bot/type-error.ts b/test/docker-bot/type-error.ts new file mode 100644 index 00000000..d37eaa87 --- /dev/null +++ b/test/docker-bot/type-error.ts @@ -0,0 +1,3 @@ +let i = 3 +i = "should set to string because it's type is number" +console.log(i) diff --git a/test/docker-bot/with-package-json/package.json b/test/docker-bot/with-package-json/package.json new file mode 100644 index 00000000..77e3ef8a --- /dev/null +++ b/test/docker-bot/with-package-json/package.json @@ -0,0 +1,16 @@ +{ + "name": "with-package-json", + "version": "1.0.0", + "description": "", + "main": "with-require-error.js", + "dependencies": { + "brolog": "^0.3.11" + }, + "devDependencies": {}, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC" +} diff --git a/test/docker-bot/with-package-json/with-import-error.ts b/test/docker-bot/with-package-json/with-import-error.ts new file mode 100644 index 00000000..7124ac41 --- /dev/null +++ b/test/docker-bot/with-package-json/with-import-error.ts @@ -0,0 +1,4 @@ +import { NotExist } from 'not-exist-at-all-fdsafasdfafsad' + +const ne = new NotExist() +console.log(ne) // should not run to here diff --git a/test/docker-bot/with-package-json/with-import.ts b/test/docker-bot/with-package-json/with-import.ts new file mode 100644 index 00000000..7d8a4c51 --- /dev/null +++ b/test/docker-bot/with-package-json/with-import.ts @@ -0,0 +1,4 @@ +import { Brolog } from 'brolog' + +const brolog = new Brolog() +brolog.info('OK', 'with-import.ts') diff --git a/test/docker-bot/with-package-json/with-require-error.js b/test/docker-bot/with-package-json/with-require-error.js new file mode 100644 index 00000000..a5e6b383 --- /dev/null +++ b/test/docker-bot/with-package-json/with-require-error.js @@ -0,0 +1,4 @@ +const { NotExist } = require('not-exist-at-all-fasdfasdsfaf') + +const ne = new NowExist() +console.log(ne) // should not run to here diff --git a/test/docker-bot/with-package-json/with-require.js b/test/docker-bot/with-package-json/with-require.js new file mode 100644 index 00000000..41707083 --- /dev/null +++ b/test/docker-bot/with-package-json/with-require.js @@ -0,0 +1,4 @@ +const { Brolog } = require('brolog') + +const brolog = new Brolog() +brolog.info('OK', 'with-require.js') diff --git a/test/docker.bats b/test/docker.bats new file mode 100644 index 00000000..73663517 --- /dev/null +++ b/test/docker.bats @@ -0,0 +1,56 @@ +#!/usr/bin/env bats + + +function dockerRun() { + docker run -v "$(pwd)":/bot ${IMAGE_NAME:-'wechaty:test'} $@ +} + +@test "javascript bot" { + cd docker-bot + run dockerRun js-bot.js + [ "$status" -eq 0 ] +} + +@test "javascript syntax error" { + cd docker-bot + run dockerRun syntax-error.js + [ "$status" -ne 0 ] +} + + +@test "typescript bot" { + cd docker-bot + run dockerRun ts-bot.ts + [ "$status" -eq 0 ] +} + +@test "typescript type error" { + cd docker-bot + run dockerRun type-error.ts + [ "$status" -ne 0 ] +} + +@test "javascript bot with require" { + cd docker-bot/with-package-json/ + run dockerRun with-require.js + [ "$status" -eq 0 ] +} + +@test "javascript bot require error" { + cd docker-bot/with-package-json/ + run dockerRun with-require-error.js + [ "$status" -ne 0 ] +} + +@test "typescript bot with import" { + cd docker-bot/with-package-json/ + run dockerRun with-import.ts + [ "$status" -eq 0 ] +} + +@test "typescript bot with import error" { + cd docker-bot/with-package-json/ + run dockerRun with-import-error.ts + [ "$status" -ne 0 ] +} + -- GitLab