diff options
| author | Martin Fischer <martin@push-f.com> | 2023-08-11 18:42:39 +0200 | 
|---|---|---|
| committer | Martin Fischer <martin@push-f.com> | 2023-08-19 06:38:52 +0200 | 
| commit | 900c12ee92ee9dfff7e2c52770ba17a0c51f837f (patch) | |
| tree | de6c327f36003e561f4e0cea565f626e61f711aa | |
| parent | b00714411306ee6500e4ee34a81bd7f4a111169e (diff) | |
chore: drop test-generator dev-dependency
I want to move the test_html5lib integration test to a separate crate
so that it can properly depend on the integration-tests feature in a way
so that `cargo test` just works and runs the integration test.
(Currently `cargo test` fails since test_html5lib depends on that feature.)
However test_html5lib currently depends on the test-generator crate
and test-generator doesn't support Cargo workspaces[1] and appears to
be unmaintained.
This commit therefore drops the test-generator dev-dependency.
[1]: https://github.com/frehberg/test-generator/issues/6
| -rw-r--r-- | Cargo.toml | 2 | ||||
| -rw-r--r-- | tests/test_html5lib.rs | 38 | 
2 files changed, 36 insertions, 4 deletions
| @@ -12,10 +12,10 @@ include = ["src/**/*", "LICENSE", "README.md"]  [dev-dependencies]  codespan-reporting = "0.11.1" +glob = "0.3.1"  pretty_assertions = "1.0.0"  serde = { version = "1.0.130", features = ["derive"] }  serde_json = "1.0.71" -test-generator = "0.3.0"  [features]  # Feature used by integration tests in tests/ to get access to library internals. diff --git a/tests/test_html5lib.rs b/tests/test_html5lib.rs index cda932c..fc5e89c 100644 --- a/tests/test_html5lib.rs +++ b/tests/test_html5lib.rs @@ -206,9 +206,41 @@ struct Tests {      tests: Vec<Test>,  } -#[test_generator::test_resources("tests/html5lib-tests/tokenizer/*.test")] -fn test_tokenizer_file(resource_name: &str) { -    let path = Path::new(resource_name); +/// Path to a local checkout of [html5lib-tests], relative to the +/// directory containing the `Cargo.toml` file of the current crate. +/// +/// [html5lib-tests]: https://github.com/html5lib/html5lib-tests +const HTML5LIB_TESTS_PATH: &str = "tests/html5lib-tests"; + +// FUTURE: it would be nice to assert that HTML5LIB_TESTS_PATH matches the path defined in .gitmodules +// but this is currently blocked by: +// * Cargo not setting CARGO_WORKSPACE_DIR (see https://github.com/rust-lang/cargo/issues/3946) +// * gix-config having more dependencies than I'd want to add for this + +#[test] +fn tokenizer() { +    // TODO: use a custom test harness with e.g. libtest-mimic +    let test_dir = format!("{HTML5LIB_TESTS_PATH}/tokenizer"); + +    let mut test_paths = glob::glob(&format!("{test_dir}/*.test")) +        .unwrap() +        .peekable(); + +    if test_paths.peek().is_none() { +        panic!( +            "could not find any .test files in {}, maybe try `git submodule update --init`", +            test_dir +        ); +    } + +    for test_path in test_paths { +        let test_path = test_path.unwrap(); + +        test_tokenizer_file(&test_path); +    } +} + +fn test_tokenizer_file(path: &Path) {      let fname = path.file_name().unwrap().to_str().unwrap();      if matches!( | 
