summaryrefslogtreecommitdiff
path: root/cli/tools/test_runner.rs
AgeCommit message (Collapse)Author
2021-08-26refactor(cli): introduce module specifier test modes (#11769)Casper Beyer
This commit merges the two vectors of specifiers into a single one introducing the concept of a "TestMode" which is a tri-state enum specifying how a specifier is to be tested (as documentation, as an executable module or as both). This is determined during the collection phase and determines how a specifier will be executed based on how the specifier was collected (directly or not) and if it has an eligible media_type when fetched. For example "deno test README.md" is marked as documentation because, while it is a direct inclusion it is not an executable media type therefore will only have the fenced code blocks that can be parsed from it tested.
2021-08-23refactor(cli/tools/test): infer disable log from program state (#11803)Casper Beyer
2021-08-23refactor(cli/flags): use an optional non zero usize for `fail-fast` (#11804)Casper Beyer
Changes the type of the `fail_fast` flag from `Option<usize>` to `Option<NonZeroUsize>` as an optional value of zero isn't sound.
2021-08-23fix(cli/flags): require a non zero usize for concurrent jobs (#11802)Casper Beyer
2021-08-17refactor(cli): pass optional op_init to create_main_worker (#11707)Casper Beyer
Replaces the testing flag in create_main_worker with a more general purpose hook to register additional ops.
2021-08-15fix(test): dispatch load event before tests are run (#11708)Casper Beyer
2021-08-14fix(cli): explicitly scan for ignore attribute in inline tests (#11647)Casper Beyer
This commits adds "ignore" as a known attribute for Markdown codeblock which drops a code block early whenever it is seen in documentation tests.
2021-08-14refactor: normalize `is_supported_` check naming (#11698)Casper Beyer
Normalizes the naming of the functions used to determine if a path is a suitable match for the test runner and placed them both in the the fs_util module.
2021-08-13refactor(cli): generalize module specifier collection (#11679)Casper Beyer
2021-08-12fix(cli): allow specifiers of unknown media types with test command (#11652)Casper Beyer
2021-08-12fix(test): sort file module specifiers (#11656)Casper Beyer
2021-08-11chore: move test files to testdata directory (#11601)David Sherret
2021-08-06refactor: make `ParsedModule` implement `Sync` (#11581)David Sherret
2021-07-30chore: upgrade Rust to 1.54.0 (#11554)Yusuke Tanaka
2021-07-29feat: type check codeblocks in Markdown file with "deno test --doc" (#11421)Casper Beyer
2021-07-26feat(cli/tools/test): imply media type from doc attribute (#11438)Casper Beyer
2021-07-26fix(cli): side-load test modules (#11515)Casper Beyer
This fixes a regression introduced in 1.9 where test modules became main modules by side loading them in a generated module.
2021-07-22fix(cli): normalize test command errors (#11375)Casper Beyer
2021-07-14refactor(cli/tools/test_runner): split reporter into distinct stages (#11395)Casper Beyer
This splits up the reporter into smaller functions, one for each distinct event that happens during the testing process.
2021-07-14refactor(cli/tools/test_runner): make test reporters stateless (#11357)Casper Beyer
This collects summary information in the event collector and passes it to the reporter instead of having this embedded in each reporter which leads to a lot of duplication.
2021-07-12feat: Add support for "deno test --fail-fast=N" (#11316)Yasser A.Idrissi
This commit adds support for specifying threshold in the "--fail-fast" flag for "deno test" subcommand. Previously using "--fail-fast" stopped running the test suite after first failure and with this change users may specify number of failed tests that will cause the suite to be interrupted. Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2021-07-12chore(cli/tools/test_runner): inline execute_module rresults (#11358)Casper Beyer
2021-07-10Revert "feat(cli/tools/test_runner): add terse reporter (#11156)" (#11352)Ryan Dahl
it's another flag to understand, more code, and isn't something that anyone really needs. This reverts commit 9d57a4aaeb18461bbeeea30fc8ab8804357185c1.
2021-07-10feat(cli/tools/test_runner): add terse reporter (#11156)Casper Beyer
This commit adds "--terse" flag to "deno test" that makes testing reporter output one character per test case instead of one line per case. This is an unstable feature.
2021-07-05feat(test): add --shuffle flag to randomize test ordering (#11163)Casper Beyer
2021-06-22refactor: unify JavaScript script execution method (#11043)Bartek Iwańczuk
This commit renames "JsRuntime::execute" to "JsRuntime::execute_script". Additionally same renames were applied to methods on "deno_runtime::Worker" and "deno_runtime::WebWorker". A new macro was added to "deno_core" called "located_script_name" which returns the name of Rust file alongside line no and col no of that call site. This macro is useful in combination with "JsRuntime::execute_script" and allows to provide accurate place where "one-off" JavaScript scripts are executed for internal runtime functions. Co-authored-by: Nayeem Rahman <nayeemrmn99@gmail.com>
2021-05-26refactor: move JsRuntimeInspector to deno_core (#10763)Bartek Iwańczuk
This commit moves implementation of "JsRuntimeInspector" to "deno_core" crate. To achieve that following changes were made: * "Worker" and "WebWorker" no longer own instance of "JsRuntimeInspector", instead it is now owned by "deno_core::JsRuntime". * Consequently polling of inspector is no longer done in "Worker"/"WebWorker", instead it's done in "deno_core::JsRuntime::poll_event_loop". * "deno_core::JsRuntime::poll_event_loop" and "deno_core::JsRuntime::run_event_loop", now accept "wait_for_inspector" boolean that tells if event loop should still be "pending" if there are active inspector sessions - this change fixes the problem that inspector disconnects from the frontend and process exits once the code has stopped executing.
2021-05-26refactor: Rewrite Inspector implementation (#10725)Bartek Iwańczuk
This commit refactors implementation of inspector. The intention is to be able to move inspector implementation to "deno_core". Following things were done to make that possible: * "runtime/inspector.rs" was split into "runtime/inspector/mod.rs" and "runtime/inspector/server.rs", separating inspector implementation from Websocket server implementation. * "DenoInspector" was renamed to "JsRuntimeInspector" and reference to "server" was removed from the structure, making it independent of Websocket server used to connect to Chrome Devtools. * "WebsocketSession" was renamed to "InspectorSession" and rewritten in such a way that it's not tied to Websockets anymore; instead it accepts a pair of "proxy" channel ends that allow to integrate the session with different "transports". * "InspectorSession" was renamed to "LocalInspectorSession" to better indicate that it's an "in-memory" session and doesn't require Websocket server. It was also rewritten in such a way that it uses "InspectorSession" from previous point instead of reimplementing "v8::inspector::ChannelImpl" trait; this is done by using the "proxy" channels to communicate with the V8 session. Consequently "LocalInspectorSession" is now a frontend to "InspectorSession". This introduces a small inconvenience that awaiting responses for "LocalInspectorSession" requires to concurrently poll worker's event loop. This arises from the fact that "InspectorSession" is now owned by "JsRuntimeInspector", which in turn is owned by "Worker" or "WebWorker". To ease this situation "Worker::with_event_loop" helper method was added, that takes a future and concurrently polls it along with the event loop (using "tokio::select!" macro inside a loop).
2021-05-24fix(cli/test): don't use reserved symbol `:` in specifier (#10751)Casper Beyer
2021-05-20fix(cli/tools/test_runner): --doc should not require permissions (#10719)Casper Beyer
2021-05-19fix(cli): always allow documentation modules to be checked (#10581)Casper Beyer
2021-05-19fix(cli/tools/test_runner): use file_fetcher.fetch to get sources (#10708)Casper Beyer
2021-05-19fix(deno install): support `file:` scheme URLs (#10562)Satya Rohith
2021-05-17fix: static import permissions in dynamic importsLuca Casonato
Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2021-05-11feat(test): add support for type checking documentation (#10521)Casper Beyer
This commit adds support for type checking codeblocks in the JS doc comments.
2021-05-10feat: add deno test --watch (#9160)Liam Murphy
This commit implements file watching for deno test. When a file is changed, only the test modules which use it as a dependency are rerun. This is accomplished by reworking the file watching infrastructure to pass the paths which have changed to the resolver, and then constructing a module graph for each test module to check if it contains any changed files.
2021-05-02fix(test): change inflection depending on number of pending tests (#10466)Casper Beyer
2021-04-30fix(cli/tools/test): print module tests originate from (#10428)Casper Beyer
2021-04-29refactor(cli): move test reporting into trait (#10408)Casper Beyer
2021-04-28feat(test): run test modules in parallel (#9815)Casper Beyer
This commit adds support for running test in parallel. Entire test runner functionality has been rewritten from JavaScript to Rust and a set of ops was added to support reporting in Rust. A new "--jobs" flag was added to "deno test" that allows to configure how many threads will be used. When given no value it defaults to 2.
2021-03-25upgrade: Rust 1.51.0 (#9895)Yusuke Tanaka
2021-02-02chore: remove std directory (#9361)Casper Beyer
This removes the std folder from the tree. Various parts of the tests are pretty tightly dependent on std (47 direct imports and 75 indirect imports, not counting the cli tests that use them as fixtures) so I've added std as a submodule for now.
2021-01-11chore: update copyright to 2021 (#9092)Yusuke Tanaka
2020-11-22feat(unstable): Support --watch flag for bundle and fmt subcommands (#8276)Yusuke Tanaka
This commit adds support for "--watch" flag for "bundle" and "fmt" subcommands. In addition to this, it refactors "run --watch" command so that module resolution will occur every time the file watcher detects file addition/deletion, which allows the watcher to observe a file that is newly added to the dependency as well.
2020-11-19refactor(cli): move tooling to cli/tools/ (#8424)Bartek Iwańczuk
This commit moves following tools into a single "tools" module located at "cli/tools/mod.rs": - formatter - linter - test runner - coverage collector - installer - binary upgrader - repl