Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(62)

Unified Diff: expect_tests/test/pipeline_test.py

Issue 709853003: New expect_tests UI (Closed) Base URL: https://chromium.googlesource.com/infra/testing/expect_tests@shebang
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« expect_tests/pipeline.py ('K') | « expect_tests/test/data/package2/__init__.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: expect_tests/test/pipeline_test.py
diff --git a/expect_tests/test/pipeline_test.py b/expect_tests/test/pipeline_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..5e622f312b5c9f7a7572b2ae2c6b526bef3af07e
--- /dev/null
+++ b/expect_tests/test/pipeline_test.py
@@ -0,0 +1,186 @@
+import os
+import unittest
+
+from expect_tests import pipeline
+
+SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__))
+
+
+class ParsingAndConfigTest(unittest.TestCase):
+ def test_get_config(self):
+ """Testing that reading the config file works. Tests requires a specific
+ content for data/.expect_tests.cfg"""
+ path = os.path.join(SCRIPT_DIR, 'data')
+ black_list = pipeline.get_config(path)
+ self.assertEqual(black_list,
+ set(['directory1', 'directory2', 'ignored']))
+
+ def test_parse_test_glob(self):
+ self.assertEqual(pipeline.parse_test_glob('a/b/c'),
+ (os.path.abspath('a/b/c'), '*'))
+ self.assertEqual(pipeline.parse_test_glob('a/b/c:'),
+ (os.path.abspath('a/b/c'), '*'))
+ self.assertEqual(pipeline.parse_test_glob('a/b/c:Test'),
+ (os.path.abspath('a/b/c'), 'Test'))
+ self.assertEqual(pipeline.parse_test_glob('a/b/c:Test.Name'),
+ (os.path.abspath('a/b/c'), 'Test.Name'))
+ self.assertRaises(ValueError, pipeline.parse_test_glob, 'a:b:c',)
+ self.assertRaises(ValueError, pipeline.parse_test_glob, 'a:b/c',)
+
+
+class PathManipulationTest(unittest.TestCase):
+ """Tests for all path-manipulating functions.
+
+ This set uses checked-out files in the present repository to avoid mocking
+ the I/O functions.
iannucci 2014/11/12 20:26:24 +1 :) You could also have done a setUpClass sort
pgervais 2014/11/13 17:55:47 I replied to this elsewhere: the less I touch the
+ """
+
+ def test_get_python_root(self):
+ """This function uses the directory structure under data/"""
+ data_dir = os.path.join(SCRIPT_DIR, 'data')
+ self.assertEqual(pipeline.get_python_root(data_dir), data_dir)
+ self.assertEqual(pipeline.get_python_root(
+ os.path.join(data_dir, 'package1')), data_dir)
+ self.assertEqual(pipeline.get_python_root(
+ os.path.join(data_dir, 'package1', 'subpackage1_1')), data_dir)
+ self.assertRaises(ValueError, pipeline.get_python_root,
+ '____non-existing-path____')
iannucci 2014/11/12 20:26:24 this isn't meant to be a python identifier, is it?
pgervais 2014/11/13 17:55:47 It is meant to be a filename. Nothing is loaded by
+
+ def test_get_runtime_context(self):
+ """Test the get_runtime_context function"""
+ datadir = os.path.join(SCRIPT_DIR, 'data')
+
+ # Single directory case
+ test_globs = [datadir]
+ contexts = pipeline.get_runtime_contexts(test_globs)
+ self.assertEqual(len(contexts), 1)
+ self.assertEqual(contexts[0].cwd, datadir)
+ for testing_c in contexts[0].testing_contexts:
+ self.assertNotEqual(testing_c.package_name, 'ignored')
+
+ # Single package
+ test_globs = [os.path.join(datadir, 'package1')]
+ contexts = pipeline.get_runtime_contexts(test_globs)
+ self.assertEqual(len(contexts), 1)
+ self.assertEqual(contexts[0].cwd, datadir)
+ testing_c = contexts[0].testing_contexts
+ self.assertEqual(len(testing_c), 1)
+ self.assertEqual(testing_c[0].package_name, 'package1')
+
+ # Two packages in the same directory
+ test_globs = [os.path.join(datadir, 'package1'),
+ os.path.join(datadir, 'package2')]
+ contexts = pipeline.get_runtime_contexts(test_globs)
+ self.assertEqual(len(contexts), 1)
+ self.assertEqual(contexts[0].cwd, datadir)
+ testing_c = contexts[0].testing_contexts
+ self.assertEqual(len(testing_c), 2)
+ package_names = set()
+ for testing_c in contexts[0].testing_contexts:
+ package_names.add(testing_c.package_name)
+
+ self.assertEqual(package_names, set(('package1', 'package2')))
+
+ # Packages inside directory
+ test_globs = [datadir, os.path.join(datadir, 'package1')]
+ contexts = pipeline.get_runtime_contexts(test_globs)
+ self.assertEqual(len(contexts), 1)
+ # 2 is the number of packages under datadir, not counting
+ # the ignored ones.
+ self.assertEqual(len(contexts[0].testing_contexts), 2)
+
+ test_globs = [datadir, os.path.join(datadir, 'package1'),
+ os.path.join(datadir, 'package1', 'subpackage1_1')]
+ contexts = pipeline.get_runtime_contexts(test_globs)
+ self.assertEqual(len(contexts), 1)
+ self.assertEqual(len(contexts[0].testing_contexts), 2)
+
+
+ def test_package_testing_context(self):
+ """Test the PackageTestingContext class"""
+ package_name = 'package1'
+ package1 = os.path.join(SCRIPT_DIR, 'data', package_name)
+ package2 = os.path.join(SCRIPT_DIR, 'data', 'package2')
+ other_package1 = os.path.join(SCRIPT_DIR, 'data', 'other', package_name)
+
+ # from_path
+ context = pipeline.PackageTestingContext.from_path(package1)
+ self.assertTrue(os.path.isabs(context.cwd))
+ self.assertTrue(len(context.package_name) > 0)
+ self.assertEqual(len(context.filters), 1)
+ self.assertEqual(context.filters[0][1], '*')
+
+ context = pipeline.PackageTestingContext.from_path(package1,
+ filters='*')
+ self.assertTrue(os.path.isabs(context.cwd))
+ self.assertTrue(len(context.package_name) > 0)
+ self.assertEqual(len(context.filters), 1)
+ self.assertEqual(context.filters[0][1], '*')
iannucci 2014/11/12 20:26:24 it wouldn't be possible to break this function up
pgervais 2014/11/13 17:55:47 Done.
+
+ context = pipeline.PackageTestingContext.from_path(package1,
+ filters=('a*', 'b*'))
+ self.assertTrue(os.path.isabs(context.cwd))
+ self.assertTrue(len(context.package_name) > 0)
+ self.assertEqual(len(context.filters), 2)
+ self.assertEqual(context.filters[0][1], 'a*')
+ self.assertEqual(context.filters[1][1], 'b*')
+
+ # from_context_list
+ c1 = pipeline.PackageTestingContext.from_path(package1, filters='a')
+ c2 = pipeline.PackageTestingContext.from_path(package1, filters=('b','c'))
+ context = pipeline.PackageTestingContext.from_context_list((c1, c2))
+ self.assertEqual(len(context.filters), 3)
+ self.assertEqual(set(filt[1] for filt in context.filters),
+ set(('a', 'b', 'c')))
+
+ c1 = pipeline.PackageTestingContext.from_path(package1, filters='a')
+ c2 = pipeline.PackageTestingContext.from_path(package2, filters=('b','c'))
+ self.assertRaises(AssertionError,
+ pipeline.PackageTestingContext.from_context_list,
+ (c1, c2))
+
+ # Same package name, different paths.
+ c1 = pipeline.PackageTestingContext.from_path(package1, filters='a')
+ c2 = pipeline.PackageTestingContext.from_path(other_package1,
+ filters=('b','c'))
+ self.assertRaises(AssertionError,
+ pipeline.PackageTestingContext.from_context_list,
+ (c1, c2))
+
+
+ def test_processing_context(self):
+ """Test the ProcessingContext class"""
+ package_name = 'package1'
+ package1 = os.path.join(SCRIPT_DIR, 'data', package_name)
+ subpackage1 = os.path.join(SCRIPT_DIR, 'data',
+ package_name, 'subpackage1_1')
+ package2 = os.path.join(SCRIPT_DIR, 'data', 'package2')
+ other_package1 = os.path.join(SCRIPT_DIR, 'data', 'other', package_name)
+
+ c0 = pipeline.PackageTestingContext.from_path(package1)
+ c1 = pipeline.PackageTestingContext.from_path(package1, filters='a')
+ c2 = pipeline.PackageTestingContext.from_path(subpackage1, filters='d')
+ c3 = pipeline.PackageTestingContext.from_path(package2, filters=('b','c'))
+ c4 = pipeline.PackageTestingContext.from_path(other_package1)
+
+ # A processing context is a cwd + testing contexts.
+ # A testing context is cwd + one package name.
+ context = pipeline.ProcessingContext((c1, c2))
+ self.assertEqual(len(context.testing_contexts), 1)
+ self.assertEqual(set(filt[1]
+ for filt in context.testing_contexts[0].filters),
+ set(('a', 'd')))
+
+ context = pipeline.ProcessingContext((c0, c1, c2))
+ self.assertEqual(len(context.testing_contexts), 1)
+ self.assertEqual(set(filt[1]
+ for filt in context.testing_contexts[0].filters),
+ set(('*', 'a', 'd')))
+
+
+ context = pipeline.ProcessingContext((c1, c2, c3))
+ self.assertEqual(len(context.testing_contexts), 2)
+
+ # Fails because there are two different cwd.
+ self.assertRaises(ValueError, pipeline.ProcessingContext, (c1, c4))
+
« expect_tests/pipeline.py ('K') | « expect_tests/test/data/package2/__init__.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698