Skip to content

Commit 064aefe

Browse files
committed
Add test and some fixes
1 parent ba9592b commit 064aefe

File tree

2 files changed

+118
-6
lines changed

2 files changed

+118
-6
lines changed

lnt/tests/test_suite.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -340,8 +340,9 @@ def run_test(self, opts):
340340

341341
cmakecache = os.path.join(self._base_path, 'CMakeCache.txt')
342342
if opts.test_prebuilt:
343-
# In test-prebuilt mode, the build is already configured
343+
# In test-prebuilt mode, the build is already configured and compiled
344344
self.configured = True
345+
self.compiled = True
345346
else:
346347
# In normal/build-only mode, check if we should skip reconfiguration
347348
self.configured = not opts.run_configure and \
@@ -500,7 +501,7 @@ def _run_interleaved_builds(self, opts):
500501

501502
for build_idx, build_info in enumerate(build_infos):
502503
logger.info(" Testing build %d/%d: %s" %
503-
(build_idx + 1, len(build_infos), build_info['build_dir']))
504+
(build_idx + 1, len(build_infos), build_info['build_dir']))
504505

505506
# Set _base_path and configured to this build directory
506507
self._base_path = build_info['build_dir']
@@ -582,11 +583,11 @@ def run(self, cmake_vars, compile=True, test=True, profile=False, skip_lit=False
582583
self.trained = True
583584
self.configured = False
584585

585-
self._configure_if_needed()
586+
if compile or self.opts.pgo:
587+
self._configure_if_needed()
586588

587-
if self.compiled and compile:
588-
self._clean(self._base_path)
589-
if not self.compiled or compile or self.opts.pgo:
589+
if self.compiled:
590+
self._clean(self._base_path)
590591
self._build(self._base_path)
591592
self._install_benchmark(self._base_path)
592593
self.compiled = True
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
# Check interleaved builds feature (--build-only, --test-prebuilt, --exec-interleaved-builds)
2+
3+
# Test 1: Build-only mode
4+
# RUN: rm -rf %t.SANDBOX-A %t.SANDBOX-B %t.SANDBOX-RESULTS
5+
# RUN: lnt runtest test-suite \
6+
# RUN: --sandbox %t.SANDBOX-A \
7+
# RUN: --no-timestamp \
8+
# RUN: --test-suite %S/Inputs/test-suite-cmake \
9+
# RUN: --cc %{shared_inputs}/FakeCompilers/clang-r154331 \
10+
# RUN: --use-cmake %S/Inputs/test-suite-cmake/fake-cmake \
11+
# RUN: --use-make %S/Inputs/test-suite-cmake/fake-make \
12+
# RUN: --use-lit %S/Inputs/test-suite-cmake/fake-lit \
13+
# RUN: --build-only \
14+
# RUN: > %t.build-a.log 2> %t.build-a.err
15+
# RUN: filecheck --check-prefix CHECK-BUILD-ONLY < %t.build-a.err %s
16+
# CHECK-BUILD-ONLY: Building tests (--build-only mode)...
17+
# CHECK-BUILD-ONLY: Build complete. Build directory: {{.*}}SANDBOX-A/build
18+
# CHECK-BUILD-ONLY: Use --test-prebuilt --build-dir {{.*}}SANDBOX-A/build to run tests.
19+
20+
# Test 2: Build a second sandbox
21+
# RUN: lnt runtest test-suite \
22+
# RUN: --sandbox %t.SANDBOX-B \
23+
# RUN: --no-timestamp \
24+
# RUN: --test-suite %S/Inputs/test-suite-cmake \
25+
# RUN: --cc %{shared_inputs}/FakeCompilers/clang-r154331 \
26+
# RUN: --use-cmake %S/Inputs/test-suite-cmake/fake-cmake \
27+
# RUN: --use-make %S/Inputs/test-suite-cmake/fake-make \
28+
# RUN: --use-lit %S/Inputs/test-suite-cmake/fake-lit \
29+
# RUN: --build-only \
30+
# RUN: > %t.build-b.log 2> %t.build-b.err
31+
32+
# Test 3: Test prebuilt with single build
33+
# RUN: lnt runtest test-suite \
34+
# RUN: --sandbox %t.SANDBOX-RESULTS \
35+
# RUN: --no-timestamp \
36+
# RUN: --test-prebuilt \
37+
# RUN: --build-dir %t.SANDBOX-A/build \
38+
# RUN: --use-cmake %S/Inputs/test-suite-cmake/fake-cmake \
39+
# RUN: --use-lit %S/Inputs/test-suite-cmake/fake-lit \
40+
# RUN: --output %t.prebuilt.report \
41+
# RUN: > %t.prebuilt.log 2> %t.prebuilt.err
42+
# RUN: filecheck --check-prefix CHECK-PREBUILT < %t.prebuilt.err %s
43+
# CHECK-PREBUILT-NOT: Configuring
44+
# CHECK-PREBUILT-NOT: Building
45+
# CHECK-PREBUILT: Testing
46+
47+
# Test 4: Interleaved builds execution with multisample
48+
# RUN: rm -rf %t.SANDBOX-RESULTS
49+
# RUN: lnt runtest test-suite \
50+
# RUN: --sandbox %t.SANDBOX-RESULTS \
51+
# RUN: --no-timestamp \
52+
# RUN: --exec-interleaved-builds %t.SANDBOX-A/build,%t.SANDBOX-B/build \
53+
# RUN: --use-cmake %S/Inputs/test-suite-cmake/fake-cmake \
54+
# RUN: --use-lit %S/Inputs/test-suite-cmake/fake-lit \
55+
# RUN: --exec-multisample 2 \
56+
# RUN: > %t.interleaved.log 2> %t.interleaved.err
57+
# RUN: filecheck --check-prefix CHECK-INTERLEAVED < %t.interleaved.err %s
58+
# RUN: filecheck --check-prefix CHECK-REPORT-A < %t.SANDBOX-A/build/report.json %s
59+
# RUN: filecheck --check-prefix CHECK-REPORT-B < %t.SANDBOX-B/build/report.json %s
60+
61+
# CHECK-INTERLEAVED: Running interleaved builds mode with 2 builds
62+
# CHECK-INTERLEAVED: Loading build from: {{.*}}SANDBOX-A/build
63+
# CHECK-INTERLEAVED: Compiler: clang
64+
# CHECK-INTERLEAVED: Loading build from: {{.*}}SANDBOX-B/build
65+
# CHECK-INTERLEAVED: Compiler: clang
66+
# CHECK-INTERLEAVED: Running sample 1 of 2
67+
# CHECK-INTERLEAVED: Testing build 1/2: {{.*}}SANDBOX-A/build
68+
# CHECK-INTERLEAVED: Testing build 2/2: {{.*}}SANDBOX-B/build
69+
# CHECK-INTERLEAVED: Running sample 2 of 2
70+
# CHECK-INTERLEAVED: Testing build 1/2: {{.*}}SANDBOX-A/build
71+
# CHECK-INTERLEAVED: Testing build 2/2: {{.*}}SANDBOX-B/build
72+
# CHECK-INTERLEAVED: Interleaved testing complete. Generating reports...
73+
# CHECK-INTERLEAVED: Writing report for build: {{.*}}SANDBOX-A/build
74+
# CHECK-INTERLEAVED: Report: {{.*}}SANDBOX-A/build/report.json
75+
# CHECK-INTERLEAVED: Writing report for build: {{.*}}SANDBOX-B/build
76+
# CHECK-INTERLEAVED: Report: {{.*}}SANDBOX-B/build/report.json
77+
# CHECK-INTERLEAVED: Reports written to each build directory
78+
79+
# Verify reports were created in each build directory
80+
# CHECK-REPORT-A: "run_order": "154331"
81+
# CHECK-REPORT-A: "Name": "nts.foo.
82+
# CHECK-REPORT-B: "run_order": "154331"
83+
# CHECK-REPORT-B: "Name": "nts.foo.
84+
85+
# Test 5: Verify XML and CSV files were also created
86+
# RUN: test -f %t.SANDBOX-A/build/test-results.xunit.xml
87+
# RUN: test -f %t.SANDBOX-A/build/test-results.csv
88+
# RUN: test -f %t.SANDBOX-B/build/test-results.xunit.xml
89+
# RUN: test -f %t.SANDBOX-B/build/test-results.csv
90+
91+
# Test 6: Error case - --build-only with --test-prebuilt should fail
92+
# RUN: not lnt runtest test-suite \
93+
# RUN: --sandbox %t.SANDBOX-ERR \
94+
# RUN: --no-timestamp \
95+
# RUN: --test-suite %S/Inputs/test-suite-cmake \
96+
# RUN: --cc %{shared_inputs}/FakeCompilers/clang-r154331 \
97+
# RUN: --build-only \
98+
# RUN: --test-prebuilt \
99+
# RUN: > %t.err1.log 2> %t.err1.err
100+
# RUN: filecheck --check-prefix CHECK-ERR1 < %t.err1.err %s
101+
# CHECK-ERR1: --build-only and --test-prebuilt are mutually exclusive
102+
103+
# Test 7: Error case - --test-prebuilt without --build-dir or --exec-interleaved-builds should fail
104+
# RUN: not lnt runtest test-suite \
105+
# RUN: --sandbox %t.SANDBOX-ERR2 \
106+
# RUN: --no-timestamp \
107+
# RUN: --test-prebuilt \
108+
# RUN: --use-lit %S/Inputs/test-suite-cmake/fake-lit \
109+
# RUN: > %t.err2.log 2> %t.err2.err
110+
# RUN: filecheck --check-prefix CHECK-ERR2 < %t.err2.err %s
111+
# CHECK-ERR2: --test-prebuilt requires --build-dir (or use --exec-interleaved-builds)

0 commit comments

Comments
 (0)