Doogie is built in C++ using CEF and Qt. This section has information on issues, building, and contributing.
Any bugs or enhancement requests can be filed in via GitHub issues. When filing a bug, please try to be as descriptive as possible on the issue. Ideally, provide a page or set of pages that trigger the error.
If there is a crash, the crash file will be dumped on the user’s computer. This can be found at
C:\Users\USER_NAME\AppData\Local\Doogie\User Data\Crashpad\reports
on Windows (TODO: where on Linux). Please upload
this file to the issue tracker for bugs about crashes.
If you are a developer, one of the easiest ways to do this is to add the pages to src/tests/integration/resources
.
Then by running npm run resource-server
from src/tests/integration
the resources can be browsed via
http://127.0.0.1:1993 (e.g. http://127.0.0.1:1993/hello-world.html).
Building Doogie is straightforward. A Go script at src/build.go
handles all building regardless
of platform.
All instructions below assume the user is in the src
folder.
Before running the build script on Windows, you must have the prerequisites:
cmake.exe
on the PATH
python.exe
on the PATH
go.exe
on the PATH
PATH
for MSVC 2015:
"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
. Or the following executed for MSVC
2017: "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
.qmake.exe
on the PATH
corresponding to the chosen MSVC version (e.g. with
"C:\Qt\<version>\msvc2017_64\bin"
on the PATH
)PATH
to speed up builds (e.g. with
"C:\Qt\Tools\QtCreator\bin"
on the PATH
)CEF_DIR
environment variable set to the base CEF extracted dirsrc
folderBefore running the build script on Linux, you must have the prerequisites:
qmake
on the PATH
cmake
on the PATH
python
on the PATH
go
on the PATH
gcc
and g++
on the PATH
make
on the PATH
CEF_DIR
environment variable set to the base CEF extracted dirsudo apt-get install libgtk2.0-dev
)sudo apt-get install mesa-common-dev
)libGL
installed and on the library path (e.g. on Ubuntu sudo apt-get install libgl1-mesa-dev
)chrpath
utility on the PATH
src
folder(TODO)
All instructions below assume the user is in the src
folder.
The application uses the CEF C++ wrapper, which can be built via:
go run build.go build-cef
This only needs to be built one time. Now the application can easily be run via:
go run build.go run
That will run the debug
version. For the release
version, run:
go run build.go run release
Internally, that just builds and runs the exe. To just build, call build
instead. To package a deployment artifact
from a previously run build, package
is used. For example, to package a release
deployment artifact from a
previously run release
build, run:
go run build.go package release
Once complete, the package(s) will in release/package
(e.g. doogie.zip in Windows)
There are two types of tests, unit and integration tests at src/tests/unit
and src/tests/integration
respectively.
The integration tests are not yet integrated in build.go
. The tests are written in node.js. Make sure you have the
latest LTS release of node installed and navigate to src/tests/integration
. To setup the test infrastructure, run:
npm install
To run the tests, make sure a debug instance of Doogie is running then run
npm test
Assuming CEF is built (see the first “Running Build” step), unit tests can be run with the following in src/
:
go run build.go unit-test
Like the run
command, the unit-test
command can be given a release
target, otherwise it defaults to debug
.
There are a couple of benchmarks in the application. To run them, do the following in src/
:
go run build.go benchmark
Like the run
command, the benchmark
command can be given a release
target, otherwise it defaults to debug
.
Doogie follows the Chromium Style Guide for C++ code except for anything listed below.
To do a lint check of the code, have the
Chromium depot_tools cloned somewhere and set the
DEPOT_TOOLS_DIR
env var to the dir. Then run the following in src/
:
go run build.go lint
For JS code in src/tests/integration
, follow Standard Style.
Lint checks automatically occur when npm test
is run to do the integration tests.