ldc/tests/linking/ir2obj_cache_pruning2.d
Johan Engelen 9dc58a76a6 Lit: stop using %T and use %t-dir instead. (#2277)
The %T substitution will be removed from Lit.
Resolves issue #2274
2017-08-17 21:38:35 +02:00

38 lines
1.7 KiB
D

// Test cache pruning for size
// This test assumes that the `void main(){}` object file size is below 200_000 bytes and above 200_000/2,
// such that rebuilding with version(NEW_OBJ_FILE) will clear the cache of all but the latest object file.
// RUN: %ldc %s -cache=%t-dir
// RUN: %ldc %s -cache=%t-dir -cache-prune -cache-prune-interval=0 -d-version=SLEEP
// RUN: %ldc %s -cache=%t-dir -cache-prune -cache-prune-interval=0 -vv | FileCheck --check-prefix=MUST_HIT %s
// RUN: %ldc %s -cache=%t-dir -cache-prune -cache-prune-interval=0 -vv -d-version=NEW_OBJ_FILE | FileCheck --check-prefix=NO_HIT %s
// RUN: %ldc %s -cache=%t-dir -cache-prune -cache-prune-interval=0 -vv | FileCheck --check-prefix=MUST_HIT %s
// RUN: %ldc -d-version=SLEEP -run %s
// RUN: %ldc %s -c -of=%t%obj -cache=%t-dir -cache-prune-interval=0 -cache-prune-maxbytes=200000 -vv | FileCheck --check-prefix=MUST_HIT %s
// RUN: %ldc %t%obj
// RUN: %ldc %s -cache=%t-dir -d-version=SLEEP -vv | FileCheck --check-prefix=NO_HIT %s
// RUN: %ldc -d-version=SLEEP -run %s
// RUN: %ldc %s -cache=%t-dir -cache-prune-interval=1 -cache-prune-maxbytes=200000 -d-version=NEW_OBJ_FILE
// RUN: %ldc %s -cache=%t-dir -cache-prune -cache-prune-interval=0 -vv | FileCheck --check-prefix=NO_HIT %s
// MUST_HIT: Cache object found!
// NO_HIT-NOT: Cache object found!
void main()
{
// Add non-zero static data to guarantee a binary size larger than 200_000/2.
static byte[120_000] dummy = 1;
version (NEW_OBJ_FILE)
{
auto a = __TIME__;
}
version (SLEEP)
{
// Sleep for 4 seconds, so we are sure that the cache object file timestamps are "aging".
import core.thread;
Thread.sleep( dur!"seconds"(4) );
}
}