diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..6baf18a --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @vivax3794 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..ab1c5c3 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,46 @@ +name: Tests and lints + +on: + pull_request: + +jobs: + ci: + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - name: Check out code + uses: actions/checkout@v4 + + - name: Install dagger + run: curl -fsSL https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh + + - uses: actions/cache/restore@v4 + with: + path: ./cache + key: dagger-cache-${{ github.run_id }} + restore-keys: + dagger-cache- + + - name: make sure cache directory exists. + run: mkdir -p ./cache/target + + - name: Run tests + id: tests + run: dagger run cargo run -p dagger_pipeline --features ci -- tests --export + continue-on-error: true + + - uses: actions/cache/save@v4 + with: + path: ./cache + key: dagger-cache-${{ github.run_id }} + + - name: Upload report + uses: actions/upload-artifact@v4 + with: + name: test-report + path: ./allure_report + + - name: Fail Workflow + if: steps.tests.outcome == 'failure' + run: exit 1 diff --git a/.github/workflows/upload_test_results.yml b/.github/workflows/upload_test_results.yml new file mode 100644 index 0000000..96fc440 --- /dev/null +++ b/.github/workflows/upload_test_results.yml @@ -0,0 +1,67 @@ +name: Upload test results + +on: + workflow_run: + workflows: ["Tests and lints"] + types: [completed] + +permissions: + contents: read + pull-requests: write + +jobs: + upload: + if: github.event.workflow_run.conclusion != 'cancelled' + runs-on: ubuntu-latest + steps: + - name: Resolve PR number + id: pr + uses: actions/github-script@v7 + with: + script: | + const run = context.payload.workflow_run; + // Prefer PR info embedded in the workflow_run payload + if (run.pull_requests && run.pull_requests.length > 0) { + core.setOutput('number', String(run.pull_requests[0].number)); + } else { + // Fallback: find PR by commit SHA + const {owner, repo} = context.repo; + const {data} = await github.rest.repos.listPullRequestsAssociatedWithCommit({ + owner, repo, commit_sha: run.head_sha + }); + core.setOutput('number', data[0]?.number ? String(data[0].number) : ''); + } + + - name: Download report artifact + if: steps.pr.outputs.number != '' + uses: dawidd6/action-download-artifact@v3 + with: + run_id: ${{ github.event.workflow_run.id }} + name: test-report + path: ./report + + - name: Deploy preview to Cloudflare Pages + if: steps.pr.outputs.number != '' + id: pages + uses: cloudflare/pages-action@v1 + with: + apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} + accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} + projectName: natrix-test-result + directory: ./report + branch: pr-${{ steps.pr.outputs.number }}-${{ github.event.workflow_run.head_sha }} + gitHubToken: ${{ secrets.GITHUB_TOKEN }} + + - name: Comment on PR with preview URL + if: steps.pr.outputs.number != '' && steps.pages.outputs.url != '' + uses: marocchino/sticky-pull-request-comment@v2 + with: + header: test-report-preview + number: ${{ steps.pr.outputs.number }} + message: | + Test report: ${{ steps.pages.outputs.url }} + + - name: Add to job summary + if: steps.pages.outputs.url != '' + run: | + echo 'Test report preview: ${{ steps.pages.outputs.url }}' >> $GITHUB_STEP_SUMMARY diff --git a/Cargo.lock b/Cargo.lock index b2e1ec3..3490f89 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -268,11 +268,11 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "camino" -version = "1.1.12" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0b03af37dad7a14518b7691d81acb0f8222604ad3d1b02f6b4bed5188c0cd5" +checksum = "e1de8bc0aa9e9385ceb3bf0c152e3a9b9544f6c4a912c8ae504e80c1f0368603" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -326,9 +326,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.36" +version = "1.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5252b3d2648e5eedbc1a6f501e3c795e07025c1e93bbf8bbdd6eef7f447a6d54" +checksum = "65193589c6404eb80b450d618eaf9a2cafaaafd57ecce47370519ef674a7bd44" dependencies = [ "find-msvc-tools", "shlex", @@ -857,11 +857,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7" +checksum = "259d404d09818dec19332e31d94558aeb442fea04c817006456c24b5460bbd4b" dependencies = [ "serde", + "serde_core", "typeid", ] @@ -1089,7 +1090,7 @@ dependencies = [ "js-sys", "libc", "r-efi", - "wasi 0.14.5+wasi-0.2.4", + "wasi 0.14.7+wasi-0.2.4", "wasm-bindgen", ] @@ -1101,9 +1102,9 @@ checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "gimli" -version = "0.32.2" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc6298e594375a7fead9efd5568f0a46e6a154fb6a9bdcbe3c06946ffd81a5f6" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" dependencies = [ "fallible-iterator", "stable_deref_trait", @@ -1381,9 +1382,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" +checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" dependencies = [ "base64 0.22.1", "bytes", @@ -1546,13 +1547,14 @@ checksum = "964de6e86d545b246d84badc0fef527924ace5134f30641c203ef52ba83f58d5" [[package]] name = "indexmap" -version = "2.11.1" +version = "2.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "206a8042aec68fa4a62e8d3f7aa4ceb508177d9324faf261e1959e495b7a1921" +checksum = "92119844f513ffa41556430369ab02c295a3578af21cf945caa3e9e0c2481ac3" dependencies = [ "equivalent", "hashbrown", "serde", + "serde_core", ] [[package]] @@ -1685,9 +1687,9 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "js-sys" -version = "0.3.78" +version = "0.3.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0b063578492ceec17683ef2f8c5e89121fbd0b172cbc280635ab7567db2738" +checksum = "6247da8b8658ad4e73a186e747fcc5fc2a29f979d6fe6269127fdb5fd08298d0" dependencies = [ "once_cell", "wasm-bindgen", @@ -1727,9 +1729,9 @@ checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" [[package]] name = "libredox" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" +checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ "bitflags 2.9.4", "libc", @@ -1889,7 +1891,7 @@ dependencies = [ "cargo_metadata", "clap", "data-encoding", - "gimli 0.32.2", + "gimli 0.32.3", "ignore", "indicatif", "lightningcss", @@ -2066,23 +2068,24 @@ dependencies = [ [[package]] name = "oxc-miette" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31cfb121c9d3e0f9082856927f5cff9594279c91b544f4436e4bc971563caa60" +checksum = "2d5495f6099fa0b25fa25755c1d59ed79ffa64dda80f5366a4cdfc8fc20f5932" dependencies = [ "cfg-if", "owo-colors", "oxc-miette-derive", "textwrap", "thiserror 2.0.16", + "unicode-segmentation", "unicode-width", ] [[package]] name = "oxc-miette-derive" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6eabb57f935b454fbe0552ea0abaaf9eb0019b5fa05a7bbe7efd5bd8c765085" +checksum = "9dbbc96af6e37c35f2303b2bedbf8ce9cc563e4fbbf7776be6f0803cb0095652" dependencies = [ "proc-macro2", "quote", @@ -2219,9 +2222,9 @@ checksum = "8f4ac6cca9362f926ba293095d5af6eeb375d4f51a79739ae87dd9384e7c1cd4" [[package]] name = "oxc_index" -version = "3.0.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fa07b0cfa997730afed43705766ef27792873fdf5215b1391949fec678d2392" +checksum = "967ae797e1f284bd1385f2d8e8ab94293ad27f623c76839ecf66827521365f5b" [[package]] name = "oxc_mangler" @@ -2324,9 +2327,9 @@ dependencies = [ [[package]] name = "oxc_sourcemap" -version = "4.1.0" +version = "4.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5e78344e5a6cdd74250bc9bb144a4c3215b6107fe4fd47973f4bd175372ccb2" +checksum = "60410c89a9da2ce5b10946012b8a8605ecc41129cb7976bbfb73b85902071208" dependencies = [ "base64-simd", "rustc-hash", @@ -3002,7 +3005,7 @@ dependencies = [ "once_cell", "ring", "rustls-pki-types", - "rustls-webpki 0.103.5", + "rustls-webpki 0.103.6", "subtle", "zeroize", ] @@ -3038,9 +3041,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.5" +version = "0.103.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5a37813727b78798e53c2bec3f5e8fe12a6d6f8389bf9ca7802add4c9905ad8" +checksum = "8572f3c2cb9934231157b45499fc41e1f58c589fdfb81a844ba873265e80f8eb" dependencies = [ "ring", "rustls-pki-types", @@ -3104,11 +3107,12 @@ checksum = "0f7d95a54511e0c7be3f51e8867aa8cf35148d7b9445d44de2f943e2b206e749" [[package]] name = "semver" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" dependencies = [ "serde", + "serde_core", ] [[package]] @@ -3119,21 +3123,23 @@ checksum = "1bc711410fbe7399f390ca1c3b60ad0f53f80e95c5eb935e52268a0e2cd49acc" [[package]] name = "serde" -version = "1.0.219" +version = "1.0.225" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "fd6c24dee235d0da097043389623fb913daddf92c76e9f5a1db88607a0bcbd1d" dependencies = [ + "serde_core", "serde_derive", ] [[package]] name = "serde-untagged" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34836a629bcbc6f1afdf0907a744870039b1e14c0561cb26094fa683b158eff3" +checksum = "f9faf48a4a2d2693be24c6289dbe26552776eb7737074e6722891fadbe6c5058" dependencies = [ "erased-serde", "serde", + "serde_core", "typeid", ] @@ -3147,11 +3153,20 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_core" +version = "1.0.225" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "659356f9a0cb1e529b24c01e43ad2bdf520ec4ceaf83047b83ddcc2251f96383" +dependencies = [ + "serde_derive", +] + [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.225" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "0ea936adf78b1f766949a4977b91d2f5595825bd6ec079aa9543ad2685fc4516" dependencies = [ "proc-macro2", "quote", @@ -3173,15 +3188,16 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.143" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ "indexmap", "itoa", "memchr", "ryu", "serde", + "serde_core", ] [[package]] @@ -4013,27 +4029,27 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" -version = "0.14.5+wasi-0.2.4" +version = "0.14.7+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4494f6290a82f5fe584817a676a34b9d6763e8d9d18204009fb31dceca98fd4" +checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" dependencies = [ "wasip2", ] [[package]] name = "wasip2" -version = "1.0.0+wasi-0.2.4" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03fa2761397e5bd52002cd7e73110c71af2109aca4e521a9f40473fe685b0a24" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.101" +version = "0.2.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e14915cadd45b529bb8d1f343c4ed0ac1de926144b746e2710f9cd05df6603b" +checksum = "4ad224d2776649cfb4f4471124f8176e54c1cca67a88108e30a0cd98b90e7ad3" dependencies = [ "cfg-if", "once_cell", @@ -4044,9 +4060,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.101" +version = "0.2.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28d1ba982ca7923fd01448d5c30c6864d0a14109560296a162f80f305fb93bb" +checksum = "3a1364104bdcd3c03f22b16a3b1c9620891469f5e9f09bc38b2db121e593e732" dependencies = [ "bumpalo", "log", @@ -4058,9 +4074,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.51" +version = "0.4.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ca85039a9b469b38336411d6d6ced91f3fc87109a2a27b0c197663f5144dffe" +checksum = "9c0a08ecf5d99d5604a6666a70b3cde6ab7cc6142f5e641a8ef48fc744ce8854" dependencies = [ "cfg-if", "js-sys", @@ -4071,9 +4087,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.101" +version = "0.2.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c3d463ae3eff775b0c45df9da45d68837702ac35af998361e2c84e7c5ec1b0d" +checksum = "0d7ab4ca3e367bb1ed84ddbd83cc6e41e115f8337ed047239578210214e36c76" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4081,9 +4097,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.101" +version = "0.2.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bb4ce89b08211f923caf51d527662b75bdc9c9c7aab40f86dcb9fb85ac552aa" +checksum = "4a518014843a19e2dbbd0ed5dfb6b99b23fb886b14e6192a00803a3e14c552b0" dependencies = [ "proc-macro2", "quote", @@ -4094,18 +4110,18 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.101" +version = "0.2.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f143854a3b13752c6950862c906306adb27c7e839f7414cec8fea35beab624c1" +checksum = "255eb0aa4cc2eea3662a00c2bbd66e93911b7361d5e0fcd62385acfd7e15dcee" dependencies = [ "unicode-ident", ] [[package]] name = "wasm-bindgen-test" -version = "0.3.51" +version = "0.3.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80cc7f8a4114fdaa0c58383caf973fc126cf004eba25c9dc639bccd3880d55ad" +checksum = "6cd223a62fa31b44130386e885e096aac33c13abbe67ea8c993f5279b233bca8" dependencies = [ "js-sys", "minicov", @@ -4116,9 +4132,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-test-macro" -version = "0.3.51" +version = "0.3.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5ada2ab788d46d4bda04c9d567702a79c8ced14f51f221646a16ed39d0e6a5d" +checksum = "e78b9abad0f2a54d17769c8c0d56f2495f54e465903d6f680c97d612440eabe9" dependencies = [ "proc-macro2", "quote", @@ -4149,9 +4165,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.78" +version = "0.3.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e4b637749ff0d92b8fad63aa1f7cff3cbe125fd49c175cd6345e7272638b12" +checksum = "50462a022f46851b81d5441d1a6f5bac0b21a1d72d64bd4906fbdd4bf7230ec7" dependencies = [ "js-sys", "wasm-bindgen", @@ -4477,9 +4493,9 @@ dependencies = [ [[package]] name = "wit-bindgen" -version = "0.45.1" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c573471f125075647d03df72e026074b7203790d41351cd6edc96f46bcccd36" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "writeable" diff --git a/dagger_pipeline/Cargo.toml b/dagger_pipeline/Cargo.toml index 20c5698..ef44587 100644 --- a/dagger_pipeline/Cargo.toml +++ b/dagger_pipeline/Cargo.toml @@ -26,5 +26,8 @@ uuid = { version = "1.18.1", features = ["v4"] } serde = { version = "1.0.219", features = ["derive"] } serde_json = "1.0.143" +[features] +ci = [] + [lints] workspace = true diff --git a/dagger_pipeline/src/main.rs b/dagger_pipeline/src/main.rs index 8825836..76b399e 100644 --- a/dagger_pipeline/src/main.rs +++ b/dagger_pipeline/src/main.rs @@ -21,6 +21,9 @@ struct TestCommand { /// Output to a tui instead #[arg(short, long)] tui: bool, + /// Generate the allure report but just export it to the host. + #[arg(long)] + export: bool, } /// Run a dagger pipeline too generate test reports. @@ -75,7 +78,7 @@ mod prelude { no_cache: None, }, ); - self.with_directory("/app", workspace) + self.with_mounted_directory("/app", workspace) .with_workdir("/app") .with_mounted_cache("/app/target", client.cache_volume("rust-target")) } @@ -109,7 +112,31 @@ async fn main() -> Result<()> { dagger_sdk::connect(async move |client| { match arguments { Cli::Tests(arguments) => { + if cfg!(feature = "ci") { + base_images::base(&client) + .with_workspace(&client) + .with_mounted_directory("/load_cache", client.host().directory("./cache")) + .with_exec(vec![ + "sh", + "-c", + "mv /load_cache/target/* /app/target/* || true", + ]) + .sync() + .await?; + } + let reports = report::run_all_tests(&client, &arguments).await?; + + if cfg!(feature = "ci") { + base_images::base(&client) + .with_workspace(&client) + .with_exec(vec!["mkdir", "/store_cache"]) + .with_exec(vec!["sh", "-c", "cp -r /app/target /store_cache"]) + .directory("/store_cache") + .export("./cache") + .await?; + } + if arguments.tui { let total = reports.len(); let mut pass = 0u16; @@ -142,8 +169,19 @@ async fn main() -> Result<()> { return Err(eyre!("Tests failed")); } } else { - let report = report::generate_allure_report(&client, reports).await?; - report::serve_dist(&client, report).await?; + let report = report::generate_allure_report(&client, &reports).await?; + + if arguments.export { + report.export("./allure_report/").await?; + let tests_failed = reports + .into_iter() + .any(|report| matches!(report.status, TestStatus::Failed)); + if tests_failed { + return Err(eyre!("Tests failed")); + } + } else { + report::serve_dist(&client, report).await?; + } } } Cli::Fix => { diff --git a/dagger_pipeline/src/report.rs b/dagger_pipeline/src/report.rs index 1b58a22..859f3e8 100644 --- a/dagger_pipeline/src/report.rs +++ b/dagger_pipeline/src/report.rs @@ -50,73 +50,73 @@ fn all_tests<'q>( )> { let all_tests: Vec<(Pin>>, bool)> = vec![ // (future, is_sequential) - (Box::pin(crate::targets::rustfmt(client)), false), - (Box::pin(crate::targets::typos(client)), false), + // (Box::pin(crate::targets::typos(client)), false), + // (Box::pin(crate::targets::rustfmt(client)), false), (Box::pin(crate::targets::native_tests(client)), false), - (Box::pin(crate::targets::wasm_unit_tests(client)), false), - (Box::pin(crate::targets::clippy_workspace(client)), false), - ( - Box::pin(crate::targets::clippy_minimal_versions(client)), - false, - ), - (Box::pin(crate::targets::clippy_natrix(client)), false), - (Box::pin(crate::targets::test_docs(client)), false), - ( - Box::pin(crate::targets::cargo_deny(client, "./crates/natrix")), - false, - ), - ( - Box::pin(crate::targets::cargo_deny(client, "./crates/natrix-cli")), - false, - ), - (Box::pin(crate::targets::unused_deps(client)), false), - ( - Box::pin(crate::targets::test_project_gen(client, "stable")), - false, - ), - ( - Box::pin(crate::targets::test_project_gen(client, "nightly")), - false, - ), - (Box::pin(crate::targets::test_book_links(client)), false), - (Box::pin(crate::targets::test_book_examples(client)), true), - ( - Box::pin(crate::targets::integration_test( - client, - IntegrationTestMode::Dev, - arguments, - )), - false, - ), - ( - Box::pin(crate::targets::integration_test( - client, - IntegrationTestMode::Release, - arguments, - )), - false, - ), - ( - Box::pin(crate::targets::integration_test( - client, - IntegrationTestMode::Build, - arguments, - )), - false, - ), + // (Box::pin(crate::targets::wasm_unit_tests(client)), false), + // (Box::pin(crate::targets::clippy_workspace(client)), false), + // ( + // Box::pin(crate::targets::clippy_minimal_versions(client)), + // false, + // ), + // (Box::pin(crate::targets::clippy_natrix(client)), false), + // (Box::pin(crate::targets::test_docs(client)), false), + // ( + // Box::pin(crate::targets::cargo_deny(client, "./crates/natrix")), + // false, + // ), + // ( + // Box::pin(crate::targets::cargo_deny(client, "./crates/natrix-cli")), + // false, + // ), + // (Box::pin(crate::targets::unused_deps(client)), false), + // ( + // Box::pin(crate::targets::test_project_gen(client, "stable")), + // false, + // ), + // ( + // Box::pin(crate::targets::test_project_gen(client, "nightly")), + // false, + // ), + // (Box::pin(crate::targets::test_book_links(client)), true), + // (Box::pin(crate::targets::test_book_examples(client)), true), + // ( + // Box::pin(crate::targets::integration_test( + // client, + // IntegrationTestMode::Dev, + // arguments, + // )), + // false, + // ), + // ( + // Box::pin(crate::targets::integration_test( + // client, + // IntegrationTestMode::Release, + // arguments, + // )), + // false, + // ), + // ( + // Box::pin(crate::targets::integration_test( + // client, + // IntegrationTestMode::Build, + // arguments, + // )), + // false, + // ), ]; all_tests } /// Generate the final report -pub async fn generate_allure_report(client: &Query, results: Vec) -> Result { +pub async fn generate_allure_report(client: &Query, results: &[TestResult]) -> Result { let mut reports = client.directory(); // HACK: Dagger doesnt like you creating 100+ files in one call. // So we chunk it up. - for chunk in &results.into_iter().chunks(50) { + for chunk in &results.iter().chunks(50) { let mut chunked = client.directory(); for result in chunk { - chunked = chunked.with_directory(".", result.into_file(client)?); + chunked = chunked.with_directory(".", result.as_file(client)?); } reports = reports.with_directory(".", chunked.sync().await?); diff --git a/dagger_pipeline/src/targets.rs b/dagger_pipeline/src/targets.rs index c47cd48..29d9d47 100644 --- a/dagger_pipeline/src/targets.rs +++ b/dagger_pipeline/src/targets.rs @@ -139,8 +139,8 @@ pub(crate) struct TestResult { impl TestResult { /// Convert test result to a directory containing the result file - pub(crate) fn into_file(self, client: &Query) -> Result { - let content = serde_json::to_string(&self)?; + pub(crate) fn as_file(&self, client: &Query) -> Result { + let content = serde_json::to_string(self)?; let filename = format!("{}-result.json", self.uuid); Ok(client.directory().with_new_file(filename, content)) } diff --git a/flake.nix b/flake.nix index da29b02..7d87e21 100644 --- a/flake.nix +++ b/flake.nix @@ -45,8 +45,6 @@ ]) pkgs.nur.repos.dagger.dagger just - bacon - cargo-edit wasm-bindgen-cli_0_2_100 binaryen