From 78c3a99a31d02fc93fb41bc021cc4464f462aace Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Sat, 5 Oct 2019 12:04:14 -0500 Subject: [PATCH] zealot.help-lint: Add a help-lint for travisci that ignores a lot of flaky resource leaks. Some work needs to be done with ensuring that resources are cleaned up before reporting resource leaks and exiting. In the meantime, we want TravisCI to be useful enough to catch help-lint errors, so ignore a bunch of errors that it might find. These leaks are still tested for in the more thorough mason CI. --- .travis.yml | 2 +- extra/zealot/help-lint/authors.txt | 1 + extra/zealot/help-lint/help-lint.factor | 30 +++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 extra/zealot/help-lint/authors.txt create mode 100644 extra/zealot/help-lint/help-lint.factor diff --git a/.travis.yml b/.travis.yml index 72c09be6c8..791416095e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -72,5 +72,5 @@ script: - "./factor -e='USING: memory vocabs.hierarchy ; \"zealot\" load save'" - './factor -run=zealot.cli-changed-vocabs' - './factor -run=tools.test `./factor -run=zealot.cli-changed-vocabs | paste -s -d " " -`' - - './factor -run=help.lint `./factor -run=zealot.cli-changed-vocabs | paste -s -d " " -`' + - './factor -run=zealot.help-lint `./factor -run=zealot.cli-changed-vocabs | paste -s -d " " -`' - "./factor -e='USING: modern.paths tools.test sequences system kernel math random ; core-vocabs os macosx? [ dup length 3 /i sample ] when [ test ] each'" diff --git a/extra/zealot/help-lint/authors.txt b/extra/zealot/help-lint/authors.txt new file mode 100644 index 0000000000..7c1b2f2279 --- /dev/null +++ b/extra/zealot/help-lint/authors.txt @@ -0,0 +1 @@ +Doug Coleman diff --git a/extra/zealot/help-lint/help-lint.factor b/extra/zealot/help-lint/help-lint.factor new file mode 100644 index 0000000000..76b6f5a67f --- /dev/null +++ b/extra/zealot/help-lint/help-lint.factor @@ -0,0 +1,30 @@ +! Copyright (C) 2019 Doug Coleman. +! See http://factorcode.org/license.txt for BSD license. +USING: assocs cache command-line help.lint io io.monitors kernel +namespaces prettyprint sequences system vocabs.hierarchy ; +IN: zealot.help-lint + +! FIXME: help-lint sometimes lists monitors and event-streams as leaked. +! event-stream is macosx-only so hack it into a string +CONSTANT: ignored-resources { + "linux-monitor" "macosx-monitor" "malloc-ptr" + "epoll-mx" "server-port" "openssl-context" + "cache-assoc" "input-port" "fd" "output-port" "stdin" + "event-stream" +} + +: filter-flaky-resources ( seq -- seq' ) + [ drop unparse ignored-resources member? ] assoc-reject ; + +! Allow testing without calling exit +: zealot-help-lint ( exit? -- ) + command-line get [ load ] each + help-lint-all + lint-failures get filter-flaky-resources + [ nip assoc-empty? [ "==== FAILING LINT" print :lint-failures flush ] unless ] + [ swap [ 0 1 ? (exit) ] [ drop ] if ] 2bi ; + +: zealot-help-lint-main ( -- ) + t zealot-help-lint ; + +MAIN: zealot-help-lint-main \ No newline at end of file