aboutsummaryrefslogtreecommitdiff
path: root/run_unittests.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2016-12-06 20:22:04 +0200
committerGitHub <noreply@github.com>2016-12-06 20:22:04 +0200
commit228a9035af26515481a686b8940968ea924f85fd (patch)
treef95e7d228a97fb344f74ed4b0f650403f08bfe41 /run_unittests.py
parentf3bd0d149174b2bbb4983b48e603e060a3e18c22 (diff)
parent14ca7d602c92b6f97fe32230cf694d4a51d8a524 (diff)
downloadmeson-228a9035af26515481a686b8940968ea924f85fd.zip
meson-228a9035af26515481a686b8940968ea924f85fd.tar.gz
meson-228a9035af26515481a686b8940968ea924f85fd.tar.bz2
Merge pull request #1103 from mesonbuild/rewriter
Beginnings of a rewriter
Diffstat (limited to 'run_unittests.py')
-rwxr-xr-xrun_unittests.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/run_unittests.py b/run_unittests.py
index 6078b7d..36d899a 100755
--- a/run_unittests.py
+++ b/run_unittests.py
@@ -341,5 +341,63 @@ class LinuxlikeTests(unittest.TestCase):
Oargs = [arg for arg in cmd if arg.startswith('-O')]
self.assertEqual(Oargs, [Oflag, '-O0'])
+class RewriterTests(unittest.TestCase):
+
+ def setUp(self):
+ super().setUp()
+ src_root = os.path.dirname(__file__)
+ self.testroot = tempfile.mkdtemp()
+ self.rewrite_command = [sys.executable, os.path.join(src_root, 'mesonrewriter.py')]
+ self.tmpdir = tempfile.mkdtemp()
+ self.workdir = os.path.join(self.tmpdir, 'foo')
+ self.test_dir = os.path.join(src_root, 'test cases/rewrite')
+
+ def tearDown(self):
+ shutil.rmtree(self.tmpdir)
+
+ def read_contents(self, fname):
+ with open(os.path.join(self.workdir, fname)) as f:
+ return f.read()
+
+ def check_effectively_same(self, mainfile, truth):
+ mf = self.read_contents(mainfile)
+ t = self.read_contents(truth)
+ # Rewriting is not guaranteed to do a perfect job of
+ # maintaining whitespace.
+ self.assertEqual(mf.replace(' ', ''), t.replace(' ', ''))
+
+ def prime(self, dirname):
+ shutil.copytree(os.path.join(self.test_dir, dirname), self.workdir)
+
+ def test_basic(self):
+ self.prime('1 basic')
+ subprocess.check_output(self.rewrite_command + ['remove',
+ '--target=trivialprog',
+ '--filename=notthere.c',
+ '--sourcedir', self.workdir])
+ self.check_effectively_same('meson.build', 'removed.txt')
+ subprocess.check_output(self.rewrite_command + ['add',
+ '--target=trivialprog',
+ '--filename=notthere.c',
+ '--sourcedir', self.workdir])
+ self.check_effectively_same('meson.build', 'added.txt')
+ subprocess.check_output(self.rewrite_command + ['remove',
+ '--target=trivialprog',
+ '--filename=notthere.c',
+ '--sourcedir', self.workdir])
+ self.check_effectively_same('meson.build', 'removed.txt')
+
+ def test_subdir(self):
+ self.prime('2 subdirs')
+ top = self.read_contents('meson.build')
+ s2 = self.read_contents('sub2/meson.build')
+ subprocess.check_output(self.rewrite_command + ['remove',
+ '--target=something',
+ '--filename=second.c',
+ '--sourcedir', self.workdir])
+ self.check_effectively_same('sub1/meson.build', 'sub1/after.txt')
+ self.assertEqual(top, self.read_contents('meson.build'))
+ self.assertEqual(s2, self.read_contents('sub2/meson.build'))
+
if __name__ == '__main__':
unittest.main()