aboutsummaryrefslogtreecommitdiff
path: root/unittests/allplatformstests.py
diff options
context:
space:
mode:
authorLei YU <yulei.sh@bytedance.com>2023-09-28 07:26:12 +0000
committerEli Schwartz <eschwartz93@gmail.com>2023-09-28 10:54:39 -0400
commitdac25ba9a8dc3833edbc0d0fd133bc61c706f84a (patch)
tree7d382ffd3bd73427f5cce0d03e7ac7c720a43257 /unittests/allplatformstests.py
parent5ff59f2fb515f47ed61598fed7749982fb20e49f (diff)
downloadmeson-dac25ba9a8dc3833edbc0d0fd133bc61c706f84a.zip
meson-dac25ba9a8dc3833edbc0d0fd133bc61c706f84a.tar.gz
meson-dac25ba9a8dc3833edbc0d0fd133bc61c706f84a.tar.bz2
unittest: Fix clang-tidy-fix
The unittest case for `clang-tidy-fix` checks if the whole project is in git or not, and skips if not. Fix this by creating a temporary git repo, copy the test files and run the tests, following how `clang-format` does. It also reverts some help code introduced in the previous test. Tested: Verify the test case passes. Signed-off-by: Lei YU <yulei.sh@bytedance.com>
Diffstat (limited to 'unittests/allplatformstests.py')
-rw-r--r--unittests/allplatformstests.py23
1 files changed, 17 insertions, 6 deletions
diff --git a/unittests/allplatformstests.py b/unittests/allplatformstests.py
index f06279a..4ee0de4 100644
--- a/unittests/allplatformstests.py
+++ b/unittests/allplatformstests.py
@@ -42,7 +42,7 @@ from mesonbuild.mesonlib import (
is_sunos, windows_proof_rmtree, python_command, version_compare, split_args, quote_arg,
relpath, is_linux, git, search_version, do_conf_file, do_conf_str, default_prefix,
MesonException, EnvironmentException, OptionKey,
- windows_proof_rm, quiet_git
+ windows_proof_rm
)
from mesonbuild.programs import ExternalProgram
@@ -3030,7 +3030,6 @@ class AllPlatformTests(BasePlatformTests):
self.assertNotIn(dummydir, out)
@skipIfNoExecutable('clang-tidy')
- @unittest.skipIf(not is_git_repo(), 'Skipping because this is not in git repo')
def test_clang_tidy_fix(self):
if self.backend is not Backend.ninja:
raise SkipTest(f'Clang-tidy is for now only supported on Ninja, not {self.backend.name}')
@@ -3039,15 +3038,27 @@ class AllPlatformTests(BasePlatformTests):
if is_osx():
raise SkipTest('Apple ships a broken clang-tidy that chokes on -pipe.')
testdir = os.path.join(self.unit_test_dir, '68 clang-tidy')
+
+ # Ensure that test project is in git even when running meson from tarball.
+ srcdir = os.path.join(self.builddir, 'src')
+ shutil.copytree(testdir, srcdir)
+ git_init(srcdir)
+ testdir = srcdir
+ self.new_builddir()
+
dummydir = os.path.join(testdir, 'dummydir.h')
+ testfile = os.path.join(testdir, 'cttest.cpp')
+ fixedfile = os.path.join(testdir, 'cttest_fixed.cpp')
self.init(testdir, override_envvars={'CXX': 'c++'})
+ # Make sure test files are different
+ self.assertNotEqual(Path(testfile).read_text(encoding='utf-8'),
+ Path(fixedfile).read_text(encoding='utf-8'))
out = self.run_target('clang-tidy-fix')
self.assertIn('cttest.cpp:4:20', out)
self.assertNotIn(dummydir, out)
- ret = quiet_git(['diff', '--exit-code', 'test cases/unit/68 clang-tidy/cttest.cpp'], '.')
- self.assertFalse(ret[0])
- # Restore the file
- quiet_git(['checkout', '--', 'test cases/unit/68 clang-tidy/cttest.cpp'], '.')
+ # Make sure the test file is fixed
+ self.assertEqual(Path(testfile).read_text(encoding='utf-8'),
+ Path(fixedfile).read_text(encoding='utf-8'))
def test_identity_cross(self):
testdir = os.path.join(self.unit_test_dir, '69 cross')