aboutsummaryrefslogtreecommitdiff
Error: user-error ("Unable to resolve link: \"introduction\"") mapbacktrace(#f(compiled-function (evald func args flags) #)) debug-early-backtrace() debug-early(error (user-error "Unable to resolve link: \"introduction\"")) signal(user-error ("Unable to resolve link: \"introduction\"")) user-error("Unable to resolve link: %S" "introduction") org-export-data((link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 103 :end 134 :contents-begin 120 :contents-end 132 :post-blank 0 :parent (paragraph (:begin 103 :end 135 :contents-begin 103 :contents-end 135 :post-blank 0 :post-affiliated 103 :mode nil :granularity nil :parent (item (:bullet "- " :begin 101 :end 135 :contents-begin 103 :contents-end 135 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 101 :tag nil :mode item :granularity nil :parent (plain-list (:type unordered :begin 101 :end 211 :contents-begin 101 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 101 :mode planning :granularity nil :parent (section (:begin 101 :end 212 :contents-begin 101 :contents-end 211 :robust-begin 101 :robust-end 209 :post-blank 1 :post-affiliated 101 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 23 :end 212 :pre-blank 0 :contents-begin 101 :contents-end 211 :robust-begin 103 :robust-end 209 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 23 :title (#("Table of Contents" 0 17 (:parent #126))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 23 :contents-begin 1 :contents-end 22 :robust-begin 1 :robust-end 20 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #172) (keyword (:key "TITLE" :value "Testing GN2" :begin 1 :end 22 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #175))) #126 (headline (:raw-value "Introduction" :begin 212 :end 1055 :pre-blank 1 :contents-begin 228 :contents-end 1054 :robust-begin 230 :robust-end 1052 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 212 :title (#("Introduction" 0 12 (:parent #177))) :mode nil :granularity nil :parent #172) (section (:begin 228 :end 1055 :contents-begin 228 :contents-end 1054 :robust-begin 228 :robust-end 1052 :post-blank 1 :post-affiliated 228 :mode section :granularity nil :parent #177) (paragraph (:begin 228 :end 578 :contents-begin 228 :contents-end 577 :post-blank 1 :post-affiliated 228 :mode planning :granularity nil :parent #180) #("For integration testing, we currently use " 0 42 (:parent #183)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/tree/testing/test/requests" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/tree/testing/test/requests" :application nil :search-option nil :begin 270 :end 360 :contents-begin 344 :contents-end 357 :post-blank 1 :parent #183) #("Mechanica Rob" 0 13 (:parent #187))) #("against the\nsmall " 0 18 (:parent #183)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :application nil :search-option nil :begin 378 :end 465 :contents-begin 455 :contents-end 463 :post-blank 0 :parent #183) #("database" 0 8 (:parent #189))) #("; a setup we call Mechanical Rob because it emulates\nsomeone clicking through the website and checking results.\n" 0 112 (:parent #183))) (paragraph (:begin 578 :end 785 :contents-begin 578 :contents-end 784 :post-blank 1 :post-affiliated 578 :mode nil :granularity nil :parent #180) #("These scripts invoke calls to a running webserver and test the response.\nIf a page changes or breaks, tests will fail. In principle, Mechanical\nRob runs before code merges get committed to the main server.\n" 0 206 (:parent #184))) (paragraph (:begin 785 :end 1054 :contents-begin 785 :contents-end 1054 :post-blank 0 :post-affiliated 785 :mode nil :granularity nil :parent #180) #("For unit tests, we use python's " 0 32 (:parent #185)) (verbatim (:begin 817 :end 828 :post-blank 1 :value "unittest" :parent #185)) #("framework. Coverage reports\nget generated using " 0 48 (:parent #185)) (link (:type "https" :path "//coverage.readthedocs.io/en/coverage-5.2.1/" :format bracket :raw-link "https://coverage.readthedocs.io/en/coverage-5.2.1/" :application nil :search-option nil :begin 876 :end 944 :contents-begin 930 :contents-end 941 :post-blank 1 :parent #185) #("coverage.py" 0 11 (:parent #191))) #("which you could also use to run\nunit tests. When adding new functionality, it is advisable to add\nunit tests.\n" 0 110 (:parent #185))))) (headline (:raw-value "Run tests" :begin 1055 :end 2404 :pre-blank 1 :contents-begin 1068 :contents-end 2404 :robust-begin 1070 :robust-end 2402 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1055 :title (#("Run tests" 0 9 (:parent #178))) :mode nil :granularity nil :parent #172) (headline (:raw-value "Setup" :begin 1068 :end 1209 :pre-blank 1 :contents-begin 1078 :contents-end 1208 :robust-begin 1080 :robust-end 1206 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1068 :title (#("Setup" 0 5 (:parent #181))) :mode section :granularity nil :parent #178) (section (:begin 1078 :end 1209 :contents-begin 1078 :contents-end 1208 :robust-begin 1078 :robust-end 1206 :post-blank 1 :post-affiliated 1078 :mode section :granularity nil :parent #181) (paragraph (:begin 1078 :end 1141 :contents-begin 1078 :contents-end 1140 :post-blank 1 :post-affiliated 1078 :mode planning :granularity nil :parent #184) #("Everything required for testing is already package with guix:\n" 0 62 (:parent #187))) (fixed-width (:begin 1141 :end 1208 :value "./pre-ins-env guix package -i genenetwork2 -p ~/opt/genenetwork2" :post-blank 1 :post-affiliated 1141 :mode nil :granularity nil :parent #184)))) (headline (:raw-value "Running" :begin 1209 :end 2404 :pre-blank 1 :contents-begin 1221 :contents-end 2404 :robust-begin 1223 :robust-end 2402 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1209 :title (#("Running" 0 7 (:parent #182))) :mode nil :granularity nil :parent #178) (section (:begin 1221 :end 2404 :contents-begin 1221 :contents-end 2404 :robust-begin 1221 :robust-end 2402 :post-blank 0 :post-affiliated 1221 :mode section :granularity nil :parent #182) (paragraph (:begin 1221 :end 1329 :contents-begin 1221 :contents-end 1328 :post-blank 1 :post-affiliated 1221 :mode planning :granularity nil :parent #185) #("Run the tests from the root of the genenetwork2 source tree as. Ensure\nthat Redis and Mariadb are running.\n" 0 107 (:parent #188))) (paragraph (:begin 1329 :end 1352 :contents-begin 1329 :contents-end 1352 :post-blank 0 :post-affiliated 1329 :mode nil :granularity nil :parent #185) #("To run Mechanical Rob:\n" 0 23 (:parent #189))) (fixed-width (:begin 1352 :end 1590 :value "time env GN2_PROFILE=~/opt/genenetwork2 TMPDIR=~/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -c ~/projects/genenetwork2/test/requests/test-website.py -a http://localhost:5004" :post-blank 2 :post-affiliated 1352 :mode nil :granularity nil :parent #185)) (paragraph (:begin 1590 :end 1637 :contents-begin 1590 :contents-end 1636 :post-blank 1 :post-affiliated 1590 :mode nil :granularity nil :parent #185) #("Use these aliases for the following examples.\n" 0 46 (:parent #191))) (src-block (:language "sh" :switches nil :parameters nil :begin 1637 :end 1970 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "alias runpython=\"env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2\"\n\nalias runcmd=\"time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -cli\"\n" :post-blank 1 :post-affiliated 1637 :mode nil :granularity nil :parent #185)) (paragraph (:begin 1970 :end 2026 :contents-begin 1970 :contents-end 2025 :post-blank 1 :post-affiliated 1970 :mode nil :granularity nil :parent #185) #("You could use them in your " 0 27 (:parent #193)) (verbatim (:begin 1997 :end 2007 :post-blank 1 :value ".bashrc" :parent #193)) #("or " 0 3 (:parent #193)) (verbatim (:begin 2010 :end 2019 :post-blank 1 :value ".zshrc" :parent #193)) #("file.\n" 0 6 (:parent #193))) (paragraph (:begin 2026 :end 2046 :contents-begin 2026 :contents-end 2045 :post-blank 1 :post-affiliated 2026 :mode nil :granularity nil :parent #185) #("To run unit tests:\n" 0 19 (:parent #194))) (fixed-width (:begin 2046 :end 2083 :value "runpython -m unittest discover -v" :post-blank 2 :post-affiliated 2046 :mode nil :granularity nil :parent #185)) (paragraph (:begin 2083 :end 2126 :contents-begin 2083 :contents-end 2125 :post-blank 1 :post-affiliated 2083 :mode nil :granularity nil :parent #185) #("Or alternatively using the coverage tool:\n" 0 42 (:parent #196))) (fixed-width (:begin 2126 :end 2173 :value "runcmd coverage run -m unittest discover -v" :post-blank 2 :post-affiliated 2126 :mode nil :granularity nil :parent #185)) (paragraph (:begin 2173 :end 2244 :contents-begin 2173 :contents-end 2243 :post-blank 1 :post-affiliated 2173 :mode nil :granularity nil :parent #185) #("To generate a html coverage report in " 0 38 (:parent #198)) (verbatim (:begin 2211 :end 2242 :post-blank 0 :value "wqflask/coverage_html_report/" :parent #198)) #("\n" 0 1 (:parent #198))) (fixed-width (:begin 2244 :end 2268 :value "runcmd coverage html" :post-blank 2 :post-affiliated 2244 :mode nil :granularity nil :parent #185)) (paragraph (:begin 2268 :end 2303 :contents-begin 2268 :contents-end 2302 :post-blank 1 :post-affiliated 2268 :mode nil :granularity nil :parent #185) #("To output the report to " 0 24 (:parent #200)) (verbatim (:begin 2292 :end 2300 :post-blank 0 :value "STDOUT" :parent #200)) #(":\n" 0 2 (:parent #200))) (fixed-width (:begin 2303 :end 2329 :value "runcmd coverage report" :post-blank 2 :post-affiliated 2303 :mode nil :granularity nil :parent #185)) (paragraph (:begin 2329 :end 2404 :contents-begin 2329 :contents-end 2404 :post-blank 0 :post-affiliated 2329 :mode nil :granularity nil :parent #185) #("All the configs for running the coverage tool are in\n" 0 53 (:parent #202)) (verbatim (:begin 2382 :end 2403 :post-blank 0 :value "wqflask/.coveragerc" :parent #202)) #("\n" 0 1 (:parent #202)))))))) #102)) #78)) #46 (item (:bullet "- " :begin 135 :end 211 :contents-begin 137 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 135 :tag nil :mode item :granularity nil :parent #78) (paragraph (:begin 137 :end 163 :contents-begin 137 :contents-end 163 :post-blank 0 :post-affiliated 137 :mode nil :granularity nil :parent #82) (link (:type "custom-id" :path "run-tests" :format bracket :raw-link "#run-tests" :application nil :search-option nil :begin 137 :end 162 :contents-begin 151 :contents-end 160 :post-blank 0 :parent #85) #("Run tests" 0 9 (:parent #88))) #("\n" 0 1 (:parent #85))) (plain-list (:type unordered :begin 163 :end 211 :contents-begin 163 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 163 :mode nil :granularity nil :parent #82) (item (:bullet "- " :begin 163 :end 185 :contents-begin 167 :contents-end 185 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 163 :tag nil :mode item :granularity nil :parent #86) (paragraph (:begin 167 :end 185 :contents-begin 167 :contents-end 185 :post-blank 0 :post-affiliated 167 :mode nil :granularity nil :parent #89) (link (:type "custom-id" :path "setup" :format bracket :raw-link "#setup" :application nil :search-option nil :begin 167 :end 184 :contents-begin 177 :contents-end 182 :post-blank 0 :parent #92) #("Setup" 0 5 (:parent #95))) #("\n" 0 1 (:parent #92)))) (item (:bullet "- " :begin 185 :end 211 :contents-begin 189 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 185 :tag nil :mode item :granularity nil :parent #86) (paragraph (:begin 189 :end 211 :contents-begin 189 :contents-end 211 :post-blank 0 :post-affiliated 189 :mode nil :granularity nil :parent #90) (link (:type "custom-id" :path "running" :format bracket :raw-link "#running" :application nil :search-option nil :begin 189 :end 210 :contents-begin 201 :contents-end 208 :post-blank 0 :parent #93) #("Running" 0 7 (:parent #96))) #("\n" 0 1 (:parent #93)))))))) #26)) #0 #("\n" 0 1 (:parent #26)))) #("Introduction" 0 12 (:parent #0))) (:export-options (body-only) :back-end #s(org-export-backend :name html :parent nil :transcoders ((bold . org-html-bold) (center-block . org-html-center-block) (clock . org-html-clock) (code . org-html-code) (drawer . org-html-drawer) (dynamic-block . org-html-dynamic-block) (entity . org-html-entity) (example-block . org-html-example-block) (export-block . org-html-export-block) (export-snippet . org-html-export-snippet) (fixed-width . org-html-fixed-width) (footnote-reference . org-html-footnote-reference) (headline . org-html-headline) (horizontal-rule . org-html-horizontal-rule) (inline-src-block . org-html-inline-src-block) (inlinetask . org-html-inlinetask) (inner-template . org-html-inner-template) (italic . org-html-italic) (item . org-html-item) (keyword . org-html-keyword) (latex-environment . org-html-latex-environment) (latex-fragment . org-html-latex-fragment) (line-break . org-html-line-break) (link . org-html-link) (node-property . org-html-node-property) (paragraph . org-html-paragraph) (plain-list . org-html-plain-list) (plain-text . org-html-plain-text) (planning . org-html-planning) (property-drawer . org-html-property-drawer) (quote-block . org-html-quote-block) (radio-target . org-html-radio-target) (section . org-html-section) (special-block . org-html-special-block) (src-block . org-html-src-block) (statistics-cookie . org-html-statistics-cookie) (strike-through . org-html-strike-through) (subscript . org-html-subscript) (superscript . org-html-superscript) (table . org-html-table) (table-cell . org-html-table-cell) (table-row . org-html-table-row) (target . org-html-target) (template . org-html-template) (timestamp . org-html-timestamp) (underline . org-html-underline) (verbatim . org-html-verbatim) (verse-block . org-html-verse-block)) :options ((:html-doctype "HTML_DOCTYPE" nil org-html-doctype) (:html-container "HTML_CONTAINER" nil org-html-container-element) (:html-content-class "HTML_CONTENT_CLASS" nil org-html-content-class) (:description "DESCRIPTION" nil nil newline) (:keywords "KEYWORDS" nil nil space) (:html-html5-fancy nil "html5-fancy" org-html-html5-fancy) (:html-link-use-abs-url nil "html-link-use-abs-url" org-html-link-use-abs-url) (:html-link-home "HTML_LINK_HOME" nil org-html-link-home) (:html-link-up "HTML_LINK_UP" nil org-html-link-up) (:html-mathjax "HTML_MATHJAX" nil "" space) (:html-equation-reference-format "HTML_EQUATION_REFERENCE_FORMAT" nil org-html-equation-reference-format t) (:html-postamble nil "html-postamble" org-html-postamble) (:html-preamble nil "html-preamble" org-html-preamble) (:html-head "HTML_HEAD" nil org-html-head newline) (:html-head-extra "HTML_HEAD_EXTRA" nil org-html-head-extra newline) (:subtitle "SUBTITLE" nil nil parse) (:html-head-include-default-style nil "html-style" org-html-head-include-default-style) (:html-head-include-scripts nil "html-scripts" org-html-head-include-scripts) (:html-allow-name-attribute-in-anchors nil nil org-html-allow-name-attribute-in-anchors) (:html-divs nil nil org-html-divs) (:html-checkbox-type nil nil org-html-checkbox-type) (:html-extension nil nil org-html-extension) (:html-footnote-format nil nil org-html-footnote-format) (:html-footnote-separator nil nil org-html-footnote-separator) (:html-footnotes-section nil nil org-html-footnotes-section) (:html-format-drawer-function nil nil org-html-format-drawer-function) (:html-format-headline-function nil nil org-html-format-headline-function) (:html-format-inlinetask-function nil nil org-html-format-inlinetask-function) (:html-home/up-format nil nil org-html-home/up-format) (:html-indent nil nil org-html-indent) (:html-infojs-options nil nil org-html-infojs-options) (:html-infojs-template nil nil org-html-infojs-template) (:html-inline-image-rules nil nil org-html-inline-image-rules) (:html-link-org-files-as-html nil nil org-html-link-org-files-as-html) (:html-mathjax-options nil nil org-html-mathjax-options) (:html-mathjax-template nil nil org-html-mathjax-template) (:html-metadata-timestamp-format nil nil org-html-metadata-timestamp-format) (:html-postamble-format nil nil org-html-postamble-format) (:html-preamble-format nil nil org-html-preamble-format) (:html-prefer-user-labels nil nil org-html-prefer-user-labels) (:html-self-link-headlines nil nil org-html-self-link-headlines) (:html-table-align-individual-fields nil nil org-html-table-align-individual-fields) (:html-table-caption-above nil nil org-html-table-caption-above) (:html-table-data-tags nil nil org-html-table-data-tags) (:html-table-header-tags nil nil org-html-table-header-tags) (:html-table-use-header-tags-for-first-column nil nil org-html-table-use-header-tags-for-first-column) (:html-tag-class-prefix nil nil org-html-tag-class-prefix) (:html-text-markup-alist nil nil org-html-text-markup-alist) (:html-todo-kwd-class-prefix nil nil org-html-todo-kwd-class-prefix) (:html-toplevel-hlevel nil nil org-html-toplevel-hlevel) (:html-use-infojs nil nil org-html-use-infojs) (:html-validation-link nil nil org-html-validation-link) (:html-viewport nil nil org-html-viewport) (:html-inline-images nil nil org-html-inline-images) (:html-table-attributes nil nil org-html-table-default-attributes) (:html-table-row-open-tag nil nil org-html-table-row-open-tag) (:html-table-row-close-tag nil nil org-html-table-row-close-tag) (:html-xml-declaration nil nil org-html-xml-declaration) (:html-wrap-src-lines nil nil org-html-wrap-src-lines) (:html-klipsify-src nil nil org-html-klipsify-src) (:html-klipse-css nil nil org-html-klipse-css) (:html-klipse-js nil nil org-html-klipse-js) (:html-klipse-selection-script nil nil org-html-klipse-selection-script) (:infojs-opt "INFOJS_OPT" nil nil) (:creator "CREATOR" nil org-html-creator-string) (:with-latex nil "tex" org-html-with-latex) (:latex-header "LATEX_HEADER" nil nil newline)) :filters ((:filter-options . org-html-infojs-install-script) (:filter-parse-tree . org-html-image-link-filter) (:filter-final-output . org-html-final-function)) :blocks nil :menu (104 "Export to HTML" ((72 "As HTML buffer" org-html-export-as-html) (104 "As HTML file" org-html-export-to-html) (111 "As HTML file and open" (lambda (a s v b) (if a (org-html-export-to-html t s v b) (org-open-file (org-html-export-to-html nil s v b)))))))) :translate-alist ((bold . org-html-bold) (center-block . org-html-center-block) (clock . org-html-clock) (code . org-html-code) (drawer . org-html-drawer) (dynamic-block . org-html-dynamic-block) (entity . org-html-entity) (example-block . org-html-example-block) (export-block . org-html-export-block) (export-snippet . org-html-export-snippet) (fixed-width . org-html-fixed-width) (footnote-reference . org-html-footnote-reference) (headline . org-html-headline) (horizontal-rule . org-html-horizontal-rule) (inline-src-block . org-html-inline-src-block) (inlinetask . org-html-inlinetask) (inner-template . org-html-inner-template) (italic . org-html-italic) (item . org-html-item) (keyword . org-html-keyword) (latex-environment . org-html-latex-environment) (latex-fragment . org-html-latex-fragment) (line-break . org-html-line-break) (link . org-html-link) (node-property . org-html-node-property) (paragraph . org-html-paragraph) (plain-list . org-html-plain-list) (plain-text . org-html-plain-text) (planning . org-html-planning) (property-drawer . org-html-property-drawer) (quote-block . org-html-quote-block) (radio-target . org-html-radio-target) (section . org-html-section) (special-block . org-html-special-block) (src-block . org-html-src-block) (statistics-cookie . org-html-statistics-cookie) (strike-through . org-html-strike-through) (subscript . org-html-subscript) (superscript . org-html-superscript) (table . org-html-table) (table-cell . org-html-table-cell) (table-row . org-html-table-row) (target . org-html-target) (template . org-html-template) (timestamp . org-html-timestamp) (underline . org-html-underline) (verbatim . org-html-verbatim) (verse-block . org-html-verse-block)) :exported-data # :input-buffer " *temp*" :input-file nil :html-doctype "xhtml-strict" :html-container "div" :html-content-class "content" :description nil :keywords nil :html-html5-fancy nil :html-link-use-abs-url nil :html-link-home "" :html-link-up "" :html-mathjax "" :html-equation-reference-format "\\eqref{%s}" :html-postamble auto :html-preamble t :html-head "" :html-head-extra "" :subtitle nil :html-head-include-default-style t :html-head-include-scripts nil :html-allow-name-attribute-in-anchors nil :html-divs ((preamble "div" "preamble") (content "div" "content") (postamble "div" "postamble")) :html-checkbox-type ascii :html-extension "html" :html-footnote-format "%s" :html-footnote-separator ", " :html-footnotes-section "
\n

%s:

\n
\n%s\n
\n
" :html-format-drawer-function #f(compiled-function (name contents) #) :html-format-headline-function org-html-format-headline-default-function :html-format-inlinetask-function org-html-format-inlinetask-default-function :html-home/up-format "
\n UP \n |\n HOME \n
" :html-indent nil :html-infojs-options ((path . "https://orgmode.org/org-info.js") (view . "info") (toc . :with-toc) (ftoc . "0") (tdepth . "max") (sdepth . "max") (mouse . "underline") (buttons . "0") (ltoc . "1") (up . :html-link-up) (home . :html-link-home)) :html-infojs-template "\n\n" :html-inline-image-rules (("file" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)") ("http" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)") ("https" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)")) :html-link-org-files-as-html t :html-mathjax-options ((path "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js") (scale 1.0) (align "center") (font "mathjax-modern") (overflow "overflow") (tags "ams") (indent "0em") (multlinewidth "85%") (tagindent ".8em") (tagside "right")) :html-mathjax-template "\n\n\n" :html-metadata-timestamp-format "%Y-%m-%d %a %H:%M" :html-postamble-format (("en" "

Author: %a (%e)

\n

Date: %d

\n

%c

\n

%v

")) :html-preamble-format (("en" "")) :html-prefer-user-labels nil :html-self-link-headlines nil :html-table-align-individual-fields t :html-table-caption-above t :html-table-data-tags ("" . "") :html-table-header-tags ("" . "") :html-table-use-header-tags-for-first-column nil :html-tag-class-prefix "" :html-text-markup-alist ((bold . "%s") (code . "%s") (italic . "%s") (strike-through . "%s") (underline . "%s") (verbatim . "%s")) :html-todo-kwd-class-prefix "" :html-toplevel-hlevel 2 :html-use-infojs when-configured :html-validation-link "Validate" :html-viewport ((width "device-width") (initial-scale "1") (minimum-scale "") (maximum-scale "") (user-scalable "")) :html-inline-images t :html-table-attributes (:border "2" :cellspacing "0" :cellpadding "6" :rules "groups" :frame "hsides") :html-table-row-open-tag "" :html-table-row-close-tag "" :html-xml-declaration (("html" . "") ("php" . "\"; ?>")) :html-wrap-src-lines nil :html-klipsify-src nil :html-klipse-css "https://storage.googleapis.com/app.klipse.tech/css/codemirror.css" :html-klipse-js "https://storage.googleapis.com/app.klipse.tech/plugin_prod/js/klipse_plugin.min.js" :html-klipse-selection-script "window.klipse_settings = {selector_eval_html: '.src-html',\n selector_eval_js: '.src-js',\n selector_eval_python_client: '.src-python',\n selector_eval_scheme: '.src-scheme',\n selector: '.src-clojure',\n selector_eval_ruby: '.src-ruby'};" :infojs-opt nil :creator "Emacs 29.1 (Org mode 9.6.6)" :with-latex t :latex-header nil :title (#("Testing GN2" 0 11 (:parent #148))) :date nil :author (#("unknown" 0 7 (:parent #152))) :email "unknown@genenetwork-development" :language "en" :select-tags ("export") :exclude-tags ("noexport") :headline-levels 3 :preserve-breaks nil :section-numbers nil :time-stamp-file t :with-archived-trees headline :with-author t :with-broken-links nil :with-clocks nil :with-creator nil :with-date t :with-drawers (not "LOGBOOK") :with-email nil :with-emphasize t :with-entities t :with-fixed-width t :with-footnotes t :with-inlinetasks t :with-planning nil :with-priority nil :with-properties nil :with-smart-quotes nil :with-special-strings t :with-statistics-cookies t :with-sub-superscript t :with-toc nil :with-tables t :with-tags t :with-tasks t :with-timestamps t :with-title t :with-todo-keywords t :cite-export (basic nil nil) :bibliography nil :filter-body nil :filter-bold nil :filter-babel-call nil :filter-center-block nil :filter-clock nil :filter-code nil :filter-diary-sexp nil :filter-drawer nil :filter-dynamic-block nil :filter-entity nil :filter-example-block nil :filter-export-block nil :filter-export-snippet nil :filter-final-output (org-html-final-function) :filter-fixed-width nil :filter-footnote-definition nil :filter-footnote-reference nil :filter-headline nil :filter-horizontal-rule nil :filter-inline-babel-call nil :filter-inline-src-block nil :filter-inlinetask nil :filter-italic nil :filter-item nil :filter-keyword nil :filter-latex-environment nil :filter-latex-fragment nil :filter-line-break nil :filter-link nil :filter-node-property nil :filter-options (org-html-infojs-install-script) :filter-paragraph nil :filter-parse-tree (org-html-image-link-filter) :filter-plain-list nil :filter-plain-text nil :filter-planning nil :filter-property-drawer nil :filter-quote-block nil :filter-radio-target nil :filter-section nil :filter-special-block nil :filter-src-block nil :filter-statistics-cookie nil :filter-strike-through nil :filter-subscript nil :filter-superscript nil :filter-table nil :filter-table-cell nil :filter-table-row nil :filter-target nil :filter-timestamp nil :filter-underline nil :filter-verbatim nil :filter-verse-block nil :ignore-list nil :parse-tree (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 23 :contents-begin 1 :contents-end 22 :robust-begin 1 :robust-end 20 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #338) (keyword (:key "TITLE" :value "Testing GN2" :begin 1 :end 22 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #341))) (headline (:raw-value "Table of Contents" :begin 23 :end 212 :pre-blank 0 :contents-begin 101 :contents-end 211 :robust-begin 103 :robust-end 209 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 23 :title (#("Table of Contents" 0 17 (:parent #342))) :mode nil :granularity nil :parent #338) (section (:begin 101 :end 212 :contents-begin 101 :contents-end 211 :robust-begin 101 :robust-end 209 :post-blank 1 :post-affiliated 101 :mode section :granularity nil :parent #342) (plain-list (:type unordered :begin 101 :end 211 :contents-begin 101 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 101 :mode planning :granularity nil :parent #345) (item (:bullet "- " :begin 101 :end 135 :contents-begin 103 :contents-end 135 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 101 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 103 :end 135 :contents-begin 103 :contents-end 135 :post-blank 0 :post-affiliated 103 :mode nil :granularity nil :parent #351) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 103 :end 134 :contents-begin 120 :contents-end 132 :post-blank 0 :parent #354) #("Introduction" 0 12 (:parent #357))) #("\n" 0 1 (:parent #354)))) (item (:bullet "- " :begin 135 :end 211 :contents-begin 137 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 135 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 137 :end 163 :contents-begin 137 :contents-end 163 :post-blank 0 :post-affiliated 137 :mode nil :granularity nil :parent #352) (link (:type "custom-id" :path "run-tests" :format bracket :raw-link "#run-tests" :application nil :search-option nil :begin 137 :end 162 :contents-begin 151 :contents-end 160 :post-blank 0 :parent #355) #("Run tests" 0 9 (:parent #358))) #("\n" 0 1 (:parent #355))) (plain-list (:type unordered :begin 163 :end 211 :contents-begin 163 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 163 :mode nil :granularity nil :parent #352) (item (:bullet "- " :begin 163 :end 185 :contents-begin 167 :contents-end 185 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 163 :tag nil :mode item :granularity nil :parent #356) (paragraph (:begin 167 :end 185 :contents-begin 167 :contents-end 185 :post-blank 0 :post-affiliated 167 :mode nil :granularity nil :parent #359) (link (:type "custom-id" :path "setup" :format bracket :raw-link "#setup" :application nil :search-option nil :begin 167 :end 184 :contents-begin 177 :contents-end 182 :post-blank 0 :parent #362) #("Setup" 0 5 (:parent #365))) #("\n" 0 1 (:parent #362)))) (item (:bullet "- " :begin 185 :end 211 :contents-begin 189 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 185 :tag nil :mode item :granularity nil :parent #356) (paragraph (:begin 189 :end 211 :contents-begin 189 :contents-end 211 :post-blank 0 :post-affiliated 189 :mode nil :granularity nil :parent #360) (link (:type "custom-id" :path "running" :format bracket :raw-link "#running" :application nil :search-option nil :begin 189 :end 210 :contents-begin 201 :contents-end 208 :post-blank 0 :parent #363) #("Running" 0 7 (:parent #366))) #("\n" 0 1 (:parent #363))))))))) (headline (:raw-value "Introduction" :begin 212 :end 1055 :pre-blank 1 :contents-begin 228 :contents-end 1054 :robust-begin 230 :robust-end 1052 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 212 :title (#("Introduction" 0 12 (:parent #343))) :mode nil :granularity nil :parent #338) (section (:begin 228 :end 1055 :contents-begin 228 :contents-end 1054 :robust-begin 228 :robust-end 1052 :post-blank 1 :post-affiliated 228 :mode section :granularity nil :parent #343) (paragraph (:begin 228 :end 578 :contents-begin 228 :contents-end 577 :post-blank 1 :post-affiliated 228 :mode planning :granularity nil :parent #346) #("For integration testing, we currently use " 0 42 (:parent #349)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/tree/testing/test/requests" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/tree/testing/test/requests" :application nil :search-option nil :begin 270 :end 360 :contents-begin 344 :contents-end 357 :post-blank 1 :parent #349) #("Mechanica Rob" 0 13 (:parent #353))) #("against the\nsmall " 0 18 (:parent #349)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :application nil :search-option nil :begin 378 :end 465 :contents-begin 455 :contents-end 463 :post-blank 0 :parent #349) #("database" 0 8 (:parent #355))) #("; a setup we call Mechanical Rob because it emulates\nsomeone clicking through the website and checking results.\n" 0 112 (:parent #349))) (paragraph (:begin 578 :end 785 :contents-begin 578 :contents-end 784 :post-blank 1 :post-affiliated 578 :mode nil :granularity nil :parent #346) #("These scripts invoke calls to a running webserver and test the response.\nIf a page changes or breaks, tests will fail. In principle, Mechanical\nRob runs before code merges get committed to the main server.\n" 0 206 (:parent #350))) (paragraph (:begin 785 :end 1054 :contents-begin 785 :contents-end 1054 :post-blank 0 :post-affiliated 785 :mode nil :granularity nil :parent #346) #("For unit tests, we use python's " 0 32 (:parent #351)) (verbatim (:begin 817 :end 828 :post-blank 1 :value "unittest" :parent #351)) #("framework. Coverage reports\nget generated using " 0 48 (:parent #351)) (link (:type "https" :path "//coverage.readthedocs.io/en/coverage-5.2.1/" :format bracket :raw-link "https://coverage.readthedocs.io/en/coverage-5.2.1/" :application nil :search-option nil :begin 876 :end 944 :contents-begin 930 :contents-end 941 :post-blank 1 :parent #351) #("coverage.py" 0 11 (:parent #357))) #("which you could also use to run\nunit tests. When adding new functionality, it is advisable to add\nunit tests.\n" 0 110 (:parent #351))))) (headline (:raw-value "Run tests" :begin 1055 :end 2404 :pre-blank 1 :contents-begin 1068 :contents-end 2404 :robust-begin 1070 :robust-end 2402 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1055 :title (#("Run tests" 0 9 (:parent #344))) :mode nil :granularity nil :parent #338) (headline (:raw-value "Setup" :begin 1068 :end 1209 :pre-blank 1 :contents-begin 1078 :contents-end 1208 :robust-begin 1080 :robust-end 1206 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1068 :title (#("Setup" 0 5 (:parent #347))) :mode section :granularity nil :parent #344) (section (:begin 1078 :end 1209 :contents-begin 1078 :contents-end 1208 :robust-begin 1078 :robust-end 1206 :post-blank 1 :post-affiliated 1078 :mode section :granularity nil :parent #347) (paragraph (:begin 1078 :end 1141 :contents-begin 1078 :contents-end 1140 :post-blank 1 :post-affiliated 1078 :mode planning :granularity nil :parent #350) #("Everything required for testing is already package with guix:\n" 0 62 (:parent #353))) (fixed-width (:begin 1141 :end 1208 :value "./pre-ins-env guix package -i genenetwork2 -p ~/opt/genenetwork2" :post-blank 1 :post-affiliated 1141 :mode nil :granularity nil :parent #350)))) (headline (:raw-value "Running" :begin 1209 :end 2404 :pre-blank 1 :contents-begin 1221 :contents-end 2404 :robust-begin 1223 :robust-end 2402 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1209 :title (#("Running" 0 7 (:parent #348))) :mode nil :granularity nil :parent #344) (section (:begin 1221 :end 2404 :contents-begin 1221 :contents-end 2404 :robust-begin 1221 :robust-end 2402 :post-blank 0 :post-affiliated 1221 :mode section :granularity nil :parent #348) (paragraph (:begin 1221 :end 1329 :contents-begin 1221 :contents-end 1328 :post-blank 1 :post-affiliated 1221 :mode planning :granularity nil :parent #351) #("Run the tests from the root of the genenetwork2 source tree as. Ensure\nthat Redis and Mariadb are running.\n" 0 107 (:parent #354))) (paragraph (:begin 1329 :end 1352 :contents-begin 1329 :contents-end 1352 :post-blank 0 :post-affiliated 1329 :mode nil :granularity nil :parent #351) #("To run Mechanical Rob:\n" 0 23 (:parent #355))) (fixed-width (:begin 1352 :end 1590 :value "time env GN2_PROFILE=~/opt/genenetwork2 TMPDIR=~/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -c ~/projects/genenetwork2/test/requests/test-website.py -a http://localhost:5004" :post-blank 2 :post-affiliated 1352 :mode nil :granularity nil :parent #351)) (paragraph (:begin 1590 :end 1637 :contents-begin 1590 :contents-end 1636 :post-blank 1 :post-affiliated 1590 :mode nil :granularity nil :parent #351) #("Use these aliases for the following examples.\n" 0 46 (:parent #357))) (src-block (:language "sh" :switches nil :parameters nil :begin 1637 :end 1970 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "alias runpython=\"env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2\"\n\nalias runcmd=\"time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -cli\"\n" :post-blank 1 :post-affiliated 1637 :mode nil :granularity nil :parent #351)) (paragraph (:begin 1970 :end 2026 :contents-begin 1970 :contents-end 2025 :post-blank 1 :post-affiliated 1970 :mode nil :granularity nil :parent #351) #("You could use them in your " 0 27 (:parent #359)) (verbatim (:begin 1997 :end 2007 :post-blank 1 :value ".bashrc" :parent #359)) #("or " 0 3 (:parent #359)) (verbatim (:begin 2010 :end 2019 :post-blank 1 :value ".zshrc" :parent #359)) #("file.\n" 0 6 (:parent #359))) (paragraph (:begin 2026 :end 2046 :contents-begin 2026 :contents-end 2045 :post-blank 1 :post-affiliated 2026 :mode nil :granularity nil :parent #351) #("To run unit tests:\n" 0 19 (:parent #360))) (fixed-width (:begin 2046 :end 2083 :value "runpython -m unittest discover -v" :post-blank 2 :post-affiliated 2046 :mode nil :granularity nil :parent #351)) (paragraph (:begin 2083 :end 2126 :contents-begin 2083 :contents-end 2125 :post-blank 1 :post-affiliated 2083 :mode nil :granularity nil :parent #351) #("Or alternatively using the coverage tool:\n" 0 42 (:parent #362))) (fixed-width (:begin 2126 :end 2173 :value "runcmd coverage run -m unittest discover -v" :post-blank 2 :post-affiliated 2126 :mode nil :granularity nil :parent #351)) (paragraph (:begin 2173 :end 2244 :contents-begin 2173 :contents-end 2243 :post-blank 1 :post-affiliated 2173 :mode nil :granularity nil :parent #351) #("To generate a html coverage report in " 0 38 (:parent #364)) (verbatim (:begin 2211 :end 2242 :post-blank 0 :value "wqflask/coverage_html_report/" :parent #364)) #("\n" 0 1 (:parent #364))) (fixed-width (:begin 2244 :end 2268 :value "runcmd coverage html" :post-blank 2 :post-affiliated 2244 :mode nil :granularity nil :parent #351)) (paragraph (:begin 2268 :end 2303 :contents-begin 2268 :contents-end 2302 :post-blank 1 :post-affiliated 2268 :mode nil :granularity nil :parent #351) #("To output the report to " 0 24 (:parent #366)) (verbatim (:begin 2292 :end 2300 :post-blank 0 :value "STDOUT" :parent #366)) #(":\n" 0 2 (:parent #366))) (fixed-width (:begin 2303 :end 2329 :value "runcmd coverage report" :post-blank 2 :post-affiliated 2303 :mode nil :granularity nil :parent #351)) (paragraph (:begin 2329 :end 2404 :contents-begin 2329 :contents-end 2404 :post-blank 0 :post-affiliated 2329 :mode nil :granularity nil :parent #351) #("All the configs for running the coverage tool are in\n" 0 53 (:parent #368)) (verbatim (:begin 2382 :end 2403 :post-blank 0 :value "wqflask/.coveragerc" :parent #368)) #("\n" 0 1 (:parent #368))))))) :headline-offset 0 :headline-numbering nil :id-alist nil :citations nil :id-local-cache #)) #f(compiled-function (element) #)((link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 103 :end 134 :contents-begin 120 :contents-end 132 :post-blank 0 :parent (paragraph (:begin 103 :end 135 :contents-begin 103 :contents-end 135 :post-blank 0 :post-affiliated 103 :mode nil :granularity nil :parent (item (:bullet "- " :begin 101 :end 135 :contents-begin 103 :contents-end 135 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 101 :tag nil :mode item :granularity nil :parent (plain-list (:type unordered :begin 101 :end 211 :contents-begin 101 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 101 :mode planning :granularity nil :parent (section (:begin 101 :end 212 :contents-begin 101 :contents-end 211 :robust-begin 101 :robust-end 209 :post-blank 1 :post-affiliated 101 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 23 :end 212 :pre-blank 0 :contents-begin 101 :contents-end 211 :robust-begin 103 :robust-end 209 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 23 :title (#("Table of Contents" 0 17 (:parent #126))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 23 :contents-begin 1 :contents-end 22 :robust-begin 1 :robust-end 20 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #172) (keyword (:key "TITLE" :value "Testing GN2" :begin 1 :end 22 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #175))) #126 (headline (:raw-value "Introduction" :begin 212 :end 1055 :pre-blank 1 :contents-begin 228 :contents-end 1054 :robust-begin 230 :robust-end 1052 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 212 :title (#("Introduction" 0 12 (:parent #177))) :mode nil :granularity nil :parent #172) (section (:begin 228 :end 1055 :contents-begin 228 :contents-end 1054 :robust-begin 228 :robust-end 1052 :post-blank 1 :post-affiliated 228 :mode section :granularity nil :parent #177) (paragraph (:begin 228 :end 578 :contents-begin 228 :contents-end 577 :post-blank 1 :post-affiliated 228 :mode planning :granularity nil :parent #180) #("For integration testing, we currently use " 0 42 (:parent #183)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/tree/testing/test/requests" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/tree/testing/test/requests" :application nil :search-option nil :begin 270 :end 360 :contents-begin 344 :contents-end 357 :post-blank 1 :parent #183) #("Mechanica Rob" 0 13 (:parent #187))) #("against the\nsmall " 0 18 (:parent #183)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :application nil :search-option nil :begin 378 :end 465 :contents-begin 455 :contents-end 463 :post-blank 0 :parent #183) #("database" 0 8 (:parent #189))) #("; a setup we call Mechanical Rob because it emulates\nsomeone clicking through the website and checking results.\n" 0 112 (:parent #183))) (paragraph (:begin 578 :end 785 :contents-begin 578 :contents-end 784 :post-blank 1 :post-affiliated 578 :mode nil :granularity nil :parent #180) #("These scripts invoke calls to a running webserver and test the response.\nIf a page changes or breaks, tests will fail. In principle, Mechanical\nRob runs before code merges get committed to the main server.\n" 0 206 (:parent #184))) (paragraph (:begin 785 :end 1054 :contents-begin 785 :contents-end 1054 :post-blank 0 :post-affiliated 785 :mode nil :granularity nil :parent #180) #("For unit tests, we use python's " 0 32 (:parent #185)) (verbatim (:begin 817 :end 828 :post-blank 1 :value "unittest" :parent #185)) #("framework. Coverage reports\nget generated using " 0 48 (:parent #185)) (link (:type "https" :path "//coverage.readthedocs.io/en/coverage-5.2.1/" :format bracket :raw-link "https://coverage.readthedocs.io/en/coverage-5.2.1/" :application nil :search-option nil :begin 876 :end 944 :contents-begin 930 :contents-end 941 :post-blank 1 :parent #185) #("coverage.py" 0 11 (:parent #191))) #("which you could also use to run\nunit tests. When adding new functionality, it is advisable to add\nunit tests.\n" 0 110 (:parent #185))))) (headline (:raw-value "Run tests" :begin 1055 :end 2404 :pre-blank 1 :contents-begin 1068 :contents-end 2404 :robust-begin 1070 :robust-end 2402 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1055 :title (#("Run tests" 0 9 (:parent #178))) :mode nil :granularity nil :parent #172) (headline (:raw-value "Setup" :begin 1068 :end 1209 :pre-blank 1 :contents-begin 1078 :contents-end 1208 :robust-begin 1080 :robust-end 1206 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1068 :title (#("Setup" 0 5 (:parent #181))) :mode section :granularity nil :parent #178) (section (:begin 1078 :end 1209 :contents-begin 1078 :contents-end 1208 :robust-begin 1078 :robust-end 1206 :post-blank 1 :post-affiliated 1078 :mode section :granularity nil :parent #181) (paragraph (:begin 1078 :end 1141 :contents-begin 1078 :contents-end 1140 :post-blank 1 :post-affiliated 1078 :mode planning :granularity nil :parent #184) #("Everything required for testing is already package with guix:\n" 0 62 (:parent #187))) (fixed-width (:begin 1141 :end 1208 :value "./pre-ins-env guix package -i genenetwork2 -p ~/opt/genenetwork2" :post-blank 1 :post-affiliated 1141 :mode nil :granularity nil :parent #184)))) (headline (:raw-value "Running" :begin 1209 :end 2404 :pre-blank 1 :contents-begin 1221 :contents-end 2404 :robust-begin 1223 :robust-end 2402 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1209 :title (#("Running" 0 7 (:parent #182))) :mode nil :granularity nil :parent #178) (section (:begin 1221 :end 2404 :contents-begin 1221 :contents-end 2404 :robust-begin 1221 :robust-end 2402 :post-blank 0 :post-affiliated 1221 :mode section :granularity nil :parent #182) (paragraph (:begin 1221 :end 1329 :contents-begin 1221 :contents-end 1328 :post-blank 1 :post-affiliated 1221 :mode planning :granularity nil :parent #185) #("Run the tests from the root of the genenetwork2 source tree as. Ensure\nthat Redis and Mariadb are running.\n" 0 107 (:parent #188))) (paragraph (:begin 1329 :end 1352 :contents-begin 1329 :contents-end 1352 :post-blank 0 :post-affiliated 1329 :mode nil :granularity nil :parent #185) #("To run Mechanical Rob:\n" 0 23 (:parent #189))) (fixed-width (:begin 1352 :end 1590 :value "time env GN2_PROFILE=~/opt/genenetwork2 TMPDIR=~/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -c ~/projects/genenetwork2/test/requests/test-website.py -a http://localhost:5004" :post-blank 2 :post-affiliated 1352 :mode nil :granularity nil :parent #185)) (paragraph (:begin 1590 :end 1637 :contents-begin 1590 :contents-end 1636 :post-blank 1 :post-affiliated 1590 :mode nil :granularity nil :parent #185) #("Use these aliases for the following examples.\n" 0 46 (:parent #191))) (src-block (:language "sh" :switches nil :parameters nil :begin 1637 :end 1970 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "alias runpython=\"env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2\"\n\nalias runcmd=\"time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -cli\"\n" :post-blank 1 :post-affiliated 1637 :mode nil :granularity nil :parent #185)) (paragraph (:begin 1970 :end 2026 :contents-begin 1970 :contents-end 2025 :post-blank 1 :post-affiliated 1970 :mode nil :granularity nil :parent #185) #("You could use them in your " 0 27 (:parent #193)) (verbatim (:begin 1997 :end 2007 :post-blank 1 :value ".bashrc" :parent #193)) #("or " 0 3 (:parent #193)) (verbatim (:begin 2010 :end 2019 :post-blank 1 :value ".zshrc" :parent #193)) #("file.\n" 0 6 (:parent #193))) (paragraph (:begin 2026 :end 2046 :contents-begin 2026 :contents-end 2045 :post-blank 1 :post-affiliated 2026 :mode nil :granularity nil :parent #185) #("To run unit tests:\n" 0 19 (:parent #194))) (fixed-width (:begin 2046 :end 2083 :value "runpython -m unittest discover -v" :post-blank 2 :post-affiliated 2046 :mode nil :granularity nil :parent #185)) (paragraph (:begin 2083 :end 2126 :contents-begin 2083 :contents-end 2125 :post-blank 1 :post-affiliated 2083 :mode nil :granularity nil :parent #185) #("Or alternatively using the coverage tool:\n" 0 42 (:parent #196))) (fixed-width (:begin 2126 :end 2173 :value "runcmd coverage run -m unittest discover -v" :post-blank 2 :post-affiliated 2126 :mode nil :granularity nil :parent #185)) (paragraph (:begin 2173 :end 2244 :contents-begin 2173 :contents-end 2243 :post-blank 1 :post-affiliated 2173 :mode nil :granularity nil :parent #185) #("To generate a html coverage report in " 0 38 (:parent #198)) (verbatim (:begin 2211 :end 2242 :post-blank 0 :value "wqflask/coverage_html_report/" :parent #198)) #("\n" 0 1 (:parent #198))) (fixed-width (:begin 2244 :end 2268 :value "runcmd coverage html" :post-blank 2 :post-affiliated 2244 :mode nil :granularity nil :parent #185)) (paragraph (:begin 2268 :end 2303 :contents-begin 2268 :contents-end 2302 :post-blank 1 :post-affiliated 2268 :mode nil :granularity nil :parent #185) #("To output the report to " 0 24 (:parent #200)) (verbatim (:begin 2292 :end 2300 :post-blank 0 :value "STDOUT" :parent #200)) #(":\n" 0 2 (:parent #200))) (fixed-width (:begin 2303 :end 2329 :value "runcmd coverage report" :post-blank 2 :post-affiliated 2303 :mode nil :granularity nil :parent #185)) (paragraph (:begin 2329 :end 2404 :contents-begin 2329 :contents-end 2404 :post-blank 0 :post-affiliated 2329 :mode nil :granularity nil :parent #185) #("All the configs for running the coverage tool are in\n" 0 53 (:parent #202)) (verbatim (:begin 2382 :end 2403 :post-blank 0 :value "wqflask/.coveragerc" :parent #202)) #("\n" 0 1 (:parent #202)))))))) #102)) #78)) #46 (item (:bullet "- " :begin 135 :end 211 :contents-begin 137 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 135 :tag nil :mode item :granularity nil :parent #78) (paragraph (:begin 137 :end 163 :contents-begin 137 :contents-end 163 :post-blank 0 :post-affiliated 137 :mode nil :granularity nil :parent #82) (link (:type "custom-id" :path "run-tests" :format bracket :raw-link "#run-tests" :application nil :search-option nil :begin 137 :end 162 :contents-begin 151 :contents-end 160 :post-blank 0 :parent #85) #("Run tests" 0 9 (:parent #88))) #("\n" 0 1 (:parent #85))) (plain-list (:type unordered :begin 163 :end 211 :contents-begin 163 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 163 :mode nil :granularity nil :parent #82) (item (:bullet "- " :begin 163 :end 185 :contents-begin 167 :contents-end 185 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 163 :tag nil :mode item :granularity nil :parent #86) (paragraph (:begin 167 :end 185 :contents-begin 167 :contents-end 185 :post-blank 0 :post-affiliated 167 :mode nil :granularity nil :parent #89) (link (:type "custom-id" :path "setup" :format bracket :raw-link "#setup" :application nil :search-option nil :begin 167 :end 184 :contents-begin 177 :contents-end 182 :post-blank 0 :parent #92) #("Setup" 0 5 (:parent #95))) #("\n" 0 1 (:parent #92)))) (item (:bullet "- " :begin 185 :end 211 :contents-begin 189 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 185 :tag nil :mode item :granularity nil :parent #86) (paragraph (:begin 189 :end 211 :contents-begin 189 :contents-end 211 :post-blank 0 :post-affiliated 189 :mode nil :granularity nil :parent #90) (link (:type "custom-id" :path "running" :format bracket :raw-link "#running" :application nil :search-option nil :begin 189 :end 210 :contents-begin 201 :contents-end 208 :post-blank 0 :parent #93) #("Running" 0 7 (:parent #96))) #("\n" 0 1 (:parent #93)))))))) #26)) #0 #("\n" 0 1 (:parent #26)))) #("Introduction" 0 12 (:parent #0)))) mapconcat(#f(compiled-function (element) #) ((link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 103 :end 134 :contents-begin 120 :contents-end 132 :post-blank 0 :parent (paragraph (:begin 103 :end 135 :contents-begin 103 :contents-end 135 :post-blank 0 :post-affiliated 103 :mode nil :granularity nil :parent (item (:bullet "- " :begin 101 :end 135 :contents-begin 103 :contents-end 135 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 101 :tag nil :mode item :granularity nil :parent (plain-list (:type unordered :begin 101 :end 211 :contents-begin 101 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 101 :mode planning :granularity nil :parent (section (:begin 101 :end 212 :contents-begin 101 :contents-end 211 :robust-begin 101 :robust-end 209 :post-blank 1 :post-affiliated 101 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 23 :end 212 :pre-blank 0 :contents-begin 101 :contents-end 211 :robust-begin 103 :robust-end 209 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 23 :title (#("Table of Contents" 0 17 (:parent #127))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 23 :contents-begin 1 :contents-end 22 :robust-begin 1 :robust-end 20 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #173) (keyword (:key "TITLE" :value "Testing GN2" :begin 1 :end 22 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #176))) #127 (headline (:raw-value "Introduction" :begin 212 :end 1055 :pre-blank 1 :contents-begin 228 :contents-end 1054 :robust-begin 230 :robust-end 1052 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 212 :title (#("Introduction" 0 12 (:parent #178))) :mode nil :granularity nil :parent #173) (section (:begin 228 :end 1055 :contents-begin 228 :contents-end 1054 :robust-begin 228 :robust-end 1052 :post-blank 1 :post-affiliated 228 :mode section :granularity nil :parent #178) (paragraph (:begin 228 :end 578 :contents-begin 228 :contents-end 577 :post-blank 1 :post-affiliated 228 :mode planning :granularity nil :parent #181) #("For integration testing, we currently use " 0 42 (:parent #184)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/tree/testing/test/requests" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/tree/testing/test/requests" :application nil :search-option nil :begin 270 :end 360 :contents-begin 344 :contents-end 357 :post-blank 1 :parent #184) #("Mechanica Rob" 0 13 (:parent #188))) #("against the\nsmall " 0 18 (:parent #184)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :application nil :search-option nil :begin 378 :end 465 :contents-begin 455 :contents-end 463 :post-blank 0 :parent #184) #("database" 0 8 (:parent #190))) #("; a setup we call Mechanical Rob because it emulates\nsomeone clicking through the website and checking results.\n" 0 112 (:parent #184))) (paragraph (:begin 578 :end 785 :contents-begin 578 :contents-end 784 :post-blank 1 :post-affiliated 578 :mode nil :granularity nil :parent #181) #("These scripts invoke calls to a running webserver and test the response.\nIf a page changes or breaks, tests will fail. In principle, Mechanical\nRob runs before code merges get committed to the main server.\n" 0 206 (:parent #185))) (paragraph (:begin 785 :end 1054 :contents-begin 785 :contents-end 1054 :post-blank 0 :post-affiliated 785 :mode nil :granularity nil :parent #181) #("For unit tests, we use python's " 0 32 (:parent #186)) (verbatim (:begin 817 :end 828 :post-blank 1 :value "unittest" :parent #186)) #("framework. Coverage reports\nget generated using " 0 48 (:parent #186)) (link (:type "https" :path "//coverage.readthedocs.io/en/coverage-5.2.1/" :format bracket :raw-link "https://coverage.readthedocs.io/en/coverage-5.2.1/" :application nil :search-option nil :begin 876 :end 944 :contents-begin 930 :contents-end 941 :post-blank 1 :parent #186) #("coverage.py" 0 11 (:parent #192))) #("which you could also use to run\nunit tests. When adding new functionality, it is advisable to add\nunit tests.\n" 0 110 (:parent #186))))) (headline (:raw-value "Run tests" :begin 1055 :end 2404 :pre-blank 1 :contents-begin 1068 :contents-end 2404 :robust-begin 1070 :robust-end 2402 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1055 :title (#("Run tests" 0 9 (:parent #179))) :mode nil :granularity nil :parent #173) (headline (:raw-value "Setup" :begin 1068 :end 1209 :pre-blank 1 :contents-begin 1078 :contents-end 1208 :robust-begin 1080 :robust-end 1206 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1068 :title (#("Setup" 0 5 (:parent #182))) :mode section :granularity nil :parent #179) (section (:begin 1078 :end 1209 :contents-begin 1078 :contents-end 1208 :robust-begin 1078 :robust-end 1206 :post-blank 1 :post-affiliated 1078 :mode section :granularity nil :parent #182) (paragraph (:begin 1078 :end 1141 :contents-begin 1078 :contents-end 1140 :post-blank 1 :post-affiliated 1078 :mode planning :granularity nil :parent #185) #("Everything required for testing is already package with guix:\n" 0 62 (:parent #188))) (fixed-width (:begin 1141 :end 1208 :value "./pre-ins-env guix package -i genenetwork2 -p ~/opt/genenetwork2" :post-blank 1 :post-affiliated 1141 :mode nil :granularity nil :parent #185)))) (headline (:raw-value "Running" :begin 1209 :end 2404 :pre-blank 1 :contents-begin 1221 :contents-end 2404 :robust-begin 1223 :robust-end 2402 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1209 :title (#("Running" 0 7 (:parent #183))) :mode nil :granularity nil :parent #179) (section (:begin 1221 :end 2404 :contents-begin 1221 :contents-end 2404 :robust-begin 1221 :robust-end 2402 :post-blank 0 :post-affiliated 1221 :mode section :granularity nil :parent #183) (paragraph (:begin 1221 :end 1329 :contents-begin 1221 :contents-end 1328 :post-blank 1 :post-affiliated 1221 :mode planning :granularity nil :parent #186) #("Run the tests from the root of the genenetwork2 source tree as. Ensure\nthat Redis and Mariadb are running.\n" 0 107 (:parent #189))) (paragraph (:begin 1329 :end 1352 :contents-begin 1329 :contents-end 1352 :post-blank 0 :post-affiliated 1329 :mode nil :granularity nil :parent #186) #("To run Mechanical Rob:\n" 0 23 (:parent #190))) (fixed-width (:begin 1352 :end 1590 :value "time env GN2_PROFILE=~/opt/genenetwork2 TMPDIR=~/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -c ~/projects/genenetwork2/test/requests/test-website.py -a http://localhost:5004" :post-blank 2 :post-affiliated 1352 :mode nil :granularity nil :parent #186)) (paragraph (:begin 1590 :end 1637 :contents-begin 1590 :contents-end 1636 :post-blank 1 :post-affiliated 1590 :mode nil :granularity nil :parent #186) #("Use these aliases for the following examples.\n" 0 46 (:parent #192))) (src-block (:language "sh" :switches nil :parameters nil :begin 1637 :end 1970 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "alias runpython=\"env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2\"\n\nalias runcmd=\"time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -cli\"\n" :post-blank 1 :post-affiliated 1637 :mode nil :granularity nil :parent #186)) (paragraph (:begin 1970 :end 2026 :contents-begin 1970 :contents-end 2025 :post-blank 1 :post-affiliated 1970 :mode nil :granularity nil :parent #186) #("You could use them in your " 0 27 (:parent #194)) (verbatim (:begin 1997 :end 2007 :post-blank 1 :value ".bashrc" :parent #194)) #("or " 0 3 (:parent #194)) (verbatim (:begin 2010 :end 2019 :post-blank 1 :value ".zshrc" :parent #194)) #("file.\n" 0 6 (:parent #194))) (paragraph (:begin 2026 :end 2046 :contents-begin 2026 :contents-end 2045 :post-blank 1 :post-affiliated 2026 :mode nil :granularity nil :parent #186) #("To run unit tests:\n" 0 19 (:parent #195))) (fixed-width (:begin 2046 :end 2083 :value "runpython -m unittest discover -v" :post-blank 2 :post-affiliated 2046 :mode nil :granularity nil :parent #186)) (paragraph (:begin 2083 :end 2126 :contents-begin 2083 :contents-end 2125 :post-blank 1 :post-affiliated 2083 :mode nil :granularity nil :parent #186) #("Or alternatively using the coverage tool:\n" 0 42 (:parent #197))) (fixed-width (:begin 2126 :end 2173 :value "runcmd coverage run -m unittest discover -v" :post-blank 2 :post-affiliated 2126 :mode nil :granularity nil :parent #186)) (paragraph (:begin 2173 :end 2244 :contents-begin 2173 :contents-end 2243 :post-blank 1 :post-affiliated 2173 :mode nil :granularity nil :parent #186) #("To generate a html coverage report in " 0 38 (:parent #199)) (verbatim (:begin 2211 :end 2242 :post-blank 0 :value "wqflask/coverage_html_report/" :parent #199)) #("\n" 0 1 (:parent #199))) (fixed-width (:begin 2244 :end 2268 :value "runcmd coverage html" :post-blank 2 :post-affiliated 2244 :mode nil :granularity nil :parent #186)) (paragraph (:begin 2268 :end 2303 :contents-begin 2268 :contents-end 2302 :post-blank 1 :post-affiliated 2268 :mode nil :granularity nil :parent #186) #("To output the report to " 0 24 (:parent #201)) (verbatim (:begin 2292 :end 2300 :post-blank 0 :value "STDOUT" :parent #201)) #(":\n" 0 2 (:parent #201))) (fixed-width (:begin 2303 :end 2329 :value "runcmd coverage report" :post-blank 2 :post-affiliated 2303 :mode nil :granularity nil :parent #186)) (paragraph (:begin 2329 :end 2404 :contents-begin 2329 :contents-end 2404 :post-blank 0 :post-affiliated 2329 :mode nil :granularity nil :parent #186) #("All the configs for running the coverage tool are in\n" 0 53 (:parent #203)) (verbatim (:begin 2382 :end 2403 :post-blank 0 :value "wqflask/.coveragerc" :parent #203)) #("\n" 0 1 (:parent #203)))))))) #103)) #79)) #47 (item (:bullet "- " :begin 135 :end 211 :contents-begin 137 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 135 :tag nil :mode item :granularity nil :parent #79) (paragraph (:begin 137 :end 163 :contents-begin 137 :contents-end 163 :post-blank 0 :post-affiliated 137 :mode nil :granularity nil :parent #83) (link (:type "custom-id" :path "run-tests" :format bracket :raw-link "#run-tests" :application nil :search-option nil :begin 137 :end 162 :contents-begin 151 :contents-end 160 :post-blank 0 :parent #86) #("Run tests" 0 9 (:parent #89))) #("\n" 0 1 (:parent #86))) (plain-list (:type unordered :begin 163 :end 211 :contents-begin 163 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 163 :mode nil :granularity nil :parent #83) (item (:bullet "- " :begin 163 :end 185 :contents-begin 167 :contents-end 185 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 163 :tag nil :mode item :granularity nil :parent #87) (paragraph (:begin 167 :end 185 :contents-begin 167 :contents-end 185 :post-blank 0 :post-affiliated 167 :mode nil :granularity nil :parent #90) (link (:type "custom-id" :path "setup" :format bracket :raw-link "#setup" :application nil :search-option nil :begin 167 :end 184 :contents-begin 177 :contents-end 182 :post-blank 0 :parent #93) #("Setup" 0 5 (:parent #96))) #("\n" 0 1 (:parent #93)))) (item (:bullet "- " :begin 185 :end 211 :contents-begin 189 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 185 :tag nil :mode item :granularity nil :parent #87) (paragraph (:begin 189 :end 211 :contents-begin 189 :contents-end 211 :post-blank 0 :post-affiliated 189 :mode nil :granularity nil :parent #91) (link (:type "custom-id" :path "running" :format bracket :raw-link "#running" :application nil :search-option nil :begin 189 :end 210 :contents-begin 201 :contents-end 208 :post-blank 0 :parent #94) #("Running" 0 7 (:parent #97))) #("\n" 0 1 (:parent #94)))))))) #27)) . #0)) #("Introduction" 0 12 (:parent #1))) #("\n" 0 1 (:parent (paragraph (:begin 103 :end 135 :contents-begin 103 :contents-end 135 :post-blank 0 :post-affiliated 103 :mode nil :granularity nil :parent (item (:bullet "- " :begin 101 :end 135 :contents-begin 103 :contents-end 135 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 101 :tag nil :mode item :granularity nil :parent (plain-list (:type unordered :begin 101 :end 211 :contents-begin 101 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 101 :mode planning :granularity nil :parent (section (:begin 101 :end 212 :contents-begin 101 :contents-end 211 :robust-begin 101 :robust-end 209 :post-blank 1 :post-affiliated 101 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 23 :end 212 :pre-blank 0 :contents-begin 101 :contents-end 211 :robust-begin 103 :robust-end 209 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 23 :title (#("Table of Contents" 0 17 (:parent #105))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 23 :contents-begin 1 :contents-end 22 :robust-begin 1 :robust-end 20 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #151) (keyword (:key "TITLE" :value "Testing GN2" :begin 1 :end 22 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #154))) #105 (headline (:raw-value "Introduction" :begin 212 :end 1055 :pre-blank 1 :contents-begin 228 :contents-end 1054 :robust-begin 230 :robust-end 1052 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 212 :title (#("Introduction" 0 12 (:parent #156))) :mode nil :granularity nil :parent #151) (section (:begin 228 :end 1055 :contents-begin 228 :contents-end 1054 :robust-begin 228 :robust-end 1052 :post-blank 1 :post-affiliated 228 :mode section :granularity nil :parent #156) (paragraph (:begin 228 :end 578 :contents-begin 228 :contents-end 577 :post-blank 1 :post-affiliated 228 :mode planning :granularity nil :parent #159) #("For integration testing, we currently use " 0 42 (:parent #162)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/tree/testing/test/requests" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/tree/testing/test/requests" :application nil :search-option nil :begin 270 :end 360 :contents-begin 344 :contents-end 357 :post-blank 1 :parent #162) #("Mechanica Rob" 0 13 (:parent #166))) #("against the\nsmall " 0 18 (:parent #162)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :application nil :search-option nil :begin 378 :end 465 :contents-begin 455 :contents-end 463 :post-blank 0 :parent #162) #("database" 0 8 (:parent #168))) #("; a setup we call Mechanical Rob because it emulates\nsomeone clicking through the website and checking results.\n" 0 112 (:parent #162))) (paragraph (:begin 578 :end 785 :contents-begin 578 :contents-end 784 :post-blank 1 :post-affiliated 578 :mode nil :granularity nil :parent #159) #("These scripts invoke calls to a running webserver and test the response.\nIf a page changes or breaks, tests will fail. In principle, Mechanical\nRob runs before code merges get committed to the main server.\n" 0 206 (:parent #163))) (paragraph (:begin 785 :end 1054 :contents-begin 785 :contents-end 1054 :post-blank 0 :post-affiliated 785 :mode nil :granularity nil :parent #159) #("For unit tests, we use python's " 0 32 (:parent #164)) (verbatim (:begin 817 :end 828 :post-blank 1 :value "unittest" :parent #164)) #("framework. Coverage reports\nget generated using " 0 48 (:parent #164)) (link (:type "https" :path "//coverage.readthedocs.io/en/coverage-5.2.1/" :format bracket :raw-link "https://coverage.readthedocs.io/en/coverage-5.2.1/" :application nil :search-option nil :begin 876 :end 944 :contents-begin 930 :contents-end 941 :post-blank 1 :parent #164) #("coverage.py" 0 11 (:parent #170))) #("which you could also use to run\nunit tests. When adding new functionality, it is advisable to add\nunit tests.\n" 0 110 (:parent #164))))) (headline (:raw-value "Run tests" :begin 1055 :end 2404 :pre-blank 1 :contents-begin 1068 :contents-end 2404 :robust-begin 1070 :robust-end 2402 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1055 :title (#("Run tests" 0 9 (:parent #157))) :mode nil :granularity nil :parent #151) (headline (:raw-value "Setup" :begin 1068 :end 1209 :pre-blank 1 :contents-begin 1078 :contents-end 1208 :robust-begin 1080 :robust-end 1206 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1068 :title (#("Setup" 0 5 (:parent #160))) :mode section :granularity nil :parent #157) (section (:begin 1078 :end 1209 :contents-begin 1078 :contents-end 1208 :robust-begin 1078 :robust-end 1206 :post-blank 1 :post-affiliated 1078 :mode section :granularity nil :parent #160) (paragraph (:begin 1078 :end 1141 :contents-begin 1078 :contents-end 1140 :post-blank 1 :post-affiliated 1078 :mode planning :granularity nil :parent #163) #("Everything required for testing is already package with guix:\n" 0 62 (:parent #166))) (fixed-width (:begin 1141 :end 1208 :value "./pre-ins-env guix package -i genenetwork2 -p ~/opt/genenetwork2" :post-blank 1 :post-affiliated 1141 :mode nil :granularity nil :parent #163)))) (headline (:raw-value "Running" :begin 1209 :end 2404 :pre-blank 1 :contents-begin 1221 :contents-end 2404 :robust-begin 1223 :robust-end 2402 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1209 :title (#("Running" 0 7 (:parent #161))) :mode nil :granularity nil :parent #157) (section (:begin 1221 :end 2404 :contents-begin 1221 :contents-end 2404 :robust-begin 1221 :robust-end 2402 :post-blank 0 :post-affiliated 1221 :mode section :granularity nil :parent #161) (paragraph (:begin 1221 :end 1329 :contents-begin 1221 :contents-end 1328 :post-blank 1 :post-affiliated 1221 :mode planning :granularity nil :parent #164) #("Run the tests from the root of the genenetwork2 source tree as. Ensure\nthat Redis and Mariadb are running.\n" 0 107 (:parent #167))) (paragraph (:begin 1329 :end 1352 :contents-begin 1329 :contents-end 1352 :post-blank 0 :post-affiliated 1329 :mode nil :granularity nil :parent #164) #("To run Mechanical Rob:\n" 0 23 (:parent #168))) (fixed-width (:begin 1352 :end 1590 :value "time env GN2_PROFILE=~/opt/genenetwork2 TMPDIR=~/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -c ~/projects/genenetwork2/test/requests/test-website.py -a http://localhost:5004" :post-blank 2 :post-affiliated 1352 :mode nil :granularity nil :parent #164)) (paragraph (:begin 1590 :end 1637 :contents-begin 1590 :contents-end 1636 :post-blank 1 :post-affiliated 1590 :mode nil :granularity nil :parent #164) #("Use these aliases for the following examples.\n" 0 46 (:parent #170))) (src-block (:language "sh" :switches nil :parameters nil :begin 1637 :end 1970 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "alias runpython=\"env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2\"\n\nalias runcmd=\"time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -cli\"\n" :post-blank 1 :post-affiliated 1637 :mode nil :granularity nil :parent #164)) (paragraph (:begin 1970 :end 2026 :contents-begin 1970 :contents-end 2025 :post-blank 1 :post-affiliated 1970 :mode nil :granularity nil :parent #164) #("You could use them in your " 0 27 (:parent #172)) (verbatim (:begin 1997 :end 2007 :post-blank 1 :value ".bashrc" :parent #172)) #("or " 0 3 (:parent #172)) (verbatim (:begin 2010 :end 2019 :post-blank 1 :value ".zshrc" :parent #172)) #("file.\n" 0 6 (:parent #172))) (paragraph (:begin 2026 :end 2046 :contents-begin 2026 :contents-end 2045 :post-blank 1 :post-affiliated 2026 :mode nil :granularity nil :parent #164) #("To run unit tests:\n" 0 19 (:parent #173))) (fixed-width (:begin 2046 :end 2083 :value "runpython -m unittest discover -v" :post-blank 2 :post-affiliated 2046 :mode nil :granularity nil :parent #164)) (paragraph (:begin 2083 :end 2126 :contents-begin 2083 :contents-end 2125 :post-blank 1 :post-affiliated 2083 :mode nil :granularity nil :parent #164) #("Or alternatively using the coverage tool:\n" 0 42 (:parent #175))) (fixed-width (:begin 2126 :end 2173 :value "runcmd coverage run -m unittest discover -v" :post-blank 2 :post-affiliated 2126 :mode nil :granularity nil :parent #164)) (paragraph (:begin 2173 :end 2244 :contents-begin 2173 :contents-end 2243 :post-blank 1 :post-affiliated 2173 :mode nil :granularity nil :parent #164) #("To generate a html coverage report in " 0 38 (:parent #177)) (verbatim (:begin 2211 :end 2242 :post-blank 0 :value "wqflask/coverage_html_report/" :parent #177)) #("\n" 0 1 (:parent #177))) (fixed-width (:begin 2244 :end 2268 :value "runcmd coverage html" :post-blank 2 :post-affiliated 2244 :mode nil :granularity nil :parent #164)) (paragraph (:begin 2268 :end 2303 :contents-begin 2268 :contents-end 2302 :post-blank 1 :post-affiliated 2268 :mode nil :granularity nil :parent #164) #("To output the report to " 0 24 (:parent #179)) (verbatim (:begin 2292 :end 2300 :post-blank 0 :value "STDOUT" :parent #179)) #(":\n" 0 2 (:parent #179))) (fixed-width (:begin 2303 :end 2329 :value "runcmd coverage report" :post-blank 2 :post-affiliated 2303 :mode nil :granularity nil :parent #164)) (paragraph (:begin 2329 :end 2404 :contents-begin 2329 :contents-end 2404 :post-blank 0 :post-affiliated 2329 :mode nil :granularity nil :parent #164) #("All the configs for running the coverage tool are in\n" 0 53 (:parent #181)) (verbatim (:begin 2382 :end 2403 :post-blank 0 :value "wqflask/.coveragerc" :parent #181)) #("\n" 0 1 (:parent #181)))))))) #81)) #57)) #25 (item (:bullet "- " :begin 135 :end 211 :contents-begin 137 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 135 :tag nil :mode item :granularity nil :parent #57) (paragraph (:begin 137 :end 163 :contents-begin 137 :contents-end 163 :post-blank 0 :post-affiliated 137 :mode nil :granularity nil :parent #61) (link (:type "custom-id" :path "run-tests" :format bracket :raw-link "#run-tests" :application nil :search-option nil :begin 137 :end 162 :contents-begin 151 :contents-end 160 :post-blank 0 :parent #64) #("Run tests" 0 9 (:parent #67))) #("\n" 0 1 (:parent #64))) (plain-list (:type unordered :begin 163 :end 211 :contents-begin 163 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 163 :mode nil :granularity nil :parent #61) (item (:bullet "- " :begin 163 :end 185 :contents-begin 167 :contents-end 185 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 163 :tag nil :mode item :granularity nil :parent #65) (paragraph (:begin 167 :end 185 :contents-begin 167 :contents-end 185 :post-blank 0 :post-affiliated 167 :mode nil :granularity nil :parent #68) (link (:type "custom-id" :path "setup" :format bracket :raw-link "#setup" :application nil :search-option nil :begin 167 :end 184 :contents-begin 177 :contents-end 182 :post-blank 0 :parent #71) #("Setup" 0 5 (:parent #74))) #("\n" 0 1 (:parent #71)))) (item (:bullet "- " :begin 185 :end 211 :contents-begin 189 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 185 :tag nil :mode item :granularity nil :parent #65) (paragraph (:begin 189 :end 211 :contents-begin 189 :contents-end 211 :post-blank 0 :post-affiliated 189 :mode nil :granularity nil :parent #69) (link (:type "custom-id" :path "running" :format bracket :raw-link "#running" :application nil :search-option nil :begin 189 :end 210 :contents-begin 201 :contents-end 208 :post-blank 0 :parent #72) #("Running" 0 7 (:parent #75))) #("\n" 0 1 (:parent #72)))))))) #5)) . #0)))) "") org-export-data((paragraph (:begin 103 :end 135 :contents-begin 103 :contents-end 135 :post-blank 0 :post-affiliated 103 :mode nil :granularity nil :parent (item (:bullet "- " :begin 101 :end 135 :contents-begin 103 :contents-end 135 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 101 :tag nil :mode item :granularity nil :parent (plain-list (:type unordered :begin 101 :end 211 :contents-begin 101 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 101 :mode planning :granularity nil :parent (section (:begin 101 :end 212 :contents-begin 101 :contents-end 211 :robust-begin 101 :robust-end 209 :post-blank 1 :post-affiliated 101 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 23 :end 212 :pre-blank 0 :contents-begin 101 :contents-end 211 :robust-begin 103 :robust-end 209 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 23 :title (#("Table of Contents" 0 17 (:parent #100))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 23 :contents-begin 1 :contents-end 22 :robust-begin 1 :robust-end 20 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #146) (keyword (:key "TITLE" :value "Testing GN2" :begin 1 :end 22 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #149))) #100 (headline (:raw-value "Introduction" :begin 212 :end 1055 :pre-blank 1 :contents-begin 228 :contents-end 1054 :robust-begin 230 :robust-end 1052 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 212 :title (#("Introduction" 0 12 (:parent #151))) :mode nil :granularity nil :parent #146) (section (:begin 228 :end 1055 :contents-begin 228 :contents-end 1054 :robust-begin 228 :robust-end 1052 :post-blank 1 :post-affiliated 228 :mode section :granularity nil :parent #151) (paragraph (:begin 228 :end 578 :contents-begin 228 :contents-end 577 :post-blank 1 :post-affiliated 228 :mode planning :granularity nil :parent #154) #("For integration testing, we currently use " 0 42 (:parent #157)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/tree/testing/test/requests" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/tree/testing/test/requests" :application nil :search-option nil :begin 270 :end 360 :contents-begin 344 :contents-end 357 :post-blank 1 :parent #157) #("Mechanica Rob" 0 13 (:parent #161))) #("against the\nsmall " 0 18 (:parent #157)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :application nil :search-option nil :begin 378 :end 465 :contents-begin 455 :contents-end 463 :post-blank 0 :parent #157) #("database" 0 8 (:parent #163))) #("; a setup we call Mechanical Rob because it emulates\nsomeone clicking through the website and checking results.\n" 0 112 (:parent #157))) (paragraph (:begin 578 :end 785 :contents-begin 578 :contents-end 784 :post-blank 1 :post-affiliated 578 :mode nil :granularity nil :parent #154) #("These scripts invoke calls to a running webserver and test the response.\nIf a page changes or breaks, tests will fail. In principle, Mechanical\nRob runs before code merges get committed to the main server.\n" 0 206 (:parent #158))) (paragraph (:begin 785 :end 1054 :contents-begin 785 :contents-end 1054 :post-blank 0 :post-affiliated 785 :mode nil :granularity nil :parent #154) #("For unit tests, we use python's " 0 32 (:parent #159)) (verbatim (:begin 817 :end 828 :post-blank 1 :value "unittest" :parent #159)) #("framework. Coverage reports\nget generated using " 0 48 (:parent #159)) (link (:type "https" :path "//coverage.readthedocs.io/en/coverage-5.2.1/" :format bracket :raw-link "https://coverage.readthedocs.io/en/coverage-5.2.1/" :application nil :search-option nil :begin 876 :end 944 :contents-begin 930 :contents-end 941 :post-blank 1 :parent #159) #("coverage.py" 0 11 (:parent #165))) #("which you could also use to run\nunit tests. When adding new functionality, it is advisable to add\nunit tests.\n" 0 110 (:parent #159))))) (headline (:raw-value "Run tests" :begin 1055 :end 2404 :pre-blank 1 :contents-begin 1068 :contents-end 2404 :robust-begin 1070 :robust-end 2402 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1055 :title (#("Run tests" 0 9 (:parent #152))) :mode nil :granularity nil :parent #146) (headline (:raw-value "Setup" :begin 1068 :end 1209 :pre-blank 1 :contents-begin 1078 :contents-end 1208 :robust-begin 1080 :robust-end 1206 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1068 :title (#("Setup" 0 5 (:parent #155))) :mode section :granularity nil :parent #152) (section (:begin 1078 :end 1209 :contents-begin 1078 :contents-end 1208 :robust-begin 1078 :robust-end 1206 :post-blank 1 :post-affiliated 1078 :mode section :granularity nil :parent #155) (paragraph (:begin 1078 :end 1141 :contents-begin 1078 :contents-end 1140 :post-blank 1 :post-affiliated 1078 :mode planning :granularity nil :parent #158) #("Everything required for testing is already package with guix:\n" 0 62 (:parent #161))) (fixed-width (:begin 1141 :end 1208 :value "./pre-ins-env guix package -i genenetwork2 -p ~/opt/genenetwork2" :post-blank 1 :post-affiliated 1141 :mode nil :granularity nil :parent #158)))) (headline (:raw-value "Running" :begin 1209 :end 2404 :pre-blank 1 :contents-begin 1221 :contents-end 2404 :robust-begin 1223 :robust-end 2402 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1209 :title (#("Running" 0 7 (:parent #156))) :mode nil :granularity nil :parent #152) (section (:begin 1221 :end 2404 :contents-begin 1221 :contents-end 2404 :robust-begin 1221 :robust-end 2402 :post-blank 0 :post-affiliated 1221 :mode section :granularity nil :parent #156) (paragraph (:begin 1221 :end 1329 :contents-begin 1221 :contents-end 1328 :post-blank 1 :post-affiliated 1221 :mode planning :granularity nil :parent #159) #("Run the tests from the root of the genenetwork2 source tree as. Ensure\nthat Redis and Mariadb are running.\n" 0 107 (:parent #162))) (paragraph (:begin 1329 :end 1352 :contents-begin 1329 :contents-end 1352 :post-blank 0 :post-affiliated 1329 :mode nil :granularity nil :parent #159) #("To run Mechanical Rob:\n" 0 23 (:parent #163))) (fixed-width (:begin 1352 :end 1590 :value "time env GN2_PROFILE=~/opt/genenetwork2 TMPDIR=~/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -c ~/projects/genenetwork2/test/requests/test-website.py -a http://localhost:5004" :post-blank 2 :post-affiliated 1352 :mode nil :granularity nil :parent #159)) (paragraph (:begin 1590 :end 1637 :contents-begin 1590 :contents-end 1636 :post-blank 1 :post-affiliated 1590 :mode nil :granularity nil :parent #159) #("Use these aliases for the following examples.\n" 0 46 (:parent #165))) (src-block (:language "sh" :switches nil :parameters nil :begin 1637 :end 1970 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "alias runpython=\"env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2\"\n\nalias runcmd=\"time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -cli\"\n" :post-blank 1 :post-affiliated 1637 :mode nil :granularity nil :parent #159)) (paragraph (:begin 1970 :end 2026 :contents-begin 1970 :contents-end 2025 :post-blank 1 :post-affiliated 1970 :mode nil :granularity nil :parent #159) #("You could use them in your " 0 27 (:parent #167)) (verbatim (:begin 1997 :end 2007 :post-blank 1 :value ".bashrc" :parent #167)) #("or " 0 3 (:parent #167)) (verbatim (:begin 2010 :end 2019 :post-blank 1 :value ".zshrc" :parent #167)) #("file.\n" 0 6 (:parent #167))) (paragraph (:begin 2026 :end 2046 :contents-begin 2026 :contents-end 2045 :post-blank 1 :post-affiliated 2026 :mode nil :granularity nil :parent #159) #("To run unit tests:\n" 0 19 (:parent #168))) (fixed-width (:begin 2046 :end 2083 :value "runpython -m unittest discover -v" :post-blank 2 :post-affiliated 2046 :mode nil :granularity nil :parent #159)) (paragraph (:begin 2083 :end 2126 :contents-begin 2083 :contents-end 2125 :post-blank 1 :post-affiliated 2083 :mode nil :granularity nil :parent #159) #("Or alternatively using the coverage tool:\n" 0 42 (:parent #170))) (fixed-width (:begin 2126 :end 2173 :value "runcmd coverage run -m unittest discover -v" :post-blank 2 :post-affiliated 2126 :mode nil :granularity nil :parent #159)) (paragraph (:begin 2173 :end 2244 :contents-begin 2173 :contents-end 2243 :post-blank 1 :post-affiliated 2173 :mode nil :granularity nil :parent #159) #("To generate a html coverage report in " 0 38 (:parent #172)) (verbatim (:begin 2211 :end 2242 :post-blank 0 :value "wqflask/coverage_html_report/" :parent #172)) #("\n" 0 1 (:parent #172))) (fixed-width (:begin 2244 :end 2268 :value "runcmd coverage html" :post-blank 2 :post-affiliated 2244 :mode nil :granularity nil :parent #159)) (paragraph (:begin 2268 :end 2303 :contents-begin 2268 :contents-end 2302 :post-blank 1 :post-affiliated 2268 :mode nil :granularity nil :parent #159) #("To output the report to " 0 24 (:parent #174)) (verbatim (:begin 2292 :end 2300 :post-blank 0 :value "STDOUT" :parent #174)) #(":\n" 0 2 (:parent #174))) (fixed-width (:begin 2303 :end 2329 :value "runcmd coverage report" :post-blank 2 :post-affiliated 2303 :mode nil :granularity nil :parent #159)) (paragraph (:begin 2329 :end 2404 :contents-begin 2329 :contents-end 2404 :post-blank 0 :post-affiliated 2329 :mode nil :granularity nil :parent #159) #("All the configs for running the coverage tool are in\n" 0 53 (:parent #176)) (verbatim (:begin 2382 :end 2403 :post-blank 0 :value "wqflask/.coveragerc" :parent #176)) #("\n" 0 1 (:parent #176)))))))) #76)) #52)) #20 (item (:bullet "- " :begin 135 :end 211 :contents-begin 137 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 135 :tag nil :mode item :granularity nil :parent #52) (paragraph (:begin 137 :end 163 :contents-begin 137 :contents-end 163 :post-blank 0 :post-affiliated 137 :mode nil :granularity nil :parent #56) (link (:type "custom-id" :path "run-tests" :format bracket :raw-link "#run-tests" :application nil :search-option nil :begin 137 :end 162 :contents-begin 151 :contents-end 160 :post-blank 0 :parent #59) #("Run tests" 0 9 (:parent #62))) #("\n" 0 1 (:parent #59))) (plain-list (:type unordered :begin 163 :end 211 :contents-begin 163 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 163 :mode nil :granularity nil :parent #56) (item (:bullet "- " :begin 163 :end 185 :contents-begin 167 :contents-end 185 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 163 :tag nil :mode item :granularity nil :parent #60) (paragraph (:begin 167 :end 185 :contents-begin 167 :contents-end 185 :post-blank 0 :post-affiliated 167 :mode nil :granularity nil :parent #63) (link (:type "custom-id" :path "setup" :format bracket :raw-link "#setup" :application nil :search-option nil :begin 167 :end 184 :contents-begin 177 :contents-end 182 :post-blank 0 :parent #66) #("Setup" 0 5 (:parent #69))) #("\n" 0 1 (:parent #66)))) (item (:bullet "- " :begin 185 :end 211 :contents-begin 189 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 185 :tag nil :mode item :granularity nil :parent #60) (paragraph (:begin 189 :end 211 :contents-begin 189 :contents-end 211 :post-blank 0 :post-affiliated 189 :mode nil :granularity nil :parent #64) (link (:type "custom-id" :path "running" :format bracket :raw-link "#running" :application nil :search-option nil :begin 189 :end 210 :contents-begin 201 :contents-end 208 :post-blank 0 :parent #67) #("Running" 0 7 (:parent #70))) #("\n" 0 1 (:parent #67)))))))) #0)) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 103 :end 134 :contents-begin 120 :contents-end 132 :post-blank 0 :parent #0) #("Introduction" 0 12 (:parent #3))) #("\n" 0 1 (:parent #0))) (:export-options (body-only) :back-end #s(org-export-backend :name html :parent nil :transcoders ((bold . org-html-bold) (center-block . org-html-center-block) (clock . org-html-clock) (code . org-html-code) (drawer . org-html-drawer) (dynamic-block . org-html-dynamic-block) (entity . org-html-entity) (example-block . org-html-example-block) (export-block . org-html-export-block) (export-snippet . org-html-export-snippet) (fixed-width . org-html-fixed-width) (footnote-reference . org-html-footnote-reference) (headline . org-html-headline) (horizontal-rule . org-html-horizontal-rule) (inline-src-block . org-html-inline-src-block) (inlinetask . org-html-inlinetask) (inner-template . org-html-inner-template) (italic . org-html-italic) (item . org-html-item) (keyword . org-html-keyword) (latex-environment . org-html-latex-environment) (latex-fragment . org-html-latex-fragment) (line-break . org-html-line-break) (link . org-html-link) (node-property . org-html-node-property) (paragraph . org-html-paragraph) (plain-list . org-html-plain-list) (plain-text . org-html-plain-text) (planning . org-html-planning) (property-drawer . org-html-property-drawer) (quote-block . org-html-quote-block) (radio-target . org-html-radio-target) (section . org-html-section) (special-block . org-html-special-block) (src-block . org-html-src-block) (statistics-cookie . org-html-statistics-cookie) (strike-through . org-html-strike-through) (subscript . org-html-subscript) (superscript . org-html-superscript) (table . org-html-table) (table-cell . org-html-table-cell) (table-row . org-html-table-row) (target . org-html-target) (template . org-html-template) (timestamp . org-html-timestamp) (underline . org-html-underline) (verbatim . org-html-verbatim) (verse-block . org-html-verse-block)) :options ((:html-doctype "HTML_DOCTYPE" nil org-html-doctype) (:html-container "HTML_CONTAINER" nil org-html-container-element) (:html-content-class "HTML_CONTENT_CLASS" nil org-html-content-class) (:description "DESCRIPTION" nil nil newline) (:keywords "KEYWORDS" nil nil space) (:html-html5-fancy nil "html5-fancy" org-html-html5-fancy) (:html-link-use-abs-url nil "html-link-use-abs-url" org-html-link-use-abs-url) (:html-link-home "HTML_LINK_HOME" nil org-html-link-home) (:html-link-up "HTML_LINK_UP" nil org-html-link-up) (:html-mathjax "HTML_MATHJAX" nil "" space) (:html-equation-reference-format "HTML_EQUATION_REFERENCE_FORMAT" nil org-html-equation-reference-format t) (:html-postamble nil "html-postamble" org-html-postamble) (:html-preamble nil "html-preamble" org-html-preamble) (:html-head "HTML_HEAD" nil org-html-head newline) (:html-head-extra "HTML_HEAD_EXTRA" nil org-html-head-extra newline) (:subtitle "SUBTITLE" nil nil parse) (:html-head-include-default-style nil "html-style" org-html-head-include-default-style) (:html-head-include-scripts nil "html-scripts" org-html-head-include-scripts) (:html-allow-name-attribute-in-anchors nil nil org-html-allow-name-attribute-in-anchors) (:html-divs nil nil org-html-divs) (:html-checkbox-type nil nil org-html-checkbox-type) (:html-extension nil nil org-html-extension) (:html-footnote-format nil nil org-html-footnote-format) (:html-footnote-separator nil nil org-html-footnote-separator) (:html-footnotes-section nil nil org-html-footnotes-section) (:html-format-drawer-function nil nil org-html-format-drawer-function) (:html-format-headline-function nil nil org-html-format-headline-function) (:html-format-inlinetask-function nil nil org-html-format-inlinetask-function) (:html-home/up-format nil nil org-html-home/up-format) (:html-indent nil nil org-html-indent) (:html-infojs-options nil nil org-html-infojs-options) (:html-infojs-template nil nil org-html-infojs-template) (:html-inline-image-rules nil nil org-html-inline-image-rules) (:html-link-org-files-as-html nil nil org-html-link-org-files-as-html) (:html-mathjax-options nil nil org-html-mathjax-options) (:html-mathjax-template nil nil org-html-mathjax-template) (:html-metadata-timestamp-format nil nil org-html-metadata-timestamp-format) (:html-postamble-format nil nil org-html-postamble-format) (:html-preamble-format nil nil org-html-preamble-format) (:html-prefer-user-labels nil nil org-html-prefer-user-labels) (:html-self-link-headlines nil nil org-html-self-link-headlines) (:html-table-align-individual-fields nil nil org-html-table-align-individual-fields) (:html-table-caption-above nil nil org-html-table-caption-above) (:html-table-data-tags nil nil org-html-table-data-tags) (:html-table-header-tags nil nil org-html-table-header-tags) (:html-table-use-header-tags-for-first-column nil nil org-html-table-use-header-tags-for-first-column) (:html-tag-class-prefix nil nil org-html-tag-class-prefix) (:html-text-markup-alist nil nil org-html-text-markup-alist) (:html-todo-kwd-class-prefix nil nil org-html-todo-kwd-class-prefix) (:html-toplevel-hlevel nil nil org-html-toplevel-hlevel) (:html-use-infojs nil nil org-html-use-infojs) (:html-validation-link nil nil org-html-validation-link) (:html-viewport nil nil org-html-viewport) (:html-inline-images nil nil org-html-inline-images) (:html-table-attributes nil nil org-html-table-default-attributes) (:html-table-row-open-tag nil nil org-html-table-row-open-tag) (:html-table-row-close-tag nil nil org-html-table-row-close-tag) (:html-xml-declaration nil nil org-html-xml-declaration) (:html-wrap-src-lines nil nil org-html-wrap-src-lines) (:html-klipsify-src nil nil org-html-klipsify-src) (:html-klipse-css nil nil org-html-klipse-css) (:html-klipse-js nil nil org-html-klipse-js) (:html-klipse-selection-script nil nil org-html-klipse-selection-script) (:infojs-opt "INFOJS_OPT" nil nil) (:creator "CREATOR" nil org-html-creator-string) (:with-latex nil "tex" org-html-with-latex) (:latex-header "LATEX_HEADER" nil nil newline)) :filters ((:filter-options . org-html-infojs-install-script) (:filter-parse-tree . org-html-image-link-filter) (:filter-final-output . org-html-final-function)) :blocks nil :menu (104 "Export to HTML" ((72 "As HTML buffer" org-html-export-as-html) (104 "As HTML file" org-html-export-to-html) (111 "As HTML file and open" (lambda (a s v b) (if a (org-html-export-to-html t s v b) (org-open-file (org-html-export-to-html nil s v b)))))))) :translate-alist ((bold . org-html-bold) (center-block . org-html-center-block) (clock . org-html-clock) (code . org-html-code) (drawer . org-html-drawer) (dynamic-block . org-html-dynamic-block) (entity . org-html-entity) (example-block . org-html-example-block) (export-block . org-html-export-block) (export-snippet . org-html-export-snippet) (fixed-width . org-html-fixed-width) (footnote-reference . org-html-footnote-reference) (headline . org-html-headline) (horizontal-rule . org-html-horizontal-rule) (inline-src-block . org-html-inline-src-block) (inlinetask . org-html-inlinetask) (inner-template . org-html-inner-template) (italic . org-html-italic) (item . org-html-item) (keyword . org-html-keyword) (latex-environment . org-html-latex-environment) (latex-fragment . org-html-latex-fragment) (line-break . org-html-line-break) (link . org-html-link) (node-property . org-html-node-property) (paragraph . org-html-paragraph) (plain-list . org-html-plain-list) (plain-text . org-html-plain-text) (planning . org-html-planning) (property-drawer . org-html-property-drawer) (quote-block . org-html-quote-block) (radio-target . org-html-radio-target) (section . org-html-section) (special-block . org-html-special-block) (src-block . org-html-src-block) (statistics-cookie . org-html-statistics-cookie) (strike-through . org-html-strike-through) (subscript . org-html-subscript) (superscript . org-html-superscript) (table . org-html-table) (table-cell . org-html-table-cell) (table-row . org-html-table-row) (target . org-html-target) (template . org-html-template) (timestamp . org-html-timestamp) (underline . org-html-underline) (verbatim . org-html-verbatim) (verse-block . org-html-verse-block)) :exported-data # :input-buffer " *temp*" :input-file nil :html-doctype "xhtml-strict" :html-container "div" :html-content-class "content" :description nil :keywords nil :html-html5-fancy nil :html-link-use-abs-url nil :html-link-home "" :html-link-up "" :html-mathjax "" :html-equation-reference-format "\\eqref{%s}" :html-postamble auto :html-preamble t :html-head "" :html-head-extra "" :subtitle nil :html-head-include-default-style t :html-head-include-scripts nil :html-allow-name-attribute-in-anchors nil :html-divs ((preamble "div" "preamble") (content "div" "content") (postamble "div" "postamble")) :html-checkbox-type ascii :html-extension "html" :html-footnote-format "%s" :html-footnote-separator ", " :html-footnotes-section "
\n

%s:

\n
\n%s\n
\n
" :html-format-drawer-function #f(compiled-function (name contents) #) :html-format-headline-function org-html-format-headline-default-function :html-format-inlinetask-function org-html-format-inlinetask-default-function :html-home/up-format "
\n UP \n |\n HOME \n
" :html-indent nil :html-infojs-options ((path . "https://orgmode.org/org-info.js") (view . "info") (toc . :with-toc) (ftoc . "0") (tdepth . "max") (sdepth . "max") (mouse . "underline") (buttons . "0") (ltoc . "1") (up . :html-link-up) (home . :html-link-home)) :html-infojs-template "\n\n" :html-inline-image-rules (("file" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)") ("http" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)") ("https" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)")) :html-link-org-files-as-html t :html-mathjax-options ((path "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js") (scale 1.0) (align "center") (font "mathjax-modern") (overflow "overflow") (tags "ams") (indent "0em") (multlinewidth "85%") (tagindent ".8em") (tagside "right")) :html-mathjax-template "\n\n\n" :html-metadata-timestamp-format "%Y-%m-%d %a %H:%M" :html-postamble-format (("en" "

Author: %a (%e)

\n

Date: %d

\n

%c

\n

%v

")) :html-preamble-format (("en" "")) :html-prefer-user-labels nil :html-self-link-headlines nil :html-table-align-individual-fields t :html-table-caption-above t :html-table-data-tags ("" . "") :html-table-header-tags ("" . "") :html-table-use-header-tags-for-first-column nil :html-tag-class-prefix "" :html-text-markup-alist ((bold . "%s") (code . "%s") (italic . "%s") (strike-through . "%s") (underline . "%s") (verbatim . "%s")) :html-todo-kwd-class-prefix "" :html-toplevel-hlevel 2 :html-use-infojs when-configured :html-validation-link "Validate" :html-viewport ((width "device-width") (initial-scale "1") (minimum-scale "") (maximum-scale "") (user-scalable "")) :html-inline-images t :html-table-attributes (:border "2" :cellspacing "0" :cellpadding "6" :rules "groups" :frame "hsides") :html-table-row-open-tag "" :html-table-row-close-tag "" :html-xml-declaration (("html" . "") ("php" . "\"; ?>")) :html-wrap-src-lines nil :html-klipsify-src nil :html-klipse-css "https://storage.googleapis.com/app.klipse.tech/css/codemirror.css" :html-klipse-js "https://storage.googleapis.com/app.klipse.tech/plugin_prod/js/klipse_plugin.min.js" :html-klipse-selection-script "window.klipse_settings = {selector_eval_html: '.src-html',\n selector_eval_js: '.src-js',\n selector_eval_python_client: '.src-python',\n selector_eval_scheme: '.src-scheme',\n selector: '.src-clojure',\n selector_eval_ruby: '.src-ruby'};" :infojs-opt nil :creator "Emacs 29.1 (Org mode 9.6.6)" :with-latex t :latex-header nil :title (#("Testing GN2" 0 11 (:parent #148))) :date nil :author (#("unknown" 0 7 (:parent #152))) :email "unknown@genenetwork-development" :language "en" :select-tags ("export") :exclude-tags ("noexport") :headline-levels 3 :preserve-breaks nil :section-numbers nil :time-stamp-file t :with-archived-trees headline :with-author t :with-broken-links nil :with-clocks nil :with-creator nil :with-date t :with-drawers (not "LOGBOOK") :with-email nil :with-emphasize t :with-entities t :with-fixed-width t :with-footnotes t :with-inlinetasks t :with-planning nil :with-priority nil :with-properties nil :with-smart-quotes nil :with-special-strings t :with-statistics-cookies t :with-sub-superscript t :with-toc nil :with-tables t :with-tags t :with-tasks t :with-timestamps t :with-title t :with-todo-keywords t :cite-export (basic nil nil) :bibliography nil :filter-body nil :filter-bold nil :filter-babel-call nil :filter-center-block nil :filter-clock nil :filter-code nil :filter-diary-sexp nil :filter-drawer nil :filter-dynamic-block nil :filter-entity nil :filter-example-block nil :filter-export-block nil :filter-export-snippet nil :filter-final-output (org-html-final-function) :filter-fixed-width nil :filter-footnote-definition nil :filter-footnote-reference nil :filter-headline nil :filter-horizontal-rule nil :filter-inline-babel-call nil :filter-inline-src-block nil :filter-inlinetask nil :filter-italic nil :filter-item nil :filter-keyword nil :filter-latex-environment nil :filter-latex-fragment nil :filter-line-break nil :filter-link nil :filter-node-property nil :filter-options (org-html-infojs-install-script) :filter-paragraph nil :filter-parse-tree (org-html-image-link-filter) :filter-plain-list nil :filter-plain-text nil :filter-planning nil :filter-property-drawer nil :filter-quote-block nil :filter-radio-target nil :filter-section nil :filter-special-block nil :filter-src-block nil :filter-statistics-cookie nil :filter-strike-through nil :filter-subscript nil :filter-superscript nil :filter-table nil :filter-table-cell nil :filter-table-row nil :filter-target nil :filter-timestamp nil :filter-underline nil :filter-verbatim nil :filter-verse-block nil :ignore-list nil :parse-tree (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 23 :contents-begin 1 :contents-end 22 :robust-begin 1 :robust-end 20 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #338) (keyword (:key "TITLE" :value "Testing GN2" :begin 1 :end 22 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #341))) (headline (:raw-value "Table of Contents" :begin 23 :end 212 :pre-blank 0 :contents-begin 101 :contents-end 211 :robust-begin 103 :robust-end 209 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 23 :title (#("Table of Contents" 0 17 (:parent #342))) :mode nil :granularity nil :parent #338) (section (:begin 101 :end 212 :contents-begin 101 :contents-end 211 :robust-begin 101 :robust-end 209 :post-blank 1 :post-affiliated 101 :mode section :granularity nil :parent #342) (plain-list (:type unordered :begin 101 :end 211 :contents-begin 101 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 101 :mode planning :granularity nil :parent #345) (item (:bullet "- " :begin 101 :end 135 :contents-begin 103 :contents-end 135 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 101 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 103 :end 135 :contents-begin 103 :contents-end 135 :post-blank 0 :post-affiliated 103 :mode nil :granularity nil :parent #351) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 103 :end 134 :contents-begin 120 :contents-end 132 :post-blank 0 :parent #354) #("Introduction" 0 12 (:parent #357))) #("\n" 0 1 (:parent #354)))) (item (:bullet "- " :begin 135 :end 211 :contents-begin 137 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 135 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 137 :end 163 :contents-begin 137 :contents-end 163 :post-blank 0 :post-affiliated 137 :mode nil :granularity nil :parent #352) (link (:type "custom-id" :path "run-tests" :format bracket :raw-link "#run-tests" :application nil :search-option nil :begin 137 :end 162 :contents-begin 151 :contents-end 160 :post-blank 0 :parent #355) #("Run tests" 0 9 (:parent #358))) #("\n" 0 1 (:parent #355))) (plain-list (:type unordered :begin 163 :end 211 :contents-begin 163 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 163 :mode nil :granularity nil :parent #352) (item (:bullet "- " :begin 163 :end 185 :contents-begin 167 :contents-end 185 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 163 :tag nil :mode item :granularity nil :parent #356) (paragraph (:begin 167 :end 185 :contents-begin 167 :contents-end 185 :post-blank 0 :post-affiliated 167 :mode nil :granularity nil :parent #359) (link (:type "custom-id" :path "setup" :format bracket :raw-link "#setup" :application nil :search-option nil :begin 167 :end 184 :contents-begin 177 :contents-end 182 :post-blank 0 :parent #362) #("Setup" 0 5 (:parent #365))) #("\n" 0 1 (:parent #362)))) (item (:bullet "- " :begin 185 :end 211 :contents-begin 189 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 185 :tag nil :mode item :granularity nil :parent #356) (paragraph (:begin 189 :end 211 :contents-begin 189 :contents-end 211 :post-blank 0 :post-affiliated 189 :mode nil :granularity nil :parent #360) (link (:type "custom-id" :path "running" :format bracket :raw-link "#running" :application nil :search-option nil :begin 189 :end 210 :contents-begin 201 :contents-end 208 :post-blank 0 :parent #363) #("Running" 0 7 (:parent #366))) #("\n" 0 1 (:parent #363))))))))) (headline (:raw-value "Introduction" :begin 212 :end 1055 :pre-blank 1 :contents-begin 228 :contents-end 1054 :robust-begin 230 :robust-end 1052 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 212 :title (#("Introduction" 0 12 (:parent #343))) :mode nil :granularity nil :parent #338) (section (:begin 228 :end 1055 :contents-begin 228 :contents-end 1054 :robust-begin 228 :robust-end 1052 :post-blank 1 :post-affiliated 228 :mode section :granularity nil :parent #343) (paragraph (:begin 228 :end 578 :contents-begin 228 :contents-end 577 :post-blank 1 :post-affiliated 228 :mode planning :granularity nil :parent #346) #("For integration testing, we currently use " 0 42 (:parent #349)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/tree/testing/test/requests" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/tree/testing/test/requests" :application nil :search-option nil :begin 270 :end 360 :contents-begin 344 :contents-end 357 :post-blank 1 :parent #349) #("Mechanica Rob" 0 13 (:parent #353))) #("against the\nsmall " 0 18 (:parent #349)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :application nil :search-option nil :begin 378 :end 465 :contents-begin 455 :contents-end 463 :post-blank 0 :parent #349) #("database" 0 8 (:parent #355))) #("; a setup we call Mechanical Rob because it emulates\nsomeone clicking through the website and checking results.\n" 0 112 (:parent #349))) (paragraph (:begin 578 :end 785 :contents-begin 578 :contents-end 784 :post-blank 1 :post-affiliated 578 :mode nil :granularity nil :parent #346) #("These scripts invoke calls to a running webserver and test the response.\nIf a page changes or breaks, tests will fail. In principle, Mechanical\nRob runs before code merges get committed to the main server.\n" 0 206 (:parent #350))) (paragraph (:begin 785 :end 1054 :contents-begin 785 :contents-end 1054 :post-blank 0 :post-affiliated 785 :mode nil :granularity nil :parent #346) #("For unit tests, we use python's " 0 32 (:parent #351)) (verbatim (:begin 817 :end 828 :post-blank 1 :value "unittest" :parent #351)) #("framework. Coverage reports\nget generated using " 0 48 (:parent #351)) (link (:type "https" :path "//coverage.readthedocs.io/en/coverage-5.2.1/" :format bracket :raw-link "https://coverage.readthedocs.io/en/coverage-5.2.1/" :application nil :search-option nil :begin 876 :end 944 :contents-begin 930 :contents-end 941 :post-blank 1 :parent #351) #("coverage.py" 0 11 (:parent #357))) #("which you could also use to run\nunit tests. When adding new functionality, it is advisable to add\nunit tests.\n" 0 110 (:parent #351))))) (headline (:raw-value "Run tests" :begin 1055 :end 2404 :pre-blank 1 :contents-begin 1068 :contents-end 2404 :robust-begin 1070 :robust-end 2402 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1055 :title (#("Run tests" 0 9 (:parent #344))) :mode nil :granularity nil :parent #338) (headline (:raw-value "Setup" :begin 1068 :end 1209 :pre-blank 1 :contents-begin 1078 :contents-end 1208 :robust-begin 1080 :robust-end 1206 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1068 :title (#("Setup" 0 5 (:parent #347))) :mode section :granularity nil :parent #344) (section (:begin 1078 :end 1209 :contents-begin 1078 :contents-end 1208 :robust-begin 1078 :robust-end 1206 :post-blank 1 :post-affiliated 1078 :mode section :granularity nil :parent #347) (paragraph (:begin 1078 :end 1141 :contents-begin 1078 :contents-end 1140 :post-blank 1 :post-affiliated 1078 :mode planning :granularity nil :parent #350) #("Everything required for testing is already package with guix:\n" 0 62 (:parent #353))) (fixed-width (:begin 1141 :end 1208 :value "./pre-ins-env guix package -i genenetwork2 -p ~/opt/genenetwork2" :post-blank 1 :post-affiliated 1141 :mode nil :granularity nil :parent #350)))) (headline (:raw-value "Running" :begin 1209 :end 2404 :pre-blank 1 :contents-begin 1221 :contents-end 2404 :robust-begin 1223 :robust-end 2402 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1209 :title (#("Running" 0 7 (:parent #348))) :mode nil :granularity nil :parent #344) (section (:begin 1221 :end 2404 :contents-begin 1221 :contents-end 2404 :robust-begin 1221 :robust-end 2402 :post-blank 0 :post-affiliated 1221 :mode section :granularity nil :parent #348) (paragraph (:begin 1221 :end 1329 :contents-begin 1221 :contents-end 1328 :post-blank 1 :post-affiliated 1221 :mode planning :granularity nil :parent #351) #("Run the tests from the root of the genenetwork2 source tree as. Ensure\nthat Redis and Mariadb are running.\n" 0 107 (:parent #354))) (paragraph (:begin 1329 :end 1352 :contents-begin 1329 :contents-end 1352 :post-blank 0 :post-affiliated 1329 :mode nil :granularity nil :parent #351) #("To run Mechanical Rob:\n" 0 23 (:parent #355))) (fixed-width (:begin 1352 :end 1590 :value "time env GN2_PROFILE=~/opt/genenetwork2 TMPDIR=~/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -c ~/projects/genenetwork2/test/requests/test-website.py -a http://localhost:5004" :post-blank 2 :post-affiliated 1352 :mode nil :granularity nil :parent #351)) (paragraph (:begin 1590 :end 1637 :contents-begin 1590 :contents-end 1636 :post-blank 1 :post-affiliated 1590 :mode nil :granularity nil :parent #351) #("Use these aliases for the following examples.\n" 0 46 (:parent #357))) (src-block (:language "sh" :switches nil :parameters nil :begin 1637 :end 1970 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "alias runpython=\"env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2\"\n\nalias runcmd=\"time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -cli\"\n" :post-blank 1 :post-affiliated 1637 :mode nil :granularity nil :parent #351)) (paragraph (:begin 1970 :end 2026 :contents-begin 1970 :contents-end 2025 :post-blank 1 :post-affiliated 1970 :mode nil :granularity nil :parent #351) #("You could use them in your " 0 27 (:parent #359)) (verbatim (:begin 1997 :end 2007 :post-blank 1 :value ".bashrc" :parent #359)) #("or " 0 3 (:parent #359)) (verbatim (:begin 2010 :end 2019 :post-blank 1 :value ".zshrc" :parent #359)) #("file.\n" 0 6 (:parent #359))) (paragraph (:begin 2026 :end 2046 :contents-begin 2026 :contents-end 2045 :post-blank 1 :post-affiliated 2026 :mode nil :granularity nil :parent #351) #("To run unit tests:\n" 0 19 (:parent #360))) (fixed-width (:begin 2046 :end 2083 :value "runpython -m unittest discover -v" :post-blank 2 :post-affiliated 2046 :mode nil :granularity nil :parent #351)) (paragraph (:begin 2083 :end 2126 :contents-begin 2083 :contents-end 2125 :post-blank 1 :post-affiliated 2083 :mode nil :granularity nil :parent #351) #("Or alternatively using the coverage tool:\n" 0 42 (:parent #362))) (fixed-width (:begin 2126 :end 2173 :value "runcmd coverage run -m unittest discover -v" :post-blank 2 :post-affiliated 2126 :mode nil :granularity nil :parent #351)) (paragraph (:begin 2173 :end 2244 :contents-begin 2173 :contents-end 2243 :post-blank 1 :post-affiliated 2173 :mode nil :granularity nil :parent #351) #("To generate a html coverage report in " 0 38 (:parent #364)) (verbatim (:begin 2211 :end 2242 :post-blank 0 :value "wqflask/coverage_html_report/" :parent #364)) #("\n" 0 1 (:parent #364))) (fixed-width (:begin 2244 :end 2268 :value "runcmd coverage html" :post-blank 2 :post-affiliated 2244 :mode nil :granularity nil :parent #351)) (paragraph (:begin 2268 :end 2303 :contents-begin 2268 :contents-end 2302 :post-blank 1 :post-affiliated 2268 :mode nil :granularity nil :parent #351) #("To output the report to " 0 24 (:parent #366)) (verbatim (:begin 2292 :end 2300 :post-blank 0 :value "STDOUT" :parent #366)) #(":\n" 0 2 (:parent #366))) (fixed-width (:begin 2303 :end 2329 :value "runcmd coverage report" :post-blank 2 :post-affiliated 2303 :mode nil :granularity nil :parent #351)) (paragraph (:begin 2329 :end 2404 :contents-begin 2329 :contents-end 2404 :post-blank 0 :post-affiliated 2329 :mode nil :granularity nil :parent #351) #("All the configs for running the coverage tool are in\n" 0 53 (:parent #368)) (verbatim (:begin 2382 :end 2403 :post-blank 0 :value "wqflask/.coveragerc" :parent #368)) #("\n" 0 1 (:parent #368))))))) :headline-offset 0 :headline-numbering nil :id-alist nil :citations nil :id-local-cache #)) #f(compiled-function (element) #)((paragraph (:begin 103 :end 135 :contents-begin 103 :contents-end 135 :post-blank 0 :post-affiliated 103 :mode nil :granularity nil :parent (item (:bullet "- " :begin 101 :end 135 :contents-begin 103 :contents-end 135 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 101 :tag nil :mode item :granularity nil :parent (plain-list (:type unordered :begin 101 :end 211 :contents-begin 101 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 101 :mode planning :granularity nil :parent (section (:begin 101 :end 212 :contents-begin 101 :contents-end 211 :robust-begin 101 :robust-end 209 :post-blank 1 :post-affiliated 101 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 23 :end 212 :pre-blank 0 :contents-begin 101 :contents-end 211 :robust-begin 103 :robust-end 209 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 23 :title (#("Table of Contents" 0 17 (:parent #100))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 23 :contents-begin 1 :contents-end 22 :robust-begin 1 :robust-end 20 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #146) (keyword (:key "TITLE" :value "Testing GN2" :begin 1 :end 22 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #149))) #100 (headline (:raw-value "Introduction" :begin 212 :end 1055 :pre-blank 1 :contents-begin 228 :contents-end 1054 :robust-begin 230 :robust-end 1052 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 212 :title (#("Introduction" 0 12 (:parent #151))) :mode nil :granularity nil :parent #146) (section (:begin 228 :end 1055 :contents-begin 228 :contents-end 1054 :robust-begin 228 :robust-end 1052 :post-blank 1 :post-affiliated 228 :mode section :granularity nil :parent #151) (paragraph (:begin 228 :end 578 :contents-begin 228 :contents-end 577 :post-blank 1 :post-affiliated 228 :mode planning :granularity nil :parent #154) #("For integration testing, we currently use " 0 42 (:parent #157)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/tree/testing/test/requests" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/tree/testing/test/requests" :application nil :search-option nil :begin 270 :end 360 :contents-begin 344 :contents-end 357 :post-blank 1 :parent #157) #("Mechanica Rob" 0 13 (:parent #161))) #("against the\nsmall " 0 18 (:parent #157)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :application nil :search-option nil :begin 378 :end 465 :contents-begin 455 :contents-end 463 :post-blank 0 :parent #157) #("database" 0 8 (:parent #163))) #("; a setup we call Mechanical Rob because it emulates\nsomeone clicking through the website and checking results.\n" 0 112 (:parent #157))) (paragraph (:begin 578 :end 785 :contents-begin 578 :contents-end 784 :post-blank 1 :post-affiliated 578 :mode nil :granularity nil :parent #154) #("These scripts invoke calls to a running webserver and test the response.\nIf a page changes or breaks, tests will fail. In principle, Mechanical\nRob runs before code merges get committed to the main server.\n" 0 206 (:parent #158))) (paragraph (:begin 785 :end 1054 :contents-begin 785 :contents-end 1054 :post-blank 0 :post-affiliated 785 :mode nil :granularity nil :parent #154) #("For unit tests, we use python's " 0 32 (:parent #159)) (verbatim (:begin 817 :end 828 :post-blank 1 :value "unittest" :parent #159)) #("framework. Coverage reports\nget generated using " 0 48 (:parent #159)) (link (:type "https" :path "//coverage.readthedocs.io/en/coverage-5.2.1/" :format bracket :raw-link "https://coverage.readthedocs.io/en/coverage-5.2.1/" :application nil :search-option nil :begin 876 :end 944 :contents-begin 930 :contents-end 941 :post-blank 1 :parent #159) #("coverage.py" 0 11 (:parent #165))) #("which you could also use to run\nunit tests. When adding new functionality, it is advisable to add\nunit tests.\n" 0 110 (:parent #159))))) (headline (:raw-value "Run tests" :begin 1055 :end 2404 :pre-blank 1 :contents-begin 1068 :contents-end 2404 :robust-begin 1070 :robust-end 2402 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1055 :title (#("Run tests" 0 9 (:parent #152))) :mode nil :granularity nil :parent #146) (headline (:raw-value "Setup" :begin 1068 :end 1209 :pre-blank 1 :contents-begin 1078 :contents-end 1208 :robust-begin 1080 :robust-end 1206 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1068 :title (#("Setup" 0 5 (:parent #155))) :mode section :granularity nil :parent #152) (section (:begin 1078 :end 1209 :contents-begin 1078 :contents-end 1208 :robust-begin 1078 :robust-end 1206 :post-blank 1 :post-affiliated 1078 :mode section :granularity nil :parent #155) (paragraph (:begin 1078 :end 1141 :contents-begin 1078 :contents-end 1140 :post-blank 1 :post-affiliated 1078 :mode planning :granularity nil :parent #158) #("Everything required for testing is already package with guix:\n" 0 62 (:parent #161))) (fixed-width (:begin 1141 :end 1208 :value "./pre-ins-env guix package -i genenetwork2 -p ~/opt/genenetwork2" :post-blank 1 :post-affiliated 1141 :mode nil :granularity nil :parent #158)))) (headline (:raw-value "Running" :begin 1209 :end 2404 :pre-blank 1 :contents-begin 1221 :contents-end 2404 :robust-begin 1223 :robust-end 2402 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1209 :title (#("Running" 0 7 (:parent #156))) :mode nil :granularity nil :parent #152) (section (:begin 1221 :end 2404 :contents-begin 1221 :contents-end 2404 :robust-begin 1221 :robust-end 2402 :post-blank 0 :post-affiliated 1221 :mode section :granularity nil :parent #156) (paragraph (:begin 1221 :end 1329 :contents-begin 1221 :contents-end 1328 :post-blank 1 :post-affiliated 1221 :mode planning :granularity nil :parent #159) #("Run the tests from the root of the genenetwork2 source tree as. Ensure\nthat Redis and Mariadb are running.\n" 0 107 (:parent #162))) (paragraph (:begin 1329 :end 1352 :contents-begin 1329 :contents-end 1352 :post-blank 0 :post-affiliated 1329 :mode nil :granularity nil :parent #159) #("To run Mechanical Rob:\n" 0 23 (:parent #163))) (fixed-width (:begin 1352 :end 1590 :value "time env GN2_PROFILE=~/opt/genenetwork2 TMPDIR=~/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -c ~/projects/genenetwork2/test/requests/test-website.py -a http://localhost:5004" :post-blank 2 :post-affiliated 1352 :mode nil :granularity nil :parent #159)) (paragraph (:begin 1590 :end 1637 :contents-begin 1590 :contents-end 1636 :post-blank 1 :post-affiliated 1590 :mode nil :granularity nil :parent #159) #("Use these aliases for the following examples.\n" 0 46 (:parent #165))) (src-block (:language "sh" :switches nil :parameters nil :begin 1637 :end 1970 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "alias runpython=\"env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2\"\n\nalias runcmd=\"time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -cli\"\n" :post-blank 1 :post-affiliated 1637 :mode nil :granularity nil :parent #159)) (paragraph (:begin 1970 :end 2026 :contents-begin 1970 :contents-end 2025 :post-blank 1 :post-affiliated 1970 :mode nil :granularity nil :parent #159) #("You could use them in your " 0 27 (:parent #167)) (verbatim (:begin 1997 :end 2007 :post-blank 1 :value ".bashrc" :parent #167)) #("or " 0 3 (:parent #167)) (verbatim (:begin 2010 :end 2019 :post-blank 1 :value ".zshrc" :parent #167)) #("file.\n" 0 6 (:parent #167))) (paragraph (:begin 2026 :end 2046 :contents-begin 2026 :contents-end 2045 :post-blank 1 :post-affiliated 2026 :mode nil :granularity nil :parent #159) #("To run unit tests:\n" 0 19 (:parent #168))) (fixed-width (:begin 2046 :end 2083 :value "runpython -m unittest discover -v" :post-blank 2 :post-affiliated 2046 :mode nil :granularity nil :parent #159)) (paragraph (:begin 2083 :end 2126 :contents-begin 2083 :contents-end 2125 :post-blank 1 :post-affiliated 2083 :mode nil :granularity nil :parent #159) #("Or alternatively using the coverage tool:\n" 0 42 (:parent #170))) (fixed-width (:begin 2126 :end 2173 :value "runcmd coverage run -m unittest discover -v" :post-blank 2 :post-affiliated 2126 :mode nil :granularity nil :parent #159)) (paragraph (:begin 2173 :end 2244 :contents-begin 2173 :contents-end 2243 :post-blank 1 :post-affiliated 2173 :mode nil :granularity nil :parent #159) #("To generate a html coverage report in " 0 38 (:parent #172)) (verbatim (:begin 2211 :end 2242 :post-blank 0 :value "wqflask/coverage_html_report/" :parent #172)) #("\n" 0 1 (:parent #172))) (fixed-width (:begin 2244 :end 2268 :value "runcmd coverage html" :post-blank 2 :post-affiliated 2244 :mode nil :granularity nil :parent #159)) (paragraph (:begin 2268 :end 2303 :contents-begin 2268 :contents-end 2302 :post-blank 1 :post-affiliated 2268 :mode nil :granularity nil :parent #159) #("To output the report to " 0 24 (:parent #174)) (verbatim (:begin 2292 :end 2300 :post-blank 0 :value "STDOUT" :parent #174)) #(":\n" 0 2 (:parent #174))) (fixed-width (:begin 2303 :end 2329 :value "runcmd coverage report" :post-blank 2 :post-affiliated 2303 :mode nil :granularity nil :parent #159)) (paragraph (:begin 2329 :end 2404 :contents-begin 2329 :contents-end 2404 :post-blank 0 :post-affiliated 2329 :mode nil :granularity nil :parent #159) #("All the configs for running the coverage tool are in\n" 0 53 (:parent #176)) (verbatim (:begin 2382 :end 2403 :post-blank 0 :value "wqflask/.coveragerc" :parent #176)) #("\n" 0 1 (:parent #176)))))))) #76)) #52)) #20 (item (:bullet "- " :begin 135 :end 211 :contents-begin 137 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 135 :tag nil :mode item :granularity nil :parent #52) (paragraph (:begin 137 :end 163 :contents-begin 137 :contents-end 163 :post-blank 0 :post-affiliated 137 :mode nil :granularity nil :parent #56) (link (:type "custom-id" :path "run-tests" :format bracket :raw-link "#run-tests" :application nil :search-option nil :begin 137 :end 162 :contents-begin 151 :contents-end 160 :post-blank 0 :parent #59) #("Run tests" 0 9 (:parent #62))) #("\n" 0 1 (:parent #59))) (plain-list (:type unordered :begin 163 :end 211 :contents-begin 163 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 163 :mode nil :granularity nil :parent #56) (item (:bullet "- " :begin 163 :end 185 :contents-begin 167 :contents-end 185 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 163 :tag nil :mode item :granularity nil :parent #60) (paragraph (:begin 167 :end 185 :contents-begin 167 :contents-end 185 :post-blank 0 :post-affiliated 167 :mode nil :granularity nil :parent #63) (link (:type "custom-id" :path "setup" :format bracket :raw-link "#setup" :application nil :search-option nil :begin 167 :end 184 :contents-begin 177 :contents-end 182 :post-blank 0 :parent #66) #("Setup" 0 5 (:parent #69))) #("\n" 0 1 (:parent #66)))) (item (:bullet "- " :begin 185 :end 211 :contents-begin 189 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 185 :tag nil :mode item :granularity nil :parent #60) (paragraph (:begin 189 :end 211 :contents-begin 189 :contents-end 211 :post-blank 0 :post-affiliated 189 :mode nil :granularity nil :parent #64) (link (:type "custom-id" :path "running" :format bracket :raw-link "#running" :application nil :search-option nil :begin 189 :end 210 :contents-begin 201 :contents-end 208 :post-blank 0 :parent #67) #("Running" 0 7 (:parent #70))) #("\n" 0 1 (:parent #67)))))))) #0)) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 103 :end 134 :contents-begin 120 :contents-end 132 :post-blank 0 :parent #0) #("Introduction" 0 12 (:parent #3))) #("\n" 0 1 (:parent #0)))) mapconcat(#f(compiled-function (element) #) ((paragraph (:begin 103 :end 135 :contents-begin 103 :contents-end 135 :post-blank 0 :post-affiliated 103 :mode nil :granularity nil :parent (item (:bullet "- " :begin 101 :end 135 :contents-begin 103 :contents-end 135 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 101 :tag nil :mode item :granularity nil :parent (plain-list (:type unordered :begin 101 :end 211 :contents-begin 101 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 101 :mode planning :granularity nil :parent (section (:begin 101 :end 212 :contents-begin 101 :contents-end 211 :robust-begin 101 :robust-end 209 :post-blank 1 :post-affiliated 101 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 23 :end 212 :pre-blank 0 :contents-begin 101 :contents-end 211 :robust-begin 103 :robust-end 209 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 23 :title (#("Table of Contents" 0 17 (:parent #101))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 23 :contents-begin 1 :contents-end 22 :robust-begin 1 :robust-end 20 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #147) (keyword (:key "TITLE" :value "Testing GN2" :begin 1 :end 22 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #150))) #101 (headline (:raw-value "Introduction" :begin 212 :end 1055 :pre-blank 1 :contents-begin 228 :contents-end 1054 :robust-begin 230 :robust-end 1052 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 212 :title (#("Introduction" 0 12 (:parent #152))) :mode nil :granularity nil :parent #147) (section (:begin 228 :end 1055 :contents-begin 228 :contents-end 1054 :robust-begin 228 :robust-end 1052 :post-blank 1 :post-affiliated 228 :mode section :granularity nil :parent #152) (paragraph (:begin 228 :end 578 :contents-begin 228 :contents-end 577 :post-blank 1 :post-affiliated 228 :mode planning :granularity nil :parent #155) #("For integration testing, we currently use " 0 42 (:parent #158)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/tree/testing/test/requests" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/tree/testing/test/requests" :application nil :search-option nil :begin 270 :end 360 :contents-begin 344 :contents-end 357 :post-blank 1 :parent #158) #("Mechanica Rob" 0 13 (:parent #162))) #("against the\nsmall " 0 18 (:parent #158)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :application nil :search-option nil :begin 378 :end 465 :contents-begin 455 :contents-end 463 :post-blank 0 :parent #158) #("database" 0 8 (:parent #164))) #("; a setup we call Mechanical Rob because it emulates\nsomeone clicking through the website and checking results.\n" 0 112 (:parent #158))) (paragraph (:begin 578 :end 785 :contents-begin 578 :contents-end 784 :post-blank 1 :post-affiliated 578 :mode nil :granularity nil :parent #155) #("These scripts invoke calls to a running webserver and test the response.\nIf a page changes or breaks, tests will fail. In principle, Mechanical\nRob runs before code merges get committed to the main server.\n" 0 206 (:parent #159))) (paragraph (:begin 785 :end 1054 :contents-begin 785 :contents-end 1054 :post-blank 0 :post-affiliated 785 :mode nil :granularity nil :parent #155) #("For unit tests, we use python's " 0 32 (:parent #160)) (verbatim (:begin 817 :end 828 :post-blank 1 :value "unittest" :parent #160)) #("framework. Coverage reports\nget generated using " 0 48 (:parent #160)) (link (:type "https" :path "//coverage.readthedocs.io/en/coverage-5.2.1/" :format bracket :raw-link "https://coverage.readthedocs.io/en/coverage-5.2.1/" :application nil :search-option nil :begin 876 :end 944 :contents-begin 930 :contents-end 941 :post-blank 1 :parent #160) #("coverage.py" 0 11 (:parent #166))) #("which you could also use to run\nunit tests. When adding new functionality, it is advisable to add\nunit tests.\n" 0 110 (:parent #160))))) (headline (:raw-value "Run tests" :begin 1055 :end 2404 :pre-blank 1 :contents-begin 1068 :contents-end 2404 :robust-begin 1070 :robust-end 2402 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1055 :title (#("Run tests" 0 9 (:parent #153))) :mode nil :granularity nil :parent #147) (headline (:raw-value "Setup" :begin 1068 :end 1209 :pre-blank 1 :contents-begin 1078 :contents-end 1208 :robust-begin 1080 :robust-end 1206 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1068 :title (#("Setup" 0 5 (:parent #156))) :mode section :granularity nil :parent #153) (section (:begin 1078 :end 1209 :contents-begin 1078 :contents-end 1208 :robust-begin 1078 :robust-end 1206 :post-blank 1 :post-affiliated 1078 :mode section :granularity nil :parent #156) (paragraph (:begin 1078 :end 1141 :contents-begin 1078 :contents-end 1140 :post-blank 1 :post-affiliated 1078 :mode planning :granularity nil :parent #159) #("Everything required for testing is already package with guix:\n" 0 62 (:parent #162))) (fixed-width (:begin 1141 :end 1208 :value "./pre-ins-env guix package -i genenetwork2 -p ~/opt/genenetwork2" :post-blank 1 :post-affiliated 1141 :mode nil :granularity nil :parent #159)))) (headline (:raw-value "Running" :begin 1209 :end 2404 :pre-blank 1 :contents-begin 1221 :contents-end 2404 :robust-begin 1223 :robust-end 2402 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1209 :title (#("Running" 0 7 (:parent #157))) :mode nil :granularity nil :parent #153) (section (:begin 1221 :end 2404 :contents-begin 1221 :contents-end 2404 :robust-begin 1221 :robust-end 2402 :post-blank 0 :post-affiliated 1221 :mode section :granularity nil :parent #157) (paragraph (:begin 1221 :end 1329 :contents-begin 1221 :contents-end 1328 :post-blank 1 :post-affiliated 1221 :mode planning :granularity nil :parent #160) #("Run the tests from the root of the genenetwork2 source tree as. Ensure\nthat Redis and Mariadb are running.\n" 0 107 (:parent #163))) (paragraph (:begin 1329 :end 1352 :contents-begin 1329 :contents-end 1352 :post-blank 0 :post-affiliated 1329 :mode nil :granularity nil :parent #160) #("To run Mechanical Rob:\n" 0 23 (:parent #164))) (fixed-width (:begin 1352 :end 1590 :value "time env GN2_PROFILE=~/opt/genenetwork2 TMPDIR=~/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -c ~/projects/genenetwork2/test/requests/test-website.py -a http://localhost:5004" :post-blank 2 :post-affiliated 1352 :mode nil :granularity nil :parent #160)) (paragraph (:begin 1590 :end 1637 :contents-begin 1590 :contents-end 1636 :post-blank 1 :post-affiliated 1590 :mode nil :granularity nil :parent #160) #("Use these aliases for the following examples.\n" 0 46 (:parent #166))) (src-block (:language "sh" :switches nil :parameters nil :begin 1637 :end 1970 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "alias runpython=\"env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2\"\n\nalias runcmd=\"time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -cli\"\n" :post-blank 1 :post-affiliated 1637 :mode nil :granularity nil :parent #160)) (paragraph (:begin 1970 :end 2026 :contents-begin 1970 :contents-end 2025 :post-blank 1 :post-affiliated 1970 :mode nil :granularity nil :parent #160) #("You could use them in your " 0 27 (:parent #168)) (verbatim (:begin 1997 :end 2007 :post-blank 1 :value ".bashrc" :parent #168)) #("or " 0 3 (:parent #168)) (verbatim (:begin 2010 :end 2019 :post-blank 1 :value ".zshrc" :parent #168)) #("file.\n" 0 6 (:parent #168))) (paragraph (:begin 2026 :end 2046 :contents-begin 2026 :contents-end 2045 :post-blank 1 :post-affiliated 2026 :mode nil :granularity nil :parent #160) #("To run unit tests:\n" 0 19 (:parent #169))) (fixed-width (:begin 2046 :end 2083 :value "runpython -m unittest discover -v" :post-blank 2 :post-affiliated 2046 :mode nil :granularity nil :parent #160)) (paragraph (:begin 2083 :end 2126 :contents-begin 2083 :contents-end 2125 :post-blank 1 :post-affiliated 2083 :mode nil :granularity nil :parent #160) #("Or alternatively using the coverage tool:\n" 0 42 (:parent #171))) (fixed-width (:begin 2126 :end 2173 :value "runcmd coverage run -m unittest discover -v" :post-blank 2 :post-affiliated 2126 :mode nil :granularity nil :parent #160)) (paragraph (:begin 2173 :end 2244 :contents-begin 2173 :contents-end 2243 :post-blank 1 :post-affiliated 2173 :mode nil :granularity nil :parent #160) #("To generate a html coverage report in " 0 38 (:parent #173)) (verbatim (:begin 2211 :end 2242 :post-blank 0 :value "wqflask/coverage_html_report/" :parent #173)) #("\n" 0 1 (:parent #173))) (fixed-width (:begin 2244 :end 2268 :value "runcmd coverage html" :post-blank 2 :post-affiliated 2244 :mode nil :granularity nil :parent #160)) (paragraph (:begin 2268 :end 2303 :contents-begin 2268 :contents-end 2302 :post-blank 1 :post-affiliated 2268 :mode nil :granularity nil :parent #160) #("To output the report to " 0 24 (:parent #175)) (verbatim (:begin 2292 :end 2300 :post-blank 0 :value "STDOUT" :parent #175)) #(":\n" 0 2 (:parent #175))) (fixed-width (:begin 2303 :end 2329 :value "runcmd coverage report" :post-blank 2 :post-affiliated 2303 :mode nil :granularity nil :parent #160)) (paragraph (:begin 2329 :end 2404 :contents-begin 2329 :contents-end 2404 :post-blank 0 :post-affiliated 2329 :mode nil :granularity nil :parent #160) #("All the configs for running the coverage tool are in\n" 0 53 (:parent #177)) (verbatim (:begin 2382 :end 2403 :post-blank 0 :value "wqflask/.coveragerc" :parent #177)) #("\n" 0 1 (:parent #177)))))))) #77)) #53)) #21 (item (:bullet "- " :begin 135 :end 211 :contents-begin 137 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 135 :tag nil :mode item :granularity nil :parent #53) (paragraph (:begin 137 :end 163 :contents-begin 137 :contents-end 163 :post-blank 0 :post-affiliated 137 :mode nil :granularity nil :parent #57) (link (:type "custom-id" :path "run-tests" :format bracket :raw-link "#run-tests" :application nil :search-option nil :begin 137 :end 162 :contents-begin 151 :contents-end 160 :post-blank 0 :parent #60) #("Run tests" 0 9 (:parent #63))) #("\n" 0 1 (:parent #60))) (plain-list (:type unordered :begin 163 :end 211 :contents-begin 163 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 163 :mode nil :granularity nil :parent #57) (item (:bullet "- " :begin 163 :end 185 :contents-begin 167 :contents-end 185 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 163 :tag nil :mode item :granularity nil :parent #61) (paragraph (:begin 167 :end 185 :contents-begin 167 :contents-end 185 :post-blank 0 :post-affiliated 167 :mode nil :granularity nil :parent #64) (link (:type "custom-id" :path "setup" :format bracket :raw-link "#setup" :application nil :search-option nil :begin 167 :end 184 :contents-begin 177 :contents-end 182 :post-blank 0 :parent #67) #("Setup" 0 5 (:parent #70))) #("\n" 0 1 (:parent #67)))) (item (:bullet "- " :begin 185 :end 211 :contents-begin 189 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 185 :tag nil :mode item :granularity nil :parent #61) (paragraph (:begin 189 :end 211 :contents-begin 189 :contents-end 211 :post-blank 0 :post-affiliated 189 :mode nil :granularity nil :parent #65) (link (:type "custom-id" :path "running" :format bracket :raw-link "#running" :application nil :search-option nil :begin 189 :end 210 :contents-begin 201 :contents-end 208 :post-blank 0 :parent #68) #("Running" 0 7 (:parent #71))) #("\n" 0 1 (:parent #68)))))))) . #0)) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 103 :end 134 :contents-begin 120 :contents-end 132 :post-blank 0 :parent #1) #("Introduction" 0 12 (:parent #4))) #("\n" 0 1 (:parent #1)))) "") org-export-data((item (:bullet "- " :begin 101 :end 135 :contents-begin 103 :contents-end 135 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 101 :tag nil :mode item :granularity nil :parent (plain-list (:type unordered :begin 101 :end 211 :contents-begin 101 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 101 :mode planning :granularity nil :parent (section (:begin 101 :end 212 :contents-begin 101 :contents-end 211 :robust-begin 101 :robust-end 209 :post-blank 1 :post-affiliated 101 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 23 :end 212 :pre-blank 0 :contents-begin 101 :contents-end 211 :robust-begin 103 :robust-end 209 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 23 :title (#("Table of Contents" 0 17 (:parent #80))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 23 :contents-begin 1 :contents-end 22 :robust-begin 1 :robust-end 20 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #126) (keyword (:key "TITLE" :value "Testing GN2" :begin 1 :end 22 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #129))) #80 (headline (:raw-value "Introduction" :begin 212 :end 1055 :pre-blank 1 :contents-begin 228 :contents-end 1054 :robust-begin 230 :robust-end 1052 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 212 :title (#("Introduction" 0 12 (:parent #131))) :mode nil :granularity nil :parent #126) (section (:begin 228 :end 1055 :contents-begin 228 :contents-end 1054 :robust-begin 228 :robust-end 1052 :post-blank 1 :post-affiliated 228 :mode section :granularity nil :parent #131) (paragraph (:begin 228 :end 578 :contents-begin 228 :contents-end 577 :post-blank 1 :post-affiliated 228 :mode planning :granularity nil :parent #134) #("For integration testing, we currently use " 0 42 (:parent #137)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/tree/testing/test/requests" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/tree/testing/test/requests" :application nil :search-option nil :begin 270 :end 360 :contents-begin 344 :contents-end 357 :post-blank 1 :parent #137) #("Mechanica Rob" 0 13 (:parent #141))) #("against the\nsmall " 0 18 (:parent #137)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :application nil :search-option nil :begin 378 :end 465 :contents-begin 455 :contents-end 463 :post-blank 0 :parent #137) #("database" 0 8 (:parent #143))) #("; a setup we call Mechanical Rob because it emulates\nsomeone clicking through the website and checking results.\n" 0 112 (:parent #137))) (paragraph (:begin 578 :end 785 :contents-begin 578 :contents-end 784 :post-blank 1 :post-affiliated 578 :mode nil :granularity nil :parent #134) #("These scripts invoke calls to a running webserver and test the response.\nIf a page changes or breaks, tests will fail. In principle, Mechanical\nRob runs before code merges get committed to the main server.\n" 0 206 (:parent #138))) (paragraph (:begin 785 :end 1054 :contents-begin 785 :contents-end 1054 :post-blank 0 :post-affiliated 785 :mode nil :granularity nil :parent #134) #("For unit tests, we use python's " 0 32 (:parent #139)) (verbatim (:begin 817 :end 828 :post-blank 1 :value "unittest" :parent #139)) #("framework. Coverage reports\nget generated using " 0 48 (:parent #139)) (link (:type "https" :path "//coverage.readthedocs.io/en/coverage-5.2.1/" :format bracket :raw-link "https://coverage.readthedocs.io/en/coverage-5.2.1/" :application nil :search-option nil :begin 876 :end 944 :contents-begin 930 :contents-end 941 :post-blank 1 :parent #139) #("coverage.py" 0 11 (:parent #145))) #("which you could also use to run\nunit tests. When adding new functionality, it is advisable to add\nunit tests.\n" 0 110 (:parent #139))))) (headline (:raw-value "Run tests" :begin 1055 :end 2404 :pre-blank 1 :contents-begin 1068 :contents-end 2404 :robust-begin 1070 :robust-end 2402 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1055 :title (#("Run tests" 0 9 (:parent #132))) :mode nil :granularity nil :parent #126) (headline (:raw-value "Setup" :begin 1068 :end 1209 :pre-blank 1 :contents-begin 1078 :contents-end 1208 :robust-begin 1080 :robust-end 1206 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1068 :title (#("Setup" 0 5 (:parent #135))) :mode section :granularity nil :parent #132) (section (:begin 1078 :end 1209 :contents-begin 1078 :contents-end 1208 :robust-begin 1078 :robust-end 1206 :post-blank 1 :post-affiliated 1078 :mode section :granularity nil :parent #135) (paragraph (:begin 1078 :end 1141 :contents-begin 1078 :contents-end 1140 :post-blank 1 :post-affiliated 1078 :mode planning :granularity nil :parent #138) #("Everything required for testing is already package with guix:\n" 0 62 (:parent #141))) (fixed-width (:begin 1141 :end 1208 :value "./pre-ins-env guix package -i genenetwork2 -p ~/opt/genenetwork2" :post-blank 1 :post-affiliated 1141 :mode nil :granularity nil :parent #138)))) (headline (:raw-value "Running" :begin 1209 :end 2404 :pre-blank 1 :contents-begin 1221 :contents-end 2404 :robust-begin 1223 :robust-end 2402 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1209 :title (#("Running" 0 7 (:parent #136))) :mode nil :granularity nil :parent #132) (section (:begin 1221 :end 2404 :contents-begin 1221 :contents-end 2404 :robust-begin 1221 :robust-end 2402 :post-blank 0 :post-affiliated 1221 :mode section :granularity nil :parent #136) (paragraph (:begin 1221 :end 1329 :contents-begin 1221 :contents-end 1328 :post-blank 1 :post-affiliated 1221 :mode planning :granularity nil :parent #139) #("Run the tests from the root of the genenetwork2 source tree as. Ensure\nthat Redis and Mariadb are running.\n" 0 107 (:parent #142))) (paragraph (:begin 1329 :end 1352 :contents-begin 1329 :contents-end 1352 :post-blank 0 :post-affiliated 1329 :mode nil :granularity nil :parent #139) #("To run Mechanical Rob:\n" 0 23 (:parent #143))) (fixed-width (:begin 1352 :end 1590 :value "time env GN2_PROFILE=~/opt/genenetwork2 TMPDIR=~/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -c ~/projects/genenetwork2/test/requests/test-website.py -a http://localhost:5004" :post-blank 2 :post-affiliated 1352 :mode nil :granularity nil :parent #139)) (paragraph (:begin 1590 :end 1637 :contents-begin 1590 :contents-end 1636 :post-blank 1 :post-affiliated 1590 :mode nil :granularity nil :parent #139) #("Use these aliases for the following examples.\n" 0 46 (:parent #145))) (src-block (:language "sh" :switches nil :parameters nil :begin 1637 :end 1970 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "alias runpython=\"env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2\"\n\nalias runcmd=\"time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -cli\"\n" :post-blank 1 :post-affiliated 1637 :mode nil :granularity nil :parent #139)) (paragraph (:begin 1970 :end 2026 :contents-begin 1970 :contents-end 2025 :post-blank 1 :post-affiliated 1970 :mode nil :granularity nil :parent #139) #("You could use them in your " 0 27 (:parent #147)) (verbatim (:begin 1997 :end 2007 :post-blank 1 :value ".bashrc" :parent #147)) #("or " 0 3 (:parent #147)) (verbatim (:begin 2010 :end 2019 :post-blank 1 :value ".zshrc" :parent #147)) #("file.\n" 0 6 (:parent #147))) (paragraph (:begin 2026 :end 2046 :contents-begin 2026 :contents-end 2045 :post-blank 1 :post-affiliated 2026 :mode nil :granularity nil :parent #139) #("To run unit tests:\n" 0 19 (:parent #148))) (fixed-width (:begin 2046 :end 2083 :value "runpython -m unittest discover -v" :post-blank 2 :post-affiliated 2046 :mode nil :granularity nil :parent #139)) (paragraph (:begin 2083 :end 2126 :contents-begin 2083 :contents-end 2125 :post-blank 1 :post-affiliated 2083 :mode nil :granularity nil :parent #139) #("Or alternatively using the coverage tool:\n" 0 42 (:parent #150))) (fixed-width (:begin 2126 :end 2173 :value "runcmd coverage run -m unittest discover -v" :post-blank 2 :post-affiliated 2126 :mode nil :granularity nil :parent #139)) (paragraph (:begin 2173 :end 2244 :contents-begin 2173 :contents-end 2243 :post-blank 1 :post-affiliated 2173 :mode nil :granularity nil :parent #139) #("To generate a html coverage report in " 0 38 (:parent #152)) (verbatim (:begin 2211 :end 2242 :post-blank 0 :value "wqflask/coverage_html_report/" :parent #152)) #("\n" 0 1 (:parent #152))) (fixed-width (:begin 2244 :end 2268 :value "runcmd coverage html" :post-blank 2 :post-affiliated 2244 :mode nil :granularity nil :parent #139)) (paragraph (:begin 2268 :end 2303 :contents-begin 2268 :contents-end 2302 :post-blank 1 :post-affiliated 2268 :mode nil :granularity nil :parent #139) #("To output the report to " 0 24 (:parent #154)) (verbatim (:begin 2292 :end 2300 :post-blank 0 :value "STDOUT" :parent #154)) #(":\n" 0 2 (:parent #154))) (fixed-width (:begin 2303 :end 2329 :value "runcmd coverage report" :post-blank 2 :post-affiliated 2303 :mode nil :granularity nil :parent #139)) (paragraph (:begin 2329 :end 2404 :contents-begin 2329 :contents-end 2404 :post-blank 0 :post-affiliated 2329 :mode nil :granularity nil :parent #139) #("All the configs for running the coverage tool are in\n" 0 53 (:parent #156)) (verbatim (:begin 2382 :end 2403 :post-blank 0 :value "wqflask/.coveragerc" :parent #156)) #("\n" 0 1 (:parent #156)))))))) #56)) #32)) #0 (item (:bullet "- " :begin 135 :end 211 :contents-begin 137 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 135 :tag nil :mode item :granularity nil :parent #32) (paragraph (:begin 137 :end 163 :contents-begin 137 :contents-end 163 :post-blank 0 :post-affiliated 137 :mode nil :granularity nil :parent #36) (link (:type "custom-id" :path "run-tests" :format bracket :raw-link "#run-tests" :application nil :search-option nil :begin 137 :end 162 :contents-begin 151 :contents-end 160 :post-blank 0 :parent #39) #("Run tests" 0 9 (:parent #42))) #("\n" 0 1 (:parent #39))) (plain-list (:type unordered :begin 163 :end 211 :contents-begin 163 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 163 :mode nil :granularity nil :parent #36) (item (:bullet "- " :begin 163 :end 185 :contents-begin 167 :contents-end 185 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 163 :tag nil :mode item :granularity nil :parent #40) (paragraph (:begin 167 :end 185 :contents-begin 167 :contents-end 185 :post-blank 0 :post-affiliated 167 :mode nil :granularity nil :parent #43) (link (:type "custom-id" :path "setup" :format bracket :raw-link "#setup" :application nil :search-option nil :begin 167 :end 184 :contents-begin 177 :contents-end 182 :post-blank 0 :parent #46) #("Setup" 0 5 (:parent #49))) #("\n" 0 1 (:parent #46)))) (item (:bullet "- " :begin 185 :end 211 :contents-begin 189 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 185 :tag nil :mode item :granularity nil :parent #40) (paragraph (:begin 189 :end 211 :contents-begin 189 :contents-end 211 :post-blank 0 :post-affiliated 189 :mode nil :granularity nil :parent #44) (link (:type "custom-id" :path "running" :format bracket :raw-link "#running" :application nil :search-option nil :begin 189 :end 210 :contents-begin 201 :contents-end 208 :post-blank 0 :parent #47) #("Running" 0 7 (:parent #50))) #("\n" 0 1 (:parent #47)))))))) (paragraph (:begin 103 :end 135 :contents-begin 103 :contents-end 135 :post-blank 0 :post-affiliated 103 :mode nil :granularity nil :parent #0) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 103 :end 134 :contents-begin 120 :contents-end 132 :post-blank 0 :parent #3) #("Introduction" 0 12 (:parent #6))) #("\n" 0 1 (:parent #3)))) (:export-options (body-only) :back-end #s(org-export-backend :name html :parent nil :transcoders ((bold . org-html-bold) (center-block . org-html-center-block) (clock . org-html-clock) (code . org-html-code) (drawer . org-html-drawer) (dynamic-block . org-html-dynamic-block) (entity . org-html-entity) (example-block . org-html-example-block) (export-block . org-html-export-block) (export-snippet . org-html-export-snippet) (fixed-width . org-html-fixed-width) (footnote-reference . org-html-footnote-reference) (headline . org-html-headline) (horizontal-rule . org-html-horizontal-rule) (inline-src-block . org-html-inline-src-block) (inlinetask . org-html-inlinetask) (inner-template . org-html-inner-template) (italic . org-html-italic) (item . org-html-item) (keyword . org-html-keyword) (latex-environment . org-html-latex-environment) (latex-fragment . org-html-latex-fragment) (line-break . org-html-line-break) (link . org-html-link) (node-property . org-html-node-property) (paragraph . org-html-paragraph) (plain-list . org-html-plain-list) (plain-text . org-html-plain-text) (planning . org-html-planning) (property-drawer . org-html-property-drawer) (quote-block . org-html-quote-block) (radio-target . org-html-radio-target) (section . org-html-section) (special-block . org-html-special-block) (src-block . org-html-src-block) (statistics-cookie . org-html-statistics-cookie) (strike-through . org-html-strike-through) (subscript . org-html-subscript) (superscript . org-html-superscript) (table . org-html-table) (table-cell . org-html-table-cell) (table-row . org-html-table-row) (target . org-html-target) (template . org-html-template) (timestamp . org-html-timestamp) (underline . org-html-underline) (verbatim . org-html-verbatim) (verse-block . org-html-verse-block)) :options ((:html-doctype "HTML_DOCTYPE" nil org-html-doctype) (:html-container "HTML_CONTAINER" nil org-html-container-element) (:html-content-class "HTML_CONTENT_CLASS" nil org-html-content-class) (:description "DESCRIPTION" nil nil newline) (:keywords "KEYWORDS" nil nil space) (:html-html5-fancy nil "html5-fancy" org-html-html5-fancy) (:html-link-use-abs-url nil "html-link-use-abs-url" org-html-link-use-abs-url) (:html-link-home "HTML_LINK_HOME" nil org-html-link-home) (:html-link-up "HTML_LINK_UP" nil org-html-link-up) (:html-mathjax "HTML_MATHJAX" nil "" space) (:html-equation-reference-format "HTML_EQUATION_REFERENCE_FORMAT" nil org-html-equation-reference-format t) (:html-postamble nil "html-postamble" org-html-postamble) (:html-preamble nil "html-preamble" org-html-preamble) (:html-head "HTML_HEAD" nil org-html-head newline) (:html-head-extra "HTML_HEAD_EXTRA" nil org-html-head-extra newline) (:subtitle "SUBTITLE" nil nil parse) (:html-head-include-default-style nil "html-style" org-html-head-include-default-style) (:html-head-include-scripts nil "html-scripts" org-html-head-include-scripts) (:html-allow-name-attribute-in-anchors nil nil org-html-allow-name-attribute-in-anchors) (:html-divs nil nil org-html-divs) (:html-checkbox-type nil nil org-html-checkbox-type) (:html-extension nil nil org-html-extension) (:html-footnote-format nil nil org-html-footnote-format) (:html-footnote-separator nil nil org-html-footnote-separator) (:html-footnotes-section nil nil org-html-footnotes-section) (:html-format-drawer-function nil nil org-html-format-drawer-function) (:html-format-headline-function nil nil org-html-format-headline-function) (:html-format-inlinetask-function nil nil org-html-format-inlinetask-function) (:html-home/up-format nil nil org-html-home/up-format) (:html-indent nil nil org-html-indent) (:html-infojs-options nil nil org-html-infojs-options) (:html-infojs-template nil nil org-html-infojs-template) (:html-inline-image-rules nil nil org-html-inline-image-rules) (:html-link-org-files-as-html nil nil org-html-link-org-files-as-html) (:html-mathjax-options nil nil org-html-mathjax-options) (:html-mathjax-template nil nil org-html-mathjax-template) (:html-metadata-timestamp-format nil nil org-html-metadata-timestamp-format) (:html-postamble-format nil nil org-html-postamble-format) (:html-preamble-format nil nil org-html-preamble-format) (:html-prefer-user-labels nil nil org-html-prefer-user-labels) (:html-self-link-headlines nil nil org-html-self-link-headlines) (:html-table-align-individual-fields nil nil org-html-table-align-individual-fields) (:html-table-caption-above nil nil org-html-table-caption-above) (:html-table-data-tags nil nil org-html-table-data-tags) (:html-table-header-tags nil nil org-html-table-header-tags) (:html-table-use-header-tags-for-first-column nil nil org-html-table-use-header-tags-for-first-column) (:html-tag-class-prefix nil nil org-html-tag-class-prefix) (:html-text-markup-alist nil nil org-html-text-markup-alist) (:html-todo-kwd-class-prefix nil nil org-html-todo-kwd-class-prefix) (:html-toplevel-hlevel nil nil org-html-toplevel-hlevel) (:html-use-infojs nil nil org-html-use-infojs) (:html-validation-link nil nil org-html-validation-link) (:html-viewport nil nil org-html-viewport) (:html-inline-images nil nil org-html-inline-images) (:html-table-attributes nil nil org-html-table-default-attributes) (:html-table-row-open-tag nil nil org-html-table-row-open-tag) (:html-table-row-close-tag nil nil org-html-table-row-close-tag) (:html-xml-declaration nil nil org-html-xml-declaration) (:html-wrap-src-lines nil nil org-html-wrap-src-lines) (:html-klipsify-src nil nil org-html-klipsify-src) (:html-klipse-css nil nil org-html-klipse-css) (:html-klipse-js nil nil org-html-klipse-js) (:html-klipse-selection-script nil nil org-html-klipse-selection-script) (:infojs-opt "INFOJS_OPT" nil nil) (:creator "CREATOR" nil org-html-creator-string) (:with-latex nil "tex" org-html-with-latex) (:latex-header "LATEX_HEADER" nil nil newline)) :filters ((:filter-options . org-html-infojs-install-script) (:filter-parse-tree . org-html-image-link-filter) (:filter-final-output . org-html-final-function)) :blocks nil :menu (104 "Export to HTML" ((72 "As HTML buffer" org-html-export-as-html) (104 "As HTML file" org-html-export-to-html) (111 "As HTML file and open" (lambda (a s v b) (if a (org-html-export-to-html t s v b) (org-open-file (org-html-export-to-html nil s v b)))))))) :translate-alist ((bold . org-html-bold) (center-block . org-html-center-block) (clock . org-html-clock) (code . org-html-code) (drawer . org-html-drawer) (dynamic-block . org-html-dynamic-block) (entity . org-html-entity) (example-block . org-html-example-block) (export-block . org-html-export-block) (export-snippet . org-html-export-snippet) (fixed-width . org-html-fixed-width) (footnote-reference . org-html-footnote-reference) (headline . org-html-headline) (horizontal-rule . org-html-horizontal-rule) (inline-src-block . org-html-inline-src-block) (inlinetask . org-html-inlinetask) (inner-template . org-html-inner-template) (italic . org-html-italic) (item . org-html-item) (keyword . org-html-keyword) (latex-environment . org-html-latex-environment) (latex-fragment . org-html-latex-fragment) (line-break . org-html-line-break) (link . org-html-link) (node-property . org-html-node-property) (paragraph . org-html-paragraph) (plain-list . org-html-plain-list) (plain-text . org-html-plain-text) (planning . org-html-planning) (property-drawer . org-html-property-drawer) (quote-block . org-html-quote-block) (radio-target . org-html-radio-target) (section . org-html-section) (special-block . org-html-special-block) (src-block . org-html-src-block) (statistics-cookie . org-html-statistics-cookie) (strike-through . org-html-strike-through) (subscript . org-html-subscript) (superscript . org-html-superscript) (table . org-html-table) (table-cell . org-html-table-cell) (table-row . org-html-table-row) (target . org-html-target) (template . org-html-template) (timestamp . org-html-timestamp) (underline . org-html-underline) (verbatim . org-html-verbatim) (verse-block . org-html-verse-block)) :exported-data # :input-buffer " *temp*" :input-file nil :html-doctype "xhtml-strict" :html-container "div" :html-content-class "content" :description nil :keywords nil :html-html5-fancy nil :html-link-use-abs-url nil :html-link-home "" :html-link-up "" :html-mathjax "" :html-equation-reference-format "\\eqref{%s}" :html-postamble auto :html-preamble t :html-head "" :html-head-extra "" :subtitle nil :html-head-include-default-style t :html-head-include-scripts nil :html-allow-name-attribute-in-anchors nil :html-divs ((preamble "div" "preamble") (content "div" "content") (postamble "div" "postamble")) :html-checkbox-type ascii :html-extension "html" :html-footnote-format "%s" :html-footnote-separator ", " :html-footnotes-section "
\n

%s:

\n
\n%s\n
\n
" :html-format-drawer-function #f(compiled-function (name contents) #) :html-format-headline-function org-html-format-headline-default-function :html-format-inlinetask-function org-html-format-inlinetask-default-function :html-home/up-format "
\n UP \n |\n HOME \n
" :html-indent nil :html-infojs-options ((path . "https://orgmode.org/org-info.js") (view . "info") (toc . :with-toc) (ftoc . "0") (tdepth . "max") (sdepth . "max") (mouse . "underline") (buttons . "0") (ltoc . "1") (up . :html-link-up) (home . :html-link-home)) :html-infojs-template "\n\n" :html-inline-image-rules (("file" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)") ("http" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)") ("https" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)")) :html-link-org-files-as-html t :html-mathjax-options ((path "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js") (scale 1.0) (align "center") (font "mathjax-modern") (overflow "overflow") (tags "ams") (indent "0em") (multlinewidth "85%") (tagindent ".8em") (tagside "right")) :html-mathjax-template "\n\n\n" :html-metadata-timestamp-format "%Y-%m-%d %a %H:%M" :html-postamble-format (("en" "

Author: %a (%e)

\n

Date: %d

\n

%c

\n

%v

")) :html-preamble-format (("en" "")) :html-prefer-user-labels nil :html-self-link-headlines nil :html-table-align-individual-fields t :html-table-caption-above t :html-table-data-tags ("" . "") :html-table-header-tags ("" . "") :html-table-use-header-tags-for-first-column nil :html-tag-class-prefix "" :html-text-markup-alist ((bold . "%s") (code . "%s") (italic . "%s") (strike-through . "%s") (underline . "%s") (verbatim . "%s")) :html-todo-kwd-class-prefix "" :html-toplevel-hlevel 2 :html-use-infojs when-configured :html-validation-link "Validate" :html-viewport ((width "device-width") (initial-scale "1") (minimum-scale "") (maximum-scale "") (user-scalable "")) :html-inline-images t :html-table-attributes (:border "2" :cellspacing "0" :cellpadding "6" :rules "groups" :frame "hsides") :html-table-row-open-tag "" :html-table-row-close-tag "" :html-xml-declaration (("html" . "") ("php" . "\"; ?>")) :html-wrap-src-lines nil :html-klipsify-src nil :html-klipse-css "https://storage.googleapis.com/app.klipse.tech/css/codemirror.css" :html-klipse-js "https://storage.googleapis.com/app.klipse.tech/plugin_prod/js/klipse_plugin.min.js" :html-klipse-selection-script "window.klipse_settings = {selector_eval_html: '.src-html',\n selector_eval_js: '.src-js',\n selector_eval_python_client: '.src-python',\n selector_eval_scheme: '.src-scheme',\n selector: '.src-clojure',\n selector_eval_ruby: '.src-ruby'};" :infojs-opt nil :creator "Emacs 29.1 (Org mode 9.6.6)" :with-latex t :latex-header nil :title (#("Testing GN2" 0 11 (:parent #148))) :date nil :author (#("unknown" 0 7 (:parent #152))) :email "unknown@genenetwork-development" :language "en" :select-tags ("export") :exclude-tags ("noexport") :headline-levels 3 :preserve-breaks nil :section-numbers nil :time-stamp-file t :with-archived-trees headline :with-author t :with-broken-links nil :with-clocks nil :with-creator nil :with-date t :with-drawers (not "LOGBOOK") :with-email nil :with-emphasize t :with-entities t :with-fixed-width t :with-footnotes t :with-inlinetasks t :with-planning nil :with-priority nil :with-properties nil :with-smart-quotes nil :with-special-strings t :with-statistics-cookies t :with-sub-superscript t :with-toc nil :with-tables t :with-tags t :with-tasks t :with-timestamps t :with-title t :with-todo-keywords t :cite-export (basic nil nil) :bibliography nil :filter-body nil :filter-bold nil :filter-babel-call nil :filter-center-block nil :filter-clock nil :filter-code nil :filter-diary-sexp nil :filter-drawer nil :filter-dynamic-block nil :filter-entity nil :filter-example-block nil :filter-export-block nil :filter-export-snippet nil :filter-final-output (org-html-final-function) :filter-fixed-width nil :filter-footnote-definition nil :filter-footnote-reference nil :filter-headline nil :filter-horizontal-rule nil :filter-inline-babel-call nil :filter-inline-src-block nil :filter-inlinetask nil :filter-italic nil :filter-item nil :filter-keyword nil :filter-latex-environment nil :filter-latex-fragment nil :filter-line-break nil :filter-link nil :filter-node-property nil :filter-options (org-html-infojs-install-script) :filter-paragraph nil :filter-parse-tree (org-html-image-link-filter) :filter-plain-list nil :filter-plain-text nil :filter-planning nil :filter-property-drawer nil :filter-quote-block nil :filter-radio-target nil :filter-section nil :filter-special-block nil :filter-src-block nil :filter-statistics-cookie nil :filter-strike-through nil :filter-subscript nil :filter-superscript nil :filter-table nil :filter-table-cell nil :filter-table-row nil :filter-target nil :filter-timestamp nil :filter-underline nil :filter-verbatim nil :filter-verse-block nil :ignore-list nil :parse-tree (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 23 :contents-begin 1 :contents-end 22 :robust-begin 1 :robust-end 20 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #338) (keyword (:key "TITLE" :value "Testing GN2" :begin 1 :end 22 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #341))) (headline (:raw-value "Table of Contents" :begin 23 :end 212 :pre-blank 0 :contents-begin 101 :contents-end 211 :robust-begin 103 :robust-end 209 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 23 :title (#("Table of Contents" 0 17 (:parent #342))) :mode nil :granularity nil :parent #338) (section (:begin 101 :end 212 :contents-begin 101 :contents-end 211 :robust-begin 101 :robust-end 209 :post-blank 1 :post-affiliated 101 :mode section :granularity nil :parent #342) (plain-list (:type unordered :begin 101 :end 211 :contents-begin 101 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 101 :mode planning :granularity nil :parent #345) (item (:bullet "- " :begin 101 :end 135 :contents-begin 103 :contents-end 135 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 101 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 103 :end 135 :contents-begin 103 :contents-end 135 :post-blank 0 :post-affiliated 103 :mode nil :granularity nil :parent #351) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 103 :end 134 :contents-begin 120 :contents-end 132 :post-blank 0 :parent #354) #("Introduction" 0 12 (:parent #357))) #("\n" 0 1 (:parent #354)))) (item (:bullet "- " :begin 135 :end 211 :contents-begin 137 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 135 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 137 :end 163 :contents-begin 137 :contents-end 163 :post-blank 0 :post-affiliated 137 :mode nil :granularity nil :parent #352) (link (:type "custom-id" :path "run-tests" :format bracket :raw-link "#run-tests" :application nil :search-option nil :begin 137 :end 162 :contents-begin 151 :contents-end 160 :post-blank 0 :parent #355) #("Run tests" 0 9 (:parent #358))) #("\n" 0 1 (:parent #355))) (plain-list (:type unordered :begin 163 :end 211 :contents-begin 163 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 163 :mode nil :granularity nil :parent #352) (item (:bullet "- " :begin 163 :end 185 :contents-begin 167 :contents-end 185 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 163 :tag nil :mode item :granularity nil :parent #356) (paragraph (:begin 167 :end 185 :contents-begin 167 :contents-end 185 :post-blank 0 :post-affiliated 167 :mode nil :granularity nil :parent #359) (link (:type "custom-id" :path "setup" :format bracket :raw-link "#setup" :application nil :search-option nil :begin 167 :end 184 :contents-begin 177 :contents-end 182 :post-blank 0 :parent #362) #("Setup" 0 5 (:parent #365))) #("\n" 0 1 (:parent #362)))) (item (:bullet "- " :begin 185 :end 211 :contents-begin 189 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 185 :tag nil :mode item :granularity nil :parent #356) (paragraph (:begin 189 :end 211 :contents-begin 189 :contents-end 211 :post-blank 0 :post-affiliated 189 :mode nil :granularity nil :parent #360) (link (:type "custom-id" :path "running" :format bracket :raw-link "#running" :application nil :search-option nil :begin 189 :end 210 :contents-begin 201 :contents-end 208 :post-blank 0 :parent #363) #("Running" 0 7 (:parent #366))) #("\n" 0 1 (:parent #363))))))))) (headline (:raw-value "Introduction" :begin 212 :end 1055 :pre-blank 1 :contents-begin 228 :contents-end 1054 :robust-begin 230 :robust-end 1052 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 212 :title (#("Introduction" 0 12 (:parent #343))) :mode nil :granularity nil :parent #338) (section (:begin 228 :end 1055 :contents-begin 228 :contents-end 1054 :robust-begin 228 :robust-end 1052 :post-blank 1 :post-affiliated 228 :mode section :granularity nil :parent #343) (paragraph (:begin 228 :end 578 :contents-begin 228 :contents-end 577 :post-blank 1 :post-affiliated 228 :mode planning :granularity nil :parent #346) #("For integration testing, we currently use " 0 42 (:parent #349)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/tree/testing/test/requests" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/tree/testing/test/requests" :application nil :search-option nil :begin 270 :end 360 :contents-begin 344 :contents-end 357 :post-blank 1 :parent #349) #("Mechanica Rob" 0 13 (:parent #353))) #("against the\nsmall " 0 18 (:parent #349)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :application nil :search-option nil :begin 378 :end 465 :contents-begin 455 :contents-end 463 :post-blank 0 :parent #349) #("database" 0 8 (:parent #355))) #("; a setup we call Mechanical Rob because it emulates\nsomeone clicking through the website and checking results.\n" 0 112 (:parent #349))) (paragraph (:begin 578 :end 785 :contents-begin 578 :contents-end 784 :post-blank 1 :post-affiliated 578 :mode nil :granularity nil :parent #346) #("These scripts invoke calls to a running webserver and test the response.\nIf a page changes or breaks, tests will fail. In principle, Mechanical\nRob runs before code merges get committed to the main server.\n" 0 206 (:parent #350))) (paragraph (:begin 785 :end 1054 :contents-begin 785 :contents-end 1054 :post-blank 0 :post-affiliated 785 :mode nil :granularity nil :parent #346) #("For unit tests, we use python's " 0 32 (:parent #351)) (verbatim (:begin 817 :end 828 :post-blank 1 :value "unittest" :parent #351)) #("framework. Coverage reports\nget generated using " 0 48 (:parent #351)) (link (:type "https" :path "//coverage.readthedocs.io/en/coverage-5.2.1/" :format bracket :raw-link "https://coverage.readthedocs.io/en/coverage-5.2.1/" :application nil :search-option nil :begin 876 :end 944 :contents-begin 930 :contents-end 941 :post-blank 1 :parent #351) #("coverage.py" 0 11 (:parent #357))) #("which you could also use to run\nunit tests. When adding new functionality, it is advisable to add\nunit tests.\n" 0 110 (:parent #351))))) (headline (:raw-value "Run tests" :begin 1055 :end 2404 :pre-blank 1 :contents-begin 1068 :contents-end 2404 :robust-begin 1070 :robust-end 2402 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1055 :title (#("Run tests" 0 9 (:parent #344))) :mode nil :granularity nil :parent #338) (headline (:raw-value "Setup" :begin 1068 :end 1209 :pre-blank 1 :contents-begin 1078 :contents-end 1208 :robust-begin 1080 :robust-end 1206 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1068 :title (#("Setup" 0 5 (:parent #347))) :mode section :granularity nil :parent #344) (section (:begin 1078 :end 1209 :contents-begin 1078 :contents-end 1208 :robust-begin 1078 :robust-end 1206 :post-blank 1 :post-affiliated 1078 :mode section :granularity nil :parent #347) (paragraph (:begin 1078 :end 1141 :contents-begin 1078 :contents-end 1140 :post-blank 1 :post-affiliated 1078 :mode planning :granularity nil :parent #350) #("Everything required for testing is already package with guix:\n" 0 62 (:parent #353))) (fixed-width (:begin 1141 :end 1208 :value "./pre-ins-env guix package -i genenetwork2 -p ~/opt/genenetwork2" :post-blank 1 :post-affiliated 1141 :mode nil :granularity nil :parent #350)))) (headline (:raw-value "Running" :begin 1209 :end 2404 :pre-blank 1 :contents-begin 1221 :contents-end 2404 :robust-begin 1223 :robust-end 2402 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1209 :title (#("Running" 0 7 (:parent #348))) :mode nil :granularity nil :parent #344) (section (:begin 1221 :end 2404 :contents-begin 1221 :contents-end 2404 :robust-begin 1221 :robust-end 2402 :post-blank 0 :post-affiliated 1221 :mode section :granularity nil :parent #348) (paragraph (:begin 1221 :end 1329 :contents-begin 1221 :contents-end 1328 :post-blank 1 :post-affiliated 1221 :mode planning :granularity nil :parent #351) #("Run the tests from the root of the genenetwork2 source tree as. Ensure\nthat Redis and Mariadb are running.\n" 0 107 (:parent #354))) (paragraph (:begin 1329 :end 1352 :contents-begin 1329 :contents-end 1352 :post-blank 0 :post-affiliated 1329 :mode nil :granularity nil :parent #351) #("To run Mechanical Rob:\n" 0 23 (:parent #355))) (fixed-width (:begin 1352 :end 1590 :value "time env GN2_PROFILE=~/opt/genenetwork2 TMPDIR=~/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -c ~/projects/genenetwork2/test/requests/test-website.py -a http://localhost:5004" :post-blank 2 :post-affiliated 1352 :mode nil :granularity nil :parent #351)) (paragraph (:begin 1590 :end 1637 :contents-begin 1590 :contents-end 1636 :post-blank 1 :post-affiliated 1590 :mode nil :granularity nil :parent #351) #("Use these aliases for the following examples.\n" 0 46 (:parent #357))) (src-block (:language "sh" :switches nil :parameters nil :begin 1637 :end 1970 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "alias runpython=\"env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2\"\n\nalias runcmd=\"time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -cli\"\n" :post-blank 1 :post-affiliated 1637 :mode nil :granularity nil :parent #351)) (paragraph (:begin 1970 :end 2026 :contents-begin 1970 :contents-end 2025 :post-blank 1 :post-affiliated 1970 :mode nil :granularity nil :parent #351) #("You could use them in your " 0 27 (:parent #359)) (verbatim (:begin 1997 :end 2007 :post-blank 1 :value ".bashrc" :parent #359)) #("or " 0 3 (:parent #359)) (verbatim (:begin 2010 :end 2019 :post-blank 1 :value ".zshrc" :parent #359)) #("file.\n" 0 6 (:parent #359))) (paragraph (:begin 2026 :end 2046 :contents-begin 2026 :contents-end 2045 :post-blank 1 :post-affiliated 2026 :mode nil :granularity nil :parent #351) #("To run unit tests:\n" 0 19 (:parent #360))) (fixed-width (:begin 2046 :end 2083 :value "runpython -m unittest discover -v" :post-blank 2 :post-affiliated 2046 :mode nil :granularity nil :parent #351)) (paragraph (:begin 2083 :end 2126 :contents-begin 2083 :contents-end 2125 :post-blank 1 :post-affiliated 2083 :mode nil :granularity nil :parent #351) #("Or alternatively using the coverage tool:\n" 0 42 (:parent #362))) (fixed-width (:begin 2126 :end 2173 :value "runcmd coverage run -m unittest discover -v" :post-blank 2 :post-affiliated 2126 :mode nil :granularity nil :parent #351)) (paragraph (:begin 2173 :end 2244 :contents-begin 2173 :contents-end 2243 :post-blank 1 :post-affiliated 2173 :mode nil :granularity nil :parent #351) #("To generate a html coverage report in " 0 38 (:parent #364)) (verbatim (:begin 2211 :end 2242 :post-blank 0 :value "wqflask/coverage_html_report/" :parent #364)) #("\n" 0 1 (:parent #364))) (fixed-width (:begin 2244 :end 2268 :value "runcmd coverage html" :post-blank 2 :post-affiliated 2244 :mode nil :granularity nil :parent #351)) (paragraph (:begin 2268 :end 2303 :contents-begin 2268 :contents-end 2302 :post-blank 1 :post-affiliated 2268 :mode nil :granularity nil :parent #351) #("To output the report to " 0 24 (:parent #366)) (verbatim (:begin 2292 :end 2300 :post-blank 0 :value "STDOUT" :parent #366)) #(":\n" 0 2 (:parent #366))) (fixed-width (:begin 2303 :end 2329 :value "runcmd coverage report" :post-blank 2 :post-affiliated 2303 :mode nil :granularity nil :parent #351)) (paragraph (:begin 2329 :end 2404 :contents-begin 2329 :contents-end 2404 :post-blank 0 :post-affiliated 2329 :mode nil :granularity nil :parent #351) #("All the configs for running the coverage tool are in\n" 0 53 (:parent #368)) (verbatim (:begin 2382 :end 2403 :post-blank 0 :value "wqflask/.coveragerc" :parent #368)) #("\n" 0 1 (:parent #368))))))) :headline-offset 0 :headline-numbering nil :id-alist nil :citations nil :id-local-cache #)) #f(compiled-function (element) #)((item (:bullet "- " :begin 101 :end 135 :contents-begin 103 :contents-end 135 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 101 :tag nil :mode item :granularity nil :parent (plain-list (:type unordered :begin 101 :end 211 :contents-begin 101 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 101 :mode planning :granularity nil :parent (section (:begin 101 :end 212 :contents-begin 101 :contents-end 211 :robust-begin 101 :robust-end 209 :post-blank 1 :post-affiliated 101 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 23 :end 212 :pre-blank 0 :contents-begin 101 :contents-end 211 :robust-begin 103 :robust-end 209 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 23 :title (#("Table of Contents" 0 17 (:parent #80))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 23 :contents-begin 1 :contents-end 22 :robust-begin 1 :robust-end 20 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #126) (keyword (:key "TITLE" :value "Testing GN2" :begin 1 :end 22 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #129))) #80 (headline (:raw-value "Introduction" :begin 212 :end 1055 :pre-blank 1 :contents-begin 228 :contents-end 1054 :robust-begin 230 :robust-end 1052 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 212 :title (#("Introduction" 0 12 (:parent #131))) :mode nil :granularity nil :parent #126) (section (:begin 228 :end 1055 :contents-begin 228 :contents-end 1054 :robust-begin 228 :robust-end 1052 :post-blank 1 :post-affiliated 228 :mode section :granularity nil :parent #131) (paragraph (:begin 228 :end 578 :contents-begin 228 :contents-end 577 :post-blank 1 :post-affiliated 228 :mode planning :granularity nil :parent #134) #("For integration testing, we currently use " 0 42 (:parent #137)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/tree/testing/test/requests" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/tree/testing/test/requests" :application nil :search-option nil :begin 270 :end 360 :contents-begin 344 :contents-end 357 :post-blank 1 :parent #137) #("Mechanica Rob" 0 13 (:parent #141))) #("against the\nsmall " 0 18 (:parent #137)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :application nil :search-option nil :begin 378 :end 465 :contents-begin 455 :contents-end 463 :post-blank 0 :parent #137) #("database" 0 8 (:parent #143))) #("; a setup we call Mechanical Rob because it emulates\nsomeone clicking through the website and checking results.\n" 0 112 (:parent #137))) (paragraph (:begin 578 :end 785 :contents-begin 578 :contents-end 784 :post-blank 1 :post-affiliated 578 :mode nil :granularity nil :parent #134) #("These scripts invoke calls to a running webserver and test the response.\nIf a page changes or breaks, tests will fail. In principle, Mechanical\nRob runs before code merges get committed to the main server.\n" 0 206 (:parent #138))) (paragraph (:begin 785 :end 1054 :contents-begin 785 :contents-end 1054 :post-blank 0 :post-affiliated 785 :mode nil :granularity nil :parent #134) #("For unit tests, we use python's " 0 32 (:parent #139)) (verbatim (:begin 817 :end 828 :post-blank 1 :value "unittest" :parent #139)) #("framework. Coverage reports\nget generated using " 0 48 (:parent #139)) (link (:type "https" :path "//coverage.readthedocs.io/en/coverage-5.2.1/" :format bracket :raw-link "https://coverage.readthedocs.io/en/coverage-5.2.1/" :application nil :search-option nil :begin 876 :end 944 :contents-begin 930 :contents-end 941 :post-blank 1 :parent #139) #("coverage.py" 0 11 (:parent #145))) #("which you could also use to run\nunit tests. When adding new functionality, it is advisable to add\nunit tests.\n" 0 110 (:parent #139))))) (headline (:raw-value "Run tests" :begin 1055 :end 2404 :pre-blank 1 :contents-begin 1068 :contents-end 2404 :robust-begin 1070 :robust-end 2402 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1055 :title (#("Run tests" 0 9 (:parent #132))) :mode nil :granularity nil :parent #126) (headline (:raw-value "Setup" :begin 1068 :end 1209 :pre-blank 1 :contents-begin 1078 :contents-end 1208 :robust-begin 1080 :robust-end 1206 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1068 :title (#("Setup" 0 5 (:parent #135))) :mode section :granularity nil :parent #132) (section (:begin 1078 :end 1209 :contents-begin 1078 :contents-end 1208 :robust-begin 1078 :robust-end 1206 :post-blank 1 :post-affiliated 1078 :mode section :granularity nil :parent #135) (paragraph (:begin 1078 :end 1141 :contents-begin 1078 :contents-end 1140 :post-blank 1 :post-affiliated 1078 :mode planning :granularity nil :parent #138) #("Everything required for testing is already package with guix:\n" 0 62 (:parent #141))) (fixed-width (:begin 1141 :end 1208 :value "./pre-ins-env guix package -i genenetwork2 -p ~/opt/genenetwork2" :post-blank 1 :post-affiliated 1141 :mode nil :granularity nil :parent #138)))) (headline (:raw-value "Running" :begin 1209 :end 2404 :pre-blank 1 :contents-begin 1221 :contents-end 2404 :robust-begin 1223 :robust-end 2402 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1209 :title (#("Running" 0 7 (:parent #136))) :mode nil :granularity nil :parent #132) (section (:begin 1221 :end 2404 :contents-begin 1221 :contents-end 2404 :robust-begin 1221 :robust-end 2402 :post-blank 0 :post-affiliated 1221 :mode section :granularity nil :parent #136) (paragraph (:begin 1221 :end 1329 :contents-begin 1221 :contents-end 1328 :post-blank 1 :post-affiliated 1221 :mode planning :granularity nil :parent #139) #("Run the tests from the root of the genenetwork2 source tree as. Ensure\nthat Redis and Mariadb are running.\n" 0 107 (:parent #142))) (paragraph (:begin 1329 :end 1352 :contents-begin 1329 :contents-end 1352 :post-blank 0 :post-affiliated 1329 :mode nil :granularity nil :parent #139) #("To run Mechanical Rob:\n" 0 23 (:parent #143))) (fixed-width (:begin 1352 :end 1590 :value "time env GN2_PROFILE=~/opt/genenetwork2 TMPDIR=~/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -c ~/projects/genenetwork2/test/requests/test-website.py -a http://localhost:5004" :post-blank 2 :post-affiliated 1352 :mode nil :granularity nil :parent #139)) (paragraph (:begin 1590 :end 1637 :contents-begin 1590 :contents-end 1636 :post-blank 1 :post-affiliated 1590 :mode nil :granularity nil :parent #139) #("Use these aliases for the following examples.\n" 0 46 (:parent #145))) (src-block (:language "sh" :switches nil :parameters nil :begin 1637 :end 1970 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "alias runpython=\"env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2\"\n\nalias runcmd=\"time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -cli\"\n" :post-blank 1 :post-affiliated 1637 :mode nil :granularity nil :parent #139)) (paragraph (:begin 1970 :end 2026 :contents-begin 1970 :contents-end 2025 :post-blank 1 :post-affiliated 1970 :mode nil :granularity nil :parent #139) #("You could use them in your " 0 27 (:parent #147)) (verbatim (:begin 1997 :end 2007 :post-blank 1 :value ".bashrc" :parent #147)) #("or " 0 3 (:parent #147)) (verbatim (:begin 2010 :end 2019 :post-blank 1 :value ".zshrc" :parent #147)) #("file.\n" 0 6 (:parent #147))) (paragraph (:begin 2026 :end 2046 :contents-begin 2026 :contents-end 2045 :post-blank 1 :post-affiliated 2026 :mode nil :granularity nil :parent #139) #("To run unit tests:\n" 0 19 (:parent #148))) (fixed-width (:begin 2046 :end 2083 :value "runpython -m unittest discover -v" :post-blank 2 :post-affiliated 2046 :mode nil :granularity nil :parent #139)) (paragraph (:begin 2083 :end 2126 :contents-begin 2083 :contents-end 2125 :post-blank 1 :post-affiliated 2083 :mode nil :granularity nil :parent #139) #("Or alternatively using the coverage tool:\n" 0 42 (:parent #150))) (fixed-width (:begin 2126 :end 2173 :value "runcmd coverage run -m unittest discover -v" :post-blank 2 :post-affiliated 2126 :mode nil :granularity nil :parent #139)) (paragraph (:begin 2173 :end 2244 :contents-begin 2173 :contents-end 2243 :post-blank 1 :post-affiliated 2173 :mode nil :granularity nil :parent #139) #("To generate a html coverage report in " 0 38 (:parent #152)) (verbatim (:begin 2211 :end 2242 :post-blank 0 :value "wqflask/coverage_html_report/" :parent #152)) #("\n" 0 1 (:parent #152))) (fixed-width (:begin 2244 :end 2268 :value "runcmd coverage html" :post-blank 2 :post-affiliated 2244 :mode nil :granularity nil :parent #139)) (paragraph (:begin 2268 :end 2303 :contents-begin 2268 :contents-end 2302 :post-blank 1 :post-affiliated 2268 :mode nil :granularity nil :parent #139) #("To output the report to " 0 24 (:parent #154)) (verbatim (:begin 2292 :end 2300 :post-blank 0 :value "STDOUT" :parent #154)) #(":\n" 0 2 (:parent #154))) (fixed-width (:begin 2303 :end 2329 :value "runcmd coverage report" :post-blank 2 :post-affiliated 2303 :mode nil :granularity nil :parent #139)) (paragraph (:begin 2329 :end 2404 :contents-begin 2329 :contents-end 2404 :post-blank 0 :post-affiliated 2329 :mode nil :granularity nil :parent #139) #("All the configs for running the coverage tool are in\n" 0 53 (:parent #156)) (verbatim (:begin 2382 :end 2403 :post-blank 0 :value "wqflask/.coveragerc" :parent #156)) #("\n" 0 1 (:parent #156)))))))) #56)) #32)) #0 (item (:bullet "- " :begin 135 :end 211 :contents-begin 137 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 135 :tag nil :mode item :granularity nil :parent #32) (paragraph (:begin 137 :end 163 :contents-begin 137 :contents-end 163 :post-blank 0 :post-affiliated 137 :mode nil :granularity nil :parent #36) (link (:type "custom-id" :path "run-tests" :format bracket :raw-link "#run-tests" :application nil :search-option nil :begin 137 :end 162 :contents-begin 151 :contents-end 160 :post-blank 0 :parent #39) #("Run tests" 0 9 (:parent #42))) #("\n" 0 1 (:parent #39))) (plain-list (:type unordered :begin 163 :end 211 :contents-begin 163 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 163 :mode nil :granularity nil :parent #36) (item (:bullet "- " :begin 163 :end 185 :contents-begin 167 :contents-end 185 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 163 :tag nil :mode item :granularity nil :parent #40) (paragraph (:begin 167 :end 185 :contents-begin 167 :contents-end 185 :post-blank 0 :post-affiliated 167 :mode nil :granularity nil :parent #43) (link (:type "custom-id" :path "setup" :format bracket :raw-link "#setup" :application nil :search-option nil :begin 167 :end 184 :contents-begin 177 :contents-end 182 :post-blank 0 :parent #46) #("Setup" 0 5 (:parent #49))) #("\n" 0 1 (:parent #46)))) (item (:bullet "- " :begin 185 :end 211 :contents-begin 189 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 185 :tag nil :mode item :granularity nil :parent #40) (paragraph (:begin 189 :end 211 :contents-begin 189 :contents-end 211 :post-blank 0 :post-affiliated 189 :mode nil :granularity nil :parent #44) (link (:type "custom-id" :path "running" :format bracket :raw-link "#running" :application nil :search-option nil :begin 189 :end 210 :contents-begin 201 :contents-end 208 :post-blank 0 :parent #47) #("Running" 0 7 (:parent #50))) #("\n" 0 1 (:parent #47)))))))) (paragraph (:begin 103 :end 135 :contents-begin 103 :contents-end 135 :post-blank 0 :post-affiliated 103 :mode nil :granularity nil :parent #0) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 103 :end 134 :contents-begin 120 :contents-end 132 :post-blank 0 :parent #3) #("Introduction" 0 12 (:parent #6))) #("\n" 0 1 (:parent #3))))) mapconcat(#f(compiled-function (element) #) ((item (:bullet "- " :begin 101 :end 135 :contents-begin 103 :contents-end 135 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 101 :tag nil :mode item :granularity nil :parent (plain-list (:type unordered :begin 101 :end 211 :contents-begin 101 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 101 :mode planning :granularity nil :parent (section (:begin 101 :end 212 :contents-begin 101 :contents-end 211 :robust-begin 101 :robust-end 209 :post-blank 1 :post-affiliated 101 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 23 :end 212 :pre-blank 0 :contents-begin 101 :contents-end 211 :robust-begin 103 :robust-end 209 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 23 :title (#("Table of Contents" 0 17 (:parent #81))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 23 :contents-begin 1 :contents-end 22 :robust-begin 1 :robust-end 20 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #127) (keyword (:key "TITLE" :value "Testing GN2" :begin 1 :end 22 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #130))) #81 (headline (:raw-value "Introduction" :begin 212 :end 1055 :pre-blank 1 :contents-begin 228 :contents-end 1054 :robust-begin 230 :robust-end 1052 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 212 :title (#("Introduction" 0 12 (:parent #132))) :mode nil :granularity nil :parent #127) (section (:begin 228 :end 1055 :contents-begin 228 :contents-end 1054 :robust-begin 228 :robust-end 1052 :post-blank 1 :post-affiliated 228 :mode section :granularity nil :parent #132) (paragraph (:begin 228 :end 578 :contents-begin 228 :contents-end 577 :post-blank 1 :post-affiliated 228 :mode planning :granularity nil :parent #135) #("For integration testing, we currently use " 0 42 (:parent #138)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/tree/testing/test/requests" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/tree/testing/test/requests" :application nil :search-option nil :begin 270 :end 360 :contents-begin 344 :contents-end 357 :post-blank 1 :parent #138) #("Mechanica Rob" 0 13 (:parent #142))) #("against the\nsmall " 0 18 (:parent #138)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :application nil :search-option nil :begin 378 :end 465 :contents-begin 455 :contents-end 463 :post-blank 0 :parent #138) #("database" 0 8 (:parent #144))) #("; a setup we call Mechanical Rob because it emulates\nsomeone clicking through the website and checking results.\n" 0 112 (:parent #138))) (paragraph (:begin 578 :end 785 :contents-begin 578 :contents-end 784 :post-blank 1 :post-affiliated 578 :mode nil :granularity nil :parent #135) #("These scripts invoke calls to a running webserver and test the response.\nIf a page changes or breaks, tests will fail. In principle, Mechanical\nRob runs before code merges get committed to the main server.\n" 0 206 (:parent #139))) (paragraph (:begin 785 :end 1054 :contents-begin 785 :contents-end 1054 :post-blank 0 :post-affiliated 785 :mode nil :granularity nil :parent #135) #("For unit tests, we use python's " 0 32 (:parent #140)) (verbatim (:begin 817 :end 828 :post-blank 1 :value "unittest" :parent #140)) #("framework. Coverage reports\nget generated using " 0 48 (:parent #140)) (link (:type "https" :path "//coverage.readthedocs.io/en/coverage-5.2.1/" :format bracket :raw-link "https://coverage.readthedocs.io/en/coverage-5.2.1/" :application nil :search-option nil :begin 876 :end 944 :contents-begin 930 :contents-end 941 :post-blank 1 :parent #140) #("coverage.py" 0 11 (:parent #146))) #("which you could also use to run\nunit tests. When adding new functionality, it is advisable to add\nunit tests.\n" 0 110 (:parent #140))))) (headline (:raw-value "Run tests" :begin 1055 :end 2404 :pre-blank 1 :contents-begin 1068 :contents-end 2404 :robust-begin 1070 :robust-end 2402 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1055 :title (#("Run tests" 0 9 (:parent #133))) :mode nil :granularity nil :parent #127) (headline (:raw-value "Setup" :begin 1068 :end 1209 :pre-blank 1 :contents-begin 1078 :contents-end 1208 :robust-begin 1080 :robust-end 1206 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1068 :title (#("Setup" 0 5 (:parent #136))) :mode section :granularity nil :parent #133) (section (:begin 1078 :end 1209 :contents-begin 1078 :contents-end 1208 :robust-begin 1078 :robust-end 1206 :post-blank 1 :post-affiliated 1078 :mode section :granularity nil :parent #136) (paragraph (:begin 1078 :end 1141 :contents-begin 1078 :contents-end 1140 :post-blank 1 :post-affiliated 1078 :mode planning :granularity nil :parent #139) #("Everything required for testing is already package with guix:\n" 0 62 (:parent #142))) (fixed-width (:begin 1141 :end 1208 :value "./pre-ins-env guix package -i genenetwork2 -p ~/opt/genenetwork2" :post-blank 1 :post-affiliated 1141 :mode nil :granularity nil :parent #139)))) (headline (:raw-value "Running" :begin 1209 :end 2404 :pre-blank 1 :contents-begin 1221 :contents-end 2404 :robust-begin 1223 :robust-end 2402 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1209 :title (#("Running" 0 7 (:parent #137))) :mode nil :granularity nil :parent #133) (section (:begin 1221 :end 2404 :contents-begin 1221 :contents-end 2404 :robust-begin 1221 :robust-end 2402 :post-blank 0 :post-affiliated 1221 :mode section :granularity nil :parent #137) (paragraph (:begin 1221 :end 1329 :contents-begin 1221 :contents-end 1328 :post-blank 1 :post-affiliated 1221 :mode planning :granularity nil :parent #140) #("Run the tests from the root of the genenetwork2 source tree as. Ensure\nthat Redis and Mariadb are running.\n" 0 107 (:parent #143))) (paragraph (:begin 1329 :end 1352 :contents-begin 1329 :contents-end 1352 :post-blank 0 :post-affiliated 1329 :mode nil :granularity nil :parent #140) #("To run Mechanical Rob:\n" 0 23 (:parent #144))) (fixed-width (:begin 1352 :end 1590 :value "time env GN2_PROFILE=~/opt/genenetwork2 TMPDIR=~/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -c ~/projects/genenetwork2/test/requests/test-website.py -a http://localhost:5004" :post-blank 2 :post-affiliated 1352 :mode nil :granularity nil :parent #140)) (paragraph (:begin 1590 :end 1637 :contents-begin 1590 :contents-end 1636 :post-blank 1 :post-affiliated 1590 :mode nil :granularity nil :parent #140) #("Use these aliases for the following examples.\n" 0 46 (:parent #146))) (src-block (:language "sh" :switches nil :parameters nil :begin 1637 :end 1970 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "alias runpython=\"env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2\"\n\nalias runcmd=\"time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -cli\"\n" :post-blank 1 :post-affiliated 1637 :mode nil :granularity nil :parent #140)) (paragraph (:begin 1970 :end 2026 :contents-begin 1970 :contents-end 2025 :post-blank 1 :post-affiliated 1970 :mode nil :granularity nil :parent #140) #("You could use them in your " 0 27 (:parent #148)) (verbatim (:begin 1997 :end 2007 :post-blank 1 :value ".bashrc" :parent #148)) #("or " 0 3 (:parent #148)) (verbatim (:begin 2010 :end 2019 :post-blank 1 :value ".zshrc" :parent #148)) #("file.\n" 0 6 (:parent #148))) (paragraph (:begin 2026 :end 2046 :contents-begin 2026 :contents-end 2045 :post-blank 1 :post-affiliated 2026 :mode nil :granularity nil :parent #140) #("To run unit tests:\n" 0 19 (:parent #149))) (fixed-width (:begin 2046 :end 2083 :value "runpython -m unittest discover -v" :post-blank 2 :post-affiliated 2046 :mode nil :granularity nil :parent #140)) (paragraph (:begin 2083 :end 2126 :contents-begin 2083 :contents-end 2125 :post-blank 1 :post-affiliated 2083 :mode nil :granularity nil :parent #140) #("Or alternatively using the coverage tool:\n" 0 42 (:parent #151))) (fixed-width (:begin 2126 :end 2173 :value "runcmd coverage run -m unittest discover -v" :post-blank 2 :post-affiliated 2126 :mode nil :granularity nil :parent #140)) (paragraph (:begin 2173 :end 2244 :contents-begin 2173 :contents-end 2243 :post-blank 1 :post-affiliated 2173 :mode nil :granularity nil :parent #140) #("To generate a html coverage report in " 0 38 (:parent #153)) (verbatim (:begin 2211 :end 2242 :post-blank 0 :value "wqflask/coverage_html_report/" :parent #153)) #("\n" 0 1 (:parent #153))) (fixed-width (:begin 2244 :end 2268 :value "runcmd coverage html" :post-blank 2 :post-affiliated 2244 :mode nil :granularity nil :parent #140)) (paragraph (:begin 2268 :end 2303 :contents-begin 2268 :contents-end 2302 :post-blank 1 :post-affiliated 2268 :mode nil :granularity nil :parent #140) #("To output the report to " 0 24 (:parent #155)) (verbatim (:begin 2292 :end 2300 :post-blank 0 :value "STDOUT" :parent #155)) #(":\n" 0 2 (:parent #155))) (fixed-width (:begin 2303 :end 2329 :value "runcmd coverage report" :post-blank 2 :post-affiliated 2303 :mode nil :granularity nil :parent #140)) (paragraph (:begin 2329 :end 2404 :contents-begin 2329 :contents-end 2404 :post-blank 0 :post-affiliated 2329 :mode nil :granularity nil :parent #140) #("All the configs for running the coverage tool are in\n" 0 53 (:parent #157)) (verbatim (:begin 2382 :end 2403 :post-blank 0 :value "wqflask/.coveragerc" :parent #157)) #("\n" 0 1 (:parent #157)))))))) #57)) #33)) . #0)) (paragraph (:begin 103 :end 135 :contents-begin 103 :contents-end 135 :post-blank 0 :post-affiliated 103 :mode nil :granularity nil :parent #1) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 103 :end 134 :contents-begin 120 :contents-end 132 :post-blank 0 :parent #4) #("Introduction" 0 12 (:parent #7))) #("\n" 0 1 (:parent #4)))) (item (:bullet "- " :begin 135 :end 211 :contents-begin 137 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 135 :tag nil :mode item :granularity nil :parent (plain-list (:type unordered :begin 101 :end 211 :contents-begin 101 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 101 :mode planning :granularity nil :parent (section (:begin 101 :end 212 :contents-begin 101 :contents-end 211 :robust-begin 101 :robust-end 209 :post-blank 1 :post-affiliated 101 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 23 :end 212 :pre-blank 0 :contents-begin 101 :contents-end 211 :robust-begin 103 :robust-end 209 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 23 :title (#("Table of Contents" 0 17 (:parent #82))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 23 :contents-begin 1 :contents-end 22 :robust-begin 1 :robust-end 20 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #128) (keyword (:key "TITLE" :value "Testing GN2" :begin 1 :end 22 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #131))) #82 (headline (:raw-value "Introduction" :begin 212 :end 1055 :pre-blank 1 :contents-begin 228 :contents-end 1054 :robust-begin 230 :robust-end 1052 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 212 :title (#("Introduction" 0 12 (:parent #133))) :mode nil :granularity nil :parent #128) (section (:begin 228 :end 1055 :contents-begin 228 :contents-end 1054 :robust-begin 228 :robust-end 1052 :post-blank 1 :post-affiliated 228 :mode section :granularity nil :parent #133) (paragraph (:begin 228 :end 578 :contents-begin 228 :contents-end 577 :post-blank 1 :post-affiliated 228 :mode planning :granularity nil :parent #136) #("For integration testing, we currently use " 0 42 (:parent #139)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/tree/testing/test/requests" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/tree/testing/test/requests" :application nil :search-option nil :begin 270 :end 360 :contents-begin 344 :contents-end 357 :post-blank 1 :parent #139) #("Mechanica Rob" 0 13 (:parent #143))) #("against the\nsmall " 0 18 (:parent #139)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :application nil :search-option nil :begin 378 :end 465 :contents-begin 455 :contents-end 463 :post-blank 0 :parent #139) #("database" 0 8 (:parent #145))) #("; a setup we call Mechanical Rob because it emulates\nsomeone clicking through the website and checking results.\n" 0 112 (:parent #139))) (paragraph (:begin 578 :end 785 :contents-begin 578 :contents-end 784 :post-blank 1 :post-affiliated 578 :mode nil :granularity nil :parent #136) #("These scripts invoke calls to a running webserver and test the response.\nIf a page changes or breaks, tests will fail. In principle, Mechanical\nRob runs before code merges get committed to the main server.\n" 0 206 (:parent #140))) (paragraph (:begin 785 :end 1054 :contents-begin 785 :contents-end 1054 :post-blank 0 :post-affiliated 785 :mode nil :granularity nil :parent #136) #("For unit tests, we use python's " 0 32 (:parent #141)) (verbatim (:begin 817 :end 828 :post-blank 1 :value "unittest" :parent #141)) #("framework. Coverage reports\nget generated using " 0 48 (:parent #141)) (link (:type "https" :path "//coverage.readthedocs.io/en/coverage-5.2.1/" :format bracket :raw-link "https://coverage.readthedocs.io/en/coverage-5.2.1/" :application nil :search-option nil :begin 876 :end 944 :contents-begin 930 :contents-end 941 :post-blank 1 :parent #141) #("coverage.py" 0 11 (:parent #147))) #("which you could also use to run\nunit tests. When adding new functionality, it is advisable to add\nunit tests.\n" 0 110 (:parent #141))))) (headline (:raw-value "Run tests" :begin 1055 :end 2404 :pre-blank 1 :contents-begin 1068 :contents-end 2404 :robust-begin 1070 :robust-end 2402 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1055 :title (#("Run tests" 0 9 (:parent #134))) :mode nil :granularity nil :parent #128) (headline (:raw-value "Setup" :begin 1068 :end 1209 :pre-blank 1 :contents-begin 1078 :contents-end 1208 :robust-begin 1080 :robust-end 1206 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1068 :title (#("Setup" 0 5 (:parent #137))) :mode section :granularity nil :parent #134) (section (:begin 1078 :end 1209 :contents-begin 1078 :contents-end 1208 :robust-begin 1078 :robust-end 1206 :post-blank 1 :post-affiliated 1078 :mode section :granularity nil :parent #137) (paragraph (:begin 1078 :end 1141 :contents-begin 1078 :contents-end 1140 :post-blank 1 :post-affiliated 1078 :mode planning :granularity nil :parent #140) #("Everything required for testing is already package with guix:\n" 0 62 (:parent #143))) (fixed-width (:begin 1141 :end 1208 :value "./pre-ins-env guix package -i genenetwork2 -p ~/opt/genenetwork2" :post-blank 1 :post-affiliated 1141 :mode nil :granularity nil :parent #140)))) (headline (:raw-value "Running" :begin 1209 :end 2404 :pre-blank 1 :contents-begin 1221 :contents-end 2404 :robust-begin 1223 :robust-end 2402 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1209 :title (#("Running" 0 7 (:parent #138))) :mode nil :granularity nil :parent #134) (section (:begin 1221 :end 2404 :contents-begin 1221 :contents-end 2404 :robust-begin 1221 :robust-end 2402 :post-blank 0 :post-affiliated 1221 :mode section :granularity nil :parent #138) (paragraph (:begin 1221 :end 1329 :contents-begin 1221 :contents-end 1328 :post-blank 1 :post-affiliated 1221 :mode planning :granularity nil :parent #141) #("Run the tests from the root of the genenetwork2 source tree as. Ensure\nthat Redis and Mariadb are running.\n" 0 107 (:parent #144))) (paragraph (:begin 1329 :end 1352 :contents-begin 1329 :contents-end 1352 :post-blank 0 :post-affiliated 1329 :mode nil :granularity nil :parent #141) #("To run Mechanical Rob:\n" 0 23 (:parent #145))) (fixed-width (:begin 1352 :end 1590 :value "time env GN2_PROFILE=~/opt/genenetwork2 TMPDIR=~/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -c ~/projects/genenetwork2/test/requests/test-website.py -a http://localhost:5004" :post-blank 2 :post-affiliated 1352 :mode nil :granularity nil :parent #141)) (paragraph (:begin 1590 :end 1637 :contents-begin 1590 :contents-end 1636 :post-blank 1 :post-affiliated 1590 :mode nil :granularity nil :parent #141) #("Use these aliases for the following examples.\n" 0 46 (:parent #147))) (src-block (:language "sh" :switches nil :parameters nil :begin 1637 :end 1970 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "alias runpython=\"env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2\"\n\nalias runcmd=\"time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -cli\"\n" :post-blank 1 :post-affiliated 1637 :mode nil :granularity nil :parent #141)) (paragraph (:begin 1970 :end 2026 :contents-begin 1970 :contents-end 2025 :post-blank 1 :post-affiliated 1970 :mode nil :granularity nil :parent #141) #("You could use them in your " 0 27 (:parent #149)) (verbatim (:begin 1997 :end 2007 :post-blank 1 :value ".bashrc" :parent #149)) #("or " 0 3 (:parent #149)) (verbatim (:begin 2010 :end 2019 :post-blank 1 :value ".zshrc" :parent #149)) #("file.\n" 0 6 (:parent #149))) (paragraph (:begin 2026 :end 2046 :contents-begin 2026 :contents-end 2045 :post-blank 1 :post-affiliated 2026 :mode nil :granularity nil :parent #141) #("To run unit tests:\n" 0 19 (:parent #150))) (fixed-width (:begin 2046 :end 2083 :value "runpython -m unittest discover -v" :post-blank 2 :post-affiliated 2046 :mode nil :granularity nil :parent #141)) (paragraph (:begin 2083 :end 2126 :contents-begin 2083 :contents-end 2125 :post-blank 1 :post-affiliated 2083 :mode nil :granularity nil :parent #141) #("Or alternatively using the coverage tool:\n" 0 42 (:parent #152))) (fixed-width (:begin 2126 :end 2173 :value "runcmd coverage run -m unittest discover -v" :post-blank 2 :post-affiliated 2126 :mode nil :granularity nil :parent #141)) (paragraph (:begin 2173 :end 2244 :contents-begin 2173 :contents-end 2243 :post-blank 1 :post-affiliated 2173 :mode nil :granularity nil :parent #141) #("To generate a html coverage report in " 0 38 (:parent #154)) (verbatim (:begin 2211 :end 2242 :post-blank 0 :value "wqflask/coverage_html_report/" :parent #154)) #("\n" 0 1 (:parent #154))) (fixed-width (:begin 2244 :end 2268 :value "runcmd coverage html" :post-blank 2 :post-affiliated 2244 :mode nil :granularity nil :parent #141)) (paragraph (:begin 2268 :end 2303 :contents-begin 2268 :contents-end 2302 :post-blank 1 :post-affiliated 2268 :mode nil :granularity nil :parent #141) #("To output the report to " 0 24 (:parent #156)) (verbatim (:begin 2292 :end 2300 :post-blank 0 :value "STDOUT" :parent #156)) #(":\n" 0 2 (:parent #156))) (fixed-width (:begin 2303 :end 2329 :value "runcmd coverage report" :post-blank 2 :post-affiliated 2303 :mode nil :granularity nil :parent #141)) (paragraph (:begin 2329 :end 2404 :contents-begin 2329 :contents-end 2404 :post-blank 0 :post-affiliated 2329 :mode nil :granularity nil :parent #141) #("All the configs for running the coverage tool are in\n" 0 53 (:parent #158)) (verbatim (:begin 2382 :end 2403 :post-blank 0 :value "wqflask/.coveragerc" :parent #158)) #("\n" 0 1 (:parent #158)))))))) #58)) #34)) . #0)) (paragraph (:begin 137 :end 163 :contents-begin 137 :contents-end 163 :post-blank 0 :post-affiliated 137 :mode nil :granularity nil :parent #2) (link (:type "custom-id" :path "run-tests" :format bracket :raw-link "#run-tests" :application nil :search-option nil :begin 137 :end 162 :contents-begin 151 :contents-end 160 :post-blank 0 :parent #5) #("Run tests" 0 9 (:parent #8))) #("\n" 0 1 (:parent #5))) (plain-list (:type unordered :begin 163 :end 211 :contents-begin 163 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 163 :mode nil :granularity nil :parent #2) (item (:bullet "- " :begin 163 :end 185 :contents-begin 167 :contents-end 185 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 163 :tag nil :mode item :granularity nil :parent #6) (paragraph (:begin 167 :end 185 :contents-begin 167 :contents-end 185 :post-blank 0 :post-affiliated 167 :mode nil :granularity nil :parent #9) (link (:type "custom-id" :path "setup" :format bracket :raw-link "#setup" :application nil :search-option nil :begin 167 :end 184 :contents-begin 177 :contents-end 182 :post-blank 0 :parent #12) #("Setup" 0 5 (:parent #15))) #("\n" 0 1 (:parent #12)))) (item (:bullet "- " :begin 185 :end 211 :contents-begin 189 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 185 :tag nil :mode item :granularity nil :parent #6) (paragraph (:begin 189 :end 211 :contents-begin 189 :contents-end 211 :post-blank 0 :post-affiliated 189 :mode nil :granularity nil :parent #10) (link (:type "custom-id" :path "running" :format bracket :raw-link "#running" :application nil :search-option nil :begin 189 :end 210 :contents-begin 201 :contents-end 208 :post-blank 0 :parent #13) #("Running" 0 7 (:parent #16))) #("\n" 0 1 (:parent #13))))))) "") org-export-data((plain-list (:type unordered :begin 101 :end 211 :contents-begin 101 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 101 :mode planning :granularity nil :parent (section (:begin 101 :end 212 :contents-begin 101 :contents-end 211 :robust-begin 101 :robust-end 209 :post-blank 1 :post-affiliated 101 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 23 :end 212 :pre-blank 0 :contents-begin 101 :contents-end 211 :robust-begin 103 :robust-end 209 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 23 :title (#("Table of Contents" 0 17 (:parent #48))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 23 :contents-begin 1 :contents-end 22 :robust-begin 1 :robust-end 20 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #94) (keyword (:key "TITLE" :value "Testing GN2" :begin 1 :end 22 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #97))) #48 (headline (:raw-value "Introduction" :begin 212 :end 1055 :pre-blank 1 :contents-begin 228 :contents-end 1054 :robust-begin 230 :robust-end 1052 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 212 :title (#("Introduction" 0 12 (:parent #99))) :mode nil :granularity nil :parent #94) (section (:begin 228 :end 1055 :contents-begin 228 :contents-end 1054 :robust-begin 228 :robust-end 1052 :post-blank 1 :post-affiliated 228 :mode section :granularity nil :parent #99) (paragraph (:begin 228 :end 578 :contents-begin 228 :contents-end 577 :post-blank 1 :post-affiliated 228 :mode planning :granularity nil :parent #102) #("For integration testing, we currently use " 0 42 (:parent #105)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/tree/testing/test/requests" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/tree/testing/test/requests" :application nil :search-option nil :begin 270 :end 360 :contents-begin 344 :contents-end 357 :post-blank 1 :parent #105) #("Mechanica Rob" 0 13 (:parent #109))) #("against the\nsmall " 0 18 (:parent #105)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :application nil :search-option nil :begin 378 :end 465 :contents-begin 455 :contents-end 463 :post-blank 0 :parent #105) #("database" 0 8 (:parent #111))) #("; a setup we call Mechanical Rob because it emulates\nsomeone clicking through the website and checking results.\n" 0 112 (:parent #105))) (paragraph (:begin 578 :end 785 :contents-begin 578 :contents-end 784 :post-blank 1 :post-affiliated 578 :mode nil :granularity nil :parent #102) #("These scripts invoke calls to a running webserver and test the response.\nIf a page changes or breaks, tests will fail. In principle, Mechanical\nRob runs before code merges get committed to the main server.\n" 0 206 (:parent #106))) (paragraph (:begin 785 :end 1054 :contents-begin 785 :contents-end 1054 :post-blank 0 :post-affiliated 785 :mode nil :granularity nil :parent #102) #("For unit tests, we use python's " 0 32 (:parent #107)) (verbatim (:begin 817 :end 828 :post-blank 1 :value "unittest" :parent #107)) #("framework. Coverage reports\nget generated using " 0 48 (:parent #107)) (link (:type "https" :path "//coverage.readthedocs.io/en/coverage-5.2.1/" :format bracket :raw-link "https://coverage.readthedocs.io/en/coverage-5.2.1/" :application nil :search-option nil :begin 876 :end 944 :contents-begin 930 :contents-end 941 :post-blank 1 :parent #107) #("coverage.py" 0 11 (:parent #113))) #("which you could also use to run\nunit tests. When adding new functionality, it is advisable to add\nunit tests.\n" 0 110 (:parent #107))))) (headline (:raw-value "Run tests" :begin 1055 :end 2404 :pre-blank 1 :contents-begin 1068 :contents-end 2404 :robust-begin 1070 :robust-end 2402 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1055 :title (#("Run tests" 0 9 (:parent #100))) :mode nil :granularity nil :parent #94) (headline (:raw-value "Setup" :begin 1068 :end 1209 :pre-blank 1 :contents-begin 1078 :contents-end 1208 :robust-begin 1080 :robust-end 1206 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1068 :title (#("Setup" 0 5 (:parent #103))) :mode section :granularity nil :parent #100) (section (:begin 1078 :end 1209 :contents-begin 1078 :contents-end 1208 :robust-begin 1078 :robust-end 1206 :post-blank 1 :post-affiliated 1078 :mode section :granularity nil :parent #103) (paragraph (:begin 1078 :end 1141 :contents-begin 1078 :contents-end 1140 :post-blank 1 :post-affiliated 1078 :mode planning :granularity nil :parent #106) #("Everything required for testing is already package with guix:\n" 0 62 (:parent #109))) (fixed-width (:begin 1141 :end 1208 :value "./pre-ins-env guix package -i genenetwork2 -p ~/opt/genenetwork2" :post-blank 1 :post-affiliated 1141 :mode nil :granularity nil :parent #106)))) (headline (:raw-value "Running" :begin 1209 :end 2404 :pre-blank 1 :contents-begin 1221 :contents-end 2404 :robust-begin 1223 :robust-end 2402 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1209 :title (#("Running" 0 7 (:parent #104))) :mode nil :granularity nil :parent #100) (section (:begin 1221 :end 2404 :contents-begin 1221 :contents-end 2404 :robust-begin 1221 :robust-end 2402 :post-blank 0 :post-affiliated 1221 :mode section :granularity nil :parent #104) (paragraph (:begin 1221 :end 1329 :contents-begin 1221 :contents-end 1328 :post-blank 1 :post-affiliated 1221 :mode planning :granularity nil :parent #107) #("Run the tests from the root of the genenetwork2 source tree as. Ensure\nthat Redis and Mariadb are running.\n" 0 107 (:parent #110))) (paragraph (:begin 1329 :end 1352 :contents-begin 1329 :contents-end 1352 :post-blank 0 :post-affiliated 1329 :mode nil :granularity nil :parent #107) #("To run Mechanical Rob:\n" 0 23 (:parent #111))) (fixed-width (:begin 1352 :end 1590 :value "time env GN2_PROFILE=~/opt/genenetwork2 TMPDIR=~/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -c ~/projects/genenetwork2/test/requests/test-website.py -a http://localhost:5004" :post-blank 2 :post-affiliated 1352 :mode nil :granularity nil :parent #107)) (paragraph (:begin 1590 :end 1637 :contents-begin 1590 :contents-end 1636 :post-blank 1 :post-affiliated 1590 :mode nil :granularity nil :parent #107) #("Use these aliases for the following examples.\n" 0 46 (:parent #113))) (src-block (:language "sh" :switches nil :parameters nil :begin 1637 :end 1970 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "alias runpython=\"env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2\"\n\nalias runcmd=\"time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -cli\"\n" :post-blank 1 :post-affiliated 1637 :mode nil :granularity nil :parent #107)) (paragraph (:begin 1970 :end 2026 :contents-begin 1970 :contents-end 2025 :post-blank 1 :post-affiliated 1970 :mode nil :granularity nil :parent #107) #("You could use them in your " 0 27 (:parent #115)) (verbatim (:begin 1997 :end 2007 :post-blank 1 :value ".bashrc" :parent #115)) #("or " 0 3 (:parent #115)) (verbatim (:begin 2010 :end 2019 :post-blank 1 :value ".zshrc" :parent #115)) #("file.\n" 0 6 (:parent #115))) (paragraph (:begin 2026 :end 2046 :contents-begin 2026 :contents-end 2045 :post-blank 1 :post-affiliated 2026 :mode nil :granularity nil :parent #107) #("To run unit tests:\n" 0 19 (:parent #116))) (fixed-width (:begin 2046 :end 2083 :value "runpython -m unittest discover -v" :post-blank 2 :post-affiliated 2046 :mode nil :granularity nil :parent #107)) (paragraph (:begin 2083 :end 2126 :contents-begin 2083 :contents-end 2125 :post-blank 1 :post-affiliated 2083 :mode nil :granularity nil :parent #107) #("Or alternatively using the coverage tool:\n" 0 42 (:parent #118))) (fixed-width (:begin 2126 :end 2173 :value "runcmd coverage run -m unittest discover -v" :post-blank 2 :post-affiliated 2126 :mode nil :granularity nil :parent #107)) (paragraph (:begin 2173 :end 2244 :contents-begin 2173 :contents-end 2243 :post-blank 1 :post-affiliated 2173 :mode nil :granularity nil :parent #107) #("To generate a html coverage report in " 0 38 (:parent #120)) (verbatim (:begin 2211 :end 2242 :post-blank 0 :value "wqflask/coverage_html_report/" :parent #120)) #("\n" 0 1 (:parent #120))) (fixed-width (:begin 2244 :end 2268 :value "runcmd coverage html" :post-blank 2 :post-affiliated 2244 :mode nil :granularity nil :parent #107)) (paragraph (:begin 2268 :end 2303 :contents-begin 2268 :contents-end 2302 :post-blank 1 :post-affiliated 2268 :mode nil :granularity nil :parent #107) #("To output the report to " 0 24 (:parent #122)) (verbatim (:begin 2292 :end 2300 :post-blank 0 :value "STDOUT" :parent #122)) #(":\n" 0 2 (:parent #122))) (fixed-width (:begin 2303 :end 2329 :value "runcmd coverage report" :post-blank 2 :post-affiliated 2303 :mode nil :granularity nil :parent #107)) (paragraph (:begin 2329 :end 2404 :contents-begin 2329 :contents-end 2404 :post-blank 0 :post-affiliated 2329 :mode nil :granularity nil :parent #107) #("All the configs for running the coverage tool are in\n" 0 53 (:parent #124)) (verbatim (:begin 2382 :end 2403 :post-blank 0 :value "wqflask/.coveragerc" :parent #124)) #("\n" 0 1 (:parent #124)))))))) #24)) #0)) (item (:bullet "- " :begin 101 :end 135 :contents-begin 103 :contents-end 135 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 101 :tag nil :mode item :granularity nil :parent #0) (paragraph (:begin 103 :end 135 :contents-begin 103 :contents-end 135 :post-blank 0 :post-affiliated 103 :mode nil :granularity nil :parent #3) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 103 :end 134 :contents-begin 120 :contents-end 132 :post-blank 0 :parent #6) #("Introduction" 0 12 (:parent #9))) #("\n" 0 1 (:parent #6)))) (item (:bullet "- " :begin 135 :end 211 :contents-begin 137 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 135 :tag nil :mode item :granularity nil :parent #0) (paragraph (:begin 137 :end 163 :contents-begin 137 :contents-end 163 :post-blank 0 :post-affiliated 137 :mode nil :granularity nil :parent #4) (link (:type "custom-id" :path "run-tests" :format bracket :raw-link "#run-tests" :application nil :search-option nil :begin 137 :end 162 :contents-begin 151 :contents-end 160 :post-blank 0 :parent #7) #("Run tests" 0 9 (:parent #10))) #("\n" 0 1 (:parent #7))) (plain-list (:type unordered :begin 163 :end 211 :contents-begin 163 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 163 :mode nil :granularity nil :parent #4) (item (:bullet "- " :begin 163 :end 185 :contents-begin 167 :contents-end 185 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 163 :tag nil :mode item :granularity nil :parent #8) (paragraph (:begin 167 :end 185 :contents-begin 167 :contents-end 185 :post-blank 0 :post-affiliated 167 :mode nil :granularity nil :parent #11) (link (:type "custom-id" :path "setup" :format bracket :raw-link "#setup" :application nil :search-option nil :begin 167 :end 184 :contents-begin 177 :contents-end 182 :post-blank 0 :parent #14) #("Setup" 0 5 (:parent #17))) #("\n" 0 1 (:parent #14)))) (item (:bullet "- " :begin 185 :end 211 :contents-begin 189 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 185 :tag nil :mode item :granularity nil :parent #8) (paragraph (:begin 189 :end 211 :contents-begin 189 :contents-end 211 :post-blank 0 :post-affiliated 189 :mode nil :granularity nil :parent #12) (link (:type "custom-id" :path "running" :format bracket :raw-link "#running" :application nil :search-option nil :begin 189 :end 210 :contents-begin 201 :contents-end 208 :post-blank 0 :parent #15) #("Running" 0 7 (:parent #18))) #("\n" 0 1 (:parent #15))))))) (:export-options (body-only) :back-end #s(org-export-backend :name html :parent nil :transcoders ((bold . org-html-bold) (center-block . org-html-center-block) (clock . org-html-clock) (code . org-html-code) (drawer . org-html-drawer) (dynamic-block . org-html-dynamic-block) (entity . org-html-entity) (example-block . org-html-example-block) (export-block . org-html-export-block) (export-snippet . org-html-export-snippet) (fixed-width . org-html-fixed-width) (footnote-reference . org-html-footnote-reference) (headline . org-html-headline) (horizontal-rule . org-html-horizontal-rule) (inline-src-block . org-html-inline-src-block) (inlinetask . org-html-inlinetask) (inner-template . org-html-inner-template) (italic . org-html-italic) (item . org-html-item) (keyword . org-html-keyword) (latex-environment . org-html-latex-environment) (latex-fragment . org-html-latex-fragment) (line-break . org-html-line-break) (link . org-html-link) (node-property . org-html-node-property) (paragraph . org-html-paragraph) (plain-list . org-html-plain-list) (plain-text . org-html-plain-text) (planning . org-html-planning) (property-drawer . org-html-property-drawer) (quote-block . org-html-quote-block) (radio-target . org-html-radio-target) (section . org-html-section) (special-block . org-html-special-block) (src-block . org-html-src-block) (statistics-cookie . org-html-statistics-cookie) (strike-through . org-html-strike-through) (subscript . org-html-subscript) (superscript . org-html-superscript) (table . org-html-table) (table-cell . org-html-table-cell) (table-row . org-html-table-row) (target . org-html-target) (template . org-html-template) (timestamp . org-html-timestamp) (underline . org-html-underline) (verbatim . org-html-verbatim) (verse-block . org-html-verse-block)) :options ((:html-doctype "HTML_DOCTYPE" nil org-html-doctype) (:html-container "HTML_CONTAINER" nil org-html-container-element) (:html-content-class "HTML_CONTENT_CLASS" nil org-html-content-class) (:description "DESCRIPTION" nil nil newline) (:keywords "KEYWORDS" nil nil space) (:html-html5-fancy nil "html5-fancy" org-html-html5-fancy) (:html-link-use-abs-url nil "html-link-use-abs-url" org-html-link-use-abs-url) (:html-link-home "HTML_LINK_HOME" nil org-html-link-home) (:html-link-up "HTML_LINK_UP" nil org-html-link-up) (:html-mathjax "HTML_MATHJAX" nil "" space) (:html-equation-reference-format "HTML_EQUATION_REFERENCE_FORMAT" nil org-html-equation-reference-format t) (:html-postamble nil "html-postamble" org-html-postamble) (:html-preamble nil "html-preamble" org-html-preamble) (:html-head "HTML_HEAD" nil org-html-head newline) (:html-head-extra "HTML_HEAD_EXTRA" nil org-html-head-extra newline) (:subtitle "SUBTITLE" nil nil parse) (:html-head-include-default-style nil "html-style" org-html-head-include-default-style) (:html-head-include-scripts nil "html-scripts" org-html-head-include-scripts) (:html-allow-name-attribute-in-anchors nil nil org-html-allow-name-attribute-in-anchors) (:html-divs nil nil org-html-divs) (:html-checkbox-type nil nil org-html-checkbox-type) (:html-extension nil nil org-html-extension) (:html-footnote-format nil nil org-html-footnote-format) (:html-footnote-separator nil nil org-html-footnote-separator) (:html-footnotes-section nil nil org-html-footnotes-section) (:html-format-drawer-function nil nil org-html-format-drawer-function) (:html-format-headline-function nil nil org-html-format-headline-function) (:html-format-inlinetask-function nil nil org-html-format-inlinetask-function) (:html-home/up-format nil nil org-html-home/up-format) (:html-indent nil nil org-html-indent) (:html-infojs-options nil nil org-html-infojs-options) (:html-infojs-template nil nil org-html-infojs-template) (:html-inline-image-rules nil nil org-html-inline-image-rules) (:html-link-org-files-as-html nil nil org-html-link-org-files-as-html) (:html-mathjax-options nil nil org-html-mathjax-options) (:html-mathjax-template nil nil org-html-mathjax-template) (:html-metadata-timestamp-format nil nil org-html-metadata-timestamp-format) (:html-postamble-format nil nil org-html-postamble-format) (:html-preamble-format nil nil org-html-preamble-format) (:html-prefer-user-labels nil nil org-html-prefer-user-labels) (:html-self-link-headlines nil nil org-html-self-link-headlines) (:html-table-align-individual-fields nil nil org-html-table-align-individual-fields) (:html-table-caption-above nil nil org-html-table-caption-above) (:html-table-data-tags nil nil org-html-table-data-tags) (:html-table-header-tags nil nil org-html-table-header-tags) (:html-table-use-header-tags-for-first-column nil nil org-html-table-use-header-tags-for-first-column) (:html-tag-class-prefix nil nil org-html-tag-class-prefix) (:html-text-markup-alist nil nil org-html-text-markup-alist) (:html-todo-kwd-class-prefix nil nil org-html-todo-kwd-class-prefix) (:html-toplevel-hlevel nil nil org-html-toplevel-hlevel) (:html-use-infojs nil nil org-html-use-infojs) (:html-validation-link nil nil org-html-validation-link) (:html-viewport nil nil org-html-viewport) (:html-inline-images nil nil org-html-inline-images) (:html-table-attributes nil nil org-html-table-default-attributes) (:html-table-row-open-tag nil nil org-html-table-row-open-tag) (:html-table-row-close-tag nil nil org-html-table-row-close-tag) (:html-xml-declaration nil nil org-html-xml-declaration) (:html-wrap-src-lines nil nil org-html-wrap-src-lines) (:html-klipsify-src nil nil org-html-klipsify-src) (:html-klipse-css nil nil org-html-klipse-css) (:html-klipse-js nil nil org-html-klipse-js) (:html-klipse-selection-script nil nil org-html-klipse-selection-script) (:infojs-opt "INFOJS_OPT" nil nil) (:creator "CREATOR" nil org-html-creator-string) (:with-latex nil "tex" org-html-with-latex) (:latex-header "LATEX_HEADER" nil nil newline)) :filters ((:filter-options . org-html-infojs-install-script) (:filter-parse-tree . org-html-image-link-filter) (:filter-final-output . org-html-final-function)) :blocks nil :menu (104 "Export to HTML" ((72 "As HTML buffer" org-html-export-as-html) (104 "As HTML file" org-html-export-to-html) (111 "As HTML file and open" (lambda (a s v b) (if a (org-html-export-to-html t s v b) (org-open-file (org-html-export-to-html nil s v b)))))))) :translate-alist ((bold . org-html-bold) (center-block . org-html-center-block) (clock . org-html-clock) (code . org-html-code) (drawer . org-html-drawer) (dynamic-block . org-html-dynamic-block) (entity . org-html-entity) (example-block . org-html-example-block) (export-block . org-html-export-block) (export-snippet . org-html-export-snippet) (fixed-width . org-html-fixed-width) (footnote-reference . org-html-footnote-reference) (headline . org-html-headline) (horizontal-rule . org-html-horizontal-rule) (inline-src-block . org-html-inline-src-block) (inlinetask . org-html-inlinetask) (inner-template . org-html-inner-template) (italic . org-html-italic) (item . org-html-item) (keyword . org-html-keyword) (latex-environment . org-html-latex-environment) (latex-fragment . org-html-latex-fragment) (line-break . org-html-line-break) (link . org-html-link) (node-property . org-html-node-property) (paragraph . org-html-paragraph) (plain-list . org-html-plain-list) (plain-text . org-html-plain-text) (planning . org-html-planning) (property-drawer . org-html-property-drawer) (quote-block . org-html-quote-block) (radio-target . org-html-radio-target) (section . org-html-section) (special-block . org-html-special-block) (src-block . org-html-src-block) (statistics-cookie . org-html-statistics-cookie) (strike-through . org-html-strike-through) (subscript . org-html-subscript) (superscript . org-html-superscript) (table . org-html-table) (table-cell . org-html-table-cell) (table-row . org-html-table-row) (target . org-html-target) (template . org-html-template) (timestamp . org-html-timestamp) (underline . org-html-underline) (verbatim . org-html-verbatim) (verse-block . org-html-verse-block)) :exported-data # :input-buffer " *temp*" :input-file nil :html-doctype "xhtml-strict" :html-container "div" :html-content-class "content" :description nil :keywords nil :html-html5-fancy nil :html-link-use-abs-url nil :html-link-home "" :html-link-up "" :html-mathjax "" :html-equation-reference-format "\\eqref{%s}" :html-postamble auto :html-preamble t :html-head "" :html-head-extra "" :subtitle nil :html-head-include-default-style t :html-head-include-scripts nil :html-allow-name-attribute-in-anchors nil :html-divs ((preamble "div" "preamble") (content "div" "content") (postamble "div" "postamble")) :html-checkbox-type ascii :html-extension "html" :html-footnote-format "%s" :html-footnote-separator ", " :html-footnotes-section "
\n

%s:

\n
\n%s\n
\n
" :html-format-drawer-function #f(compiled-function (name contents) #) :html-format-headline-function org-html-format-headline-default-function :html-format-inlinetask-function org-html-format-inlinetask-default-function :html-home/up-format "
\n UP \n |\n HOME \n
" :html-indent nil :html-infojs-options ((path . "https://orgmode.org/org-info.js") (view . "info") (toc . :with-toc) (ftoc . "0") (tdepth . "max") (sdepth . "max") (mouse . "underline") (buttons . "0") (ltoc . "1") (up . :html-link-up) (home . :html-link-home)) :html-infojs-template "\n\n" :html-inline-image-rules (("file" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)") ("http" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)") ("https" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)")) :html-link-org-files-as-html t :html-mathjax-options ((path "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js") (scale 1.0) (align "center") (font "mathjax-modern") (overflow "overflow") (tags "ams") (indent "0em") (multlinewidth "85%") (tagindent ".8em") (tagside "right")) :html-mathjax-template "\n\n\n" :html-metadata-timestamp-format "%Y-%m-%d %a %H:%M" :html-postamble-format (("en" "

Author: %a (%e)

\n

Date: %d

\n

%c

\n

%v

")) :html-preamble-format (("en" "")) :html-prefer-user-labels nil :html-self-link-headlines nil :html-table-align-individual-fields t :html-table-caption-above t :html-table-data-tags ("" . "") :html-table-header-tags ("" . "") :html-table-use-header-tags-for-first-column nil :html-tag-class-prefix "" :html-text-markup-alist ((bold . "%s") (code . "%s") (italic . "%s") (strike-through . "%s") (underline . "%s") (verbatim . "%s")) :html-todo-kwd-class-prefix "" :html-toplevel-hlevel 2 :html-use-infojs when-configured :html-validation-link "Validate" :html-viewport ((width "device-width") (initial-scale "1") (minimum-scale "") (maximum-scale "") (user-scalable "")) :html-inline-images t :html-table-attributes (:border "2" :cellspacing "0" :cellpadding "6" :rules "groups" :frame "hsides") :html-table-row-open-tag "" :html-table-row-close-tag "" :html-xml-declaration (("html" . "") ("php" . "\"; ?>")) :html-wrap-src-lines nil :html-klipsify-src nil :html-klipse-css "https://storage.googleapis.com/app.klipse.tech/css/codemirror.css" :html-klipse-js "https://storage.googleapis.com/app.klipse.tech/plugin_prod/js/klipse_plugin.min.js" :html-klipse-selection-script "window.klipse_settings = {selector_eval_html: '.src-html',\n selector_eval_js: '.src-js',\n selector_eval_python_client: '.src-python',\n selector_eval_scheme: '.src-scheme',\n selector: '.src-clojure',\n selector_eval_ruby: '.src-ruby'};" :infojs-opt nil :creator "Emacs 29.1 (Org mode 9.6.6)" :with-latex t :latex-header nil :title (#("Testing GN2" 0 11 (:parent #148))) :date nil :author (#("unknown" 0 7 (:parent #152))) :email "unknown@genenetwork-development" :language "en" :select-tags ("export") :exclude-tags ("noexport") :headline-levels 3 :preserve-breaks nil :section-numbers nil :time-stamp-file t :with-archived-trees headline :with-author t :with-broken-links nil :with-clocks nil :with-creator nil :with-date t :with-drawers (not "LOGBOOK") :with-email nil :with-emphasize t :with-entities t :with-fixed-width t :with-footnotes t :with-inlinetasks t :with-planning nil :with-priority nil :with-properties nil :with-smart-quotes nil :with-special-strings t :with-statistics-cookies t :with-sub-superscript t :with-toc nil :with-tables t :with-tags t :with-tasks t :with-timestamps t :with-title t :with-todo-keywords t :cite-export (basic nil nil) :bibliography nil :filter-body nil :filter-bold nil :filter-babel-call nil :filter-center-block nil :filter-clock nil :filter-code nil :filter-diary-sexp nil :filter-drawer nil :filter-dynamic-block nil :filter-entity nil :filter-example-block nil :filter-export-block nil :filter-export-snippet nil :filter-final-output (org-html-final-function) :filter-fixed-width nil :filter-footnote-definition nil :filter-footnote-reference nil :filter-headline nil :filter-horizontal-rule nil :filter-inline-babel-call nil :filter-inline-src-block nil :filter-inlinetask nil :filter-italic nil :filter-item nil :filter-keyword nil :filter-latex-environment nil :filter-latex-fragment nil :filter-line-break nil :filter-link nil :filter-node-property nil :filter-options (org-html-infojs-install-script) :filter-paragraph nil :filter-parse-tree (org-html-image-link-filter) :filter-plain-list nil :filter-plain-text nil :filter-planning nil :filter-property-drawer nil :filter-quote-block nil :filter-radio-target nil :filter-section nil :filter-special-block nil :filter-src-block nil :filter-statistics-cookie nil :filter-strike-through nil :filter-subscript nil :filter-superscript nil :filter-table nil :filter-table-cell nil :filter-table-row nil :filter-target nil :filter-timestamp nil :filter-underline nil :filter-verbatim nil :filter-verse-block nil :ignore-list nil :parse-tree (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 23 :contents-begin 1 :contents-end 22 :robust-begin 1 :robust-end 20 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #338) (keyword (:key "TITLE" :value "Testing GN2" :begin 1 :end 22 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #341))) (headline (:raw-value "Table of Contents" :begin 23 :end 212 :pre-blank 0 :contents-begin 101 :contents-end 211 :robust-begin 103 :robust-end 209 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 23 :title (#("Table of Contents" 0 17 (:parent #342))) :mode nil :granularity nil :parent #338) (section (:begin 101 :end 212 :contents-begin 101 :contents-end 211 :robust-begin 101 :robust-end 209 :post-blank 1 :post-affiliated 101 :mode section :granularity nil :parent #342) (plain-list (:type unordered :begin 101 :end 211 :contents-begin 101 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 101 :mode planning :granularity nil :parent #345) (item (:bullet "- " :begin 101 :end 135 :contents-begin 103 :contents-end 135 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 101 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 103 :end 135 :contents-begin 103 :contents-end 135 :post-blank 0 :post-affiliated 103 :mode nil :granularity nil :parent #351) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 103 :end 134 :contents-begin 120 :contents-end 132 :post-blank 0 :parent #354) #("Introduction" 0 12 (:parent #357))) #("\n" 0 1 (:parent #354)))) (item (:bullet "- " :begin 135 :end 211 :contents-begin 137 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 135 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 137 :end 163 :contents-begin 137 :contents-end 163 :post-blank 0 :post-affiliated 137 :mode nil :granularity nil :parent #352) (link (:type "custom-id" :path "run-tests" :format bracket :raw-link "#run-tests" :application nil :search-option nil :begin 137 :end 162 :contents-begin 151 :contents-end 160 :post-blank 0 :parent #355) #("Run tests" 0 9 (:parent #358))) #("\n" 0 1 (:parent #355))) (plain-list (:type unordered :begin 163 :end 211 :contents-begin 163 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 163 :mode nil :granularity nil :parent #352) (item (:bullet "- " :begin 163 :end 185 :contents-begin 167 :contents-end 185 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 163 :tag nil :mode item :granularity nil :parent #356) (paragraph (:begin 167 :end 185 :contents-begin 167 :contents-end 185 :post-blank 0 :post-affiliated 167 :mode nil :granularity nil :parent #359) (link (:type "custom-id" :path "setup" :format bracket :raw-link "#setup" :application nil :search-option nil :begin 167 :end 184 :contents-begin 177 :contents-end 182 :post-blank 0 :parent #362) #("Setup" 0 5 (:parent #365))) #("\n" 0 1 (:parent #362)))) (item (:bullet "- " :begin 185 :end 211 :contents-begin 189 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 185 :tag nil :mode item :granularity nil :parent #356) (paragraph (:begin 189 :end 211 :contents-begin 189 :contents-end 211 :post-blank 0 :post-affiliated 189 :mode nil :granularity nil :parent #360) (link (:type "custom-id" :path "running" :format bracket :raw-link "#running" :application nil :search-option nil :begin 189 :end 210 :contents-begin 201 :contents-end 208 :post-blank 0 :parent #363) #("Running" 0 7 (:parent #366))) #("\n" 0 1 (:parent #363))))))))) (headline (:raw-value "Introduction" :begin 212 :end 1055 :pre-blank 1 :contents-begin 228 :contents-end 1054 :robust-begin 230 :robust-end 1052 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 212 :title (#("Introduction" 0 12 (:parent #343))) :mode nil :granularity nil :parent #338) (section (:begin 228 :end 1055 :contents-begin 228 :contents-end 1054 :robust-begin 228 :robust-end 1052 :post-blank 1 :post-affiliated 228 :mode section :granularity nil :parent #343) (paragraph (:begin 228 :end 578 :contents-begin 228 :contents-end 577 :post-blank 1 :post-affiliated 228 :mode planning :granularity nil :parent #346) #("For integration testing, we currently use " 0 42 (:parent #349)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/tree/testing/test/requests" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/tree/testing/test/requests" :application nil :search-option nil :begin 270 :end 360 :contents-begin 344 :contents-end 357 :post-blank 1 :parent #349) #("Mechanica Rob" 0 13 (:parent #353))) #("against the\nsmall " 0 18 (:parent #349)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :application nil :search-option nil :begin 378 :end 465 :contents-begin 455 :contents-end 463 :post-blank 0 :parent #349) #("database" 0 8 (:parent #355))) #("; a setup we call Mechanical Rob because it emulates\nsomeone clicking through the website and checking results.\n" 0 112 (:parent #349))) (paragraph (:begin 578 :end 785 :contents-begin 578 :contents-end 784 :post-blank 1 :post-affiliated 578 :mode nil :granularity nil :parent #346) #("These scripts invoke calls to a running webserver and test the response.\nIf a page changes or breaks, tests will fail. In principle, Mechanical\nRob runs before code merges get committed to the main server.\n" 0 206 (:parent #350))) (paragraph (:begin 785 :end 1054 :contents-begin 785 :contents-end 1054 :post-blank 0 :post-affiliated 785 :mode nil :granularity nil :parent #346) #("For unit tests, we use python's " 0 32 (:parent #351)) (verbatim (:begin 817 :end 828 :post-blank 1 :value "unittest" :parent #351)) #("framework. Coverage reports\nget generated using " 0 48 (:parent #351)) (link (:type "https" :path "//coverage.readthedocs.io/en/coverage-5.2.1/" :format bracket :raw-link "https://coverage.readthedocs.io/en/coverage-5.2.1/" :application nil :search-option nil :begin 876 :end 944 :contents-begin 930 :contents-end 941 :post-blank 1 :parent #351) #("coverage.py" 0 11 (:parent #357))) #("which you could also use to run\nunit tests. When adding new functionality, it is advisable to add\nunit tests.\n" 0 110 (:parent #351))))) (headline (:raw-value "Run tests" :begin 1055 :end 2404 :pre-blank 1 :contents-begin 1068 :contents-end 2404 :robust-begin 1070 :robust-end 2402 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1055 :title (#("Run tests" 0 9 (:parent #344))) :mode nil :granularity nil :parent #338) (headline (:raw-value "Setup" :begin 1068 :end 1209 :pre-blank 1 :contents-begin 1078 :contents-end 1208 :robust-begin 1080 :robust-end 1206 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1068 :title (#("Setup" 0 5 (:parent #347))) :mode section :granularity nil :parent #344) (section (:begin 1078 :end 1209 :contents-begin 1078 :contents-end 1208 :robust-begin 1078 :robust-end 1206 :post-blank 1 :post-affiliated 1078 :mode section :granularity nil :parent #347) (paragraph (:begin 1078 :end 1141 :contents-begin 1078 :contents-end 1140 :post-blank 1 :post-affiliated 1078 :mode planning :granularity nil :parent #350) #("Everything required for testing is already package with guix:\n" 0 62 (:parent #353))) (fixed-width (:begin 1141 :end 1208 :value "./pre-ins-env guix package -i genenetwork2 -p ~/opt/genenetwork2" :post-blank 1 :post-affiliated 1141 :mode nil :granularity nil :parent #350)))) (headline (:raw-value "Running" :begin 1209 :end 2404 :pre-blank 1 :contents-begin 1221 :contents-end 2404 :robust-begin 1223 :robust-end 2402 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1209 :title (#("Running" 0 7 (:parent #348))) :mode nil :granularity nil :parent #344) (section (:begin 1221 :end 2404 :contents-begin 1221 :contents-end 2404 :robust-begin 1221 :robust-end 2402 :post-blank 0 :post-affiliated 1221 :mode section :granularity nil :parent #348) (paragraph (:begin 1221 :end 1329 :contents-begin 1221 :contents-end 1328 :post-blank 1 :post-affiliated 1221 :mode planning :granularity nil :parent #351) #("Run the tests from the root of the genenetwork2 source tree as. Ensure\nthat Redis and Mariadb are running.\n" 0 107 (:parent #354))) (paragraph (:begin 1329 :end 1352 :contents-begin 1329 :contents-end 1352 :post-blank 0 :post-affiliated 1329 :mode nil :granularity nil :parent #351) #("To run Mechanical Rob:\n" 0 23 (:parent #355))) (fixed-width (:begin 1352 :end 1590 :value "time env GN2_PROFILE=~/opt/genenetwork2 TMPDIR=~/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -c ~/projects/genenetwork2/test/requests/test-website.py -a http://localhost:5004" :post-blank 2 :post-affiliated 1352 :mode nil :granularity nil :parent #351)) (paragraph (:begin 1590 :end 1637 :contents-begin 1590 :contents-end 1636 :post-blank 1 :post-affiliated 1590 :mode nil :granularity nil :parent #351) #("Use these aliases for the following examples.\n" 0 46 (:parent #357))) (src-block (:language "sh" :switches nil :parameters nil :begin 1637 :end 1970 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "alias runpython=\"env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2\"\n\nalias runcmd=\"time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -cli\"\n" :post-blank 1 :post-affiliated 1637 :mode nil :granularity nil :parent #351)) (paragraph (:begin 1970 :end 2026 :contents-begin 1970 :contents-end 2025 :post-blank 1 :post-affiliated 1970 :mode nil :granularity nil :parent #351) #("You could use them in your " 0 27 (:parent #359)) (verbatim (:begin 1997 :end 2007 :post-blank 1 :value ".bashrc" :parent #359)) #("or " 0 3 (:parent #359)) (verbatim (:begin 2010 :end 2019 :post-blank 1 :value ".zshrc" :parent #359)) #("file.\n" 0 6 (:parent #359))) (paragraph (:begin 2026 :end 2046 :contents-begin 2026 :contents-end 2045 :post-blank 1 :post-affiliated 2026 :mode nil :granularity nil :parent #351) #("To run unit tests:\n" 0 19 (:parent #360))) (fixed-width (:begin 2046 :end 2083 :value "runpython -m unittest discover -v" :post-blank 2 :post-affiliated 2046 :mode nil :granularity nil :parent #351)) (paragraph (:begin 2083 :end 2126 :contents-begin 2083 :contents-end 2125 :post-blank 1 :post-affiliated 2083 :mode nil :granularity nil :parent #351) #("Or alternatively using the coverage tool:\n" 0 42 (:parent #362))) (fixed-width (:begin 2126 :end 2173 :value "runcmd coverage run -m unittest discover -v" :post-blank 2 :post-affiliated 2126 :mode nil :granularity nil :parent #351)) (paragraph (:begin 2173 :end 2244 :contents-begin 2173 :contents-end 2243 :post-blank 1 :post-affiliated 2173 :mode nil :granularity nil :parent #351) #("To generate a html coverage report in " 0 38 (:parent #364)) (verbatim (:begin 2211 :end 2242 :post-blank 0 :value "wqflask/coverage_html_report/" :parent #364)) #("\n" 0 1 (:parent #364))) (fixed-width (:begin 2244 :end 2268 :value "runcmd coverage html" :post-blank 2 :post-affiliated 2244 :mode nil :granularity nil :parent #351)) (paragraph (:begin 2268 :end 2303 :contents-begin 2268 :contents-end 2302 :post-blank 1 :post-affiliated 2268 :mode nil :granularity nil :parent #351) #("To output the report to " 0 24 (:parent #366)) (verbatim (:begin 2292 :end 2300 :post-blank 0 :value "STDOUT" :parent #366)) #(":\n" 0 2 (:parent #366))) (fixed-width (:begin 2303 :end 2329 :value "runcmd coverage report" :post-blank 2 :post-affiliated 2303 :mode nil :granularity nil :parent #351)) (paragraph (:begin 2329 :end 2404 :contents-begin 2329 :contents-end 2404 :post-blank 0 :post-affiliated 2329 :mode nil :granularity nil :parent #351) #("All the configs for running the coverage tool are in\n" 0 53 (:parent #368)) (verbatim (:begin 2382 :end 2403 :post-blank 0 :value "wqflask/.coveragerc" :parent #368)) #("\n" 0 1 (:parent #368))))))) :headline-offset 0 :headline-numbering nil :id-alist nil :citations nil :id-local-cache #)) #f(compiled-function (element) #)((plain-list (:type unordered :begin 101 :end 211 :contents-begin 101 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 101 :mode planning :granularity nil :parent (section (:begin 101 :end 212 :contents-begin 101 :contents-end 211 :robust-begin 101 :robust-end 209 :post-blank 1 :post-affiliated 101 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 23 :end 212 :pre-blank 0 :contents-begin 101 :contents-end 211 :robust-begin 103 :robust-end 209 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 23 :title (#("Table of Contents" 0 17 (:parent #48))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 23 :contents-begin 1 :contents-end 22 :robust-begin 1 :robust-end 20 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #94) (keyword (:key "TITLE" :value "Testing GN2" :begin 1 :end 22 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #97))) #48 (headline (:raw-value "Introduction" :begin 212 :end 1055 :pre-blank 1 :contents-begin 228 :contents-end 1054 :robust-begin 230 :robust-end 1052 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 212 :title (#("Introduction" 0 12 (:parent #99))) :mode nil :granularity nil :parent #94) (section (:begin 228 :end 1055 :contents-begin 228 :contents-end 1054 :robust-begin 228 :robust-end 1052 :post-blank 1 :post-affiliated 228 :mode section :granularity nil :parent #99) (paragraph (:begin 228 :end 578 :contents-begin 228 :contents-end 577 :post-blank 1 :post-affiliated 228 :mode planning :granularity nil :parent #102) #("For integration testing, we currently use " 0 42 (:parent #105)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/tree/testing/test/requests" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/tree/testing/test/requests" :application nil :search-option nil :begin 270 :end 360 :contents-begin 344 :contents-end 357 :post-blank 1 :parent #105) #("Mechanica Rob" 0 13 (:parent #109))) #("against the\nsmall " 0 18 (:parent #105)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :application nil :search-option nil :begin 378 :end 465 :contents-begin 455 :contents-end 463 :post-blank 0 :parent #105) #("database" 0 8 (:parent #111))) #("; a setup we call Mechanical Rob because it emulates\nsomeone clicking through the website and checking results.\n" 0 112 (:parent #105))) (paragraph (:begin 578 :end 785 :contents-begin 578 :contents-end 784 :post-blank 1 :post-affiliated 578 :mode nil :granularity nil :parent #102) #("These scripts invoke calls to a running webserver and test the response.\nIf a page changes or breaks, tests will fail. In principle, Mechanical\nRob runs before code merges get committed to the main server.\n" 0 206 (:parent #106))) (paragraph (:begin 785 :end 1054 :contents-begin 785 :contents-end 1054 :post-blank 0 :post-affiliated 785 :mode nil :granularity nil :parent #102) #("For unit tests, we use python's " 0 32 (:parent #107)) (verbatim (:begin 817 :end 828 :post-blank 1 :value "unittest" :parent #107)) #("framework. Coverage reports\nget generated using " 0 48 (:parent #107)) (link (:type "https" :path "//coverage.readthedocs.io/en/coverage-5.2.1/" :format bracket :raw-link "https://coverage.readthedocs.io/en/coverage-5.2.1/" :application nil :search-option nil :begin 876 :end 944 :contents-begin 930 :contents-end 941 :post-blank 1 :parent #107) #("coverage.py" 0 11 (:parent #113))) #("which you could also use to run\nunit tests. When adding new functionality, it is advisable to add\nunit tests.\n" 0 110 (:parent #107))))) (headline (:raw-value "Run tests" :begin 1055 :end 2404 :pre-blank 1 :contents-begin 1068 :contents-end 2404 :robust-begin 1070 :robust-end 2402 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1055 :title (#("Run tests" 0 9 (:parent #100))) :mode nil :granularity nil :parent #94) (headline (:raw-value "Setup" :begin 1068 :end 1209 :pre-blank 1 :contents-begin 1078 :contents-end 1208 :robust-begin 1080 :robust-end 1206 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1068 :title (#("Setup" 0 5 (:parent #103))) :mode section :granularity nil :parent #100) (section (:begin 1078 :end 1209 :contents-begin 1078 :contents-end 1208 :robust-begin 1078 :robust-end 1206 :post-blank 1 :post-affiliated 1078 :mode section :granularity nil :parent #103) (paragraph (:begin 1078 :end 1141 :contents-begin 1078 :contents-end 1140 :post-blank 1 :post-affiliated 1078 :mode planning :granularity nil :parent #106) #("Everything required for testing is already package with guix:\n" 0 62 (:parent #109))) (fixed-width (:begin 1141 :end 1208 :value "./pre-ins-env guix package -i genenetwork2 -p ~/opt/genenetwork2" :post-blank 1 :post-affiliated 1141 :mode nil :granularity nil :parent #106)))) (headline (:raw-value "Running" :begin 1209 :end 2404 :pre-blank 1 :contents-begin 1221 :contents-end 2404 :robust-begin 1223 :robust-end 2402 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1209 :title (#("Running" 0 7 (:parent #104))) :mode nil :granularity nil :parent #100) (section (:begin 1221 :end 2404 :contents-begin 1221 :contents-end 2404 :robust-begin 1221 :robust-end 2402 :post-blank 0 :post-affiliated 1221 :mode section :granularity nil :parent #104) (paragraph (:begin 1221 :end 1329 :contents-begin 1221 :contents-end 1328 :post-blank 1 :post-affiliated 1221 :mode planning :granularity nil :parent #107) #("Run the tests from the root of the genenetwork2 source tree as. Ensure\nthat Redis and Mariadb are running.\n" 0 107 (:parent #110))) (paragraph (:begin 1329 :end 1352 :contents-begin 1329 :contents-end 1352 :post-blank 0 :post-affiliated 1329 :mode nil :granularity nil :parent #107) #("To run Mechanical Rob:\n" 0 23 (:parent #111))) (fixed-width (:begin 1352 :end 1590 :value "time env GN2_PROFILE=~/opt/genenetwork2 TMPDIR=~/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -c ~/projects/genenetwork2/test/requests/test-website.py -a http://localhost:5004" :post-blank 2 :post-affiliated 1352 :mode nil :granularity nil :parent #107)) (paragraph (:begin 1590 :end 1637 :contents-begin 1590 :contents-end 1636 :post-blank 1 :post-affiliated 1590 :mode nil :granularity nil :parent #107) #("Use these aliases for the following examples.\n" 0 46 (:parent #113))) (src-block (:language "sh" :switches nil :parameters nil :begin 1637 :end 1970 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "alias runpython=\"env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2\"\n\nalias runcmd=\"time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -cli\"\n" :post-blank 1 :post-affiliated 1637 :mode nil :granularity nil :parent #107)) (paragraph (:begin 1970 :end 2026 :contents-begin 1970 :contents-end 2025 :post-blank 1 :post-affiliated 1970 :mode nil :granularity nil :parent #107) #("You could use them in your " 0 27 (:parent #115)) (verbatim (:begin 1997 :end 2007 :post-blank 1 :value ".bashrc" :parent #115)) #("or " 0 3 (:parent #115)) (verbatim (:begin 2010 :end 2019 :post-blank 1 :value ".zshrc" :parent #115)) #("file.\n" 0 6 (:parent #115))) (paragraph (:begin 2026 :end 2046 :contents-begin 2026 :contents-end 2045 :post-blank 1 :post-affiliated 2026 :mode nil :granularity nil :parent #107) #("To run unit tests:\n" 0 19 (:parent #116))) (fixed-width (:begin 2046 :end 2083 :value "runpython -m unittest discover -v" :post-blank 2 :post-affiliated 2046 :mode nil :granularity nil :parent #107)) (paragraph (:begin 2083 :end 2126 :contents-begin 2083 :contents-end 2125 :post-blank 1 :post-affiliated 2083 :mode nil :granularity nil :parent #107) #("Or alternatively using the coverage tool:\n" 0 42 (:parent #118))) (fixed-width (:begin 2126 :end 2173 :value "runcmd coverage run -m unittest discover -v" :post-blank 2 :post-affiliated 2126 :mode nil :granularity nil :parent #107)) (paragraph (:begin 2173 :end 2244 :contents-begin 2173 :contents-end 2243 :post-blank 1 :post-affiliated 2173 :mode nil :granularity nil :parent #107) #("To generate a html coverage report in " 0 38 (:parent #120)) (verbatim (:begin 2211 :end 2242 :post-blank 0 :value "wqflask/coverage_html_report/" :parent #120)) #("\n" 0 1 (:parent #120))) (fixed-width (:begin 2244 :end 2268 :value "runcmd coverage html" :post-blank 2 :post-affiliated 2244 :mode nil :granularity nil :parent #107)) (paragraph (:begin 2268 :end 2303 :contents-begin 2268 :contents-end 2302 :post-blank 1 :post-affiliated 2268 :mode nil :granularity nil :parent #107) #("To output the report to " 0 24 (:parent #122)) (verbatim (:begin 2292 :end 2300 :post-blank 0 :value "STDOUT" :parent #122)) #(":\n" 0 2 (:parent #122))) (fixed-width (:begin 2303 :end 2329 :value "runcmd coverage report" :post-blank 2 :post-affiliated 2303 :mode nil :granularity nil :parent #107)) (paragraph (:begin 2329 :end 2404 :contents-begin 2329 :contents-end 2404 :post-blank 0 :post-affiliated 2329 :mode nil :granularity nil :parent #107) #("All the configs for running the coverage tool are in\n" 0 53 (:parent #124)) (verbatim (:begin 2382 :end 2403 :post-blank 0 :value "wqflask/.coveragerc" :parent #124)) #("\n" 0 1 (:parent #124)))))))) #24)) #0)) (item (:bullet "- " :begin 101 :end 135 :contents-begin 103 :contents-end 135 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 101 :tag nil :mode item :granularity nil :parent #0) (paragraph (:begin 103 :end 135 :contents-begin 103 :contents-end 135 :post-blank 0 :post-affiliated 103 :mode nil :granularity nil :parent #3) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 103 :end 134 :contents-begin 120 :contents-end 132 :post-blank 0 :parent #6) #("Introduction" 0 12 (:parent #9))) #("\n" 0 1 (:parent #6)))) (item (:bullet "- " :begin 135 :end 211 :contents-begin 137 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 135 :tag nil :mode item :granularity nil :parent #0) (paragraph (:begin 137 :end 163 :contents-begin 137 :contents-end 163 :post-blank 0 :post-affiliated 137 :mode nil :granularity nil :parent #4) (link (:type "custom-id" :path "run-tests" :format bracket :raw-link "#run-tests" :application nil :search-option nil :begin 137 :end 162 :contents-begin 151 :contents-end 160 :post-blank 0 :parent #7) #("Run tests" 0 9 (:parent #10))) #("\n" 0 1 (:parent #7))) (plain-list (:type unordered :begin 163 :end 211 :contents-begin 163 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 163 :mode nil :granularity nil :parent #4) (item (:bullet "- " :begin 163 :end 185 :contents-begin 167 :contents-end 185 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 163 :tag nil :mode item :granularity nil :parent #8) (paragraph (:begin 167 :end 185 :contents-begin 167 :contents-end 185 :post-blank 0 :post-affiliated 167 :mode nil :granularity nil :parent #11) (link (:type "custom-id" :path "setup" :format bracket :raw-link "#setup" :application nil :search-option nil :begin 167 :end 184 :contents-begin 177 :contents-end 182 :post-blank 0 :parent #14) #("Setup" 0 5 (:parent #17))) #("\n" 0 1 (:parent #14)))) (item (:bullet "- " :begin 185 :end 211 :contents-begin 189 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 185 :tag nil :mode item :granularity nil :parent #8) (paragraph (:begin 189 :end 211 :contents-begin 189 :contents-end 211 :post-blank 0 :post-affiliated 189 :mode nil :granularity nil :parent #12) (link (:type "custom-id" :path "running" :format bracket :raw-link "#running" :application nil :search-option nil :begin 189 :end 210 :contents-begin 201 :contents-end 208 :post-blank 0 :parent #15) #("Running" 0 7 (:parent #18))) #("\n" 0 1 (:parent #15)))))))) mapconcat(#f(compiled-function (element) #) ((plain-list (:type unordered :begin 101 :end 211 :contents-begin 101 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 101 :mode planning :granularity nil :parent (section (:begin 101 :end 212 :contents-begin 101 :contents-end 211 :robust-begin 101 :robust-end 209 :post-blank 1 :post-affiliated 101 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 23 :end 212 :pre-blank 0 :contents-begin 101 :contents-end 211 :robust-begin 103 :robust-end 209 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 23 :title (#("Table of Contents" 0 17 (:parent #49))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 23 :contents-begin 1 :contents-end 22 :robust-begin 1 :robust-end 20 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #95) (keyword (:key "TITLE" :value "Testing GN2" :begin 1 :end 22 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #98))) #49 (headline (:raw-value "Introduction" :begin 212 :end 1055 :pre-blank 1 :contents-begin 228 :contents-end 1054 :robust-begin 230 :robust-end 1052 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 212 :title (#("Introduction" 0 12 (:parent #100))) :mode nil :granularity nil :parent #95) (section (:begin 228 :end 1055 :contents-begin 228 :contents-end 1054 :robust-begin 228 :robust-end 1052 :post-blank 1 :post-affiliated 228 :mode section :granularity nil :parent #100) (paragraph (:begin 228 :end 578 :contents-begin 228 :contents-end 577 :post-blank 1 :post-affiliated 228 :mode planning :granularity nil :parent #103) #("For integration testing, we currently use " 0 42 (:parent #106)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/tree/testing/test/requests" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/tree/testing/test/requests" :application nil :search-option nil :begin 270 :end 360 :contents-begin 344 :contents-end 357 :post-blank 1 :parent #106) #("Mechanica Rob" 0 13 (:parent #110))) #("against the\nsmall " 0 18 (:parent #106)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :application nil :search-option nil :begin 378 :end 465 :contents-begin 455 :contents-end 463 :post-blank 0 :parent #106) #("database" 0 8 (:parent #112))) #("; a setup we call Mechanical Rob because it emulates\nsomeone clicking through the website and checking results.\n" 0 112 (:parent #106))) (paragraph (:begin 578 :end 785 :contents-begin 578 :contents-end 784 :post-blank 1 :post-affiliated 578 :mode nil :granularity nil :parent #103) #("These scripts invoke calls to a running webserver and test the response.\nIf a page changes or breaks, tests will fail. In principle, Mechanical\nRob runs before code merges get committed to the main server.\n" 0 206 (:parent #107))) (paragraph (:begin 785 :end 1054 :contents-begin 785 :contents-end 1054 :post-blank 0 :post-affiliated 785 :mode nil :granularity nil :parent #103) #("For unit tests, we use python's " 0 32 (:parent #108)) (verbatim (:begin 817 :end 828 :post-blank 1 :value "unittest" :parent #108)) #("framework. Coverage reports\nget generated using " 0 48 (:parent #108)) (link (:type "https" :path "//coverage.readthedocs.io/en/coverage-5.2.1/" :format bracket :raw-link "https://coverage.readthedocs.io/en/coverage-5.2.1/" :application nil :search-option nil :begin 876 :end 944 :contents-begin 930 :contents-end 941 :post-blank 1 :parent #108) #("coverage.py" 0 11 (:parent #114))) #("which you could also use to run\nunit tests. When adding new functionality, it is advisable to add\nunit tests.\n" 0 110 (:parent #108))))) (headline (:raw-value "Run tests" :begin 1055 :end 2404 :pre-blank 1 :contents-begin 1068 :contents-end 2404 :robust-begin 1070 :robust-end 2402 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1055 :title (#("Run tests" 0 9 (:parent #101))) :mode nil :granularity nil :parent #95) (headline (:raw-value "Setup" :begin 1068 :end 1209 :pre-blank 1 :contents-begin 1078 :contents-end 1208 :robust-begin 1080 :robust-end 1206 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1068 :title (#("Setup" 0 5 (:parent #104))) :mode section :granularity nil :parent #101) (section (:begin 1078 :end 1209 :contents-begin 1078 :contents-end 1208 :robust-begin 1078 :robust-end 1206 :post-blank 1 :post-affiliated 1078 :mode section :granularity nil :parent #104) (paragraph (:begin 1078 :end 1141 :contents-begin 1078 :contents-end 1140 :post-blank 1 :post-affiliated 1078 :mode planning :granularity nil :parent #107) #("Everything required for testing is already package with guix:\n" 0 62 (:parent #110))) (fixed-width (:begin 1141 :end 1208 :value "./pre-ins-env guix package -i genenetwork2 -p ~/opt/genenetwork2" :post-blank 1 :post-affiliated 1141 :mode nil :granularity nil :parent #107)))) (headline (:raw-value "Running" :begin 1209 :end 2404 :pre-blank 1 :contents-begin 1221 :contents-end 2404 :robust-begin 1223 :robust-end 2402 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1209 :title (#("Running" 0 7 (:parent #105))) :mode nil :granularity nil :parent #101) (section (:begin 1221 :end 2404 :contents-begin 1221 :contents-end 2404 :robust-begin 1221 :robust-end 2402 :post-blank 0 :post-affiliated 1221 :mode section :granularity nil :parent #105) (paragraph (:begin 1221 :end 1329 :contents-begin 1221 :contents-end 1328 :post-blank 1 :post-affiliated 1221 :mode planning :granularity nil :parent #108) #("Run the tests from the root of the genenetwork2 source tree as. Ensure\nthat Redis and Mariadb are running.\n" 0 107 (:parent #111))) (paragraph (:begin 1329 :end 1352 :contents-begin 1329 :contents-end 1352 :post-blank 0 :post-affiliated 1329 :mode nil :granularity nil :parent #108) #("To run Mechanical Rob:\n" 0 23 (:parent #112))) (fixed-width (:begin 1352 :end 1590 :value "time env GN2_PROFILE=~/opt/genenetwork2 TMPDIR=~/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -c ~/projects/genenetwork2/test/requests/test-website.py -a http://localhost:5004" :post-blank 2 :post-affiliated 1352 :mode nil :granularity nil :parent #108)) (paragraph (:begin 1590 :end 1637 :contents-begin 1590 :contents-end 1636 :post-blank 1 :post-affiliated 1590 :mode nil :granularity nil :parent #108) #("Use these aliases for the following examples.\n" 0 46 (:parent #114))) (src-block (:language "sh" :switches nil :parameters nil :begin 1637 :end 1970 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "alias runpython=\"env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2\"\n\nalias runcmd=\"time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -cli\"\n" :post-blank 1 :post-affiliated 1637 :mode nil :granularity nil :parent #108)) (paragraph (:begin 1970 :end 2026 :contents-begin 1970 :contents-end 2025 :post-blank 1 :post-affiliated 1970 :mode nil :granularity nil :parent #108) #("You could use them in your " 0 27 (:parent #116)) (verbatim (:begin 1997 :end 2007 :post-blank 1 :value ".bashrc" :parent #116)) #("or " 0 3 (:parent #116)) (verbatim (:begin 2010 :end 2019 :post-blank 1 :value ".zshrc" :parent #116)) #("file.\n" 0 6 (:parent #116))) (paragraph (:begin 2026 :end 2046 :contents-begin 2026 :contents-end 2045 :post-blank 1 :post-affiliated 2026 :mode nil :granularity nil :parent #108) #("To run unit tests:\n" 0 19 (:parent #117))) (fixed-width (:begin 2046 :end 2083 :value "runpython -m unittest discover -v" :post-blank 2 :post-affiliated 2046 :mode nil :granularity nil :parent #108)) (paragraph (:begin 2083 :end 2126 :contents-begin 2083 :contents-end 2125 :post-blank 1 :post-affiliated 2083 :mode nil :granularity nil :parent #108) #("Or alternatively using the coverage tool:\n" 0 42 (:parent #119))) (fixed-width (:begin 2126 :end 2173 :value "runcmd coverage run -m unittest discover -v" :post-blank 2 :post-affiliated 2126 :mode nil :granularity nil :parent #108)) (paragraph (:begin 2173 :end 2244 :contents-begin 2173 :contents-end 2243 :post-blank 1 :post-affiliated 2173 :mode nil :granularity nil :parent #108) #("To generate a html coverage report in " 0 38 (:parent #121)) (verbatim (:begin 2211 :end 2242 :post-blank 0 :value "wqflask/coverage_html_report/" :parent #121)) #("\n" 0 1 (:parent #121))) (fixed-width (:begin 2244 :end 2268 :value "runcmd coverage html" :post-blank 2 :post-affiliated 2244 :mode nil :granularity nil :parent #108)) (paragraph (:begin 2268 :end 2303 :contents-begin 2268 :contents-end 2302 :post-blank 1 :post-affiliated 2268 :mode nil :granularity nil :parent #108) #("To output the report to " 0 24 (:parent #123)) (verbatim (:begin 2292 :end 2300 :post-blank 0 :value "STDOUT" :parent #123)) #(":\n" 0 2 (:parent #123))) (fixed-width (:begin 2303 :end 2329 :value "runcmd coverage report" :post-blank 2 :post-affiliated 2303 :mode nil :granularity nil :parent #108)) (paragraph (:begin 2329 :end 2404 :contents-begin 2329 :contents-end 2404 :post-blank 0 :post-affiliated 2329 :mode nil :granularity nil :parent #108) #("All the configs for running the coverage tool are in\n" 0 53 (:parent #125)) (verbatim (:begin 2382 :end 2403 :post-blank 0 :value "wqflask/.coveragerc" :parent #125)) #("\n" 0 1 (:parent #125)))))))) #25)) . #0)) (item (:bullet "- " :begin 101 :end 135 :contents-begin 103 :contents-end 135 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 101 :tag nil :mode item :granularity nil :parent #1) (paragraph (:begin 103 :end 135 :contents-begin 103 :contents-end 135 :post-blank 0 :post-affiliated 103 :mode nil :granularity nil :parent #4) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 103 :end 134 :contents-begin 120 :contents-end 132 :post-blank 0 :parent #7) #("Introduction" 0 12 (:parent #10))) #("\n" 0 1 (:parent #7)))) (item (:bullet "- " :begin 135 :end 211 :contents-begin 137 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 135 :tag nil :mode item :granularity nil :parent #1) (paragraph (:begin 137 :end 163 :contents-begin 137 :contents-end 163 :post-blank 0 :post-affiliated 137 :mode nil :granularity nil :parent #5) (link (:type "custom-id" :path "run-tests" :format bracket :raw-link "#run-tests" :application nil :search-option nil :begin 137 :end 162 :contents-begin 151 :contents-end 160 :post-blank 0 :parent #8) #("Run tests" 0 9 (:parent #11))) #("\n" 0 1 (:parent #8))) (plain-list (:type unordered :begin 163 :end 211 :contents-begin 163 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 163 :mode nil :granularity nil :parent #5) (item (:bullet "- " :begin 163 :end 185 :contents-begin 167 :contents-end 185 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 163 :tag nil :mode item :granularity nil :parent #9) (paragraph (:begin 167 :end 185 :contents-begin 167 :contents-end 185 :post-blank 0 :post-affiliated 167 :mode nil :granularity nil :parent #12) (link (:type "custom-id" :path "setup" :format bracket :raw-link "#setup" :application nil :search-option nil :begin 167 :end 184 :contents-begin 177 :contents-end 182 :post-blank 0 :parent #15) #("Setup" 0 5 (:parent #18))) #("\n" 0 1 (:parent #15)))) (item (:bullet "- " :begin 185 :end 211 :contents-begin 189 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 185 :tag nil :mode item :granularity nil :parent #9) (paragraph (:begin 189 :end 211 :contents-begin 189 :contents-end 211 :post-blank 0 :post-affiliated 189 :mode nil :granularity nil :parent #13) (link (:type "custom-id" :path "running" :format bracket :raw-link "#running" :application nil :search-option nil :begin 189 :end 210 :contents-begin 201 :contents-end 208 :post-blank 0 :parent #16) #("Running" 0 7 (:parent #19))) #("\n" 0 1 (:parent #16)))))))) "") org-export-data((section (:begin 101 :end 212 :contents-begin 101 :contents-end 211 :robust-begin 101 :robust-end 209 :post-blank 1 :post-affiliated 101 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 23 :end 212 :pre-blank 0 :contents-begin 101 :contents-end 211 :robust-begin 103 :robust-end 209 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 23 :title (#("Table of Contents" 0 17 (:parent #24))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 23 :contents-begin 1 :contents-end 22 :robust-begin 1 :robust-end 20 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #70) (keyword (:key "TITLE" :value "Testing GN2" :begin 1 :end 22 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #73))) #24 (headline (:raw-value "Introduction" :begin 212 :end 1055 :pre-blank 1 :contents-begin 228 :contents-end 1054 :robust-begin 230 :robust-end 1052 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 212 :title (#("Introduction" 0 12 (:parent #75))) :mode nil :granularity nil :parent #70) (section (:begin 228 :end 1055 :contents-begin 228 :contents-end 1054 :robust-begin 228 :robust-end 1052 :post-blank 1 :post-affiliated 228 :mode section :granularity nil :parent #75) (paragraph (:begin 228 :end 578 :contents-begin 228 :contents-end 577 :post-blank 1 :post-affiliated 228 :mode planning :granularity nil :parent #78) #("For integration testing, we currently use " 0 42 (:parent #81)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/tree/testing/test/requests" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/tree/testing/test/requests" :application nil :search-option nil :begin 270 :end 360 :contents-begin 344 :contents-end 357 :post-blank 1 :parent #81) #("Mechanica Rob" 0 13 (:parent #85))) #("against the\nsmall " 0 18 (:parent #81)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :application nil :search-option nil :begin 378 :end 465 :contents-begin 455 :contents-end 463 :post-blank 0 :parent #81) #("database" 0 8 (:parent #87))) #("; a setup we call Mechanical Rob because it emulates\nsomeone clicking through the website and checking results.\n" 0 112 (:parent #81))) (paragraph (:begin 578 :end 785 :contents-begin 578 :contents-end 784 :post-blank 1 :post-affiliated 578 :mode nil :granularity nil :parent #78) #("These scripts invoke calls to a running webserver and test the response.\nIf a page changes or breaks, tests will fail. In principle, Mechanical\nRob runs before code merges get committed to the main server.\n" 0 206 (:parent #82))) (paragraph (:begin 785 :end 1054 :contents-begin 785 :contents-end 1054 :post-blank 0 :post-affiliated 785 :mode nil :granularity nil :parent #78) #("For unit tests, we use python's " 0 32 (:parent #83)) (verbatim (:begin 817 :end 828 :post-blank 1 :value "unittest" :parent #83)) #("framework. Coverage reports\nget generated using " 0 48 (:parent #83)) (link (:type "https" :path "//coverage.readthedocs.io/en/coverage-5.2.1/" :format bracket :raw-link "https://coverage.readthedocs.io/en/coverage-5.2.1/" :application nil :search-option nil :begin 876 :end 944 :contents-begin 930 :contents-end 941 :post-blank 1 :parent #83) #("coverage.py" 0 11 (:parent #89))) #("which you could also use to run\nunit tests. When adding new functionality, it is advisable to add\nunit tests.\n" 0 110 (:parent #83))))) (headline (:raw-value "Run tests" :begin 1055 :end 2404 :pre-blank 1 :contents-begin 1068 :contents-end 2404 :robust-begin 1070 :robust-end 2402 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1055 :title (#("Run tests" 0 9 (:parent #76))) :mode nil :granularity nil :parent #70) (headline (:raw-value "Setup" :begin 1068 :end 1209 :pre-blank 1 :contents-begin 1078 :contents-end 1208 :robust-begin 1080 :robust-end 1206 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1068 :title (#("Setup" 0 5 (:parent #79))) :mode section :granularity nil :parent #76) (section (:begin 1078 :end 1209 :contents-begin 1078 :contents-end 1208 :robust-begin 1078 :robust-end 1206 :post-blank 1 :post-affiliated 1078 :mode section :granularity nil :parent #79) (paragraph (:begin 1078 :end 1141 :contents-begin 1078 :contents-end 1140 :post-blank 1 :post-affiliated 1078 :mode planning :granularity nil :parent #82) #("Everything required for testing is already package with guix:\n" 0 62 (:parent #85))) (fixed-width (:begin 1141 :end 1208 :value "./pre-ins-env guix package -i genenetwork2 -p ~/opt/genenetwork2" :post-blank 1 :post-affiliated 1141 :mode nil :granularity nil :parent #82)))) (headline (:raw-value "Running" :begin 1209 :end 2404 :pre-blank 1 :contents-begin 1221 :contents-end 2404 :robust-begin 1223 :robust-end 2402 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1209 :title (#("Running" 0 7 (:parent #80))) :mode nil :granularity nil :parent #76) (section (:begin 1221 :end 2404 :contents-begin 1221 :contents-end 2404 :robust-begin 1221 :robust-end 2402 :post-blank 0 :post-affiliated 1221 :mode section :granularity nil :parent #80) (paragraph (:begin 1221 :end 1329 :contents-begin 1221 :contents-end 1328 :post-blank 1 :post-affiliated 1221 :mode planning :granularity nil :parent #83) #("Run the tests from the root of the genenetwork2 source tree as. Ensure\nthat Redis and Mariadb are running.\n" 0 107 (:parent #86))) (paragraph (:begin 1329 :end 1352 :contents-begin 1329 :contents-end 1352 :post-blank 0 :post-affiliated 1329 :mode nil :granularity nil :parent #83) #("To run Mechanical Rob:\n" 0 23 (:parent #87))) (fixed-width (:begin 1352 :end 1590 :value "time env GN2_PROFILE=~/opt/genenetwork2 TMPDIR=~/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -c ~/projects/genenetwork2/test/requests/test-website.py -a http://localhost:5004" :post-blank 2 :post-affiliated 1352 :mode nil :granularity nil :parent #83)) (paragraph (:begin 1590 :end 1637 :contents-begin 1590 :contents-end 1636 :post-blank 1 :post-affiliated 1590 :mode nil :granularity nil :parent #83) #("Use these aliases for the following examples.\n" 0 46 (:parent #89))) (src-block (:language "sh" :switches nil :parameters nil :begin 1637 :end 1970 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "alias runpython=\"env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2\"\n\nalias runcmd=\"time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -cli\"\n" :post-blank 1 :post-affiliated 1637 :mode nil :granularity nil :parent #83)) (paragraph (:begin 1970 :end 2026 :contents-begin 1970 :contents-end 2025 :post-blank 1 :post-affiliated 1970 :mode nil :granularity nil :parent #83) #("You could use them in your " 0 27 (:parent #91)) (verbatim (:begin 1997 :end 2007 :post-blank 1 :value ".bashrc" :parent #91)) #("or " 0 3 (:parent #91)) (verbatim (:begin 2010 :end 2019 :post-blank 1 :value ".zshrc" :parent #91)) #("file.\n" 0 6 (:parent #91))) (paragraph (:begin 2026 :end 2046 :contents-begin 2026 :contents-end 2045 :post-blank 1 :post-affiliated 2026 :mode nil :granularity nil :parent #83) #("To run unit tests:\n" 0 19 (:parent #92))) (fixed-width (:begin 2046 :end 2083 :value "runpython -m unittest discover -v" :post-blank 2 :post-affiliated 2046 :mode nil :granularity nil :parent #83)) (paragraph (:begin 2083 :end 2126 :contents-begin 2083 :contents-end 2125 :post-blank 1 :post-affiliated 2083 :mode nil :granularity nil :parent #83) #("Or alternatively using the coverage tool:\n" 0 42 (:parent #94))) (fixed-width (:begin 2126 :end 2173 :value "runcmd coverage run -m unittest discover -v" :post-blank 2 :post-affiliated 2126 :mode nil :granularity nil :parent #83)) (paragraph (:begin 2173 :end 2244 :contents-begin 2173 :contents-end 2243 :post-blank 1 :post-affiliated 2173 :mode nil :granularity nil :parent #83) #("To generate a html coverage report in " 0 38 (:parent #96)) (verbatim (:begin 2211 :end 2242 :post-blank 0 :value "wqflask/coverage_html_report/" :parent #96)) #("\n" 0 1 (:parent #96))) (fixed-width (:begin 2244 :end 2268 :value "runcmd coverage html" :post-blank 2 :post-affiliated 2244 :mode nil :granularity nil :parent #83)) (paragraph (:begin 2268 :end 2303 :contents-begin 2268 :contents-end 2302 :post-blank 1 :post-affiliated 2268 :mode nil :granularity nil :parent #83) #("To output the report to " 0 24 (:parent #98)) (verbatim (:begin 2292 :end 2300 :post-blank 0 :value "STDOUT" :parent #98)) #(":\n" 0 2 (:parent #98))) (fixed-width (:begin 2303 :end 2329 :value "runcmd coverage report" :post-blank 2 :post-affiliated 2303 :mode nil :granularity nil :parent #83)) (paragraph (:begin 2329 :end 2404 :contents-begin 2329 :contents-end 2404 :post-blank 0 :post-affiliated 2329 :mode nil :granularity nil :parent #83) #("All the configs for running the coverage tool are in\n" 0 53 (:parent #100)) (verbatim (:begin 2382 :end 2403 :post-blank 0 :value "wqflask/.coveragerc" :parent #100)) #("\n" 0 1 (:parent #100)))))))) #0)) (plain-list (:type unordered :begin 101 :end 211 :contents-begin 101 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 101 :mode planning :granularity nil :parent #0) (item (:bullet "- " :begin 101 :end 135 :contents-begin 103 :contents-end 135 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 101 :tag nil :mode item :granularity nil :parent #3) (paragraph (:begin 103 :end 135 :contents-begin 103 :contents-end 135 :post-blank 0 :post-affiliated 103 :mode nil :granularity nil :parent #6) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 103 :end 134 :contents-begin 120 :contents-end 132 :post-blank 0 :parent #9) #("Introduction" 0 12 (:parent #12))) #("\n" 0 1 (:parent #9)))) (item (:bullet "- " :begin 135 :end 211 :contents-begin 137 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 135 :tag nil :mode item :granularity nil :parent #3) (paragraph (:begin 137 :end 163 :contents-begin 137 :contents-end 163 :post-blank 0 :post-affiliated 137 :mode nil :granularity nil :parent #7) (link (:type "custom-id" :path "run-tests" :format bracket :raw-link "#run-tests" :application nil :search-option nil :begin 137 :end 162 :contents-begin 151 :contents-end 160 :post-blank 0 :parent #10) #("Run tests" 0 9 (:parent #13))) #("\n" 0 1 (:parent #10))) (plain-list (:type unordered :begin 163 :end 211 :contents-begin 163 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 163 :mode nil :granularity nil :parent #7) (item (:bullet "- " :begin 163 :end 185 :contents-begin 167 :contents-end 185 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 163 :tag nil :mode item :granularity nil :parent #11) (paragraph (:begin 167 :end 185 :contents-begin 167 :contents-end 185 :post-blank 0 :post-affiliated 167 :mode nil :granularity nil :parent #14) (link (:type "custom-id" :path "setup" :format bracket :raw-link "#setup" :application nil :search-option nil :begin 167 :end 184 :contents-begin 177 :contents-end 182 :post-blank 0 :parent #17) #("Setup" 0 5 (:parent #20))) #("\n" 0 1 (:parent #17)))) (item (:bullet "- " :begin 185 :end 211 :contents-begin 189 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 185 :tag nil :mode item :granularity nil :parent #11) (paragraph (:begin 189 :end 211 :contents-begin 189 :contents-end 211 :post-blank 0 :post-affiliated 189 :mode nil :granularity nil :parent #15) (link (:type "custom-id" :path "running" :format bracket :raw-link "#running" :application nil :search-option nil :begin 189 :end 210 :contents-begin 201 :contents-end 208 :post-blank 0 :parent #18) #("Running" 0 7 (:parent #21))) #("\n" 0 1 (:parent #18)))))))) (:export-options (body-only) :back-end #s(org-export-backend :name html :parent nil :transcoders ((bold . org-html-bold) (center-block . org-html-center-block) (clock . org-html-clock) (code . org-html-code) (drawer . org-html-drawer) (dynamic-block . org-html-dynamic-block) (entity . org-html-entity) (example-block . org-html-example-block) (export-block . org-html-export-block) (export-snippet . org-html-export-snippet) (fixed-width . org-html-fixed-width) (footnote-reference . org-html-footnote-reference) (headline . org-html-headline) (horizontal-rule . org-html-horizontal-rule) (inline-src-block . org-html-inline-src-block) (inlinetask . org-html-inlinetask) (inner-template . org-html-inner-template) (italic . org-html-italic) (item . org-html-item) (keyword . org-html-keyword) (latex-environment . org-html-latex-environment) (latex-fragment . org-html-latex-fragment) (line-break . org-html-line-break) (link . org-html-link) (node-property . org-html-node-property) (paragraph . org-html-paragraph) (plain-list . org-html-plain-list) (plain-text . org-html-plain-text) (planning . org-html-planning) (property-drawer . org-html-property-drawer) (quote-block . org-html-quote-block) (radio-target . org-html-radio-target) (section . org-html-section) (special-block . org-html-special-block) (src-block . org-html-src-block) (statistics-cookie . org-html-statistics-cookie) (strike-through . org-html-strike-through) (subscript . org-html-subscript) (superscript . org-html-superscript) (table . org-html-table) (table-cell . org-html-table-cell) (table-row . org-html-table-row) (target . org-html-target) (template . org-html-template) (timestamp . org-html-timestamp) (underline . org-html-underline) (verbatim . org-html-verbatim) (verse-block . org-html-verse-block)) :options ((:html-doctype "HTML_DOCTYPE" nil org-html-doctype) (:html-container "HTML_CONTAINER" nil org-html-container-element) (:html-content-class "HTML_CONTENT_CLASS" nil org-html-content-class) (:description "DESCRIPTION" nil nil newline) (:keywords "KEYWORDS" nil nil space) (:html-html5-fancy nil "html5-fancy" org-html-html5-fancy) (:html-link-use-abs-url nil "html-link-use-abs-url" org-html-link-use-abs-url) (:html-link-home "HTML_LINK_HOME" nil org-html-link-home) (:html-link-up "HTML_LINK_UP" nil org-html-link-up) (:html-mathjax "HTML_MATHJAX" nil "" space) (:html-equation-reference-format "HTML_EQUATION_REFERENCE_FORMAT" nil org-html-equation-reference-format t) (:html-postamble nil "html-postamble" org-html-postamble) (:html-preamble nil "html-preamble" org-html-preamble) (:html-head "HTML_HEAD" nil org-html-head newline) (:html-head-extra "HTML_HEAD_EXTRA" nil org-html-head-extra newline) (:subtitle "SUBTITLE" nil nil parse) (:html-head-include-default-style nil "html-style" org-html-head-include-default-style) (:html-head-include-scripts nil "html-scripts" org-html-head-include-scripts) (:html-allow-name-attribute-in-anchors nil nil org-html-allow-name-attribute-in-anchors) (:html-divs nil nil org-html-divs) (:html-checkbox-type nil nil org-html-checkbox-type) (:html-extension nil nil org-html-extension) (:html-footnote-format nil nil org-html-footnote-format) (:html-footnote-separator nil nil org-html-footnote-separator) (:html-footnotes-section nil nil org-html-footnotes-section) (:html-format-drawer-function nil nil org-html-format-drawer-function) (:html-format-headline-function nil nil org-html-format-headline-function) (:html-format-inlinetask-function nil nil org-html-format-inlinetask-function) (:html-home/up-format nil nil org-html-home/up-format) (:html-indent nil nil org-html-indent) (:html-infojs-options nil nil org-html-infojs-options) (:html-infojs-template nil nil org-html-infojs-template) (:html-inline-image-rules nil nil org-html-inline-image-rules) (:html-link-org-files-as-html nil nil org-html-link-org-files-as-html) (:html-mathjax-options nil nil org-html-mathjax-options) (:html-mathjax-template nil nil org-html-mathjax-template) (:html-metadata-timestamp-format nil nil org-html-metadata-timestamp-format) (:html-postamble-format nil nil org-html-postamble-format) (:html-preamble-format nil nil org-html-preamble-format) (:html-prefer-user-labels nil nil org-html-prefer-user-labels) (:html-self-link-headlines nil nil org-html-self-link-headlines) (:html-table-align-individual-fields nil nil org-html-table-align-individual-fields) (:html-table-caption-above nil nil org-html-table-caption-above) (:html-table-data-tags nil nil org-html-table-data-tags) (:html-table-header-tags nil nil org-html-table-header-tags) (:html-table-use-header-tags-for-first-column nil nil org-html-table-use-header-tags-for-first-column) (:html-tag-class-prefix nil nil org-html-tag-class-prefix) (:html-text-markup-alist nil nil org-html-text-markup-alist) (:html-todo-kwd-class-prefix nil nil org-html-todo-kwd-class-prefix) (:html-toplevel-hlevel nil nil org-html-toplevel-hlevel) (:html-use-infojs nil nil org-html-use-infojs) (:html-validation-link nil nil org-html-validation-link) (:html-viewport nil nil org-html-viewport) (:html-inline-images nil nil org-html-inline-images) (:html-table-attributes nil nil org-html-table-default-attributes) (:html-table-row-open-tag nil nil org-html-table-row-open-tag) (:html-table-row-close-tag nil nil org-html-table-row-close-tag) (:html-xml-declaration nil nil org-html-xml-declaration) (:html-wrap-src-lines nil nil org-html-wrap-src-lines) (:html-klipsify-src nil nil org-html-klipsify-src) (:html-klipse-css nil nil org-html-klipse-css) (:html-klipse-js nil nil org-html-klipse-js) (:html-klipse-selection-script nil nil org-html-klipse-selection-script) (:infojs-opt "INFOJS_OPT" nil nil) (:creator "CREATOR" nil org-html-creator-string) (:with-latex nil "tex" org-html-with-latex) (:latex-header "LATEX_HEADER" nil nil newline)) :filters ((:filter-options . org-html-infojs-install-script) (:filter-parse-tree . org-html-image-link-filter) (:filter-final-output . org-html-final-function)) :blocks nil :menu (104 "Export to HTML" ((72 "As HTML buffer" org-html-export-as-html) (104 "As HTML file" org-html-export-to-html) (111 "As HTML file and open" (lambda (a s v b) (if a (org-html-export-to-html t s v b) (org-open-file (org-html-export-to-html nil s v b)))))))) :translate-alist ((bold . org-html-bold) (center-block . org-html-center-block) (clock . org-html-clock) (code . org-html-code) (drawer . org-html-drawer) (dynamic-block . org-html-dynamic-block) (entity . org-html-entity) (example-block . org-html-example-block) (export-block . org-html-export-block) (export-snippet . org-html-export-snippet) (fixed-width . org-html-fixed-width) (footnote-reference . org-html-footnote-reference) (headline . org-html-headline) (horizontal-rule . org-html-horizontal-rule) (inline-src-block . org-html-inline-src-block) (inlinetask . org-html-inlinetask) (inner-template . org-html-inner-template) (italic . org-html-italic) (item . org-html-item) (keyword . org-html-keyword) (latex-environment . org-html-latex-environment) (latex-fragment . org-html-latex-fragment) (line-break . org-html-line-break) (link . org-html-link) (node-property . org-html-node-property) (paragraph . org-html-paragraph) (plain-list . org-html-plain-list) (plain-text . org-html-plain-text) (planning . org-html-planning) (property-drawer . org-html-property-drawer) (quote-block . org-html-quote-block) (radio-target . org-html-radio-target) (section . org-html-section) (special-block . org-html-special-block) (src-block . org-html-src-block) (statistics-cookie . org-html-statistics-cookie) (strike-through . org-html-strike-through) (subscript . org-html-subscript) (superscript . org-html-superscript) (table . org-html-table) (table-cell . org-html-table-cell) (table-row . org-html-table-row) (target . org-html-target) (template . org-html-template) (timestamp . org-html-timestamp) (underline . org-html-underline) (verbatim . org-html-verbatim) (verse-block . org-html-verse-block)) :exported-data # :input-buffer " *temp*" :input-file nil :html-doctype "xhtml-strict" :html-container "div" :html-content-class "content" :description nil :keywords nil :html-html5-fancy nil :html-link-use-abs-url nil :html-link-home "" :html-link-up "" :html-mathjax "" :html-equation-reference-format "\\eqref{%s}" :html-postamble auto :html-preamble t :html-head "" :html-head-extra "" :subtitle nil :html-head-include-default-style t :html-head-include-scripts nil :html-allow-name-attribute-in-anchors nil :html-divs ((preamble "div" "preamble") (content "div" "content") (postamble "div" "postamble")) :html-checkbox-type ascii :html-extension "html" :html-footnote-format "%s" :html-footnote-separator ", " :html-footnotes-section "
\n

%s:

\n
\n%s\n
\n
" :html-format-drawer-function #f(compiled-function (name contents) #) :html-format-headline-function org-html-format-headline-default-function :html-format-inlinetask-function org-html-format-inlinetask-default-function :html-home/up-format "
\n UP \n |\n HOME \n
" :html-indent nil :html-infojs-options ((path . "https://orgmode.org/org-info.js") (view . "info") (toc . :with-toc) (ftoc . "0") (tdepth . "max") (sdepth . "max") (mouse . "underline") (buttons . "0") (ltoc . "1") (up . :html-link-up) (home . :html-link-home)) :html-infojs-template "\n\n" :html-inline-image-rules (("file" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)") ("http" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)") ("https" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)")) :html-link-org-files-as-html t :html-mathjax-options ((path "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js") (scale 1.0) (align "center") (font "mathjax-modern") (overflow "overflow") (tags "ams") (indent "0em") (multlinewidth "85%") (tagindent ".8em") (tagside "right")) :html-mathjax-template "\n\n\n" :html-metadata-timestamp-format "%Y-%m-%d %a %H:%M" :html-postamble-format (("en" "

Author: %a (%e)

\n

Date: %d

\n

%c

\n

%v

")) :html-preamble-format (("en" "")) :html-prefer-user-labels nil :html-self-link-headlines nil :html-table-align-individual-fields t :html-table-caption-above t :html-table-data-tags ("" . "") :html-table-header-tags ("" . "") :html-table-use-header-tags-for-first-column nil :html-tag-class-prefix "" :html-text-markup-alist ((bold . "%s") (code . "%s") (italic . "%s") (strike-through . "%s") (underline . "%s") (verbatim . "%s")) :html-todo-kwd-class-prefix "" :html-toplevel-hlevel 2 :html-use-infojs when-configured :html-validation-link "Validate" :html-viewport ((width "device-width") (initial-scale "1") (minimum-scale "") (maximum-scale "") (user-scalable "")) :html-inline-images t :html-table-attributes (:border "2" :cellspacing "0" :cellpadding "6" :rules "groups" :frame "hsides") :html-table-row-open-tag "" :html-table-row-close-tag "" :html-xml-declaration (("html" . "") ("php" . "\"; ?>")) :html-wrap-src-lines nil :html-klipsify-src nil :html-klipse-css "https://storage.googleapis.com/app.klipse.tech/css/codemirror.css" :html-klipse-js "https://storage.googleapis.com/app.klipse.tech/plugin_prod/js/klipse_plugin.min.js" :html-klipse-selection-script "window.klipse_settings = {selector_eval_html: '.src-html',\n selector_eval_js: '.src-js',\n selector_eval_python_client: '.src-python',\n selector_eval_scheme: '.src-scheme',\n selector: '.src-clojure',\n selector_eval_ruby: '.src-ruby'};" :infojs-opt nil :creator "Emacs 29.1 (Org mode 9.6.6)" :with-latex t :latex-header nil :title (#("Testing GN2" 0 11 (:parent #148))) :date nil :author (#("unknown" 0 7 (:parent #152))) :email "unknown@genenetwork-development" :language "en" :select-tags ("export") :exclude-tags ("noexport") :headline-levels 3 :preserve-breaks nil :section-numbers nil :time-stamp-file t :with-archived-trees headline :with-author t :with-broken-links nil :with-clocks nil :with-creator nil :with-date t :with-drawers (not "LOGBOOK") :with-email nil :with-emphasize t :with-entities t :with-fixed-width t :with-footnotes t :with-inlinetasks t :with-planning nil :with-priority nil :with-properties nil :with-smart-quotes nil :with-special-strings t :with-statistics-cookies t :with-sub-superscript t :with-toc nil :with-tables t :with-tags t :with-tasks t :with-timestamps t :with-title t :with-todo-keywords t :cite-export (basic nil nil) :bibliography nil :filter-body nil :filter-bold nil :filter-babel-call nil :filter-center-block nil :filter-clock nil :filter-code nil :filter-diary-sexp nil :filter-drawer nil :filter-dynamic-block nil :filter-entity nil :filter-example-block nil :filter-export-block nil :filter-export-snippet nil :filter-final-output (org-html-final-function) :filter-fixed-width nil :filter-footnote-definition nil :filter-footnote-reference nil :filter-headline nil :filter-horizontal-rule nil :filter-inline-babel-call nil :filter-inline-src-block nil :filter-inlinetask nil :filter-italic nil :filter-item nil :filter-keyword nil :filter-latex-environment nil :filter-latex-fragment nil :filter-line-break nil :filter-link nil :filter-node-property nil :filter-options (org-html-infojs-install-script) :filter-paragraph nil :filter-parse-tree (org-html-image-link-filter) :filter-plain-list nil :filter-plain-text nil :filter-planning nil :filter-property-drawer nil :filter-quote-block nil :filter-radio-target nil :filter-section nil :filter-special-block nil :filter-src-block nil :filter-statistics-cookie nil :filter-strike-through nil :filter-subscript nil :filter-superscript nil :filter-table nil :filter-table-cell nil :filter-table-row nil :filter-target nil :filter-timestamp nil :filter-underline nil :filter-verbatim nil :filter-verse-block nil :ignore-list nil :parse-tree (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 23 :contents-begin 1 :contents-end 22 :robust-begin 1 :robust-end 20 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #338) (keyword (:key "TITLE" :value "Testing GN2" :begin 1 :end 22 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #341))) (headline (:raw-value "Table of Contents" :begin 23 :end 212 :pre-blank 0 :contents-begin 101 :contents-end 211 :robust-begin 103 :robust-end 209 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 23 :title (#("Table of Contents" 0 17 (:parent #342))) :mode nil :granularity nil :parent #338) (section (:begin 101 :end 212 :contents-begin 101 :contents-end 211 :robust-begin 101 :robust-end 209 :post-blank 1 :post-affiliated 101 :mode section :granularity nil :parent #342) (plain-list (:type unordered :begin 101 :end 211 :contents-begin 101 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 101 :mode planning :granularity nil :parent #345) (item (:bullet "- " :begin 101 :end 135 :contents-begin 103 :contents-end 135 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 101 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 103 :end 135 :contents-begin 103 :contents-end 135 :post-blank 0 :post-affiliated 103 :mode nil :granularity nil :parent #351) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 103 :end 134 :contents-begin 120 :contents-end 132 :post-blank 0 :parent #354) #("Introduction" 0 12 (:parent #357))) #("\n" 0 1 (:parent #354)))) (item (:bullet "- " :begin 135 :end 211 :contents-begin 137 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 135 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 137 :end 163 :contents-begin 137 :contents-end 163 :post-blank 0 :post-affiliated 137 :mode nil :granularity nil :parent #352) (link (:type "custom-id" :path "run-tests" :format bracket :raw-link "#run-tests" :application nil :search-option nil :begin 137 :end 162 :contents-begin 151 :contents-end 160 :post-blank 0 :parent #355) #("Run tests" 0 9 (:parent #358))) #("\n" 0 1 (:parent #355))) (plain-list (:type unordered :begin 163 :end 211 :contents-begin 163 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 163 :mode nil :granularity nil :parent #352) (item (:bullet "- " :begin 163 :end 185 :contents-begin 167 :contents-end 185 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 163 :tag nil :mode item :granularity nil :parent #356) (paragraph (:begin 167 :end 185 :contents-begin 167 :contents-end 185 :post-blank 0 :post-affiliated 167 :mode nil :granularity nil :parent #359) (link (:type "custom-id" :path "setup" :format bracket :raw-link "#setup" :application nil :search-option nil :begin 167 :end 184 :contents-begin 177 :contents-end 182 :post-blank 0 :parent #362) #("Setup" 0 5 (:parent #365))) #("\n" 0 1 (:parent #362)))) (item (:bullet "- " :begin 185 :end 211 :contents-begin 189 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 185 :tag nil :mode item :granularity nil :parent #356) (paragraph (:begin 189 :end 211 :contents-begin 189 :contents-end 211 :post-blank 0 :post-affiliated 189 :mode nil :granularity nil :parent #360) (link (:type "custom-id" :path "running" :format bracket :raw-link "#running" :application nil :search-option nil :begin 189 :end 210 :contents-begin 201 :contents-end 208 :post-blank 0 :parent #363) #("Running" 0 7 (:parent #366))) #("\n" 0 1 (:parent #363))))))))) (headline (:raw-value "Introduction" :begin 212 :end 1055 :pre-blank 1 :contents-begin 228 :contents-end 1054 :robust-begin 230 :robust-end 1052 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 212 :title (#("Introduction" 0 12 (:parent #343))) :mode nil :granularity nil :parent #338) (section (:begin 228 :end 1055 :contents-begin 228 :contents-end 1054 :robust-begin 228 :robust-end 1052 :post-blank 1 :post-affiliated 228 :mode section :granularity nil :parent #343) (paragraph (:begin 228 :end 578 :contents-begin 228 :contents-end 577 :post-blank 1 :post-affiliated 228 :mode planning :granularity nil :parent #346) #("For integration testing, we currently use " 0 42 (:parent #349)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/tree/testing/test/requests" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/tree/testing/test/requests" :application nil :search-option nil :begin 270 :end 360 :contents-begin 344 :contents-end 357 :post-blank 1 :parent #349) #("Mechanica Rob" 0 13 (:parent #353))) #("against the\nsmall " 0 18 (:parent #349)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :application nil :search-option nil :begin 378 :end 465 :contents-begin 455 :contents-end 463 :post-blank 0 :parent #349) #("database" 0 8 (:parent #355))) #("; a setup we call Mechanical Rob because it emulates\nsomeone clicking through the website and checking results.\n" 0 112 (:parent #349))) (paragraph (:begin 578 :end 785 :contents-begin 578 :contents-end 784 :post-blank 1 :post-affiliated 578 :mode nil :granularity nil :parent #346) #("These scripts invoke calls to a running webserver and test the response.\nIf a page changes or breaks, tests will fail. In principle, Mechanical\nRob runs before code merges get committed to the main server.\n" 0 206 (:parent #350))) (paragraph (:begin 785 :end 1054 :contents-begin 785 :contents-end 1054 :post-blank 0 :post-affiliated 785 :mode nil :granularity nil :parent #346) #("For unit tests, we use python's " 0 32 (:parent #351)) (verbatim (:begin 817 :end 828 :post-blank 1 :value "unittest" :parent #351)) #("framework. Coverage reports\nget generated using " 0 48 (:parent #351)) (link (:type "https" :path "//coverage.readthedocs.io/en/coverage-5.2.1/" :format bracket :raw-link "https://coverage.readthedocs.io/en/coverage-5.2.1/" :application nil :search-option nil :begin 876 :end 944 :contents-begin 930 :contents-end 941 :post-blank 1 :parent #351) #("coverage.py" 0 11 (:parent #357))) #("which you could also use to run\nunit tests. When adding new functionality, it is advisable to add\nunit tests.\n" 0 110 (:parent #351))))) (headline (:raw-value "Run tests" :begin 1055 :end 2404 :pre-blank 1 :contents-begin 1068 :contents-end 2404 :robust-begin 1070 :robust-end 2402 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1055 :title (#("Run tests" 0 9 (:parent #344))) :mode nil :granularity nil :parent #338) (headline (:raw-value "Setup" :begin 1068 :end 1209 :pre-blank 1 :contents-begin 1078 :contents-end 1208 :robust-begin 1080 :robust-end 1206 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1068 :title (#("Setup" 0 5 (:parent #347))) :mode section :granularity nil :parent #344) (section (:begin 1078 :end 1209 :contents-begin 1078 :contents-end 1208 :robust-begin 1078 :robust-end 1206 :post-blank 1 :post-affiliated 1078 :mode section :granularity nil :parent #347) (paragraph (:begin 1078 :end 1141 :contents-begin 1078 :contents-end 1140 :post-blank 1 :post-affiliated 1078 :mode planning :granularity nil :parent #350) #("Everything required for testing is already package with guix:\n" 0 62 (:parent #353))) (fixed-width (:begin 1141 :end 1208 :value "./pre-ins-env guix package -i genenetwork2 -p ~/opt/genenetwork2" :post-blank 1 :post-affiliated 1141 :mode nil :granularity nil :parent #350)))) (headline (:raw-value "Running" :begin 1209 :end 2404 :pre-blank 1 :contents-begin 1221 :contents-end 2404 :robust-begin 1223 :robust-end 2402 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1209 :title (#("Running" 0 7 (:parent #348))) :mode nil :granularity nil :parent #344) (section (:begin 1221 :end 2404 :contents-begin 1221 :contents-end 2404 :robust-begin 1221 :robust-end 2402 :post-blank 0 :post-affiliated 1221 :mode section :granularity nil :parent #348) (paragraph (:begin 1221 :end 1329 :contents-begin 1221 :contents-end 1328 :post-blank 1 :post-affiliated 1221 :mode planning :granularity nil :parent #351) #("Run the tests from the root of the genenetwork2 source tree as. Ensure\nthat Redis and Mariadb are running.\n" 0 107 (:parent #354))) (paragraph (:begin 1329 :end 1352 :contents-begin 1329 :contents-end 1352 :post-blank 0 :post-affiliated 1329 :mode nil :granularity nil :parent #351) #("To run Mechanical Rob:\n" 0 23 (:parent #355))) (fixed-width (:begin 1352 :end 1590 :value "time env GN2_PROFILE=~/opt/genenetwork2 TMPDIR=~/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -c ~/projects/genenetwork2/test/requests/test-website.py -a http://localhost:5004" :post-blank 2 :post-affiliated 1352 :mode nil :granularity nil :parent #351)) (paragraph (:begin 1590 :end 1637 :contents-begin 1590 :contents-end 1636 :post-blank 1 :post-affiliated 1590 :mode nil :granularity nil :parent #351) #("Use these aliases for the following examples.\n" 0 46 (:parent #357))) (src-block (:language "sh" :switches nil :parameters nil :begin 1637 :end 1970 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "alias runpython=\"env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2\"\n\nalias runcmd=\"time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -cli\"\n" :post-blank 1 :post-affiliated 1637 :mode nil :granularity nil :parent #351)) (paragraph (:begin 1970 :end 2026 :contents-begin 1970 :contents-end 2025 :post-blank 1 :post-affiliated 1970 :mode nil :granularity nil :parent #351) #("You could use them in your " 0 27 (:parent #359)) (verbatim (:begin 1997 :end 2007 :post-blank 1 :value ".bashrc" :parent #359)) #("or " 0 3 (:parent #359)) (verbatim (:begin 2010 :end 2019 :post-blank 1 :value ".zshrc" :parent #359)) #("file.\n" 0 6 (:parent #359))) (paragraph (:begin 2026 :end 2046 :contents-begin 2026 :contents-end 2045 :post-blank 1 :post-affiliated 2026 :mode nil :granularity nil :parent #351) #("To run unit tests:\n" 0 19 (:parent #360))) (fixed-width (:begin 2046 :end 2083 :value "runpython -m unittest discover -v" :post-blank 2 :post-affiliated 2046 :mode nil :granularity nil :parent #351)) (paragraph (:begin 2083 :end 2126 :contents-begin 2083 :contents-end 2125 :post-blank 1 :post-affiliated 2083 :mode nil :granularity nil :parent #351) #("Or alternatively using the coverage tool:\n" 0 42 (:parent #362))) (fixed-width (:begin 2126 :end 2173 :value "runcmd coverage run -m unittest discover -v" :post-blank 2 :post-affiliated 2126 :mode nil :granularity nil :parent #351)) (paragraph (:begin 2173 :end 2244 :contents-begin 2173 :contents-end 2243 :post-blank 1 :post-affiliated 2173 :mode nil :granularity nil :parent #351) #("To generate a html coverage report in " 0 38 (:parent #364)) (verbatim (:begin 2211 :end 2242 :post-blank 0 :value "wqflask/coverage_html_report/" :parent #364)) #("\n" 0 1 (:parent #364))) (fixed-width (:begin 2244 :end 2268 :value "runcmd coverage html" :post-blank 2 :post-affiliated 2244 :mode nil :granularity nil :parent #351)) (paragraph (:begin 2268 :end 2303 :contents-begin 2268 :contents-end 2302 :post-blank 1 :post-affiliated 2268 :mode nil :granularity nil :parent #351) #("To output the report to " 0 24 (:parent #366)) (verbatim (:begin 2292 :end 2300 :post-blank 0 :value "STDOUT" :parent #366)) #(":\n" 0 2 (:parent #366))) (fixed-width (:begin 2303 :end 2329 :value "runcmd coverage report" :post-blank 2 :post-affiliated 2303 :mode nil :granularity nil :parent #351)) (paragraph (:begin 2329 :end 2404 :contents-begin 2329 :contents-end 2404 :post-blank 0 :post-affiliated 2329 :mode nil :granularity nil :parent #351) #("All the configs for running the coverage tool are in\n" 0 53 (:parent #368)) (verbatim (:begin 2382 :end 2403 :post-blank 0 :value "wqflask/.coveragerc" :parent #368)) #("\n" 0 1 (:parent #368))))))) :headline-offset 0 :headline-numbering nil :id-alist nil :citations nil :id-local-cache #)) #f(compiled-function (element) #)((section (:begin 101 :end 212 :contents-begin 101 :contents-end 211 :robust-begin 101 :robust-end 209 :post-blank 1 :post-affiliated 101 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 23 :end 212 :pre-blank 0 :contents-begin 101 :contents-end 211 :robust-begin 103 :robust-end 209 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 23 :title (#("Table of Contents" 0 17 (:parent #24))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 23 :contents-begin 1 :contents-end 22 :robust-begin 1 :robust-end 20 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #70) (keyword (:key "TITLE" :value "Testing GN2" :begin 1 :end 22 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #73))) #24 (headline (:raw-value "Introduction" :begin 212 :end 1055 :pre-blank 1 :contents-begin 228 :contents-end 1054 :robust-begin 230 :robust-end 1052 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 212 :title (#("Introduction" 0 12 (:parent #75))) :mode nil :granularity nil :parent #70) (section (:begin 228 :end 1055 :contents-begin 228 :contents-end 1054 :robust-begin 228 :robust-end 1052 :post-blank 1 :post-affiliated 228 :mode section :granularity nil :parent #75) (paragraph (:begin 228 :end 578 :contents-begin 228 :contents-end 577 :post-blank 1 :post-affiliated 228 :mode planning :granularity nil :parent #78) #("For integration testing, we currently use " 0 42 (:parent #81)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/tree/testing/test/requests" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/tree/testing/test/requests" :application nil :search-option nil :begin 270 :end 360 :contents-begin 344 :contents-end 357 :post-blank 1 :parent #81) #("Mechanica Rob" 0 13 (:parent #85))) #("against the\nsmall " 0 18 (:parent #81)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :application nil :search-option nil :begin 378 :end 465 :contents-begin 455 :contents-end 463 :post-blank 0 :parent #81) #("database" 0 8 (:parent #87))) #("; a setup we call Mechanical Rob because it emulates\nsomeone clicking through the website and checking results.\n" 0 112 (:parent #81))) (paragraph (:begin 578 :end 785 :contents-begin 578 :contents-end 784 :post-blank 1 :post-affiliated 578 :mode nil :granularity nil :parent #78) #("These scripts invoke calls to a running webserver and test the response.\nIf a page changes or breaks, tests will fail. In principle, Mechanical\nRob runs before code merges get committed to the main server.\n" 0 206 (:parent #82))) (paragraph (:begin 785 :end 1054 :contents-begin 785 :contents-end 1054 :post-blank 0 :post-affiliated 785 :mode nil :granularity nil :parent #78) #("For unit tests, we use python's " 0 32 (:parent #83)) (verbatim (:begin 817 :end 828 :post-blank 1 :value "unittest" :parent #83)) #("framework. Coverage reports\nget generated using " 0 48 (:parent #83)) (link (:type "https" :path "//coverage.readthedocs.io/en/coverage-5.2.1/" :format bracket :raw-link "https://coverage.readthedocs.io/en/coverage-5.2.1/" :application nil :search-option nil :begin 876 :end 944 :contents-begin 930 :contents-end 941 :post-blank 1 :parent #83) #("coverage.py" 0 11 (:parent #89))) #("which you could also use to run\nunit tests. When adding new functionality, it is advisable to add\nunit tests.\n" 0 110 (:parent #83))))) (headline (:raw-value "Run tests" :begin 1055 :end 2404 :pre-blank 1 :contents-begin 1068 :contents-end 2404 :robust-begin 1070 :robust-end 2402 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1055 :title (#("Run tests" 0 9 (:parent #76))) :mode nil :granularity nil :parent #70) (headline (:raw-value "Setup" :begin 1068 :end 1209 :pre-blank 1 :contents-begin 1078 :contents-end 1208 :robust-begin 1080 :robust-end 1206 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1068 :title (#("Setup" 0 5 (:parent #79))) :mode section :granularity nil :parent #76) (section (:begin 1078 :end 1209 :contents-begin 1078 :contents-end 1208 :robust-begin 1078 :robust-end 1206 :post-blank 1 :post-affiliated 1078 :mode section :granularity nil :parent #79) (paragraph (:begin 1078 :end 1141 :contents-begin 1078 :contents-end 1140 :post-blank 1 :post-affiliated 1078 :mode planning :granularity nil :parent #82) #("Everything required for testing is already package with guix:\n" 0 62 (:parent #85))) (fixed-width (:begin 1141 :end 1208 :value "./pre-ins-env guix package -i genenetwork2 -p ~/opt/genenetwork2" :post-blank 1 :post-affiliated 1141 :mode nil :granularity nil :parent #82)))) (headline (:raw-value "Running" :begin 1209 :end 2404 :pre-blank 1 :contents-begin 1221 :contents-end 2404 :robust-begin 1223 :robust-end 2402 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1209 :title (#("Running" 0 7 (:parent #80))) :mode nil :granularity nil :parent #76) (section (:begin 1221 :end 2404 :contents-begin 1221 :contents-end 2404 :robust-begin 1221 :robust-end 2402 :post-blank 0 :post-affiliated 1221 :mode section :granularity nil :parent #80) (paragraph (:begin 1221 :end 1329 :contents-begin 1221 :contents-end 1328 :post-blank 1 :post-affiliated 1221 :mode planning :granularity nil :parent #83) #("Run the tests from the root of the genenetwork2 source tree as. Ensure\nthat Redis and Mariadb are running.\n" 0 107 (:parent #86))) (paragraph (:begin 1329 :end 1352 :contents-begin 1329 :contents-end 1352 :post-blank 0 :post-affiliated 1329 :mode nil :granularity nil :parent #83) #("To run Mechanical Rob:\n" 0 23 (:parent #87))) (fixed-width (:begin 1352 :end 1590 :value "time env GN2_PROFILE=~/opt/genenetwork2 TMPDIR=~/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -c ~/projects/genenetwork2/test/requests/test-website.py -a http://localhost:5004" :post-blank 2 :post-affiliated 1352 :mode nil :granularity nil :parent #83)) (paragraph (:begin 1590 :end 1637 :contents-begin 1590 :contents-end 1636 :post-blank 1 :post-affiliated 1590 :mode nil :granularity nil :parent #83) #("Use these aliases for the following examples.\n" 0 46 (:parent #89))) (src-block (:language "sh" :switches nil :parameters nil :begin 1637 :end 1970 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "alias runpython=\"env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2\"\n\nalias runcmd=\"time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -cli\"\n" :post-blank 1 :post-affiliated 1637 :mode nil :granularity nil :parent #83)) (paragraph (:begin 1970 :end 2026 :contents-begin 1970 :contents-end 2025 :post-blank 1 :post-affiliated 1970 :mode nil :granularity nil :parent #83) #("You could use them in your " 0 27 (:parent #91)) (verbatim (:begin 1997 :end 2007 :post-blank 1 :value ".bashrc" :parent #91)) #("or " 0 3 (:parent #91)) (verbatim (:begin 2010 :end 2019 :post-blank 1 :value ".zshrc" :parent #91)) #("file.\n" 0 6 (:parent #91))) (paragraph (:begin 2026 :end 2046 :contents-begin 2026 :contents-end 2045 :post-blank 1 :post-affiliated 2026 :mode nil :granularity nil :parent #83) #("To run unit tests:\n" 0 19 (:parent #92))) (fixed-width (:begin 2046 :end 2083 :value "runpython -m unittest discover -v" :post-blank 2 :post-affiliated 2046 :mode nil :granularity nil :parent #83)) (paragraph (:begin 2083 :end 2126 :contents-begin 2083 :contents-end 2125 :post-blank 1 :post-affiliated 2083 :mode nil :granularity nil :parent #83) #("Or alternatively using the coverage tool:\n" 0 42 (:parent #94))) (fixed-width (:begin 2126 :end 2173 :value "runcmd coverage run -m unittest discover -v" :post-blank 2 :post-affiliated 2126 :mode nil :granularity nil :parent #83)) (paragraph (:begin 2173 :end 2244 :contents-begin 2173 :contents-end 2243 :post-blank 1 :post-affiliated 2173 :mode nil :granularity nil :parent #83) #("To generate a html coverage report in " 0 38 (:parent #96)) (verbatim (:begin 2211 :end 2242 :post-blank 0 :value "wqflask/coverage_html_report/" :parent #96)) #("\n" 0 1 (:parent #96))) (fixed-width (:begin 2244 :end 2268 :value "runcmd coverage html" :post-blank 2 :post-affiliated 2244 :mode nil :granularity nil :parent #83)) (paragraph (:begin 2268 :end 2303 :contents-begin 2268 :contents-end 2302 :post-blank 1 :post-affiliated 2268 :mode nil :granularity nil :parent #83) #("To output the report to " 0 24 (:parent #98)) (verbatim (:begin 2292 :end 2300 :post-blank 0 :value "STDOUT" :parent #98)) #(":\n" 0 2 (:parent #98))) (fixed-width (:begin 2303 :end 2329 :value "runcmd coverage report" :post-blank 2 :post-affiliated 2303 :mode nil :granularity nil :parent #83)) (paragraph (:begin 2329 :end 2404 :contents-begin 2329 :contents-end 2404 :post-blank 0 :post-affiliated 2329 :mode nil :granularity nil :parent #83) #("All the configs for running the coverage tool are in\n" 0 53 (:parent #100)) (verbatim (:begin 2382 :end 2403 :post-blank 0 :value "wqflask/.coveragerc" :parent #100)) #("\n" 0 1 (:parent #100)))))))) #0)) (plain-list (:type unordered :begin 101 :end 211 :contents-begin 101 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 101 :mode planning :granularity nil :parent #0) (item (:bullet "- " :begin 101 :end 135 :contents-begin 103 :contents-end 135 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 101 :tag nil :mode item :granularity nil :parent #3) (paragraph (:begin 103 :end 135 :contents-begin 103 :contents-end 135 :post-blank 0 :post-affiliated 103 :mode nil :granularity nil :parent #6) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 103 :end 134 :contents-begin 120 :contents-end 132 :post-blank 0 :parent #9) #("Introduction" 0 12 (:parent #12))) #("\n" 0 1 (:parent #9)))) (item (:bullet "- " :begin 135 :end 211 :contents-begin 137 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 135 :tag nil :mode item :granularity nil :parent #3) (paragraph (:begin 137 :end 163 :contents-begin 137 :contents-end 163 :post-blank 0 :post-affiliated 137 :mode nil :granularity nil :parent #7) (link (:type "custom-id" :path "run-tests" :format bracket :raw-link "#run-tests" :application nil :search-option nil :begin 137 :end 162 :contents-begin 151 :contents-end 160 :post-blank 0 :parent #10) #("Run tests" 0 9 (:parent #13))) #("\n" 0 1 (:parent #10))) (plain-list (:type unordered :begin 163 :end 211 :contents-begin 163 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 163 :mode nil :granularity nil :parent #7) (item (:bullet "- " :begin 163 :end 185 :contents-begin 167 :contents-end 185 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 163 :tag nil :mode item :granularity nil :parent #11) (paragraph (:begin 167 :end 185 :contents-begin 167 :contents-end 185 :post-blank 0 :post-affiliated 167 :mode nil :granularity nil :parent #14) (link (:type "custom-id" :path "setup" :format bracket :raw-link "#setup" :application nil :search-option nil :begin 167 :end 184 :contents-begin 177 :contents-end 182 :post-blank 0 :parent #17) #("Setup" 0 5 (:parent #20))) #("\n" 0 1 (:parent #17)))) (item (:bullet "- " :begin 185 :end 211 :contents-begin 189 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 185 :tag nil :mode item :granularity nil :parent #11) (paragraph (:begin 189 :end 211 :contents-begin 189 :contents-end 211 :post-blank 0 :post-affiliated 189 :mode nil :granularity nil :parent #15) (link (:type "custom-id" :path "running" :format bracket :raw-link "#running" :application nil :search-option nil :begin 189 :end 210 :contents-begin 201 :contents-end 208 :post-blank 0 :parent #18) #("Running" 0 7 (:parent #21))) #("\n" 0 1 (:parent #18))))))))) mapconcat(#f(compiled-function (element) #) ((section (:begin 101 :end 212 :contents-begin 101 :contents-end 211 :robust-begin 101 :robust-end 209 :post-blank 1 :post-affiliated 101 :mode section :granularity nil :parent (headline (:raw-value "Table of Contents" :begin 23 :end 212 :pre-blank 0 :contents-begin 101 :contents-end 211 :robust-begin 103 :robust-end 209 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 23 :title (#("Table of Contents" 0 17 (:parent #25))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 23 :contents-begin 1 :contents-end 22 :robust-begin 1 :robust-end 20 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #71) (keyword (:key "TITLE" :value "Testing GN2" :begin 1 :end 22 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #74))) #25 (headline (:raw-value "Introduction" :begin 212 :end 1055 :pre-blank 1 :contents-begin 228 :contents-end 1054 :robust-begin 230 :robust-end 1052 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 212 :title (#("Introduction" 0 12 (:parent #76))) :mode nil :granularity nil :parent #71) (section (:begin 228 :end 1055 :contents-begin 228 :contents-end 1054 :robust-begin 228 :robust-end 1052 :post-blank 1 :post-affiliated 228 :mode section :granularity nil :parent #76) (paragraph (:begin 228 :end 578 :contents-begin 228 :contents-end 577 :post-blank 1 :post-affiliated 228 :mode planning :granularity nil :parent #79) #("For integration testing, we currently use " 0 42 (:parent #82)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/tree/testing/test/requests" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/tree/testing/test/requests" :application nil :search-option nil :begin 270 :end 360 :contents-begin 344 :contents-end 357 :post-blank 1 :parent #82) #("Mechanica Rob" 0 13 (:parent #86))) #("against the\nsmall " 0 18 (:parent #82)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :application nil :search-option nil :begin 378 :end 465 :contents-begin 455 :contents-end 463 :post-blank 0 :parent #82) #("database" 0 8 (:parent #88))) #("; a setup we call Mechanical Rob because it emulates\nsomeone clicking through the website and checking results.\n" 0 112 (:parent #82))) (paragraph (:begin 578 :end 785 :contents-begin 578 :contents-end 784 :post-blank 1 :post-affiliated 578 :mode nil :granularity nil :parent #79) #("These scripts invoke calls to a running webserver and test the response.\nIf a page changes or breaks, tests will fail. In principle, Mechanical\nRob runs before code merges get committed to the main server.\n" 0 206 (:parent #83))) (paragraph (:begin 785 :end 1054 :contents-begin 785 :contents-end 1054 :post-blank 0 :post-affiliated 785 :mode nil :granularity nil :parent #79) #("For unit tests, we use python's " 0 32 (:parent #84)) (verbatim (:begin 817 :end 828 :post-blank 1 :value "unittest" :parent #84)) #("framework. Coverage reports\nget generated using " 0 48 (:parent #84)) (link (:type "https" :path "//coverage.readthedocs.io/en/coverage-5.2.1/" :format bracket :raw-link "https://coverage.readthedocs.io/en/coverage-5.2.1/" :application nil :search-option nil :begin 876 :end 944 :contents-begin 930 :contents-end 941 :post-blank 1 :parent #84) #("coverage.py" 0 11 (:parent #90))) #("which you could also use to run\nunit tests. When adding new functionality, it is advisable to add\nunit tests.\n" 0 110 (:parent #84))))) (headline (:raw-value "Run tests" :begin 1055 :end 2404 :pre-blank 1 :contents-begin 1068 :contents-end 2404 :robust-begin 1070 :robust-end 2402 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1055 :title (#("Run tests" 0 9 (:parent #77))) :mode nil :granularity nil :parent #71) (headline (:raw-value "Setup" :begin 1068 :end 1209 :pre-blank 1 :contents-begin 1078 :contents-end 1208 :robust-begin 1080 :robust-end 1206 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1068 :title (#("Setup" 0 5 (:parent #80))) :mode section :granularity nil :parent #77) (section (:begin 1078 :end 1209 :contents-begin 1078 :contents-end 1208 :robust-begin 1078 :robust-end 1206 :post-blank 1 :post-affiliated 1078 :mode section :granularity nil :parent #80) (paragraph (:begin 1078 :end 1141 :contents-begin 1078 :contents-end 1140 :post-blank 1 :post-affiliated 1078 :mode planning :granularity nil :parent #83) #("Everything required for testing is already package with guix:\n" 0 62 (:parent #86))) (fixed-width (:begin 1141 :end 1208 :value "./pre-ins-env guix package -i genenetwork2 -p ~/opt/genenetwork2" :post-blank 1 :post-affiliated 1141 :mode nil :granularity nil :parent #83)))) (headline (:raw-value "Running" :begin 1209 :end 2404 :pre-blank 1 :contents-begin 1221 :contents-end 2404 :robust-begin 1223 :robust-end 2402 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1209 :title (#("Running" 0 7 (:parent #81))) :mode nil :granularity nil :parent #77) (section (:begin 1221 :end 2404 :contents-begin 1221 :contents-end 2404 :robust-begin 1221 :robust-end 2402 :post-blank 0 :post-affiliated 1221 :mode section :granularity nil :parent #81) (paragraph (:begin 1221 :end 1329 :contents-begin 1221 :contents-end 1328 :post-blank 1 :post-affiliated 1221 :mode planning :granularity nil :parent #84) #("Run the tests from the root of the genenetwork2 source tree as. Ensure\nthat Redis and Mariadb are running.\n" 0 107 (:parent #87))) (paragraph (:begin 1329 :end 1352 :contents-begin 1329 :contents-end 1352 :post-blank 0 :post-affiliated 1329 :mode nil :granularity nil :parent #84) #("To run Mechanical Rob:\n" 0 23 (:parent #88))) (fixed-width (:begin 1352 :end 1590 :value "time env GN2_PROFILE=~/opt/genenetwork2 TMPDIR=~/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -c ~/projects/genenetwork2/test/requests/test-website.py -a http://localhost:5004" :post-blank 2 :post-affiliated 1352 :mode nil :granularity nil :parent #84)) (paragraph (:begin 1590 :end 1637 :contents-begin 1590 :contents-end 1636 :post-blank 1 :post-affiliated 1590 :mode nil :granularity nil :parent #84) #("Use these aliases for the following examples.\n" 0 46 (:parent #90))) (src-block (:language "sh" :switches nil :parameters nil :begin 1637 :end 1970 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "alias runpython=\"env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2\"\n\nalias runcmd=\"time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -cli\"\n" :post-blank 1 :post-affiliated 1637 :mode nil :granularity nil :parent #84)) (paragraph (:begin 1970 :end 2026 :contents-begin 1970 :contents-end 2025 :post-blank 1 :post-affiliated 1970 :mode nil :granularity nil :parent #84) #("You could use them in your " 0 27 (:parent #92)) (verbatim (:begin 1997 :end 2007 :post-blank 1 :value ".bashrc" :parent #92)) #("or " 0 3 (:parent #92)) (verbatim (:begin 2010 :end 2019 :post-blank 1 :value ".zshrc" :parent #92)) #("file.\n" 0 6 (:parent #92))) (paragraph (:begin 2026 :end 2046 :contents-begin 2026 :contents-end 2045 :post-blank 1 :post-affiliated 2026 :mode nil :granularity nil :parent #84) #("To run unit tests:\n" 0 19 (:parent #93))) (fixed-width (:begin 2046 :end 2083 :value "runpython -m unittest discover -v" :post-blank 2 :post-affiliated 2046 :mode nil :granularity nil :parent #84)) (paragraph (:begin 2083 :end 2126 :contents-begin 2083 :contents-end 2125 :post-blank 1 :post-affiliated 2083 :mode nil :granularity nil :parent #84) #("Or alternatively using the coverage tool:\n" 0 42 (:parent #95))) (fixed-width (:begin 2126 :end 2173 :value "runcmd coverage run -m unittest discover -v" :post-blank 2 :post-affiliated 2126 :mode nil :granularity nil :parent #84)) (paragraph (:begin 2173 :end 2244 :contents-begin 2173 :contents-end 2243 :post-blank 1 :post-affiliated 2173 :mode nil :granularity nil :parent #84) #("To generate a html coverage report in " 0 38 (:parent #97)) (verbatim (:begin 2211 :end 2242 :post-blank 0 :value "wqflask/coverage_html_report/" :parent #97)) #("\n" 0 1 (:parent #97))) (fixed-width (:begin 2244 :end 2268 :value "runcmd coverage html" :post-blank 2 :post-affiliated 2244 :mode nil :granularity nil :parent #84)) (paragraph (:begin 2268 :end 2303 :contents-begin 2268 :contents-end 2302 :post-blank 1 :post-affiliated 2268 :mode nil :granularity nil :parent #84) #("To output the report to " 0 24 (:parent #99)) (verbatim (:begin 2292 :end 2300 :post-blank 0 :value "STDOUT" :parent #99)) #(":\n" 0 2 (:parent #99))) (fixed-width (:begin 2303 :end 2329 :value "runcmd coverage report" :post-blank 2 :post-affiliated 2303 :mode nil :granularity nil :parent #84)) (paragraph (:begin 2329 :end 2404 :contents-begin 2329 :contents-end 2404 :post-blank 0 :post-affiliated 2329 :mode nil :granularity nil :parent #84) #("All the configs for running the coverage tool are in\n" 0 53 (:parent #101)) (verbatim (:begin 2382 :end 2403 :post-blank 0 :value "wqflask/.coveragerc" :parent #101)) #("\n" 0 1 (:parent #101)))))))) . #0)) (plain-list (:type unordered :begin 101 :end 211 :contents-begin 101 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 101 :mode planning :granularity nil :parent #1) (item (:bullet "- " :begin 101 :end 135 :contents-begin 103 :contents-end 135 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 101 :tag nil :mode item :granularity nil :parent #4) (paragraph (:begin 103 :end 135 :contents-begin 103 :contents-end 135 :post-blank 0 :post-affiliated 103 :mode nil :granularity nil :parent #7) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 103 :end 134 :contents-begin 120 :contents-end 132 :post-blank 0 :parent #10) #("Introduction" 0 12 (:parent #13))) #("\n" 0 1 (:parent #10)))) (item (:bullet "- " :begin 135 :end 211 :contents-begin 137 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 135 :tag nil :mode item :granularity nil :parent #4) (paragraph (:begin 137 :end 163 :contents-begin 137 :contents-end 163 :post-blank 0 :post-affiliated 137 :mode nil :granularity nil :parent #8) (link (:type "custom-id" :path "run-tests" :format bracket :raw-link "#run-tests" :application nil :search-option nil :begin 137 :end 162 :contents-begin 151 :contents-end 160 :post-blank 0 :parent #11) #("Run tests" 0 9 (:parent #14))) #("\n" 0 1 (:parent #11))) (plain-list (:type unordered :begin 163 :end 211 :contents-begin 163 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 163 :mode nil :granularity nil :parent #8) (item (:bullet "- " :begin 163 :end 185 :contents-begin 167 :contents-end 185 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 163 :tag nil :mode item :granularity nil :parent #12) (paragraph (:begin 167 :end 185 :contents-begin 167 :contents-end 185 :post-blank 0 :post-affiliated 167 :mode nil :granularity nil :parent #15) (link (:type "custom-id" :path "setup" :format bracket :raw-link "#setup" :application nil :search-option nil :begin 167 :end 184 :contents-begin 177 :contents-end 182 :post-blank 0 :parent #18) #("Setup" 0 5 (:parent #21))) #("\n" 0 1 (:parent #18)))) (item (:bullet "- " :begin 185 :end 211 :contents-begin 189 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 185 :tag nil :mode item :granularity nil :parent #12) (paragraph (:begin 189 :end 211 :contents-begin 189 :contents-end 211 :post-blank 0 :post-affiliated 189 :mode nil :granularity nil :parent #16) (link (:type "custom-id" :path "running" :format bracket :raw-link "#running" :application nil :search-option nil :begin 189 :end 210 :contents-begin 201 :contents-end 208 :post-blank 0 :parent #19) #("Running" 0 7 (:parent #22))) #("\n" 0 1 (:parent #19))))))))) "") org-export-data((headline (:raw-value "Table of Contents" :begin 23 :end 212 :pre-blank 0 :contents-begin 101 :contents-end 211 :robust-begin 103 :robust-end 209 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 23 :title (#("Table of Contents" 0 17 (:parent #0))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 23 :contents-begin 1 :contents-end 22 :robust-begin 1 :robust-end 20 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #46) (keyword (:key "TITLE" :value "Testing GN2" :begin 1 :end 22 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #49))) #0 (headline (:raw-value "Introduction" :begin 212 :end 1055 :pre-blank 1 :contents-begin 228 :contents-end 1054 :robust-begin 230 :robust-end 1052 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 212 :title (#("Introduction" 0 12 (:parent #51))) :mode nil :granularity nil :parent #46) (section (:begin 228 :end 1055 :contents-begin 228 :contents-end 1054 :robust-begin 228 :robust-end 1052 :post-blank 1 :post-affiliated 228 :mode section :granularity nil :parent #51) (paragraph (:begin 228 :end 578 :contents-begin 228 :contents-end 577 :post-blank 1 :post-affiliated 228 :mode planning :granularity nil :parent #54) #("For integration testing, we currently use " 0 42 (:parent #57)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/tree/testing/test/requests" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/tree/testing/test/requests" :application nil :search-option nil :begin 270 :end 360 :contents-begin 344 :contents-end 357 :post-blank 1 :parent #57) #("Mechanica Rob" 0 13 (:parent #61))) #("against the\nsmall " 0 18 (:parent #57)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :application nil :search-option nil :begin 378 :end 465 :contents-begin 455 :contents-end 463 :post-blank 0 :parent #57) #("database" 0 8 (:parent #63))) #("; a setup we call Mechanical Rob because it emulates\nsomeone clicking through the website and checking results.\n" 0 112 (:parent #57))) (paragraph (:begin 578 :end 785 :contents-begin 578 :contents-end 784 :post-blank 1 :post-affiliated 578 :mode nil :granularity nil :parent #54) #("These scripts invoke calls to a running webserver and test the response.\nIf a page changes or breaks, tests will fail. In principle, Mechanical\nRob runs before code merges get committed to the main server.\n" 0 206 (:parent #58))) (paragraph (:begin 785 :end 1054 :contents-begin 785 :contents-end 1054 :post-blank 0 :post-affiliated 785 :mode nil :granularity nil :parent #54) #("For unit tests, we use python's " 0 32 (:parent #59)) (verbatim (:begin 817 :end 828 :post-blank 1 :value "unittest" :parent #59)) #("framework. Coverage reports\nget generated using " 0 48 (:parent #59)) (link (:type "https" :path "//coverage.readthedocs.io/en/coverage-5.2.1/" :format bracket :raw-link "https://coverage.readthedocs.io/en/coverage-5.2.1/" :application nil :search-option nil :begin 876 :end 944 :contents-begin 930 :contents-end 941 :post-blank 1 :parent #59) #("coverage.py" 0 11 (:parent #65))) #("which you could also use to run\nunit tests. When adding new functionality, it is advisable to add\nunit tests.\n" 0 110 (:parent #59))))) (headline (:raw-value "Run tests" :begin 1055 :end 2404 :pre-blank 1 :contents-begin 1068 :contents-end 2404 :robust-begin 1070 :robust-end 2402 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1055 :title (#("Run tests" 0 9 (:parent #52))) :mode nil :granularity nil :parent #46) (headline (:raw-value "Setup" :begin 1068 :end 1209 :pre-blank 1 :contents-begin 1078 :contents-end 1208 :robust-begin 1080 :robust-end 1206 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1068 :title (#("Setup" 0 5 (:parent #55))) :mode section :granularity nil :parent #52) (section (:begin 1078 :end 1209 :contents-begin 1078 :contents-end 1208 :robust-begin 1078 :robust-end 1206 :post-blank 1 :post-affiliated 1078 :mode section :granularity nil :parent #55) (paragraph (:begin 1078 :end 1141 :contents-begin 1078 :contents-end 1140 :post-blank 1 :post-affiliated 1078 :mode planning :granularity nil :parent #58) #("Everything required for testing is already package with guix:\n" 0 62 (:parent #61))) (fixed-width (:begin 1141 :end 1208 :value "./pre-ins-env guix package -i genenetwork2 -p ~/opt/genenetwork2" :post-blank 1 :post-affiliated 1141 :mode nil :granularity nil :parent #58)))) (headline (:raw-value "Running" :begin 1209 :end 2404 :pre-blank 1 :contents-begin 1221 :contents-end 2404 :robust-begin 1223 :robust-end 2402 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1209 :title (#("Running" 0 7 (:parent #56))) :mode nil :granularity nil :parent #52) (section (:begin 1221 :end 2404 :contents-begin 1221 :contents-end 2404 :robust-begin 1221 :robust-end 2402 :post-blank 0 :post-affiliated 1221 :mode section :granularity nil :parent #56) (paragraph (:begin 1221 :end 1329 :contents-begin 1221 :contents-end 1328 :post-blank 1 :post-affiliated 1221 :mode planning :granularity nil :parent #59) #("Run the tests from the root of the genenetwork2 source tree as. Ensure\nthat Redis and Mariadb are running.\n" 0 107 (:parent #62))) (paragraph (:begin 1329 :end 1352 :contents-begin 1329 :contents-end 1352 :post-blank 0 :post-affiliated 1329 :mode nil :granularity nil :parent #59) #("To run Mechanical Rob:\n" 0 23 (:parent #63))) (fixed-width (:begin 1352 :end 1590 :value "time env GN2_PROFILE=~/opt/genenetwork2 TMPDIR=~/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -c ~/projects/genenetwork2/test/requests/test-website.py -a http://localhost:5004" :post-blank 2 :post-affiliated 1352 :mode nil :granularity nil :parent #59)) (paragraph (:begin 1590 :end 1637 :contents-begin 1590 :contents-end 1636 :post-blank 1 :post-affiliated 1590 :mode nil :granularity nil :parent #59) #("Use these aliases for the following examples.\n" 0 46 (:parent #65))) (src-block (:language "sh" :switches nil :parameters nil :begin 1637 :end 1970 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "alias runpython=\"env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2\"\n\nalias runcmd=\"time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -cli\"\n" :post-blank 1 :post-affiliated 1637 :mode nil :granularity nil :parent #59)) (paragraph (:begin 1970 :end 2026 :contents-begin 1970 :contents-end 2025 :post-blank 1 :post-affiliated 1970 :mode nil :granularity nil :parent #59) #("You could use them in your " 0 27 (:parent #67)) (verbatim (:begin 1997 :end 2007 :post-blank 1 :value ".bashrc" :parent #67)) #("or " 0 3 (:parent #67)) (verbatim (:begin 2010 :end 2019 :post-blank 1 :value ".zshrc" :parent #67)) #("file.\n" 0 6 (:parent #67))) (paragraph (:begin 2026 :end 2046 :contents-begin 2026 :contents-end 2045 :post-blank 1 :post-affiliated 2026 :mode nil :granularity nil :parent #59) #("To run unit tests:\n" 0 19 (:parent #68))) (fixed-width (:begin 2046 :end 2083 :value "runpython -m unittest discover -v" :post-blank 2 :post-affiliated 2046 :mode nil :granularity nil :parent #59)) (paragraph (:begin 2083 :end 2126 :contents-begin 2083 :contents-end 2125 :post-blank 1 :post-affiliated 2083 :mode nil :granularity nil :parent #59) #("Or alternatively using the coverage tool:\n" 0 42 (:parent #70))) (fixed-width (:begin 2126 :end 2173 :value "runcmd coverage run -m unittest discover -v" :post-blank 2 :post-affiliated 2126 :mode nil :granularity nil :parent #59)) (paragraph (:begin 2173 :end 2244 :contents-begin 2173 :contents-end 2243 :post-blank 1 :post-affiliated 2173 :mode nil :granularity nil :parent #59) #("To generate a html coverage report in " 0 38 (:parent #72)) (verbatim (:begin 2211 :end 2242 :post-blank 0 :value "wqflask/coverage_html_report/" :parent #72)) #("\n" 0 1 (:parent #72))) (fixed-width (:begin 2244 :end 2268 :value "runcmd coverage html" :post-blank 2 :post-affiliated 2244 :mode nil :granularity nil :parent #59)) (paragraph (:begin 2268 :end 2303 :contents-begin 2268 :contents-end 2302 :post-blank 1 :post-affiliated 2268 :mode nil :granularity nil :parent #59) #("To output the report to " 0 24 (:parent #74)) (verbatim (:begin 2292 :end 2300 :post-blank 0 :value "STDOUT" :parent #74)) #(":\n" 0 2 (:parent #74))) (fixed-width (:begin 2303 :end 2329 :value "runcmd coverage report" :post-blank 2 :post-affiliated 2303 :mode nil :granularity nil :parent #59)) (paragraph (:begin 2329 :end 2404 :contents-begin 2329 :contents-end 2404 :post-blank 0 :post-affiliated 2329 :mode nil :granularity nil :parent #59) #("All the configs for running the coverage tool are in\n" 0 53 (:parent #76)) (verbatim (:begin 2382 :end 2403 :post-blank 0 :value "wqflask/.coveragerc" :parent #76)) #("\n" 0 1 (:parent #76)))))))) (section (:begin 101 :end 212 :contents-begin 101 :contents-end 211 :robust-begin 101 :robust-end 209 :post-blank 1 :post-affiliated 101 :mode section :granularity nil :parent #0) (plain-list (:type unordered :begin 101 :end 211 :contents-begin 101 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 101 :mode planning :granularity nil :parent #3) (item (:bullet "- " :begin 101 :end 135 :contents-begin 103 :contents-end 135 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 101 :tag nil :mode item :granularity nil :parent #6) (paragraph (:begin 103 :end 135 :contents-begin 103 :contents-end 135 :post-blank 0 :post-affiliated 103 :mode nil :granularity nil :parent #9) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 103 :end 134 :contents-begin 120 :contents-end 132 :post-blank 0 :parent #12) #("Introduction" 0 12 (:parent #15))) #("\n" 0 1 (:parent #12)))) (item (:bullet "- " :begin 135 :end 211 :contents-begin 137 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 135 :tag nil :mode item :granularity nil :parent #6) (paragraph (:begin 137 :end 163 :contents-begin 137 :contents-end 163 :post-blank 0 :post-affiliated 137 :mode nil :granularity nil :parent #10) (link (:type "custom-id" :path "run-tests" :format bracket :raw-link "#run-tests" :application nil :search-option nil :begin 137 :end 162 :contents-begin 151 :contents-end 160 :post-blank 0 :parent #13) #("Run tests" 0 9 (:parent #16))) #("\n" 0 1 (:parent #13))) (plain-list (:type unordered :begin 163 :end 211 :contents-begin 163 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 163 :mode nil :granularity nil :parent #10) (item (:bullet "- " :begin 163 :end 185 :contents-begin 167 :contents-end 185 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 163 :tag nil :mode item :granularity nil :parent #14) (paragraph (:begin 167 :end 185 :contents-begin 167 :contents-end 185 :post-blank 0 :post-affiliated 167 :mode nil :granularity nil :parent #17) (link (:type "custom-id" :path "setup" :format bracket :raw-link "#setup" :application nil :search-option nil :begin 167 :end 184 :contents-begin 177 :contents-end 182 :post-blank 0 :parent #20) #("Setup" 0 5 (:parent #23))) #("\n" 0 1 (:parent #20)))) (item (:bullet "- " :begin 185 :end 211 :contents-begin 189 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 185 :tag nil :mode item :granularity nil :parent #14) (paragraph (:begin 189 :end 211 :contents-begin 189 :contents-end 211 :post-blank 0 :post-affiliated 189 :mode nil :granularity nil :parent #18) (link (:type "custom-id" :path "running" :format bracket :raw-link "#running" :application nil :search-option nil :begin 189 :end 210 :contents-begin 201 :contents-end 208 :post-blank 0 :parent #21) #("Running" 0 7 (:parent #24))) #("\n" 0 1 (:parent #21))))))))) (:export-options (body-only) :back-end #s(org-export-backend :name html :parent nil :transcoders ((bold . org-html-bold) (center-block . org-html-center-block) (clock . org-html-clock) (code . org-html-code) (drawer . org-html-drawer) (dynamic-block . org-html-dynamic-block) (entity . org-html-entity) (example-block . org-html-example-block) (export-block . org-html-export-block) (export-snippet . org-html-export-snippet) (fixed-width . org-html-fixed-width) (footnote-reference . org-html-footnote-reference) (headline . org-html-headline) (horizontal-rule . org-html-horizontal-rule) (inline-src-block . org-html-inline-src-block) (inlinetask . org-html-inlinetask) (inner-template . org-html-inner-template) (italic . org-html-italic) (item . org-html-item) (keyword . org-html-keyword) (latex-environment . org-html-latex-environment) (latex-fragment . org-html-latex-fragment) (line-break . org-html-line-break) (link . org-html-link) (node-property . org-html-node-property) (paragraph . org-html-paragraph) (plain-list . org-html-plain-list) (plain-text . org-html-plain-text) (planning . org-html-planning) (property-drawer . org-html-property-drawer) (quote-block . org-html-quote-block) (radio-target . org-html-radio-target) (section . org-html-section) (special-block . org-html-special-block) (src-block . org-html-src-block) (statistics-cookie . org-html-statistics-cookie) (strike-through . org-html-strike-through) (subscript . org-html-subscript) (superscript . org-html-superscript) (table . org-html-table) (table-cell . org-html-table-cell) (table-row . org-html-table-row) (target . org-html-target) (template . org-html-template) (timestamp . org-html-timestamp) (underline . org-html-underline) (verbatim . org-html-verbatim) (verse-block . org-html-verse-block)) :options ((:html-doctype "HTML_DOCTYPE" nil org-html-doctype) (:html-container "HTML_CONTAINER" nil org-html-container-element) (:html-content-class "HTML_CONTENT_CLASS" nil org-html-content-class) (:description "DESCRIPTION" nil nil newline) (:keywords "KEYWORDS" nil nil space) (:html-html5-fancy nil "html5-fancy" org-html-html5-fancy) (:html-link-use-abs-url nil "html-link-use-abs-url" org-html-link-use-abs-url) (:html-link-home "HTML_LINK_HOME" nil org-html-link-home) (:html-link-up "HTML_LINK_UP" nil org-html-link-up) (:html-mathjax "HTML_MATHJAX" nil "" space) (:html-equation-reference-format "HTML_EQUATION_REFERENCE_FORMAT" nil org-html-equation-reference-format t) (:html-postamble nil "html-postamble" org-html-postamble) (:html-preamble nil "html-preamble" org-html-preamble) (:html-head "HTML_HEAD" nil org-html-head newline) (:html-head-extra "HTML_HEAD_EXTRA" nil org-html-head-extra newline) (:subtitle "SUBTITLE" nil nil parse) (:html-head-include-default-style nil "html-style" org-html-head-include-default-style) (:html-head-include-scripts nil "html-scripts" org-html-head-include-scripts) (:html-allow-name-attribute-in-anchors nil nil org-html-allow-name-attribute-in-anchors) (:html-divs nil nil org-html-divs) (:html-checkbox-type nil nil org-html-checkbox-type) (:html-extension nil nil org-html-extension) (:html-footnote-format nil nil org-html-footnote-format) (:html-footnote-separator nil nil org-html-footnote-separator) (:html-footnotes-section nil nil org-html-footnotes-section) (:html-format-drawer-function nil nil org-html-format-drawer-function) (:html-format-headline-function nil nil org-html-format-headline-function) (:html-format-inlinetask-function nil nil org-html-format-inlinetask-function) (:html-home/up-format nil nil org-html-home/up-format) (:html-indent nil nil org-html-indent) (:html-infojs-options nil nil org-html-infojs-options) (:html-infojs-template nil nil org-html-infojs-template) (:html-inline-image-rules nil nil org-html-inline-image-rules) (:html-link-org-files-as-html nil nil org-html-link-org-files-as-html) (:html-mathjax-options nil nil org-html-mathjax-options) (:html-mathjax-template nil nil org-html-mathjax-template) (:html-metadata-timestamp-format nil nil org-html-metadata-timestamp-format) (:html-postamble-format nil nil org-html-postamble-format) (:html-preamble-format nil nil org-html-preamble-format) (:html-prefer-user-labels nil nil org-html-prefer-user-labels) (:html-self-link-headlines nil nil org-html-self-link-headlines) (:html-table-align-individual-fields nil nil org-html-table-align-individual-fields) (:html-table-caption-above nil nil org-html-table-caption-above) (:html-table-data-tags nil nil org-html-table-data-tags) (:html-table-header-tags nil nil org-html-table-header-tags) (:html-table-use-header-tags-for-first-column nil nil org-html-table-use-header-tags-for-first-column) (:html-tag-class-prefix nil nil org-html-tag-class-prefix) (:html-text-markup-alist nil nil org-html-text-markup-alist) (:html-todo-kwd-class-prefix nil nil org-html-todo-kwd-class-prefix) (:html-toplevel-hlevel nil nil org-html-toplevel-hlevel) (:html-use-infojs nil nil org-html-use-infojs) (:html-validation-link nil nil org-html-validation-link) (:html-viewport nil nil org-html-viewport) (:html-inline-images nil nil org-html-inline-images) (:html-table-attributes nil nil org-html-table-default-attributes) (:html-table-row-open-tag nil nil org-html-table-row-open-tag) (:html-table-row-close-tag nil nil org-html-table-row-close-tag) (:html-xml-declaration nil nil org-html-xml-declaration) (:html-wrap-src-lines nil nil org-html-wrap-src-lines) (:html-klipsify-src nil nil org-html-klipsify-src) (:html-klipse-css nil nil org-html-klipse-css) (:html-klipse-js nil nil org-html-klipse-js) (:html-klipse-selection-script nil nil org-html-klipse-selection-script) (:infojs-opt "INFOJS_OPT" nil nil) (:creator "CREATOR" nil org-html-creator-string) (:with-latex nil "tex" org-html-with-latex) (:latex-header "LATEX_HEADER" nil nil newline)) :filters ((:filter-options . org-html-infojs-install-script) (:filter-parse-tree . org-html-image-link-filter) (:filter-final-output . org-html-final-function)) :blocks nil :menu (104 "Export to HTML" ((72 "As HTML buffer" org-html-export-as-html) (104 "As HTML file" org-html-export-to-html) (111 "As HTML file and open" (lambda (a s v b) (if a (org-html-export-to-html t s v b) (org-open-file (org-html-export-to-html nil s v b)))))))) :translate-alist ((bold . org-html-bold) (center-block . org-html-center-block) (clock . org-html-clock) (code . org-html-code) (drawer . org-html-drawer) (dynamic-block . org-html-dynamic-block) (entity . org-html-entity) (example-block . org-html-example-block) (export-block . org-html-export-block) (export-snippet . org-html-export-snippet) (fixed-width . org-html-fixed-width) (footnote-reference . org-html-footnote-reference) (headline . org-html-headline) (horizontal-rule . org-html-horizontal-rule) (inline-src-block . org-html-inline-src-block) (inlinetask . org-html-inlinetask) (inner-template . org-html-inner-template) (italic . org-html-italic) (item . org-html-item) (keyword . org-html-keyword) (latex-environment . org-html-latex-environment) (latex-fragment . org-html-latex-fragment) (line-break . org-html-line-break) (link . org-html-link) (node-property . org-html-node-property) (paragraph . org-html-paragraph) (plain-list . org-html-plain-list) (plain-text . org-html-plain-text) (planning . org-html-planning) (property-drawer . org-html-property-drawer) (quote-block . org-html-quote-block) (radio-target . org-html-radio-target) (section . org-html-section) (special-block . org-html-special-block) (src-block . org-html-src-block) (statistics-cookie . org-html-statistics-cookie) (strike-through . org-html-strike-through) (subscript . org-html-subscript) (superscript . org-html-superscript) (table . org-html-table) (table-cell . org-html-table-cell) (table-row . org-html-table-row) (target . org-html-target) (template . org-html-template) (timestamp . org-html-timestamp) (underline . org-html-underline) (verbatim . org-html-verbatim) (verse-block . org-html-verse-block)) :exported-data # :input-buffer " *temp*" :input-file nil :html-doctype "xhtml-strict" :html-container "div" :html-content-class "content" :description nil :keywords nil :html-html5-fancy nil :html-link-use-abs-url nil :html-link-home "" :html-link-up "" :html-mathjax "" :html-equation-reference-format "\\eqref{%s}" :html-postamble auto :html-preamble t :html-head "" :html-head-extra "" :subtitle nil :html-head-include-default-style t :html-head-include-scripts nil :html-allow-name-attribute-in-anchors nil :html-divs ((preamble "div" "preamble") (content "div" "content") (postamble "div" "postamble")) :html-checkbox-type ascii :html-extension "html" :html-footnote-format "%s" :html-footnote-separator ", " :html-footnotes-section "
\n

%s:

\n
\n%s\n
\n
" :html-format-drawer-function #f(compiled-function (name contents) #) :html-format-headline-function org-html-format-headline-default-function :html-format-inlinetask-function org-html-format-inlinetask-default-function :html-home/up-format "
\n UP \n |\n HOME \n
" :html-indent nil :html-infojs-options ((path . "https://orgmode.org/org-info.js") (view . "info") (toc . :with-toc) (ftoc . "0") (tdepth . "max") (sdepth . "max") (mouse . "underline") (buttons . "0") (ltoc . "1") (up . :html-link-up) (home . :html-link-home)) :html-infojs-template "\n\n" :html-inline-image-rules (("file" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)") ("http" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)") ("https" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)")) :html-link-org-files-as-html t :html-mathjax-options ((path "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js") (scale 1.0) (align "center") (font "mathjax-modern") (overflow "overflow") (tags "ams") (indent "0em") (multlinewidth "85%") (tagindent ".8em") (tagside "right")) :html-mathjax-template "\n\n\n" :html-metadata-timestamp-format "%Y-%m-%d %a %H:%M" :html-postamble-format (("en" "

Author: %a (%e)

\n

Date: %d

\n

%c

\n

%v

")) :html-preamble-format (("en" "")) :html-prefer-user-labels nil :html-self-link-headlines nil :html-table-align-individual-fields t :html-table-caption-above t :html-table-data-tags ("" . "") :html-table-header-tags ("" . "") :html-table-use-header-tags-for-first-column nil :html-tag-class-prefix "" :html-text-markup-alist ((bold . "%s") (code . "%s") (italic . "%s") (strike-through . "%s") (underline . "%s") (verbatim . "%s")) :html-todo-kwd-class-prefix "" :html-toplevel-hlevel 2 :html-use-infojs when-configured :html-validation-link "Validate" :html-viewport ((width "device-width") (initial-scale "1") (minimum-scale "") (maximum-scale "") (user-scalable "")) :html-inline-images t :html-table-attributes (:border "2" :cellspacing "0" :cellpadding "6" :rules "groups" :frame "hsides") :html-table-row-open-tag "" :html-table-row-close-tag "" :html-xml-declaration (("html" . "") ("php" . "\"; ?>")) :html-wrap-src-lines nil :html-klipsify-src nil :html-klipse-css "https://storage.googleapis.com/app.klipse.tech/css/codemirror.css" :html-klipse-js "https://storage.googleapis.com/app.klipse.tech/plugin_prod/js/klipse_plugin.min.js" :html-klipse-selection-script "window.klipse_settings = {selector_eval_html: '.src-html',\n selector_eval_js: '.src-js',\n selector_eval_python_client: '.src-python',\n selector_eval_scheme: '.src-scheme',\n selector: '.src-clojure',\n selector_eval_ruby: '.src-ruby'};" :infojs-opt nil :creator "Emacs 29.1 (Org mode 9.6.6)" :with-latex t :latex-header nil :title (#("Testing GN2" 0 11 (:parent #148))) :date nil :author (#("unknown" 0 7 (:parent #152))) :email "unknown@genenetwork-development" :language "en" :select-tags ("export") :exclude-tags ("noexport") :headline-levels 3 :preserve-breaks nil :section-numbers nil :time-stamp-file t :with-archived-trees headline :with-author t :with-broken-links nil :with-clocks nil :with-creator nil :with-date t :with-drawers (not "LOGBOOK") :with-email nil :with-emphasize t :with-entities t :with-fixed-width t :with-footnotes t :with-inlinetasks t :with-planning nil :with-priority nil :with-properties nil :with-smart-quotes nil :with-special-strings t :with-statistics-cookies t :with-sub-superscript t :with-toc nil :with-tables t :with-tags t :with-tasks t :with-timestamps t :with-title t :with-todo-keywords t :cite-export (basic nil nil) :bibliography nil :filter-body nil :filter-bold nil :filter-babel-call nil :filter-center-block nil :filter-clock nil :filter-code nil :filter-diary-sexp nil :filter-drawer nil :filter-dynamic-block nil :filter-entity nil :filter-example-block nil :filter-export-block nil :filter-export-snippet nil :filter-final-output (org-html-final-function) :filter-fixed-width nil :filter-footnote-definition nil :filter-footnote-reference nil :filter-headline nil :filter-horizontal-rule nil :filter-inline-babel-call nil :filter-inline-src-block nil :filter-inlinetask nil :filter-italic nil :filter-item nil :filter-keyword nil :filter-latex-environment nil :filter-latex-fragment nil :filter-line-break nil :filter-link nil :filter-node-property nil :filter-options (org-html-infojs-install-script) :filter-paragraph nil :filter-parse-tree (org-html-image-link-filter) :filter-plain-list nil :filter-plain-text nil :filter-planning nil :filter-property-drawer nil :filter-quote-block nil :filter-radio-target nil :filter-section nil :filter-special-block nil :filter-src-block nil :filter-statistics-cookie nil :filter-strike-through nil :filter-subscript nil :filter-superscript nil :filter-table nil :filter-table-cell nil :filter-table-row nil :filter-target nil :filter-timestamp nil :filter-underline nil :filter-verbatim nil :filter-verse-block nil :ignore-list nil :parse-tree (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 23 :contents-begin 1 :contents-end 22 :robust-begin 1 :robust-end 20 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #338) (keyword (:key "TITLE" :value "Testing GN2" :begin 1 :end 22 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #341))) (headline (:raw-value "Table of Contents" :begin 23 :end 212 :pre-blank 0 :contents-begin 101 :contents-end 211 :robust-begin 103 :robust-end 209 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 23 :title (#("Table of Contents" 0 17 (:parent #342))) :mode nil :granularity nil :parent #338) (section (:begin 101 :end 212 :contents-begin 101 :contents-end 211 :robust-begin 101 :robust-end 209 :post-blank 1 :post-affiliated 101 :mode section :granularity nil :parent #342) (plain-list (:type unordered :begin 101 :end 211 :contents-begin 101 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 101 :mode planning :granularity nil :parent #345) (item (:bullet "- " :begin 101 :end 135 :contents-begin 103 :contents-end 135 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 101 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 103 :end 135 :contents-begin 103 :contents-end 135 :post-blank 0 :post-affiliated 103 :mode nil :granularity nil :parent #351) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 103 :end 134 :contents-begin 120 :contents-end 132 :post-blank 0 :parent #354) #("Introduction" 0 12 (:parent #357))) #("\n" 0 1 (:parent #354)))) (item (:bullet "- " :begin 135 :end 211 :contents-begin 137 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 135 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 137 :end 163 :contents-begin 137 :contents-end 163 :post-blank 0 :post-affiliated 137 :mode nil :granularity nil :parent #352) (link (:type "custom-id" :path "run-tests" :format bracket :raw-link "#run-tests" :application nil :search-option nil :begin 137 :end 162 :contents-begin 151 :contents-end 160 :post-blank 0 :parent #355) #("Run tests" 0 9 (:parent #358))) #("\n" 0 1 (:parent #355))) (plain-list (:type unordered :begin 163 :end 211 :contents-begin 163 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 163 :mode nil :granularity nil :parent #352) (item (:bullet "- " :begin 163 :end 185 :contents-begin 167 :contents-end 185 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 163 :tag nil :mode item :granularity nil :parent #356) (paragraph (:begin 167 :end 185 :contents-begin 167 :contents-end 185 :post-blank 0 :post-affiliated 167 :mode nil :granularity nil :parent #359) (link (:type "custom-id" :path "setup" :format bracket :raw-link "#setup" :application nil :search-option nil :begin 167 :end 184 :contents-begin 177 :contents-end 182 :post-blank 0 :parent #362) #("Setup" 0 5 (:parent #365))) #("\n" 0 1 (:parent #362)))) (item (:bullet "- " :begin 185 :end 211 :contents-begin 189 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 185 :tag nil :mode item :granularity nil :parent #356) (paragraph (:begin 189 :end 211 :contents-begin 189 :contents-end 211 :post-blank 0 :post-affiliated 189 :mode nil :granularity nil :parent #360) (link (:type "custom-id" :path "running" :format bracket :raw-link "#running" :application nil :search-option nil :begin 189 :end 210 :contents-begin 201 :contents-end 208 :post-blank 0 :parent #363) #("Running" 0 7 (:parent #366))) #("\n" 0 1 (:parent #363))))))))) (headline (:raw-value "Introduction" :begin 212 :end 1055 :pre-blank 1 :contents-begin 228 :contents-end 1054 :robust-begin 230 :robust-end 1052 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 212 :title (#("Introduction" 0 12 (:parent #343))) :mode nil :granularity nil :parent #338) (section (:begin 228 :end 1055 :contents-begin 228 :contents-end 1054 :robust-begin 228 :robust-end 1052 :post-blank 1 :post-affiliated 228 :mode section :granularity nil :parent #343) (paragraph (:begin 228 :end 578 :contents-begin 228 :contents-end 577 :post-blank 1 :post-affiliated 228 :mode planning :granularity nil :parent #346) #("For integration testing, we currently use " 0 42 (:parent #349)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/tree/testing/test/requests" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/tree/testing/test/requests" :application nil :search-option nil :begin 270 :end 360 :contents-begin 344 :contents-end 357 :post-blank 1 :parent #349) #("Mechanica Rob" 0 13 (:parent #353))) #("against the\nsmall " 0 18 (:parent #349)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :application nil :search-option nil :begin 378 :end 465 :contents-begin 455 :contents-end 463 :post-blank 0 :parent #349) #("database" 0 8 (:parent #355))) #("; a setup we call Mechanical Rob because it emulates\nsomeone clicking through the website and checking results.\n" 0 112 (:parent #349))) (paragraph (:begin 578 :end 785 :contents-begin 578 :contents-end 784 :post-blank 1 :post-affiliated 578 :mode nil :granularity nil :parent #346) #("These scripts invoke calls to a running webserver and test the response.\nIf a page changes or breaks, tests will fail. In principle, Mechanical\nRob runs before code merges get committed to the main server.\n" 0 206 (:parent #350))) (paragraph (:begin 785 :end 1054 :contents-begin 785 :contents-end 1054 :post-blank 0 :post-affiliated 785 :mode nil :granularity nil :parent #346) #("For unit tests, we use python's " 0 32 (:parent #351)) (verbatim (:begin 817 :end 828 :post-blank 1 :value "unittest" :parent #351)) #("framework. Coverage reports\nget generated using " 0 48 (:parent #351)) (link (:type "https" :path "//coverage.readthedocs.io/en/coverage-5.2.1/" :format bracket :raw-link "https://coverage.readthedocs.io/en/coverage-5.2.1/" :application nil :search-option nil :begin 876 :end 944 :contents-begin 930 :contents-end 941 :post-blank 1 :parent #351) #("coverage.py" 0 11 (:parent #357))) #("which you could also use to run\nunit tests. When adding new functionality, it is advisable to add\nunit tests.\n" 0 110 (:parent #351))))) (headline (:raw-value "Run tests" :begin 1055 :end 2404 :pre-blank 1 :contents-begin 1068 :contents-end 2404 :robust-begin 1070 :robust-end 2402 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1055 :title (#("Run tests" 0 9 (:parent #344))) :mode nil :granularity nil :parent #338) (headline (:raw-value "Setup" :begin 1068 :end 1209 :pre-blank 1 :contents-begin 1078 :contents-end 1208 :robust-begin 1080 :robust-end 1206 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1068 :title (#("Setup" 0 5 (:parent #347))) :mode section :granularity nil :parent #344) (section (:begin 1078 :end 1209 :contents-begin 1078 :contents-end 1208 :robust-begin 1078 :robust-end 1206 :post-blank 1 :post-affiliated 1078 :mode section :granularity nil :parent #347) (paragraph (:begin 1078 :end 1141 :contents-begin 1078 :contents-end 1140 :post-blank 1 :post-affiliated 1078 :mode planning :granularity nil :parent #350) #("Everything required for testing is already package with guix:\n" 0 62 (:parent #353))) (fixed-width (:begin 1141 :end 1208 :value "./pre-ins-env guix package -i genenetwork2 -p ~/opt/genenetwork2" :post-blank 1 :post-affiliated 1141 :mode nil :granularity nil :parent #350)))) (headline (:raw-value "Running" :begin 1209 :end 2404 :pre-blank 1 :contents-begin 1221 :contents-end 2404 :robust-begin 1223 :robust-end 2402 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1209 :title (#("Running" 0 7 (:parent #348))) :mode nil :granularity nil :parent #344) (section (:begin 1221 :end 2404 :contents-begin 1221 :contents-end 2404 :robust-begin 1221 :robust-end 2402 :post-blank 0 :post-affiliated 1221 :mode section :granularity nil :parent #348) (paragraph (:begin 1221 :end 1329 :contents-begin 1221 :contents-end 1328 :post-blank 1 :post-affiliated 1221 :mode planning :granularity nil :parent #351) #("Run the tests from the root of the genenetwork2 source tree as. Ensure\nthat Redis and Mariadb are running.\n" 0 107 (:parent #354))) (paragraph (:begin 1329 :end 1352 :contents-begin 1329 :contents-end 1352 :post-blank 0 :post-affiliated 1329 :mode nil :granularity nil :parent #351) #("To run Mechanical Rob:\n" 0 23 (:parent #355))) (fixed-width (:begin 1352 :end 1590 :value "time env GN2_PROFILE=~/opt/genenetwork2 TMPDIR=~/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -c ~/projects/genenetwork2/test/requests/test-website.py -a http://localhost:5004" :post-blank 2 :post-affiliated 1352 :mode nil :granularity nil :parent #351)) (paragraph (:begin 1590 :end 1637 :contents-begin 1590 :contents-end 1636 :post-blank 1 :post-affiliated 1590 :mode nil :granularity nil :parent #351) #("Use these aliases for the following examples.\n" 0 46 (:parent #357))) (src-block (:language "sh" :switches nil :parameters nil :begin 1637 :end 1970 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "alias runpython=\"env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2\"\n\nalias runcmd=\"time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -cli\"\n" :post-blank 1 :post-affiliated 1637 :mode nil :granularity nil :parent #351)) (paragraph (:begin 1970 :end 2026 :contents-begin 1970 :contents-end 2025 :post-blank 1 :post-affiliated 1970 :mode nil :granularity nil :parent #351) #("You could use them in your " 0 27 (:parent #359)) (verbatim (:begin 1997 :end 2007 :post-blank 1 :value ".bashrc" :parent #359)) #("or " 0 3 (:parent #359)) (verbatim (:begin 2010 :end 2019 :post-blank 1 :value ".zshrc" :parent #359)) #("file.\n" 0 6 (:parent #359))) (paragraph (:begin 2026 :end 2046 :contents-begin 2026 :contents-end 2045 :post-blank 1 :post-affiliated 2026 :mode nil :granularity nil :parent #351) #("To run unit tests:\n" 0 19 (:parent #360))) (fixed-width (:begin 2046 :end 2083 :value "runpython -m unittest discover -v" :post-blank 2 :post-affiliated 2046 :mode nil :granularity nil :parent #351)) (paragraph (:begin 2083 :end 2126 :contents-begin 2083 :contents-end 2125 :post-blank 1 :post-affiliated 2083 :mode nil :granularity nil :parent #351) #("Or alternatively using the coverage tool:\n" 0 42 (:parent #362))) (fixed-width (:begin 2126 :end 2173 :value "runcmd coverage run -m unittest discover -v" :post-blank 2 :post-affiliated 2126 :mode nil :granularity nil :parent #351)) (paragraph (:begin 2173 :end 2244 :contents-begin 2173 :contents-end 2243 :post-blank 1 :post-affiliated 2173 :mode nil :granularity nil :parent #351) #("To generate a html coverage report in " 0 38 (:parent #364)) (verbatim (:begin 2211 :end 2242 :post-blank 0 :value "wqflask/coverage_html_report/" :parent #364)) #("\n" 0 1 (:parent #364))) (fixed-width (:begin 2244 :end 2268 :value "runcmd coverage html" :post-blank 2 :post-affiliated 2244 :mode nil :granularity nil :parent #351)) (paragraph (:begin 2268 :end 2303 :contents-begin 2268 :contents-end 2302 :post-blank 1 :post-affiliated 2268 :mode nil :granularity nil :parent #351) #("To output the report to " 0 24 (:parent #366)) (verbatim (:begin 2292 :end 2300 :post-blank 0 :value "STDOUT" :parent #366)) #(":\n" 0 2 (:parent #366))) (fixed-width (:begin 2303 :end 2329 :value "runcmd coverage report" :post-blank 2 :post-affiliated 2303 :mode nil :granularity nil :parent #351)) (paragraph (:begin 2329 :end 2404 :contents-begin 2329 :contents-end 2404 :post-blank 0 :post-affiliated 2329 :mode nil :granularity nil :parent #351) #("All the configs for running the coverage tool are in\n" 0 53 (:parent #368)) (verbatim (:begin 2382 :end 2403 :post-blank 0 :value "wqflask/.coveragerc" :parent #368)) #("\n" 0 1 (:parent #368))))))) :headline-offset 0 :headline-numbering nil :id-alist nil :citations nil :id-local-cache #)) #f(compiled-function (element) #)((headline (:raw-value "Table of Contents" :begin 23 :end 212 :pre-blank 0 :contents-begin 101 :contents-end 211 :robust-begin 103 :robust-end 209 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 23 :title (#("Table of Contents" 0 17 (:parent #0))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 23 :contents-begin 1 :contents-end 22 :robust-begin 1 :robust-end 20 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #46) (keyword (:key "TITLE" :value "Testing GN2" :begin 1 :end 22 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #49))) #0 (headline (:raw-value "Introduction" :begin 212 :end 1055 :pre-blank 1 :contents-begin 228 :contents-end 1054 :robust-begin 230 :robust-end 1052 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 212 :title (#("Introduction" 0 12 (:parent #51))) :mode nil :granularity nil :parent #46) (section (:begin 228 :end 1055 :contents-begin 228 :contents-end 1054 :robust-begin 228 :robust-end 1052 :post-blank 1 :post-affiliated 228 :mode section :granularity nil :parent #51) (paragraph (:begin 228 :end 578 :contents-begin 228 :contents-end 577 :post-blank 1 :post-affiliated 228 :mode planning :granularity nil :parent #54) #("For integration testing, we currently use " 0 42 (:parent #57)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/tree/testing/test/requests" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/tree/testing/test/requests" :application nil :search-option nil :begin 270 :end 360 :contents-begin 344 :contents-end 357 :post-blank 1 :parent #57) #("Mechanica Rob" 0 13 (:parent #61))) #("against the\nsmall " 0 18 (:parent #57)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :application nil :search-option nil :begin 378 :end 465 :contents-begin 455 :contents-end 463 :post-blank 0 :parent #57) #("database" 0 8 (:parent #63))) #("; a setup we call Mechanical Rob because it emulates\nsomeone clicking through the website and checking results.\n" 0 112 (:parent #57))) (paragraph (:begin 578 :end 785 :contents-begin 578 :contents-end 784 :post-blank 1 :post-affiliated 578 :mode nil :granularity nil :parent #54) #("These scripts invoke calls to a running webserver and test the response.\nIf a page changes or breaks, tests will fail. In principle, Mechanical\nRob runs before code merges get committed to the main server.\n" 0 206 (:parent #58))) (paragraph (:begin 785 :end 1054 :contents-begin 785 :contents-end 1054 :post-blank 0 :post-affiliated 785 :mode nil :granularity nil :parent #54) #("For unit tests, we use python's " 0 32 (:parent #59)) (verbatim (:begin 817 :end 828 :post-blank 1 :value "unittest" :parent #59)) #("framework. Coverage reports\nget generated using " 0 48 (:parent #59)) (link (:type "https" :path "//coverage.readthedocs.io/en/coverage-5.2.1/" :format bracket :raw-link "https://coverage.readthedocs.io/en/coverage-5.2.1/" :application nil :search-option nil :begin 876 :end 944 :contents-begin 930 :contents-end 941 :post-blank 1 :parent #59) #("coverage.py" 0 11 (:parent #65))) #("which you could also use to run\nunit tests. When adding new functionality, it is advisable to add\nunit tests.\n" 0 110 (:parent #59))))) (headline (:raw-value "Run tests" :begin 1055 :end 2404 :pre-blank 1 :contents-begin 1068 :contents-end 2404 :robust-begin 1070 :robust-end 2402 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1055 :title (#("Run tests" 0 9 (:parent #52))) :mode nil :granularity nil :parent #46) (headline (:raw-value "Setup" :begin 1068 :end 1209 :pre-blank 1 :contents-begin 1078 :contents-end 1208 :robust-begin 1080 :robust-end 1206 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1068 :title (#("Setup" 0 5 (:parent #55))) :mode section :granularity nil :parent #52) (section (:begin 1078 :end 1209 :contents-begin 1078 :contents-end 1208 :robust-begin 1078 :robust-end 1206 :post-blank 1 :post-affiliated 1078 :mode section :granularity nil :parent #55) (paragraph (:begin 1078 :end 1141 :contents-begin 1078 :contents-end 1140 :post-blank 1 :post-affiliated 1078 :mode planning :granularity nil :parent #58) #("Everything required for testing is already package with guix:\n" 0 62 (:parent #61))) (fixed-width (:begin 1141 :end 1208 :value "./pre-ins-env guix package -i genenetwork2 -p ~/opt/genenetwork2" :post-blank 1 :post-affiliated 1141 :mode nil :granularity nil :parent #58)))) (headline (:raw-value "Running" :begin 1209 :end 2404 :pre-blank 1 :contents-begin 1221 :contents-end 2404 :robust-begin 1223 :robust-end 2402 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1209 :title (#("Running" 0 7 (:parent #56))) :mode nil :granularity nil :parent #52) (section (:begin 1221 :end 2404 :contents-begin 1221 :contents-end 2404 :robust-begin 1221 :robust-end 2402 :post-blank 0 :post-affiliated 1221 :mode section :granularity nil :parent #56) (paragraph (:begin 1221 :end 1329 :contents-begin 1221 :contents-end 1328 :post-blank 1 :post-affiliated 1221 :mode planning :granularity nil :parent #59) #("Run the tests from the root of the genenetwork2 source tree as. Ensure\nthat Redis and Mariadb are running.\n" 0 107 (:parent #62))) (paragraph (:begin 1329 :end 1352 :contents-begin 1329 :contents-end 1352 :post-blank 0 :post-affiliated 1329 :mode nil :granularity nil :parent #59) #("To run Mechanical Rob:\n" 0 23 (:parent #63))) (fixed-width (:begin 1352 :end 1590 :value "time env GN2_PROFILE=~/opt/genenetwork2 TMPDIR=~/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -c ~/projects/genenetwork2/test/requests/test-website.py -a http://localhost:5004" :post-blank 2 :post-affiliated 1352 :mode nil :granularity nil :parent #59)) (paragraph (:begin 1590 :end 1637 :contents-begin 1590 :contents-end 1636 :post-blank 1 :post-affiliated 1590 :mode nil :granularity nil :parent #59) #("Use these aliases for the following examples.\n" 0 46 (:parent #65))) (src-block (:language "sh" :switches nil :parameters nil :begin 1637 :end 1970 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "alias runpython=\"env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2\"\n\nalias runcmd=\"time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -cli\"\n" :post-blank 1 :post-affiliated 1637 :mode nil :granularity nil :parent #59)) (paragraph (:begin 1970 :end 2026 :contents-begin 1970 :contents-end 2025 :post-blank 1 :post-affiliated 1970 :mode nil :granularity nil :parent #59) #("You could use them in your " 0 27 (:parent #67)) (verbatim (:begin 1997 :end 2007 :post-blank 1 :value ".bashrc" :parent #67)) #("or " 0 3 (:parent #67)) (verbatim (:begin 2010 :end 2019 :post-blank 1 :value ".zshrc" :parent #67)) #("file.\n" 0 6 (:parent #67))) (paragraph (:begin 2026 :end 2046 :contents-begin 2026 :contents-end 2045 :post-blank 1 :post-affiliated 2026 :mode nil :granularity nil :parent #59) #("To run unit tests:\n" 0 19 (:parent #68))) (fixed-width (:begin 2046 :end 2083 :value "runpython -m unittest discover -v" :post-blank 2 :post-affiliated 2046 :mode nil :granularity nil :parent #59)) (paragraph (:begin 2083 :end 2126 :contents-begin 2083 :contents-end 2125 :post-blank 1 :post-affiliated 2083 :mode nil :granularity nil :parent #59) #("Or alternatively using the coverage tool:\n" 0 42 (:parent #70))) (fixed-width (:begin 2126 :end 2173 :value "runcmd coverage run -m unittest discover -v" :post-blank 2 :post-affiliated 2126 :mode nil :granularity nil :parent #59)) (paragraph (:begin 2173 :end 2244 :contents-begin 2173 :contents-end 2243 :post-blank 1 :post-affiliated 2173 :mode nil :granularity nil :parent #59) #("To generate a html coverage report in " 0 38 (:parent #72)) (verbatim (:begin 2211 :end 2242 :post-blank 0 :value "wqflask/coverage_html_report/" :parent #72)) #("\n" 0 1 (:parent #72))) (fixed-width (:begin 2244 :end 2268 :value "runcmd coverage html" :post-blank 2 :post-affiliated 2244 :mode nil :granularity nil :parent #59)) (paragraph (:begin 2268 :end 2303 :contents-begin 2268 :contents-end 2302 :post-blank 1 :post-affiliated 2268 :mode nil :granularity nil :parent #59) #("To output the report to " 0 24 (:parent #74)) (verbatim (:begin 2292 :end 2300 :post-blank 0 :value "STDOUT" :parent #74)) #(":\n" 0 2 (:parent #74))) (fixed-width (:begin 2303 :end 2329 :value "runcmd coverage report" :post-blank 2 :post-affiliated 2303 :mode nil :granularity nil :parent #59)) (paragraph (:begin 2329 :end 2404 :contents-begin 2329 :contents-end 2404 :post-blank 0 :post-affiliated 2329 :mode nil :granularity nil :parent #59) #("All the configs for running the coverage tool are in\n" 0 53 (:parent #76)) (verbatim (:begin 2382 :end 2403 :post-blank 0 :value "wqflask/.coveragerc" :parent #76)) #("\n" 0 1 (:parent #76)))))))) (section (:begin 101 :end 212 :contents-begin 101 :contents-end 211 :robust-begin 101 :robust-end 209 :post-blank 1 :post-affiliated 101 :mode section :granularity nil :parent #0) (plain-list (:type unordered :begin 101 :end 211 :contents-begin 101 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 101 :mode planning :granularity nil :parent #3) (item (:bullet "- " :begin 101 :end 135 :contents-begin 103 :contents-end 135 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 101 :tag nil :mode item :granularity nil :parent #6) (paragraph (:begin 103 :end 135 :contents-begin 103 :contents-end 135 :post-blank 0 :post-affiliated 103 :mode nil :granularity nil :parent #9) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 103 :end 134 :contents-begin 120 :contents-end 132 :post-blank 0 :parent #12) #("Introduction" 0 12 (:parent #15))) #("\n" 0 1 (:parent #12)))) (item (:bullet "- " :begin 135 :end 211 :contents-begin 137 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 135 :tag nil :mode item :granularity nil :parent #6) (paragraph (:begin 137 :end 163 :contents-begin 137 :contents-end 163 :post-blank 0 :post-affiliated 137 :mode nil :granularity nil :parent #10) (link (:type "custom-id" :path "run-tests" :format bracket :raw-link "#run-tests" :application nil :search-option nil :begin 137 :end 162 :contents-begin 151 :contents-end 160 :post-blank 0 :parent #13) #("Run tests" 0 9 (:parent #16))) #("\n" 0 1 (:parent #13))) (plain-list (:type unordered :begin 163 :end 211 :contents-begin 163 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 163 :mode nil :granularity nil :parent #10) (item (:bullet "- " :begin 163 :end 185 :contents-begin 167 :contents-end 185 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 163 :tag nil :mode item :granularity nil :parent #14) (paragraph (:begin 167 :end 185 :contents-begin 167 :contents-end 185 :post-blank 0 :post-affiliated 167 :mode nil :granularity nil :parent #17) (link (:type "custom-id" :path "setup" :format bracket :raw-link "#setup" :application nil :search-option nil :begin 167 :end 184 :contents-begin 177 :contents-end 182 :post-blank 0 :parent #20) #("Setup" 0 5 (:parent #23))) #("\n" 0 1 (:parent #20)))) (item (:bullet "- " :begin 185 :end 211 :contents-begin 189 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 185 :tag nil :mode item :granularity nil :parent #14) (paragraph (:begin 189 :end 211 :contents-begin 189 :contents-end 211 :post-blank 0 :post-affiliated 189 :mode nil :granularity nil :parent #18) (link (:type "custom-id" :path "running" :format bracket :raw-link "#running" :application nil :search-option nil :begin 189 :end 210 :contents-begin 201 :contents-end 208 :post-blank 0 :parent #21) #("Running" 0 7 (:parent #24))) #("\n" 0 1 (:parent #21)))))))))) mapconcat(#f(compiled-function (element) #) ((section (:begin 1 :end 23 :contents-begin 1 :contents-end 22 :robust-begin 1 :robust-end 20 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) . #0)) (keyword (:key "TITLE" :value "Testing GN2" :begin 1 :end 22 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #1))) (headline (:raw-value "Table of Contents" :begin 23 :end 212 :pre-blank 0 :contents-begin 101 :contents-end 211 :robust-begin 103 :robust-end 209 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 23 :title (#("Table of Contents" 0 17 (:parent #2))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) . #0)) (section (:begin 101 :end 212 :contents-begin 101 :contents-end 211 :robust-begin 101 :robust-end 209 :post-blank 1 :post-affiliated 101 :mode section :granularity nil :parent #2) (plain-list (:type unordered :begin 101 :end 211 :contents-begin 101 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 101 :mode planning :granularity nil :parent #5) (item (:bullet "- " :begin 101 :end 135 :contents-begin 103 :contents-end 135 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 101 :tag nil :mode item :granularity nil :parent #8) (paragraph (:begin 103 :end 135 :contents-begin 103 :contents-end 135 :post-blank 0 :post-affiliated 103 :mode nil :granularity nil :parent #11) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 103 :end 134 :contents-begin 120 :contents-end 132 :post-blank 0 :parent #14) #("Introduction" 0 12 (:parent #17))) #("\n" 0 1 (:parent #14)))) (item (:bullet "- " :begin 135 :end 211 :contents-begin 137 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 135 :tag nil :mode item :granularity nil :parent #8) (paragraph (:begin 137 :end 163 :contents-begin 137 :contents-end 163 :post-blank 0 :post-affiliated 137 :mode nil :granularity nil :parent #12) (link (:type "custom-id" :path "run-tests" :format bracket :raw-link "#run-tests" :application nil :search-option nil :begin 137 :end 162 :contents-begin 151 :contents-end 160 :post-blank 0 :parent #15) #("Run tests" 0 9 (:parent #18))) #("\n" 0 1 (:parent #15))) (plain-list (:type unordered :begin 163 :end 211 :contents-begin 163 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 163 :mode nil :granularity nil :parent #12) (item (:bullet "- " :begin 163 :end 185 :contents-begin 167 :contents-end 185 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 163 :tag nil :mode item :granularity nil :parent #16) (paragraph (:begin 167 :end 185 :contents-begin 167 :contents-end 185 :post-blank 0 :post-affiliated 167 :mode nil :granularity nil :parent #19) (link (:type "custom-id" :path "setup" :format bracket :raw-link "#setup" :application nil :search-option nil :begin 167 :end 184 :contents-begin 177 :contents-end 182 :post-blank 0 :parent #22) #("Setup" 0 5 (:parent #25))) #("\n" 0 1 (:parent #22)))) (item (:bullet "- " :begin 185 :end 211 :contents-begin 189 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 185 :tag nil :mode item :granularity nil :parent #16) (paragraph (:begin 189 :end 211 :contents-begin 189 :contents-end 211 :post-blank 0 :post-affiliated 189 :mode nil :granularity nil :parent #20) (link (:type "custom-id" :path "running" :format bracket :raw-link "#running" :application nil :search-option nil :begin 189 :end 210 :contents-begin 201 :contents-end 208 :post-blank 0 :parent #23) #("Running" 0 7 (:parent #26))) #("\n" 0 1 (:parent #23))))))))) (headline (:raw-value "Introduction" :begin 212 :end 1055 :pre-blank 1 :contents-begin 228 :contents-end 1054 :robust-begin 230 :robust-end 1052 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 212 :title (#("Introduction" 0 12 (:parent #3))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) . #0)) (section (:begin 228 :end 1055 :contents-begin 228 :contents-end 1054 :robust-begin 228 :robust-end 1052 :post-blank 1 :post-affiliated 228 :mode section :granularity nil :parent #3) (paragraph (:begin 228 :end 578 :contents-begin 228 :contents-end 577 :post-blank 1 :post-affiliated 228 :mode planning :granularity nil :parent #6) #("For integration testing, we currently use " 0 42 (:parent #9)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/tree/testing/test/requests" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/tree/testing/test/requests" :application nil :search-option nil :begin 270 :end 360 :contents-begin 344 :contents-end 357 :post-blank 1 :parent #9) #("Mechanica Rob" 0 13 (:parent #13))) #("against the\nsmall " 0 18 (:parent #9)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :application nil :search-option nil :begin 378 :end 465 :contents-begin 455 :contents-end 463 :post-blank 0 :parent #9) #("database" 0 8 (:parent #15))) #("; a setup we call Mechanical Rob because it emulates\nsomeone clicking through the website and checking results.\n" 0 112 (:parent #9))) (paragraph (:begin 578 :end 785 :contents-begin 578 :contents-end 784 :post-blank 1 :post-affiliated 578 :mode nil :granularity nil :parent #6) #("These scripts invoke calls to a running webserver and test the response.\nIf a page changes or breaks, tests will fail. In principle, Mechanical\nRob runs before code merges get committed to the main server.\n" 0 206 (:parent #10))) (paragraph (:begin 785 :end 1054 :contents-begin 785 :contents-end 1054 :post-blank 0 :post-affiliated 785 :mode nil :granularity nil :parent #6) #("For unit tests, we use python's " 0 32 (:parent #11)) (verbatim (:begin 817 :end 828 :post-blank 1 :value "unittest" :parent #11)) #("framework. Coverage reports\nget generated using " 0 48 (:parent #11)) (link (:type "https" :path "//coverage.readthedocs.io/en/coverage-5.2.1/" :format bracket :raw-link "https://coverage.readthedocs.io/en/coverage-5.2.1/" :application nil :search-option nil :begin 876 :end 944 :contents-begin 930 :contents-end 941 :post-blank 1 :parent #11) #("coverage.py" 0 11 (:parent #17))) #("which you could also use to run\nunit tests. When adding new functionality, it is advisable to add\nunit tests.\n" 0 110 (:parent #11))))) (headline (:raw-value "Run tests" :begin 1055 :end 2404 :pre-blank 1 :contents-begin 1068 :contents-end 2404 :robust-begin 1070 :robust-end 2402 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1055 :title (#("Run tests" 0 9 (:parent #4))) :mode nil :granularity nil :parent (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) . #0)) (headline (:raw-value "Setup" :begin 1068 :end 1209 :pre-blank 1 :contents-begin 1078 :contents-end 1208 :robust-begin 1080 :robust-end 1206 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1068 :title (#("Setup" 0 5 (:parent #7))) :mode section :granularity nil :parent #4) (section (:begin 1078 :end 1209 :contents-begin 1078 :contents-end 1208 :robust-begin 1078 :robust-end 1206 :post-blank 1 :post-affiliated 1078 :mode section :granularity nil :parent #7) (paragraph (:begin 1078 :end 1141 :contents-begin 1078 :contents-end 1140 :post-blank 1 :post-affiliated 1078 :mode planning :granularity nil :parent #10) #("Everything required for testing is already package with guix:\n" 0 62 (:parent #13))) (fixed-width (:begin 1141 :end 1208 :value "./pre-ins-env guix package -i genenetwork2 -p ~/opt/genenetwork2" :post-blank 1 :post-affiliated 1141 :mode nil :granularity nil :parent #10)))) (headline (:raw-value "Running" :begin 1209 :end 2404 :pre-blank 1 :contents-begin 1221 :contents-end 2404 :robust-begin 1223 :robust-end 2402 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1209 :title (#("Running" 0 7 (:parent #8))) :mode nil :granularity nil :parent #4) (section (:begin 1221 :end 2404 :contents-begin 1221 :contents-end 2404 :robust-begin 1221 :robust-end 2402 :post-blank 0 :post-affiliated 1221 :mode section :granularity nil :parent #8) (paragraph (:begin 1221 :end 1329 :contents-begin 1221 :contents-end 1328 :post-blank 1 :post-affiliated 1221 :mode planning :granularity nil :parent #11) #("Run the tests from the root of the genenetwork2 source tree as. Ensure\nthat Redis and Mariadb are running.\n" 0 107 (:parent #14))) (paragraph (:begin 1329 :end 1352 :contents-begin 1329 :contents-end 1352 :post-blank 0 :post-affiliated 1329 :mode nil :granularity nil :parent #11) #("To run Mechanical Rob:\n" 0 23 (:parent #15))) (fixed-width (:begin 1352 :end 1590 :value "time env GN2_PROFILE=~/opt/genenetwork2 TMPDIR=~/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -c ~/projects/genenetwork2/test/requests/test-website.py -a http://localhost:5004" :post-blank 2 :post-affiliated 1352 :mode nil :granularity nil :parent #11)) (paragraph (:begin 1590 :end 1637 :contents-begin 1590 :contents-end 1636 :post-blank 1 :post-affiliated 1590 :mode nil :granularity nil :parent #11) #("Use these aliases for the following examples.\n" 0 46 (:parent #17))) (src-block (:language "sh" :switches nil :parameters nil :begin 1637 :end 1970 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "alias runpython=\"env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2\"\n\nalias runcmd=\"time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -cli\"\n" :post-blank 1 :post-affiliated 1637 :mode nil :granularity nil :parent #11)) (paragraph (:begin 1970 :end 2026 :contents-begin 1970 :contents-end 2025 :post-blank 1 :post-affiliated 1970 :mode nil :granularity nil :parent #11) #("You could use them in your " 0 27 (:parent #19)) (verbatim (:begin 1997 :end 2007 :post-blank 1 :value ".bashrc" :parent #19)) #("or " 0 3 (:parent #19)) (verbatim (:begin 2010 :end 2019 :post-blank 1 :value ".zshrc" :parent #19)) #("file.\n" 0 6 (:parent #19))) (paragraph (:begin 2026 :end 2046 :contents-begin 2026 :contents-end 2045 :post-blank 1 :post-affiliated 2026 :mode nil :granularity nil :parent #11) #("To run unit tests:\n" 0 19 (:parent #20))) (fixed-width (:begin 2046 :end 2083 :value "runpython -m unittest discover -v" :post-blank 2 :post-affiliated 2046 :mode nil :granularity nil :parent #11)) (paragraph (:begin 2083 :end 2126 :contents-begin 2083 :contents-end 2125 :post-blank 1 :post-affiliated 2083 :mode nil :granularity nil :parent #11) #("Or alternatively using the coverage tool:\n" 0 42 (:parent #22))) (fixed-width (:begin 2126 :end 2173 :value "runcmd coverage run -m unittest discover -v" :post-blank 2 :post-affiliated 2126 :mode nil :granularity nil :parent #11)) (paragraph (:begin 2173 :end 2244 :contents-begin 2173 :contents-end 2243 :post-blank 1 :post-affiliated 2173 :mode nil :granularity nil :parent #11) #("To generate a html coverage report in " 0 38 (:parent #24)) (verbatim (:begin 2211 :end 2242 :post-blank 0 :value "wqflask/coverage_html_report/" :parent #24)) #("\n" 0 1 (:parent #24))) (fixed-width (:begin 2244 :end 2268 :value "runcmd coverage html" :post-blank 2 :post-affiliated 2244 :mode nil :granularity nil :parent #11)) (paragraph (:begin 2268 :end 2303 :contents-begin 2268 :contents-end 2302 :post-blank 1 :post-affiliated 2268 :mode nil :granularity nil :parent #11) #("To output the report to " 0 24 (:parent #26)) (verbatim (:begin 2292 :end 2300 :post-blank 0 :value "STDOUT" :parent #26)) #(":\n" 0 2 (:parent #26))) (fixed-width (:begin 2303 :end 2329 :value "runcmd coverage report" :post-blank 2 :post-affiliated 2303 :mode nil :granularity nil :parent #11)) (paragraph (:begin 2329 :end 2404 :contents-begin 2329 :contents-end 2404 :post-blank 0 :post-affiliated 2329 :mode nil :granularity nil :parent #11) #("All the configs for running the coverage tool are in\n" 0 53 (:parent #28)) (verbatim (:begin 2382 :end 2403 :post-blank 0 :value "wqflask/.coveragerc" :parent #28)) #("\n" 0 1 (:parent #28))))))) "") org-export-data((org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 23 :contents-begin 1 :contents-end 22 :robust-begin 1 :robust-end 20 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #0) (keyword (:key "TITLE" :value "Testing GN2" :begin 1 :end 22 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #3))) (headline (:raw-value "Table of Contents" :begin 23 :end 212 :pre-blank 0 :contents-begin 101 :contents-end 211 :robust-begin 103 :robust-end 209 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 23 :title (#("Table of Contents" 0 17 (:parent #4))) :mode nil :granularity nil :parent #0) (section (:begin 101 :end 212 :contents-begin 101 :contents-end 211 :robust-begin 101 :robust-end 209 :post-blank 1 :post-affiliated 101 :mode section :granularity nil :parent #4) (plain-list (:type unordered :begin 101 :end 211 :contents-begin 101 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 101 :mode planning :granularity nil :parent #7) (item (:bullet "- " :begin 101 :end 135 :contents-begin 103 :contents-end 135 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 101 :tag nil :mode item :granularity nil :parent #10) (paragraph (:begin 103 :end 135 :contents-begin 103 :contents-end 135 :post-blank 0 :post-affiliated 103 :mode nil :granularity nil :parent #13) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 103 :end 134 :contents-begin 120 :contents-end 132 :post-blank 0 :parent #16) #("Introduction" 0 12 (:parent #19))) #("\n" 0 1 (:parent #16)))) (item (:bullet "- " :begin 135 :end 211 :contents-begin 137 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 135 :tag nil :mode item :granularity nil :parent #10) (paragraph (:begin 137 :end 163 :contents-begin 137 :contents-end 163 :post-blank 0 :post-affiliated 137 :mode nil :granularity nil :parent #14) (link (:type "custom-id" :path "run-tests" :format bracket :raw-link "#run-tests" :application nil :search-option nil :begin 137 :end 162 :contents-begin 151 :contents-end 160 :post-blank 0 :parent #17) #("Run tests" 0 9 (:parent #20))) #("\n" 0 1 (:parent #17))) (plain-list (:type unordered :begin 163 :end 211 :contents-begin 163 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 163 :mode nil :granularity nil :parent #14) (item (:bullet "- " :begin 163 :end 185 :contents-begin 167 :contents-end 185 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 163 :tag nil :mode item :granularity nil :parent #18) (paragraph (:begin 167 :end 185 :contents-begin 167 :contents-end 185 :post-blank 0 :post-affiliated 167 :mode nil :granularity nil :parent #21) (link (:type "custom-id" :path "setup" :format bracket :raw-link "#setup" :application nil :search-option nil :begin 167 :end 184 :contents-begin 177 :contents-end 182 :post-blank 0 :parent #24) #("Setup" 0 5 (:parent #27))) #("\n" 0 1 (:parent #24)))) (item (:bullet "- " :begin 185 :end 211 :contents-begin 189 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 185 :tag nil :mode item :granularity nil :parent #18) (paragraph (:begin 189 :end 211 :contents-begin 189 :contents-end 211 :post-blank 0 :post-affiliated 189 :mode nil :granularity nil :parent #22) (link (:type "custom-id" :path "running" :format bracket :raw-link "#running" :application nil :search-option nil :begin 189 :end 210 :contents-begin 201 :contents-end 208 :post-blank 0 :parent #25) #("Running" 0 7 (:parent #28))) #("\n" 0 1 (:parent #25))))))))) (headline (:raw-value "Introduction" :begin 212 :end 1055 :pre-blank 1 :contents-begin 228 :contents-end 1054 :robust-begin 230 :robust-end 1052 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 212 :title (#("Introduction" 0 12 (:parent #5))) :mode nil :granularity nil :parent #0) (section (:begin 228 :end 1055 :contents-begin 228 :contents-end 1054 :robust-begin 228 :robust-end 1052 :post-blank 1 :post-affiliated 228 :mode section :granularity nil :parent #5) (paragraph (:begin 228 :end 578 :contents-begin 228 :contents-end 577 :post-blank 1 :post-affiliated 228 :mode planning :granularity nil :parent #8) #("For integration testing, we currently use " 0 42 (:parent #11)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/tree/testing/test/requests" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/tree/testing/test/requests" :application nil :search-option nil :begin 270 :end 360 :contents-begin 344 :contents-end 357 :post-blank 1 :parent #11) #("Mechanica Rob" 0 13 (:parent #15))) #("against the\nsmall " 0 18 (:parent #11)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :application nil :search-option nil :begin 378 :end 465 :contents-begin 455 :contents-end 463 :post-blank 0 :parent #11) #("database" 0 8 (:parent #17))) #("; a setup we call Mechanical Rob because it emulates\nsomeone clicking through the website and checking results.\n" 0 112 (:parent #11))) (paragraph (:begin 578 :end 785 :contents-begin 578 :contents-end 784 :post-blank 1 :post-affiliated 578 :mode nil :granularity nil :parent #8) #("These scripts invoke calls to a running webserver and test the response.\nIf a page changes or breaks, tests will fail. In principle, Mechanical\nRob runs before code merges get committed to the main server.\n" 0 206 (:parent #12))) (paragraph (:begin 785 :end 1054 :contents-begin 785 :contents-end 1054 :post-blank 0 :post-affiliated 785 :mode nil :granularity nil :parent #8) #("For unit tests, we use python's " 0 32 (:parent #13)) (verbatim (:begin 817 :end 828 :post-blank 1 :value "unittest" :parent #13)) #("framework. Coverage reports\nget generated using " 0 48 (:parent #13)) (link (:type "https" :path "//coverage.readthedocs.io/en/coverage-5.2.1/" :format bracket :raw-link "https://coverage.readthedocs.io/en/coverage-5.2.1/" :application nil :search-option nil :begin 876 :end 944 :contents-begin 930 :contents-end 941 :post-blank 1 :parent #13) #("coverage.py" 0 11 (:parent #19))) #("which you could also use to run\nunit tests. When adding new functionality, it is advisable to add\nunit tests.\n" 0 110 (:parent #13))))) (headline (:raw-value "Run tests" :begin 1055 :end 2404 :pre-blank 1 :contents-begin 1068 :contents-end 2404 :robust-begin 1070 :robust-end 2402 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1055 :title (#("Run tests" 0 9 (:parent #6))) :mode nil :granularity nil :parent #0) (headline (:raw-value "Setup" :begin 1068 :end 1209 :pre-blank 1 :contents-begin 1078 :contents-end 1208 :robust-begin 1080 :robust-end 1206 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1068 :title (#("Setup" 0 5 (:parent #9))) :mode section :granularity nil :parent #6) (section (:begin 1078 :end 1209 :contents-begin 1078 :contents-end 1208 :robust-begin 1078 :robust-end 1206 :post-blank 1 :post-affiliated 1078 :mode section :granularity nil :parent #9) (paragraph (:begin 1078 :end 1141 :contents-begin 1078 :contents-end 1140 :post-blank 1 :post-affiliated 1078 :mode planning :granularity nil :parent #12) #("Everything required for testing is already package with guix:\n" 0 62 (:parent #15))) (fixed-width (:begin 1141 :end 1208 :value "./pre-ins-env guix package -i genenetwork2 -p ~/opt/genenetwork2" :post-blank 1 :post-affiliated 1141 :mode nil :granularity nil :parent #12)))) (headline (:raw-value "Running" :begin 1209 :end 2404 :pre-blank 1 :contents-begin 1221 :contents-end 2404 :robust-begin 1223 :robust-end 2402 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1209 :title (#("Running" 0 7 (:parent #10))) :mode nil :granularity nil :parent #6) (section (:begin 1221 :end 2404 :contents-begin 1221 :contents-end 2404 :robust-begin 1221 :robust-end 2402 :post-blank 0 :post-affiliated 1221 :mode section :granularity nil :parent #10) (paragraph (:begin 1221 :end 1329 :contents-begin 1221 :contents-end 1328 :post-blank 1 :post-affiliated 1221 :mode planning :granularity nil :parent #13) #("Run the tests from the root of the genenetwork2 source tree as. Ensure\nthat Redis and Mariadb are running.\n" 0 107 (:parent #16))) (paragraph (:begin 1329 :end 1352 :contents-begin 1329 :contents-end 1352 :post-blank 0 :post-affiliated 1329 :mode nil :granularity nil :parent #13) #("To run Mechanical Rob:\n" 0 23 (:parent #17))) (fixed-width (:begin 1352 :end 1590 :value "time env GN2_PROFILE=~/opt/genenetwork2 TMPDIR=~/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -c ~/projects/genenetwork2/test/requests/test-website.py -a http://localhost:5004" :post-blank 2 :post-affiliated 1352 :mode nil :granularity nil :parent #13)) (paragraph (:begin 1590 :end 1637 :contents-begin 1590 :contents-end 1636 :post-blank 1 :post-affiliated 1590 :mode nil :granularity nil :parent #13) #("Use these aliases for the following examples.\n" 0 46 (:parent #19))) (src-block (:language "sh" :switches nil :parameters nil :begin 1637 :end 1970 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "alias runpython=\"env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2\"\n\nalias runcmd=\"time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -cli\"\n" :post-blank 1 :post-affiliated 1637 :mode nil :granularity nil :parent #13)) (paragraph (:begin 1970 :end 2026 :contents-begin 1970 :contents-end 2025 :post-blank 1 :post-affiliated 1970 :mode nil :granularity nil :parent #13) #("You could use them in your " 0 27 (:parent #21)) (verbatim (:begin 1997 :end 2007 :post-blank 1 :value ".bashrc" :parent #21)) #("or " 0 3 (:parent #21)) (verbatim (:begin 2010 :end 2019 :post-blank 1 :value ".zshrc" :parent #21)) #("file.\n" 0 6 (:parent #21))) (paragraph (:begin 2026 :end 2046 :contents-begin 2026 :contents-end 2045 :post-blank 1 :post-affiliated 2026 :mode nil :granularity nil :parent #13) #("To run unit tests:\n" 0 19 (:parent #22))) (fixed-width (:begin 2046 :end 2083 :value "runpython -m unittest discover -v" :post-blank 2 :post-affiliated 2046 :mode nil :granularity nil :parent #13)) (paragraph (:begin 2083 :end 2126 :contents-begin 2083 :contents-end 2125 :post-blank 1 :post-affiliated 2083 :mode nil :granularity nil :parent #13) #("Or alternatively using the coverage tool:\n" 0 42 (:parent #24))) (fixed-width (:begin 2126 :end 2173 :value "runcmd coverage run -m unittest discover -v" :post-blank 2 :post-affiliated 2126 :mode nil :granularity nil :parent #13)) (paragraph (:begin 2173 :end 2244 :contents-begin 2173 :contents-end 2243 :post-blank 1 :post-affiliated 2173 :mode nil :granularity nil :parent #13) #("To generate a html coverage report in " 0 38 (:parent #26)) (verbatim (:begin 2211 :end 2242 :post-blank 0 :value "wqflask/coverage_html_report/" :parent #26)) #("\n" 0 1 (:parent #26))) (fixed-width (:begin 2244 :end 2268 :value "runcmd coverage html" :post-blank 2 :post-affiliated 2244 :mode nil :granularity nil :parent #13)) (paragraph (:begin 2268 :end 2303 :contents-begin 2268 :contents-end 2302 :post-blank 1 :post-affiliated 2268 :mode nil :granularity nil :parent #13) #("To output the report to " 0 24 (:parent #28)) (verbatim (:begin 2292 :end 2300 :post-blank 0 :value "STDOUT" :parent #28)) #(":\n" 0 2 (:parent #28))) (fixed-width (:begin 2303 :end 2329 :value "runcmd coverage report" :post-blank 2 :post-affiliated 2303 :mode nil :granularity nil :parent #13)) (paragraph (:begin 2329 :end 2404 :contents-begin 2329 :contents-end 2404 :post-blank 0 :post-affiliated 2329 :mode nil :granularity nil :parent #13) #("All the configs for running the coverage tool are in\n" 0 53 (:parent #30)) (verbatim (:begin 2382 :end 2403 :post-blank 0 :value "wqflask/.coveragerc" :parent #30)) #("\n" 0 1 (:parent #30))))))) (:export-options (body-only) :back-end #s(org-export-backend :name html :parent nil :transcoders ((bold . org-html-bold) (center-block . org-html-center-block) (clock . org-html-clock) (code . org-html-code) (drawer . org-html-drawer) (dynamic-block . org-html-dynamic-block) (entity . org-html-entity) (example-block . org-html-example-block) (export-block . org-html-export-block) (export-snippet . org-html-export-snippet) (fixed-width . org-html-fixed-width) (footnote-reference . org-html-footnote-reference) (headline . org-html-headline) (horizontal-rule . org-html-horizontal-rule) (inline-src-block . org-html-inline-src-block) (inlinetask . org-html-inlinetask) (inner-template . org-html-inner-template) (italic . org-html-italic) (item . org-html-item) (keyword . org-html-keyword) (latex-environment . org-html-latex-environment) (latex-fragment . org-html-latex-fragment) (line-break . org-html-line-break) (link . org-html-link) (node-property . org-html-node-property) (paragraph . org-html-paragraph) (plain-list . org-html-plain-list) (plain-text . org-html-plain-text) (planning . org-html-planning) (property-drawer . org-html-property-drawer) (quote-block . org-html-quote-block) (radio-target . org-html-radio-target) (section . org-html-section) (special-block . org-html-special-block) (src-block . org-html-src-block) (statistics-cookie . org-html-statistics-cookie) (strike-through . org-html-strike-through) (subscript . org-html-subscript) (superscript . org-html-superscript) (table . org-html-table) (table-cell . org-html-table-cell) (table-row . org-html-table-row) (target . org-html-target) (template . org-html-template) (timestamp . org-html-timestamp) (underline . org-html-underline) (verbatim . org-html-verbatim) (verse-block . org-html-verse-block)) :options ((:html-doctype "HTML_DOCTYPE" nil org-html-doctype) (:html-container "HTML_CONTAINER" nil org-html-container-element) (:html-content-class "HTML_CONTENT_CLASS" nil org-html-content-class) (:description "DESCRIPTION" nil nil newline) (:keywords "KEYWORDS" nil nil space) (:html-html5-fancy nil "html5-fancy" org-html-html5-fancy) (:html-link-use-abs-url nil "html-link-use-abs-url" org-html-link-use-abs-url) (:html-link-home "HTML_LINK_HOME" nil org-html-link-home) (:html-link-up "HTML_LINK_UP" nil org-html-link-up) (:html-mathjax "HTML_MATHJAX" nil "" space) (:html-equation-reference-format "HTML_EQUATION_REFERENCE_FORMAT" nil org-html-equation-reference-format t) (:html-postamble nil "html-postamble" org-html-postamble) (:html-preamble nil "html-preamble" org-html-preamble) (:html-head "HTML_HEAD" nil org-html-head newline) (:html-head-extra "HTML_HEAD_EXTRA" nil org-html-head-extra newline) (:subtitle "SUBTITLE" nil nil parse) (:html-head-include-default-style nil "html-style" org-html-head-include-default-style) (:html-head-include-scripts nil "html-scripts" org-html-head-include-scripts) (:html-allow-name-attribute-in-anchors nil nil org-html-allow-name-attribute-in-anchors) (:html-divs nil nil org-html-divs) (:html-checkbox-type nil nil org-html-checkbox-type) (:html-extension nil nil org-html-extension) (:html-footnote-format nil nil org-html-footnote-format) (:html-footnote-separator nil nil org-html-footnote-separator) (:html-footnotes-section nil nil org-html-footnotes-section) (:html-format-drawer-function nil nil org-html-format-drawer-function) (:html-format-headline-function nil nil org-html-format-headline-function) (:html-format-inlinetask-function nil nil org-html-format-inlinetask-function) (:html-home/up-format nil nil org-html-home/up-format) (:html-indent nil nil org-html-indent) (:html-infojs-options nil nil org-html-infojs-options) (:html-infojs-template nil nil org-html-infojs-template) (:html-inline-image-rules nil nil org-html-inline-image-rules) (:html-link-org-files-as-html nil nil org-html-link-org-files-as-html) (:html-mathjax-options nil nil org-html-mathjax-options) (:html-mathjax-template nil nil org-html-mathjax-template) (:html-metadata-timestamp-format nil nil org-html-metadata-timestamp-format) (:html-postamble-format nil nil org-html-postamble-format) (:html-preamble-format nil nil org-html-preamble-format) (:html-prefer-user-labels nil nil org-html-prefer-user-labels) (:html-self-link-headlines nil nil org-html-self-link-headlines) (:html-table-align-individual-fields nil nil org-html-table-align-individual-fields) (:html-table-caption-above nil nil org-html-table-caption-above) (:html-table-data-tags nil nil org-html-table-data-tags) (:html-table-header-tags nil nil org-html-table-header-tags) (:html-table-use-header-tags-for-first-column nil nil org-html-table-use-header-tags-for-first-column) (:html-tag-class-prefix nil nil org-html-tag-class-prefix) (:html-text-markup-alist nil nil org-html-text-markup-alist) (:html-todo-kwd-class-prefix nil nil org-html-todo-kwd-class-prefix) (:html-toplevel-hlevel nil nil org-html-toplevel-hlevel) (:html-use-infojs nil nil org-html-use-infojs) (:html-validation-link nil nil org-html-validation-link) (:html-viewport nil nil org-html-viewport) (:html-inline-images nil nil org-html-inline-images) (:html-table-attributes nil nil org-html-table-default-attributes) (:html-table-row-open-tag nil nil org-html-table-row-open-tag) (:html-table-row-close-tag nil nil org-html-table-row-close-tag) (:html-xml-declaration nil nil org-html-xml-declaration) (:html-wrap-src-lines nil nil org-html-wrap-src-lines) (:html-klipsify-src nil nil org-html-klipsify-src) (:html-klipse-css nil nil org-html-klipse-css) (:html-klipse-js nil nil org-html-klipse-js) (:html-klipse-selection-script nil nil org-html-klipse-selection-script) (:infojs-opt "INFOJS_OPT" nil nil) (:creator "CREATOR" nil org-html-creator-string) (:with-latex nil "tex" org-html-with-latex) (:latex-header "LATEX_HEADER" nil nil newline)) :filters ((:filter-options . org-html-infojs-install-script) (:filter-parse-tree . org-html-image-link-filter) (:filter-final-output . org-html-final-function)) :blocks nil :menu (104 "Export to HTML" ((72 "As HTML buffer" org-html-export-as-html) (104 "As HTML file" org-html-export-to-html) (111 "As HTML file and open" (lambda (a s v b) (if a (org-html-export-to-html t s v b) (org-open-file (org-html-export-to-html nil s v b)))))))) :translate-alist ((bold . org-html-bold) (center-block . org-html-center-block) (clock . org-html-clock) (code . org-html-code) (drawer . org-html-drawer) (dynamic-block . org-html-dynamic-block) (entity . org-html-entity) (example-block . org-html-example-block) (export-block . org-html-export-block) (export-snippet . org-html-export-snippet) (fixed-width . org-html-fixed-width) (footnote-reference . org-html-footnote-reference) (headline . org-html-headline) (horizontal-rule . org-html-horizontal-rule) (inline-src-block . org-html-inline-src-block) (inlinetask . org-html-inlinetask) (inner-template . org-html-inner-template) (italic . org-html-italic) (item . org-html-item) (keyword . org-html-keyword) (latex-environment . org-html-latex-environment) (latex-fragment . org-html-latex-fragment) (line-break . org-html-line-break) (link . org-html-link) (node-property . org-html-node-property) (paragraph . org-html-paragraph) (plain-list . org-html-plain-list) (plain-text . org-html-plain-text) (planning . org-html-planning) (property-drawer . org-html-property-drawer) (quote-block . org-html-quote-block) (radio-target . org-html-radio-target) (section . org-html-section) (special-block . org-html-special-block) (src-block . org-html-src-block) (statistics-cookie . org-html-statistics-cookie) (strike-through . org-html-strike-through) (subscript . org-html-subscript) (superscript . org-html-superscript) (table . org-html-table) (table-cell . org-html-table-cell) (table-row . org-html-table-row) (target . org-html-target) (template . org-html-template) (timestamp . org-html-timestamp) (underline . org-html-underline) (verbatim . org-html-verbatim) (verse-block . org-html-verse-block)) :exported-data # :input-buffer " *temp*" :input-file nil :html-doctype "xhtml-strict" :html-container "div" :html-content-class "content" :description nil :keywords nil :html-html5-fancy nil :html-link-use-abs-url nil :html-link-home "" :html-link-up "" :html-mathjax "" :html-equation-reference-format "\\eqref{%s}" :html-postamble auto :html-preamble t :html-head "" :html-head-extra "" :subtitle nil :html-head-include-default-style t :html-head-include-scripts nil :html-allow-name-attribute-in-anchors nil :html-divs ((preamble "div" "preamble") (content "div" "content") (postamble "div" "postamble")) :html-checkbox-type ascii :html-extension "html" :html-footnote-format "%s" :html-footnote-separator ", " :html-footnotes-section "
\n

%s:

\n
\n%s\n
\n
" :html-format-drawer-function #f(compiled-function (name contents) #) :html-format-headline-function org-html-format-headline-default-function :html-format-inlinetask-function org-html-format-inlinetask-default-function :html-home/up-format "
\n UP \n |\n HOME \n
" :html-indent nil :html-infojs-options ((path . "https://orgmode.org/org-info.js") (view . "info") (toc . :with-toc) (ftoc . "0") (tdepth . "max") (sdepth . "max") (mouse . "underline") (buttons . "0") (ltoc . "1") (up . :html-link-up) (home . :html-link-home)) :html-infojs-template "\n\n" :html-inline-image-rules (("file" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)") ("http" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)") ("https" . "\\(?:\\.\\(?:gif\\|jp\\(?:e?g\\)\\|png\\|svg\\|webp\\)\\)")) :html-link-org-files-as-html t :html-mathjax-options ((path "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js") (scale 1.0) (align "center") (font "mathjax-modern") (overflow "overflow") (tags "ams") (indent "0em") (multlinewidth "85%") (tagindent ".8em") (tagside "right")) :html-mathjax-template "\n\n\n" :html-metadata-timestamp-format "%Y-%m-%d %a %H:%M" :html-postamble-format (("en" "

Author: %a (%e)

\n

Date: %d

\n

%c

\n

%v

")) :html-preamble-format (("en" "")) :html-prefer-user-labels nil :html-self-link-headlines nil :html-table-align-individual-fields t :html-table-caption-above t :html-table-data-tags ("" . "") :html-table-header-tags ("" . "") :html-table-use-header-tags-for-first-column nil :html-tag-class-prefix "" :html-text-markup-alist ((bold . "%s") (code . "%s") (italic . "%s") (strike-through . "%s") (underline . "%s") (verbatim . "%s")) :html-todo-kwd-class-prefix "" :html-toplevel-hlevel 2 :html-use-infojs when-configured :html-validation-link "Validate" :html-viewport ((width "device-width") (initial-scale "1") (minimum-scale "") (maximum-scale "") (user-scalable "")) :html-inline-images t :html-table-attributes (:border "2" :cellspacing "0" :cellpadding "6" :rules "groups" :frame "hsides") :html-table-row-open-tag "" :html-table-row-close-tag "" :html-xml-declaration (("html" . "") ("php" . "\"; ?>")) :html-wrap-src-lines nil :html-klipsify-src nil :html-klipse-css "https://storage.googleapis.com/app.klipse.tech/css/codemirror.css" :html-klipse-js "https://storage.googleapis.com/app.klipse.tech/plugin_prod/js/klipse_plugin.min.js" :html-klipse-selection-script "window.klipse_settings = {selector_eval_html: '.src-html',\n selector_eval_js: '.src-js',\n selector_eval_python_client: '.src-python',\n selector_eval_scheme: '.src-scheme',\n selector: '.src-clojure',\n selector_eval_ruby: '.src-ruby'};" :infojs-opt nil :creator "Emacs 29.1 (Org mode 9.6.6)" :with-latex t :latex-header nil :title (#("Testing GN2" 0 11 (:parent #148))) :date nil :author (#("unknown" 0 7 (:parent #152))) :email "unknown@genenetwork-development" :language "en" :select-tags ("export") :exclude-tags ("noexport") :headline-levels 3 :preserve-breaks nil :section-numbers nil :time-stamp-file t :with-archived-trees headline :with-author t :with-broken-links nil :with-clocks nil :with-creator nil :with-date t :with-drawers (not "LOGBOOK") :with-email nil :with-emphasize t :with-entities t :with-fixed-width t :with-footnotes t :with-inlinetasks t :with-planning nil :with-priority nil :with-properties nil :with-smart-quotes nil :with-special-strings t :with-statistics-cookies t :with-sub-superscript t :with-toc nil :with-tables t :with-tags t :with-tasks t :with-timestamps t :with-title t :with-todo-keywords t :cite-export (basic nil nil) :bibliography nil :filter-body nil :filter-bold nil :filter-babel-call nil :filter-center-block nil :filter-clock nil :filter-code nil :filter-diary-sexp nil :filter-drawer nil :filter-dynamic-block nil :filter-entity nil :filter-example-block nil :filter-export-block nil :filter-export-snippet nil :filter-final-output (org-html-final-function) :filter-fixed-width nil :filter-footnote-definition nil :filter-footnote-reference nil :filter-headline nil :filter-horizontal-rule nil :filter-inline-babel-call nil :filter-inline-src-block nil :filter-inlinetask nil :filter-italic nil :filter-item nil :filter-keyword nil :filter-latex-environment nil :filter-latex-fragment nil :filter-line-break nil :filter-link nil :filter-node-property nil :filter-options (org-html-infojs-install-script) :filter-paragraph nil :filter-parse-tree (org-html-image-link-filter) :filter-plain-list nil :filter-plain-text nil :filter-planning nil :filter-property-drawer nil :filter-quote-block nil :filter-radio-target nil :filter-section nil :filter-special-block nil :filter-src-block nil :filter-statistics-cookie nil :filter-strike-through nil :filter-subscript nil :filter-superscript nil :filter-table nil :filter-table-cell nil :filter-table-row nil :filter-target nil :filter-timestamp nil :filter-underline nil :filter-verbatim nil :filter-verse-block nil :ignore-list nil :parse-tree (org-data (:begin 1 :contents-begin 1 :contents-end 2404 :end 2404 :robust-begin 3 :robust-end 2402 :post-blank 0 :post-affiliated 1 :path nil :mode org-data :CATEGORY nil :granularity nil) (section (:begin 1 :end 23 :contents-begin 1 :contents-end 22 :robust-begin 1 :robust-end 20 :post-blank 1 :post-affiliated 1 :mode first-section :granularity nil :parent #338) (keyword (:key "TITLE" :value "Testing GN2" :begin 1 :end 22 :post-blank 0 :post-affiliated 1 :mode top-comment :granularity nil :parent #341))) (headline (:raw-value "Table of Contents" :begin 23 :end 212 :pre-blank 0 :contents-begin 101 :contents-end 211 :robust-begin 103 :robust-end 209 :level 1 :priority nil :tags ("TOC") :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 23 :title (#("Table of Contents" 0 17 (:parent #342))) :mode nil :granularity nil :parent #338) (section (:begin 101 :end 212 :contents-begin 101 :contents-end 211 :robust-begin 101 :robust-end 209 :post-blank 1 :post-affiliated 101 :mode section :granularity nil :parent #342) (plain-list (:type unordered :begin 101 :end 211 :contents-begin 101 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 101 :mode planning :granularity nil :parent #345) (item (:bullet "- " :begin 101 :end 135 :contents-begin 103 :contents-end 135 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 101 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 103 :end 135 :contents-begin 103 :contents-end 135 :post-blank 0 :post-affiliated 103 :mode nil :granularity nil :parent #351) (link (:type "custom-id" :path "introduction" :format bracket :raw-link "#introduction" :application nil :search-option nil :begin 103 :end 134 :contents-begin 120 :contents-end 132 :post-blank 0 :parent #354) #("Introduction" 0 12 (:parent #357))) #("\n" 0 1 (:parent #354)))) (item (:bullet "- " :begin 135 :end 211 :contents-begin 137 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 135 :tag nil :mode item :granularity nil :parent #348) (paragraph (:begin 137 :end 163 :contents-begin 137 :contents-end 163 :post-blank 0 :post-affiliated 137 :mode nil :granularity nil :parent #352) (link (:type "custom-id" :path "run-tests" :format bracket :raw-link "#run-tests" :application nil :search-option nil :begin 137 :end 162 :contents-begin 151 :contents-end 160 :post-blank 0 :parent #355) #("Run tests" 0 9 (:parent #358))) #("\n" 0 1 (:parent #355))) (plain-list (:type unordered :begin 163 :end 211 :contents-begin 163 :contents-end 211 :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :post-blank 0 :post-affiliated 163 :mode nil :granularity nil :parent #352) (item (:bullet "- " :begin 163 :end 185 :contents-begin 167 :contents-end 185 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 163 :tag nil :mode item :granularity nil :parent #356) (paragraph (:begin 167 :end 185 :contents-begin 167 :contents-end 185 :post-blank 0 :post-affiliated 167 :mode nil :granularity nil :parent #359) (link (:type "custom-id" :path "setup" :format bracket :raw-link "#setup" :application nil :search-option nil :begin 167 :end 184 :contents-begin 177 :contents-end 182 :post-blank 0 :parent #362) #("Setup" 0 5 (:parent #365))) #("\n" 0 1 (:parent #362)))) (item (:bullet "- " :begin 185 :end 211 :contents-begin 189 :contents-end 211 :checkbox nil :counter nil :structure ((101 0 "- " nil nil nil 135) (135 0 "- " nil nil nil 211) (163 2 "- " nil nil nil 185) (185 2 "- " nil nil nil 211)) :pre-blank 0 :post-blank 0 :post-affiliated 185 :tag nil :mode item :granularity nil :parent #356) (paragraph (:begin 189 :end 211 :contents-begin 189 :contents-end 211 :post-blank 0 :post-affiliated 189 :mode nil :granularity nil :parent #360) (link (:type "custom-id" :path "running" :format bracket :raw-link "#running" :application nil :search-option nil :begin 189 :end 210 :contents-begin 201 :contents-end 208 :post-blank 0 :parent #363) #("Running" 0 7 (:parent #366))) #("\n" 0 1 (:parent #363))))))))) (headline (:raw-value "Introduction" :begin 212 :end 1055 :pre-blank 1 :contents-begin 228 :contents-end 1054 :robust-begin 230 :robust-end 1052 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 212 :title (#("Introduction" 0 12 (:parent #343))) :mode nil :granularity nil :parent #338) (section (:begin 228 :end 1055 :contents-begin 228 :contents-end 1054 :robust-begin 228 :robust-end 1052 :post-blank 1 :post-affiliated 228 :mode section :granularity nil :parent #343) (paragraph (:begin 228 :end 578 :contents-begin 228 :contents-end 577 :post-blank 1 :post-affiliated 228 :mode planning :granularity nil :parent #346) #("For integration testing, we currently use " 0 42 (:parent #349)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/tree/testing/test/requests" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/tree/testing/test/requests" :application nil :search-option nil :begin 270 :end 360 :contents-begin 344 :contents-end 357 :post-blank 1 :parent #349) #("Mechanica Rob" 0 13 (:parent #353))) #("against the\nsmall " 0 18 (:parent #349)) (link (:type "https" :path "//github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :format bracket :raw-link "https://github.com/genenetwork/genenetwork2/blob/testing/doc/database.org" :application nil :search-option nil :begin 378 :end 465 :contents-begin 455 :contents-end 463 :post-blank 0 :parent #349) #("database" 0 8 (:parent #355))) #("; a setup we call Mechanical Rob because it emulates\nsomeone clicking through the website and checking results.\n" 0 112 (:parent #349))) (paragraph (:begin 578 :end 785 :contents-begin 578 :contents-end 784 :post-blank 1 :post-affiliated 578 :mode nil :granularity nil :parent #346) #("These scripts invoke calls to a running webserver and test the response.\nIf a page changes or breaks, tests will fail. In principle, Mechanical\nRob runs before code merges get committed to the main server.\n" 0 206 (:parent #350))) (paragraph (:begin 785 :end 1054 :contents-begin 785 :contents-end 1054 :post-blank 0 :post-affiliated 785 :mode nil :granularity nil :parent #346) #("For unit tests, we use python's " 0 32 (:parent #351)) (verbatim (:begin 817 :end 828 :post-blank 1 :value "unittest" :parent #351)) #("framework. Coverage reports\nget generated using " 0 48 (:parent #351)) (link (:type "https" :path "//coverage.readthedocs.io/en/coverage-5.2.1/" :format bracket :raw-link "https://coverage.readthedocs.io/en/coverage-5.2.1/" :application nil :search-option nil :begin 876 :end 944 :contents-begin 930 :contents-end 941 :post-blank 1 :parent #351) #("coverage.py" 0 11 (:parent #357))) #("which you could also use to run\nunit tests. When adding new functionality, it is advisable to add\nunit tests.\n" 0 110 (:parent #351))))) (headline (:raw-value "Run tests" :begin 1055 :end 2404 :pre-blank 1 :contents-begin 1068 :contents-end 2404 :robust-begin 1070 :robust-end 2402 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1055 :title (#("Run tests" 0 9 (:parent #344))) :mode nil :granularity nil :parent #338) (headline (:raw-value "Setup" :begin 1068 :end 1209 :pre-blank 1 :contents-begin 1078 :contents-end 1208 :robust-begin 1080 :robust-end 1206 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 1 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1068 :title (#("Setup" 0 5 (:parent #347))) :mode section :granularity nil :parent #344) (section (:begin 1078 :end 1209 :contents-begin 1078 :contents-end 1208 :robust-begin 1078 :robust-end 1206 :post-blank 1 :post-affiliated 1078 :mode section :granularity nil :parent #347) (paragraph (:begin 1078 :end 1141 :contents-begin 1078 :contents-end 1140 :post-blank 1 :post-affiliated 1078 :mode planning :granularity nil :parent #350) #("Everything required for testing is already package with guix:\n" 0 62 (:parent #353))) (fixed-width (:begin 1141 :end 1208 :value "./pre-ins-env guix package -i genenetwork2 -p ~/opt/genenetwork2" :post-blank 1 :post-affiliated 1141 :mode nil :granularity nil :parent #350)))) (headline (:raw-value "Running" :begin 1209 :end 2404 :pre-blank 1 :contents-begin 1221 :contents-end 2404 :robust-begin 1223 :robust-end 2402 :level 2 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1209 :title (#("Running" 0 7 (:parent #348))) :mode nil :granularity nil :parent #344) (section (:begin 1221 :end 2404 :contents-begin 1221 :contents-end 2404 :robust-begin 1221 :robust-end 2402 :post-blank 0 :post-affiliated 1221 :mode section :granularity nil :parent #348) (paragraph (:begin 1221 :end 1329 :contents-begin 1221 :contents-end 1328 :post-blank 1 :post-affiliated 1221 :mode planning :granularity nil :parent #351) #("Run the tests from the root of the genenetwork2 source tree as. Ensure\nthat Redis and Mariadb are running.\n" 0 107 (:parent #354))) (paragraph (:begin 1329 :end 1352 :contents-begin 1329 :contents-end 1352 :post-blank 0 :post-affiliated 1329 :mode nil :granularity nil :parent #351) #("To run Mechanical Rob:\n" 0 23 (:parent #355))) (fixed-width (:begin 1352 :end 1590 :value "time env GN2_PROFILE=~/opt/genenetwork2 TMPDIR=~/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -c ~/projects/genenetwork2/test/requests/test-website.py -a http://localhost:5004" :post-blank 2 :post-affiliated 1352 :mode nil :granularity nil :parent #351)) (paragraph (:begin 1590 :end 1637 :contents-begin 1590 :contents-end 1636 :post-blank 1 :post-affiliated 1590 :mode nil :granularity nil :parent #351) #("Use these aliases for the following examples.\n" 0 46 (:parent #357))) (src-block (:language "sh" :switches nil :parameters nil :begin 1637 :end 1970 :number-lines nil :preserve-indent nil :retain-labels t :use-labels t :label-fmt nil :value "alias runpython=\"env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2\"\n\nalias runcmd=\"time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ ./bin/genenetwork2 ./gn2/default_settings.py -cli\"\n" :post-blank 1 :post-affiliated 1637 :mode nil :granularity nil :parent #351)) (paragraph (:begin 1970 :end 2026 :contents-begin 1970 :contents-end 2025 :post-blank 1 :post-affiliated 1970 :mode nil :granularity nil :parent #351) #("You could use them in your " 0 27 (:parent #359)) (verbatim (:begin 1997 :end 2007 :post-blank 1 :value ".bashrc" :parent #359)) #("or " 0 3 (:parent #359)) (verbatim (:begin 2010 :end 2019 :post-blank 1 :value ".zshrc" :parent #359)) #("file.\n" 0 6 (:parent #359))) (paragraph (:begin 2026 :end 2046 :contents-begin 2026 :contents-end 2045 :post-blank 1 :post-affiliated 2026 :mode nil :granularity nil :parent #351) #("To run unit tests:\n" 0 19 (:parent #360))) (fixed-width (:begin 2046 :end 2083 :value "runpython -m unittest discover -v" :post-blank 2 :post-affiliated 2046 :mode nil :granularity nil :parent #351)) (paragraph (:begin 2083 :end 2126 :contents-begin 2083 :contents-end 2125 :post-blank 1 :post-affiliated 2083 :mode nil :granularity nil :parent #351) #("Or alternatively using the coverage tool:\n" 0 42 (:parent #362))) (fixed-width (:begin 2126 :end 2173 :value "runcmd coverage run -m unittest discover -v" :post-blank 2 :post-affiliated 2126 :mode nil :granularity nil :parent #351)) (paragraph (:begin 2173 :end 2244 :contents-begin 2173 :contents-end 2243 :post-blank 1 :post-affiliated 2173 :mode nil :granularity nil :parent #351) #("To generate a html coverage report in " 0 38 (:parent #364)) (verbatim (:begin 2211 :end 2242 :post-blank 0 :value "wqflask/coverage_html_report/" :parent #364)) #("\n" 0 1 (:parent #364))) (fixed-width (:begin 2244 :end 2268 :value "runcmd coverage html" :post-blank 2 :post-affiliated 2244 :mode nil :granularity nil :parent #351)) (paragraph (:begin 2268 :end 2303 :contents-begin 2268 :contents-end 2302 :post-blank 1 :post-affiliated 2268 :mode nil :granularity nil :parent #351) #("To output the report to " 0 24 (:parent #366)) (verbatim (:begin 2292 :end 2300 :post-blank 0 :value "STDOUT" :parent #366)) #(":\n" 0 2 (:parent #366))) (fixed-width (:begin 2303 :end 2329 :value "runcmd coverage report" :post-blank 2 :post-affiliated 2303 :mode nil :granularity nil :parent #351)) (paragraph (:begin 2329 :end 2404 :contents-begin 2329 :contents-end 2404 :post-blank 0 :post-affiliated 2329 :mode nil :granularity nil :parent #351) #("All the configs for running the coverage tool are in\n" 0 53 (:parent #368)) (verbatim (:begin 2382 :end 2403 :post-blank 0 :value "wqflask/.coveragerc" :parent #368)) #("\n" 0 1 (:parent #368))))))) :headline-offset 0 :headline-numbering nil :id-alist nil :citations nil :id-local-cache #)) org-export-as(html nil nil t nil) org-export-to-buffer(html "*Org HTML Export*" nil nil nil t nil #f(compiled-function () #)) org-html-export-as-html(nil nil nil t) (progn (pipe-stdin-into-current-buffer) (org-html-export-as-html nil nil nil t) (princ (buffer-string))) (unwind-protect (progn (pipe-stdin-into-current-buffer) (org-html-export-as-html nil nil nil t) (princ (buffer-string))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (pipe-stdin-into-current-buffer) (org-html-export-as-html nil nil nil t) (princ (buffer-string))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))) (let ((temp-buffer (generate-new-buffer " *temp*" t))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (pipe-stdin-into-current-buffer) (org-html-export-as-html nil nil nil t) (princ (buffer-string))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))) eval-buffer(# nil "/gnu/store/0h55qvzlzmvwgigk6nrzcc6s2g30ddm0-org2html.el" nil t) #f(compiled-function (buffer file) #)(# "/gnu/store/0h55qvzlzmvwgigk6nrzcc6s2g30ddm0-org2html.el") load-with-code-conversion("/gnu/store/0h55qvzlzmvwgigk6nrzcc6s2g30ddm0-org2html.el" "/gnu/store/0h55qvzlzmvwgigk6nrzcc6s2g30ddm0-org2html.el" nil t #f(compiled-function (buffer file) #)) command-line--load-script("/gnu/store/0h55qvzlzmvwgigk6nrzcc6s2g30ddm0-org2html.el") command-line-1(("-scriptload" "/gnu/store/0h55qvzlzmvwgigk6nrzcc6s2g30ddm0-org2html.el")) command-line() normal-top-level()