From 232b913a4516c2ba94c1708d1572d5581918ed72 Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Mon, 22 Aug 2016 21:04:54 +0200 Subject: [PATCH] Add testAlternatingHeadersHit() --- integrationtests.py | 51 +++++++++++++++++++ .../hits-and-misses/.gitignore | 4 ++ .../stable-source-with-alternating-header.cpp | 9 ++++ 3 files changed, 64 insertions(+) create mode 100644 tests/integrationtests/hits-and-misses/.gitignore create mode 100644 tests/integrationtests/hits-and-misses/stable-source-with-alternating-header.cpp diff --git a/integrationtests.py b/integrationtests.py index 56411824..97f33f07 100644 --- a/integrationtests.py +++ b/integrationtests.py @@ -231,6 +231,57 @@ def testHitsSimple(self): newHits = stats.numCacheHits() self.assertEqual(newHits, oldHits + 1) + def testAlternatingHeadersHit(self): + with cd(os.path.join(ASSETS_DIR, "hits-and-misses")), tempfile.TemporaryDirectory() as tempDir: + cache = clcache.Cache(tempDir) + customEnv = dict(os.environ, CLCACHE_DIR=tempDir) + baseCmd = CLCACHE_CMD + ["/nologo", "/EHsc", "/c"] + + with cache.statistics as stats: + self.assertEqual(stats.numCacheHits(), 0) + self.assertEqual(stats.numCacheMisses(), 0) + self.assertEqual(stats.numCacheEntries(), 0) + + # VERSION 1 + with open('stable-source-with-alternating-header.h', 'w') as f: + f.write("#define VERSION 1\n") + subprocess.check_call(baseCmd + ["stable-source-with-alternating-header.cpp"], env=customEnv) + + with cache.statistics as stats: + self.assertEqual(stats.numCacheHits(), 0) + self.assertEqual(stats.numCacheMisses(), 1) + self.assertEqual(stats.numCacheEntries(), 1) + + # VERSION 2 + with open('stable-source-with-alternating-header.h', 'w') as f: + f.write("#define VERSION 2\n") + subprocess.check_call(baseCmd + ["stable-source-with-alternating-header.cpp"], env=customEnv) + + with cache.statistics as stats: + self.assertEqual(stats.numCacheHits(), 0) + self.assertEqual(stats.numCacheMisses(), 2) + self.assertEqual(stats.numCacheEntries(), 2) + + # VERSION 1 again + with open('stable-source-with-alternating-header.h', 'w') as f: + f.write("#define VERSION 1\n") + subprocess.check_call(baseCmd + ["stable-source-with-alternating-header.cpp"], env=customEnv) + + with cache.statistics as stats: + self.assertEqual(stats.numCacheHits(), 1) + self.assertEqual(stats.numCacheMisses(), 2) + self.assertEqual(stats.numCacheEntries(), 2) + + # VERSION 2 again + with open('stable-source-with-alternating-header.h', 'w') as f: + f.write("#define VERSION 1\n") + subprocess.check_call(baseCmd + ["stable-source-with-alternating-header.cpp"], env=customEnv) + + with cache.statistics as stats: + self.assertEqual(stats.numCacheHits(), 2) + self.assertEqual(stats.numCacheMisses(), 2) + self.assertEqual(stats.numCacheEntries(), 2) + class TestPrecompiledHeaders(unittest.TestCase): def testSampleproject(self): diff --git a/tests/integrationtests/hits-and-misses/.gitignore b/tests/integrationtests/hits-and-misses/.gitignore new file mode 100644 index 00000000..0c501438 --- /dev/null +++ b/tests/integrationtests/hits-and-misses/.gitignore @@ -0,0 +1,4 @@ +*.obj + +# written by the tests +stable-source-with-alternating-header.h diff --git a/tests/integrationtests/hits-and-misses/stable-source-with-alternating-header.cpp b/tests/integrationtests/hits-and-misses/stable-source-with-alternating-header.cpp new file mode 100644 index 00000000..32031da4 --- /dev/null +++ b/tests/integrationtests/hits-and-misses/stable-source-with-alternating-header.cpp @@ -0,0 +1,9 @@ +#include + +#include "stable-source-with-alternating-header.h" + +int main() +{ + std::cout << "A C++ file we compile twice and expect a hit" << std::endl; + return 0; +}