dlang / dub

Package and build management system for D
MIT License
661 stars 227 forks source link

Tests: Implement the ability to mock the registry too #2929

Closed Geod24 closed 2 weeks ago

Geod24 commented 2 weeks ago

Originally implemented the fix for #2901 using this before settling on the much simpler unittest. Here's what the test would have looked like:

// Erased version specification for dependency
// https://github.com/dlang/dub/issues/2901
unittest
{
    scope dub = new TestDub((scope FSEntry fs) {
        // We just need to fetch a package
        fs.writeFile(TestDub.ProjectPath ~ "dub.json",
             `{ "name": "a", "dependencies": {"b":"~>1.0"}}`);
    });
    dub.getRegistry.add(Version("1.0.4"), (scope FSEntry pkg) {
        pkg.writeFile(NativePath(`dub.sdl`), `name "b"
dependency "c" version=">0.0.0" optional=true`);
    });
    dub.getRegistry.add(Version("1.0.0"), (scope FSEntry pkg) {
        pkg.writeFile(NativePath(`dub.sdl`), `name "c"`);
    });

    dub.loadPackage();
    assert(!dub.project.hasAllDependencies());
    dub.upgrade(UpgradeOptions.select);
    assert(dub.project.hasAllDependencies());
}
github-actions[bot] commented 2 weeks ago

✅ PR OK, no changes in deprecations or warnings

Total deprecations: 0

Total warnings: 0

Build statistics:

 statistics (-before, +after)
 executable size=5259464 bin/dub
-rough build time=63s
+rough build time=62s
Full build output ``` DUB version 1.37.0, built on May 11 2024 LDC - the LLVM D compiler (1.38.0): based on DMD v2.108.1 and LLVM 18.1.5 built with LDC - the LLVM D compiler (1.38.0) Default target: x86_64-unknown-linux-gnu Host CPU: znver3 http://dlang.org - http://wiki.dlang.org/LDC Registered Targets: aarch64 - AArch64 (little endian) aarch64_32 - AArch64 (little endian ILP32) aarch64_be - AArch64 (big endian) amdgcn - AMD GCN GPUs arm - ARM arm64 - ARM64 (little endian) arm64_32 - ARM64 (little endian ILP32) armeb - ARM (big endian) avr - Atmel AVR Microcontroller bpf - BPF (host endian) bpfeb - BPF (big endian) bpfel - BPF (little endian) hexagon - Hexagon lanai - Lanai loongarch32 - 32-bit LoongArch loongarch64 - 64-bit LoongArch mips - MIPS (32-bit big endian) mips64 - MIPS (64-bit big endian) mips64el - MIPS (64-bit little endian) mipsel - MIPS (32-bit little endian) msp430 - MSP430 [experimental] nvptx - NVIDIA PTX 32-bit nvptx64 - NVIDIA PTX 64-bit ppc32 - PowerPC 32 ppc32le - PowerPC 32 LE ppc64 - PowerPC 64 ppc64le - PowerPC 64 LE r600 - AMD GPUs HD2XXX-HD6XXX riscv32 - 32-bit RISC-V riscv64 - 64-bit RISC-V sparc - Sparc sparcel - Sparc LE sparcv9 - Sparc V9 spirv - SPIR-V Logical spirv32 - SPIR-V 32-bit spirv64 - SPIR-V 64-bit systemz - SystemZ thumb - Thumb thumbeb - Thumb (big endian) ve - VE wasm32 - WebAssembly 32-bit wasm64 - WebAssembly 64-bit x86 - 32-bit X86: Pentium-Pro and above x86-64 - 64-bit X86: EM64T and AMD64 xcore - XCore Upgrading project in /home/runner/work/dub/dub/ Starting Performing "release" build using /opt/hostedtoolcache/dc/ldc2-1.38.0/x64/ldc2-1.38.0-linux-x86_64/bin/ldc2 for x86_64. Building dub 1.38.0+commit.44.gea09167a: building configuration [application] Linking dub STAT:statistics (-before, +after) STAT:executable size=5259464 bin/dub STAT:rough build time=62s ```