Skip to content

Commit

Permalink
Merge pull request #515 from OpenGeoscience/commonjs
Browse files Browse the repository at this point in the history
Build geo.js with webpack
  • Loading branch information
aashish24 committed Mar 29, 2016
2 parents 45b26a1 + 6ae00a8 commit cea4753
Show file tree
Hide file tree
Showing 193 changed files with 3,770 additions and 5,462 deletions.
4 changes: 2 additions & 2 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
src/vgl/**
src/core/version.js
src/version.js
src/util/wigglemaps.js
src/util/pnltri.js
src/util/leaflet.js
src/util/distanceGrid.js
geo.js
**/*.min.js
14 changes: 2 additions & 12 deletions .eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,9 @@
"no-useless-call": 0
},
"env": {
"browser": true,
"jquery": true
"browser": true
},
"globals": {
"proj4": true,
"gl": true,
"d3": true,
"mat4": true,
"vec4": true,
"vec3": true,
"geo": true,
"vgl": true,
"inherit": true,
"PNLTRI": true
"sinon": true
}
}
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
/docs/*.py
!/docs/conf.py
!/docs/parse.py
/src/core/version.js
/dist
.eslintcache
/lcov
/notes
28 changes: 12 additions & 16 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,27 +1,23 @@
language: node_js

sudo: False
node_js:
- "0.12"

cache:
directories:
- node_modules
- $HOME/cache

before_install:
- pushd "${HOME}"
- curl -L "https://cmake.org/files/v3.3/cmake-3.3.2-Linux-x86_64.tar.gz" | gunzip -c | tar x
- cd cmake-*/bin && export PATH="${PWD}:${PATH}"
- popd
- cmake --version
- env
- CACHE="${HOME}/cache" CMAKE_VERSION=3.5.0 CMAKE_SHORT_VERSION=3.5 source ./scripts/install_cmake.sh
- npm prune

script:
- npm install
- npm run build
- ./node_modules/.bin/grunt docs
- ./node_modules/.bin/grunt copy:jqueryui
- ./node_modules/.bin/grunt serve-test &
- sleep 1
- mkdir _build
- cd _build
- cmake -DCOVERAGE_TESTS=ON ..
- ctest -VV -S ../cmake/travis_build.cmake || true
- if [ -f test_failed ] ; then false ; fi
- ctest -S cmake/travis_build.cmake -VV || true
- if [ -f _build/test_failed ] ; then false ; fi

sudo: False
after_success:
- npm run codecov
213 changes: 14 additions & 199 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,10 @@ include(CTest)
enable_testing()

set(BUILD_TESTING ON CACHE BOOL "Enable geojs testing")
set(BUILD_DOCUMENTATION OFF CACHE BOOL "Build documentation")

# set up targets for node programs
set(NODE_MODULES_PATH "${CMAKE_CURRENT_SOURCE_DIR}/node_modules")
set(PHANTOMJS_EXECUTABLE "${NODE_MODULES_PATH}/.bin/phantomjs")
set(GRUNT_EXECUTABLE "${NODE_MODULES_PATH}/.bin/grunt")

set(ESLINT_TESTS ON CACHE BOOL "Generate eslint style tests for JS source files.")
set(PHANTOMJS_TESTS ON CACHE BOOL "Generate phantomjs unit tests.")
set(COVERAGE_TESTS OFF CACHE BOOL "Generate coverage reports.")
set(ESLINT_TESTS ON CACHE BOOL "Generate eslint style tests for JS source files.")
set(SELENIUM_TESTS OFF CACHE BOOL "Generate selenium unit tests.")

find_package(PythonInterp REQUIRED)
site_name(HOSTNAME)

set(TESTING_HOST "${HOSTNAME}" CACHE STRING "The host to connect to for unit tests")
Expand All @@ -40,10 +31,6 @@ function(add_geojs_test test_name)
${CMAKE_CURRENT_BINARY_DIR}/test/geojs_test_runner.py
${ARGN}
)
if (COVERAGE_TESTS)
set_property(TEST "${test_name}" APPEND PROPERTY DEPENDS "coverage-reset")
set_property(TEST "coverage-report" APPEND PROPERTY DEPENDS "${test_name}")
endif()
set_property(TEST "${test_name}" APPEND PROPERTY DEPENDS "notes-reset")
set_property(TEST "notes-report" APPEND PROPERTY DEPENDS "${test_name}")
endfunction()
Expand All @@ -60,26 +47,6 @@ include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/girder.cmake)

add_download_target()

# copy blanket JS files
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/testing/js/blanket.min.js
${GEOJS_DEPLOY_DIR}/test/lib/blanket.min.js
COPYONLY
)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/testing/js/jasmine-boot.js
${GEOJS_DEPLOY_DIR}/test/lib/jasmine-boot.js
COPYONLY
)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/testing/js/testUtils.js
${GEOJS_DEPLOY_DIR}/test/lib/testUtils.js
COPYONLY
)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/testing/test-runners/aggregate-json-reporter.js.in
${GEOJS_DEPLOY_DIR}/test/lib//aggregate-json-reporter.js
)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/testing/test-runners/geojs_test_runner.py.in
${CMAKE_CURRENT_BINARY_DIR}/test/geojs_test_runner.py
)
Expand All @@ -89,105 +56,35 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/testing/test-runners/selenium-test-ut
COPYONLY
)

if (COVERAGE_TESTS)
set(SOURCES_INCLUDE <script src=/built/geo.all.dev.js data-cover></script>)
set(BLANKET_INCLUDE <script src=/test/lib/blanket.min.js></script>)
find_program(CURL_EXECUTABLE curl)
add_test(
NAME "coverage-reset"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
COMMAND "${CURL_EXECUTABLE}" -X DELETE "http://${TESTING_HOST}:${TESTING_PORT}/coverage"
)

add_test(
NAME "coverage-report"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
COMMAND "${CURL_EXECUTABLE}" -X POST "http://${TESTING_HOST}:${TESTING_PORT}/coverage"
--data "path=${CMAKE_CURRENT_BINARY_DIR}/coverage.xml" -G
)
set_property(TEST "coverage-report" APPEND PROPERTY DEPENDS "coverage-reset")

# We need to put sources under the build path for ctest to pick them up
file(COPY "${GEOJS_DEPLOY_DIR}/src" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
else()

set(SOURCES_INCLUDE <script src=/built/geo.all.dev.js></script>)
set(BLANKET_INCLUDE "")

endif()

# Generate notes to send along with the test reports
find_program(CURL_EXECUTABLE curl)
add_test(
NAME "notes-reset"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
COMMAND "${CURL_EXECUTABLE}" -X DELETE "http://${TESTING_HOST}:${TESTING_PORT}/notes"
COMMAND "./tests/notes.js" "reset" "${CMAKE_CURRENT_BINARY_DIR}/notes" "${NOTES_PATH}"
)

add_test(
NAME "notes-report"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
COMMAND "${CURL_EXECUTABLE}" -X POST "http://${TESTING_HOST}:${TESTING_PORT}/notes"
--data "path=${NOTES_PATH}" -G
COMMAND "./tests/notes.js" "combine" "${CMAKE_CURRENT_BINARY_DIR}/notes" "${NOTES_PATH}"
)
set_property(TEST "notes-report" APPEND PROPERTY DEPENDS "notes-reset")

if(PHANTOMJS_TESTS)
set(PHANTOMJS_REL_DIR "test/phantomjs")
set(PHANTOMJS_ABS_DIR "${GEOJS_DEPLOY_DIR}/${PHANTOMJS_REL_DIR}")

configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/testing/js/jasmine-blanket.js
${GEOJS_DEPLOY_DIR}/test/lib/jasmine-blanket.js
COPYONLY
)

configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/node_modules/phantomjs-polyfill/bind-polyfill.js
${GEOJS_DEPLOY_DIR}/test/lib/bind-polyfill.js
COPYONLY
)

file(GLOB JS_UNIT_TEST_CASES
${CMAKE_CURRENT_SOURCE_DIR}/testing/test-cases/phantomjs-tests/*.js
)

list(APPEND TESTING_DEPENDENCIES ${_min_js_file})

# add phantomjs unit tests
foreach(js ${JS_UNIT_TEST_CASES})
get_filename_component(f "${js}" NAME_WE)
set(html "${PHANTOMJS_ABS_DIR}/${f}.html")

add_custom_command(OUTPUT ${html}
COMMAND ${CMAKE_COMMAND} -DTEST_HTML="${html}"
-DSOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}"
-DSOURCE_FILE="${js}"
-DSOURCES_INCLUDE="${SOURCES_INCLUDE}"
-DBLANKET_INCLUDE="${BLANKET_INCLUDE}"
-P ${CMAKE_SOURCE_DIR}/cmake/configure-js-unit-test.cmake
COMMAND ${CMAKE_COMMAND} -E touch ${html}
DEPENDS ${js} ${Girder_DOWNLOAD_FILES} ${CMAKE_SOURCE_DIR}/testing/test-runners/jasmine-runner.html.in
COMMENT "Generating phantomjs unit test ${f}"
)
list(APPEND JS_UNIT_TEST_FILES ${html})

add_geojs_test(phantomjs:${f}
${PHANTOMJS_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/testing/test-runners/run-jasmine.js
http://${TESTING_HOST}:${TESTING_PORT}/${PHANTOMJS_REL_DIR}/${f}.html
)
endforeach()

add_custom_target(
phantomjs_tests
ALL
DEPENDS ${PHANTOMJS_EXECUTABLE} ${JS_UNIT_TEST_FILES} ${Girder_DOWNLOAD_FILES}
find_program(NPM_EXECUTABLE npm)
add_test(
NAME "phantomjs"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
COMMAND npm run ci
)

endif() # PHANTOMJS_TESTS
set_property(TEST "phantomjs" APPEND PROPERTY ENVIRONMENT "CTEST_NOTES_PATH=${CMAKE_CURRENT_BINARY_DIR}/notes")
set_property(TEST "phantomjs" APPEND PROPERTY DEPENDS "notes-reset")
set_property(TEST "notes-report" APPEND PROPERTY DEPENDS "phantomjs")
endif()

if(SELENIUM_TESTS)

find_package(PythonInterp REQUIRED)
set(FIREFOX_TESTS ON CACHE BOOL "Turn on Firefox selenium tests.")
set(CHROME_TESTS OFF CACHE BOOL "Turn on Chrome selenium tests.")
set(DATA_REPO_PATH "" CACHE PATH "Local path to the geojs data repository (optional).")
Expand Down Expand Up @@ -232,10 +129,8 @@ if(SELENIUM_TESTS)
COMMAND ${CMAKE_COMMAND} -DHTML_INCLUDE="${html}"
-DJS_INCLUDE="${js}"
-DCSS_INCLUDE="${css}"
-DSOURCES_INCLUDE="${SOURCES_INCLUDE}"
-DOUTPUT_HTML="${output_html}"
-DTEMPLATE_HTML="${CMAKE_CURRENT_SOURCE_DIR}/testing/test-runners/selenium-template.html.in"
-DBLANKET_INCLUDE="${BLANKET_INCLUDE}"
-P ${CMAKE_SOURCE_DIR}/cmake/configure-js-selenium-test.cmake
COMMAND ${CMAKE_COMMAND} -E touch "${output_html}"
DEPENDS "${html}" "${js}" "${css}" "${CMAKE_CURRENT_SOURCE_DIR}/testing/test-runners/selenium-template.html.in"
Expand All @@ -249,10 +144,6 @@ if(SELENIUM_TESTS)
COMMAND ${PYTHON_EXECUTABLE} -m unittest discover -v -s "${dir}"
)

if (COVERAGE_TESTS)
set_property(TEST "selenium:${f}" APPEND PROPERTY DEPENDS "coverage-reset")
set_property(TEST "coverage-report" APPEND PROPERTY DEPENDS "selenium:${f}")
endif()
set_property(TEST "selenium:${f}" APPEND PROPERTY DEPENDS "notes-reset")
set_property(TEST "notes-report" APPEND PROPERTY DEPENDS "selenium:${f}")
set_property(TEST "selenium:${f}" APPEND PROPERTY ENVIRONMENT "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}/test")
Expand All @@ -267,54 +158,10 @@ if(SELENIUM_TESTS)
set_property(TEST "selenium:glLinesSpeed" APPEND PROPERTY ENVIRONMENT "LOAD_SPEED_THRESHOLD=1000")
set_property(TEST "selenium:glLinesSpeed" APPEND PROPERTY ENVIRONMENT "FRAMERATE_THRESHOLD=2")

set(jasmine_runner ${CMAKE_CURRENT_BINARY_DIR}/test/selenium_jasmine_runner.py)
set(JASMINE_DEPLOY_URL /test/jasmine)

configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/testing/test-runners/selenium_jasmine_runner.py.in
${jasmine_runner}
)

list(APPEND JAMINE_TEST_FILES ${jasmine_runner})

set(JASMINE_TEST_DIR "${GEOJS_DEPLOY_DIR}/test/jasmine")
file(GLOB JASMINE_TEST_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/testing/test-cases/jasmine-tests/*.js
)
foreach(f ${JASMINE_TEST_SOURCES})
get_filename_component(base "${f}" NAME_WE)
set(html "${JASMINE_TEST_DIR}/${base}.html")

add_custom_command(OUTPUT ${html}
COMMAND ${CMAKE_COMMAND} -DTEST_HTML="${html}"
-DSOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}"
-DSOURCE_FILE="${f}"
-DSOURCES_INCLUDE="${SOURCES_INCLUDE}"
-DBLANKET_INCLUDE="${BLANKET_INCLUDE}"
-P ${CMAKE_SOURCE_DIR}/cmake/configure-js-unit-test.cmake
COMMAND ${CMAKE_COMMAND} -E touch ${html}
DEPENDS ${f} ${CMAKE_SOURCE_DIR}/testing/test-runners/jasmine-runner.html.in
COMMENT "Generating jasmine unit test ${base}"
)
list(APPEND JASMINE_TEST_FILES ${html})

add_test(
NAME "selenium:jasmine:${base}"
COMMAND ${PYTHON_EXECUTABLE} ${jasmine_runner} ${base}
)
if(COVERAGE_TESTS)
set_property(TEST "selenium:jasmine:${base}" APPEND PROPERTY DEPENDS "coverage-reset")
set_property(TEST "coverage-report" APPEND PROPERTY DEPENDS "selenium:jasmine:${base}")
endif()
set_property(TEST "selenium:jasmine:${base}" APPEND PROPERTY ENVIRONMENT "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}/test")
set_property(TEST "selenium:jasmine:${base}" APPEND PROPERTY ENVIRONMENT "FIREFOX_TESTS=${FIREFOX_TESTS}")
set_property(TEST "selenium:jasmine:${base}" APPEND PROPERTY ENVIRONMENT "CHROME_TESTS=${CHROME_TESTS}")
endforeach()

add_custom_target(
selenium_tests
ALL
DEPENDS ${SELENIUM_TEST_FILES} ${Girder_DOWNLOAD_FILES} ${JASMINE_TEST_FILES}
DEPENDS ${SELENIUM_TEST_FILES} ${Girder_DOWNLOAD_FILES}
)

endif()
Expand All @@ -332,35 +179,3 @@ if(${ESLINT_TESTS})
)

endif() # ESLINT_TESTS

if(BUILD_DOCUMENTATION)
find_program(SPHINX_EXECUTABLE sphinx-build)
if("${SPHINX_EXECUTABLE}" STREQUAL "SPHINX_EXECUTABLE-NOTFOUND")
message(FATAL_ERROR "Could not find sphinx-build for BUILD_DOCUMENTATION")
endif()

set(docs_sources
"${CMAKE_CURRENT_SOURCE_DIR}/testing/test-runners/geojs_test_runner.py.in"
"${CMAKE_CURRENT_SOURCE_DIR}/testing/test-runners/midas_handler.py"
"${CMAKE_CURRENT_SOURCE_DIR}/testing/test-runners/selenium_test.py.in"
"${CMAKE_CURRENT_SOURCE_DIR}/testing/test-runners/upload_test_cases.py"
"${CMAKE_CURRENT_SOURCE_DIR}/docs/conf.py"
"${CMAKE_CURRENT_SOURCE_DIR}/docs/index.rst"
"${CMAKE_CURRENT_SOURCE_DIR}/docs/quickstart.rst"
"${CMAKE_CURRENT_SOURCE_DIR}/docs/testingutils.rst"
)


add_custom_command(
OUTPUT "${GEOJS_DEPLOY_DIR}/docs/index.html"
DEPENDS ${docs_sources}
COMMAND "${CMAKE_COMMAND}" -E make_directory "${GEOJS_DEPLOY_DIR}/docs"
COMMAND "${SPHINX_EXECUTABLE}" -c "${CMAKE_CURRENT_SOURCE_DIR}/docs" -b html "${CMAKE_CURRENT_SOURCE_DIR}/docs" "${GEOJS_DEPLOY_DIR}/docs"
COMMENT "Building documentation"
)
add_custom_target(
docs
ALL
DEPENDS "${GEOJS_DEPLOY_DIR}/docs/index.html"
)
endif()
Loading

0 comments on commit cea4753

Please sign in to comment.