diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000..d7bdb13f --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,138 @@ +# This configuration was automatically generated from a CircleCI 1.0 config. +# It should include any build commands you had along with commands that CircleCI +# inferred from your project structure. We strongly recommend you read all the +# comments in this file to understand the structure of CircleCI 2.0, as the idiom +# for configuration has changed substantially in 2.0 to allow arbitrary jobs rather +# than the prescribed lifecycle of 1.0. In general, we recommend using this generated +# configuration as a reference rather than using it in production, though in most +# cases it should duplicate the execution of your original 1.0 config. +version: 2 +jobs: + build: + working_directory: ~/lux + parallelism: 1 + shell: /bin/bash --login + # CircleCI 2.0 does not support environment variables that refer to each other the same way as 1.0 did. + # If any of these refer to each other, rewrite them so that they don't or see https://circleci.com/docs/2.0/env-vars/#interpolating-environment-variables-to-set-other-environment-variables . + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + NODE_ENV: test + DROP_DATABASE: DROP DATABASE IF EXISTS lux_test; + CREATE_DATABASE: CREATE DATABASE lux_test; + DATABASE_USERNAME: ubuntu + # In CircleCI 1.0 we used a pre-configured image with a large number of languages and other packages. + # In CircleCI 2.0 you can now specify your own image, or use one of our pre-configured images. + # The following configuration line tells CircleCI to use the specified docker image as the runtime environment for you job. + # We have selected a pre-built image that mirrors the build environment we use on + # the 1.0 platform, but we recommend you choose an image more tailored to the needs + # of each job. For more information on choosing an image (or alternatively using a + # VM instead of a container) see https://circleci.com/docs/2.0/executor-types/ + # To see the list of pre-built images that CircleCI provides for most common languages see + # https://circleci.com/docs/2.0/circleci-images/ + docker: + - image: zacharygolba/lux-framework:latest + environment: + NODE_ENV: test + DATABASE_USERNAME: root + - image: mysql:5.7 + environment: + MYSQL_DATABASE: lux_test + MYSQL_ALLOW_EMPTY_PASSWORD: yes + - image: postgres:9.6 + environment: + POSTGRES_USER: root + POSTGRES_DB: lux_test + steps: + # Machine Setup + # If you break your build into multiple jobs with workflows, you will probably want to do the parts of this that are relevant in each + # The following `checkout` command checks out your code to your working directory. In 1.0 we did this implicitly. In 2.0 you can choose where in the course of a job your code should be checked out. + - checkout + # Prepare for artifact and test results collection equivalent to how it was done on 1.0. + # In many cases you can simplify this from what is generated here. + # 'See docs on artifact collection here https://circleci.com/docs/2.0/artifacts/' + - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + # Dependencies + # This would typically go in either a build or a build-and-test job when using workflows + # Restore the dependency cache + - restore_cache: + keys: + # This branch if available + - v1-dep-{{ .Branch }}- + # Default branch if not + - v1-dep-stable- + # Any branch if there are none on the default branch - this should be unnecessary if you have your default branch configured correctly + - v1-dep- + # This is based on your 1.0 configuration file or project settings + - run: | + cd ../ + + if [ -d watchman ]; then + cd watchman + sudo make install + else + git clone https://github.com/facebook/watchman.git + cd watchman + git checkout v4.7.0 + + ./autogen.sh + ./configure + make + sudo make install + fi + + cd ../lux + # This is based on your 1.0 configuration file or project settings + - run: npm uninstall -g lux-framework + - run: npm install + - run: npm link + # This is based on your 1.0 configuration file or project settings + - run: | + cd test/test-app + npm install + cd ../../ + # Save dependency cache + - save_cache: + key: v1-dep-{{ .Branch }}-{{ epoch }} + paths: + - /home/ubuntu/watchman + - ./node_modules + # This is based on your 1.0 configuration file or project settings + - run: psql -c "$DROP_DATABASE" -U postgres + - run: psql -c "$CREATE_DATABASE" -U postgres + - run: mysql -e "$DROP_DATABASE" + - run: mysql -e "$CREATE_DATABASE" + # Compile + # This would typically go in either a build or a build-and-test job when using workflows + # This is based on your 1.0 configuration file or project settings + - run: npm run clean + # This is based on your 1.0 configuration file or project settings + - run: npm run build + # Test + # This would typically be a build job when using workflows, possibly combined with build + # This is based on your 1.0 configuration file or project settings + - run: case $CIRCLE_NODE_INDEX in 0) export DATABASE_DRIVER="pg" ;; 1) export DATABASE_DRIVER="mysql2" ;; 2) export DATABASE_DRIVER="sqlite3" ;; esac + # This is based on your 1.0 configuration file or project settings + - run: npm run flow + - run: npm run lint + - run: + command: npm test -- -R mocha-junit-reporter + environment: + MOCHA_FILE: $CIRCLE_TEST_REPORTS/junit/test-results.xml + # This is based on your 1.0 configuration file or project settings + - run: npm run codecov + # Deployment + # Your existing circle.yml file contains deployment steps. + # The config translation tool does not support translating deployment steps + # since deployment in CircleCI 2.0 are better handled through workflows. + # See the documentation for more information https://circleci.com/docs/2.0/workflows/ + # Teardown + # If you break your build into multiple jobs with workflows, you will probably want to do the parts of this that are relevant in each + # Save test results + - store_test_results: + path: /tmp/circleci-test-results + # Save artifacts + - store_artifacts: + path: /tmp/circleci-artifacts + - store_artifacts: + path: /tmp/circleci-test-results diff --git a/.flowconfig b/.flowconfig index 27dc7752..d0b43b5c 100644 --- a/.flowconfig +++ b/.flowconfig @@ -10,10 +10,10 @@ ./node_modules/ [libs] -node_modules/rollup-plugin-lux/decl/ -node_modules/rollup-plugin-lux/flow-typed/ -flow-typed/ -decl/ +./node_modules/rollup-plugin-lux/decl/ +./node_modules/rollup-plugin-lux/flow-typed/ +./flow-typed/ +./decl/ [options] emoji=true @@ -27,6 +27,3 @@ unsafe.enable_getters_and_setters=true esproposal.class_static_fields=enable esproposal.class_instance_fields=enable - -[version] -^0.38.0 diff --git a/circle.yml b/circle.yml deleted file mode 100644 index 0e7521b0..00000000 --- a/circle.yml +++ /dev/null @@ -1,77 +0,0 @@ -machine: - node: - version: 6 - environment: - NODE_ENV: test - DROP_DATABASE: DROP DATABASE IF EXISTS lux_test; - CREATE_DATABASE: CREATE DATABASE lux_test; - DATABASE_USERNAME: ubuntu -database: - override: - - psql -c "$DROP_DATABASE" -U postgres - - psql -c "$CREATE_DATABASE" -U postgres - - mysql -e "$DROP_DATABASE" - - mysql -e "$CREATE_DATABASE" -dependencies: - pre: - - | - cd ../ - - if [ -d watchman ]; then - cd watchman - sudo make install - else - git clone https://github.com/facebook/watchman.git - cd watchman - git checkout v4.7.0 - - ./autogen.sh - ./configure - make - sudo make install - fi - - cd ../lux - override: - - npm install - - npm link - post: - - | - cd test/test-app - npm install - cd ../../ - cache_directories: - - /home/ubuntu/watchman -compile: - pre: - - npm run clean - override: - - npm run build -test: - pre: - - case $CIRCLE_NODE_INDEX in 0) export DATABASE_DRIVER="pg" ;; 1) export DATABASE_DRIVER="mysql2" ;; 2) export DATABASE_DRIVER="sqlite3" ;; esac: - parallel: true - override: - - npm run flow: - parallel: true - - npm run lint: - parallel: true - - npm test -- -R mocha-junit-reporter: - parallel: true - environment: - MOCHA_FILE: $CIRCLE_TEST_REPORTS/junit/test-results.xml - post: - - npm run codecov: - parallel: true -notify: - webhooks: - - url: https://webhooks.gitter.im/e/6d49c9b19c888dba70b8 -deployment: - release: - tag: /^(?:v\d.\d.\d)$/ - commands: - - npm run clean - - npm run build - - rm -rf ~/.npmrc && touch ~/.npmrc - - echo //registry.npmjs.org/:_authToken=$NPM_AUTH_TOKEN >> ~/.npmrc - - npm publish diff --git a/test/test-app/package.json b/test/test-app/package.json index dec00db8..25b4dc25 100644 --- a/test/test-app/package.json +++ b/test/test-app/package.json @@ -19,6 +19,6 @@ "mysql2": "1.2.0", "pg": "6.2.2", "source-map-support": "0.4.15", - "sqlite3": "3.1.8" + "sqlite3": "4.0.6" } }