예제 #1
0
 def test_find_ref_error(self):
     """Verify an error occurs when no external reference found."""
     self.item.ref = "not" "found"  # space to avoid matching in this file
     self.item.tree = Mock()
     self.item.tree.vcs = WorkingCopy(EMPTY)
     # Act and assert
     self.assertRaises(DoorstopError, self.item.find_ref)
예제 #2
0
 def test_find_ref_error_multiple(self):
     """Verify an error occurs when no external reference found."""
     self.item.references = [{"path": "this/path/does/not/exist.yml"}]
     self.item.tree = Mock()
     self.item.tree.vcs = WorkingCopy(EMPTY)
     # Act and assert
     self.assertRaises(DoorstopError, self.item.find_references)
예제 #3
0
 def test_find_skip_self(self):
     """Verify reference searches skip the item's file."""
     self.item.path = __file__
     self.item.ref = "148710938710289248"  # random and unique to this file
     self.item.tree = Mock()
     self.item.tree.vcs = WorkingCopy(EMPTY)
     self.item.tree.vcs._path_cache = [(__file__, 'filename', 'relpath')]
     # Act and assert
     self.assertRaises(DoorstopError, self.item.find_ref)
예제 #4
0
 def test_find_ref(self):
     """Verify an item's reference can be found."""
     self.item.ref = "REF" "123"  # space to avoid matching in this file
     self.item.tree = Mock()
     self.item.tree.vcs = WorkingCopy(EXTERNAL)
     # Act
     relpath, line = self.item.find_ref()
     # Assert
     self.assertEqual('text.txt', os.path.basename(relpath))
     self.assertEqual(3, line)
예제 #5
0
 def test_find_ref_filename(self):
     """Verify an item's reference can also be a filename."""
     self.item.ref = "text.txt"
     self.item.tree = Mock()
     self.item.tree.vcs = WorkingCopy(FILES)
     self.item.tree.vcs._ignores_cache = ["*published*"]
     # Act
     relpath, line = self.item.find_ref()
     # Assert
     self.assertEqual('text.txt', os.path.basename(relpath))
     self.assertEqual(None, line)
예제 #6
0
    def test_find_references_invalid_keyword(self):
        """Verify an item's references can be found."""
        self.item.references = [
            {"path": "files/REQ001.yml", "keyword": "INVALID KEYWORD"}
        ]

        self.item.root = TESTS_ROOT
        self.item.tree = Mock()
        self.item.tree.vcs = WorkingCopy(TESTS_ROOT)

        with self.assertRaises(DoorstopError) as context:
            self.item.find_references()

        self.assertTrue('external reference not found' in str(context.exception))
예제 #7
0
    def test_find_file_reference_should_skip_item_path(self):
        root = TESTS_ROOT
        tree = Mock()
        tree.vcs = WorkingCopy(TESTS_ROOT)
        item_path = os.path.join('path', 'to', 'RQ001.yml')

        # Act
        reference_finder = ReferenceFinder()

        with self.assertRaises(DoorstopError) as context:
            reference_finder.find_file_reference(item_path, root, tree,
                                                 item_path)

        self.assertTrue(
            'external reference not found' in str(context.exception))
예제 #8
0
    def test_find_file_reference_does_not_exist(self):
        reference_path = "reference-that-does-not-exist.yml"
        root = TESTS_ROOT
        tree = Mock()
        tree.vcs = WorkingCopy(TESTS_ROOT)
        item_path = os.path.join('path', 'to', 'RQ001.yml')

        reference_finder = ReferenceFinder()

        with self.assertRaises(DoorstopError) as context:
            reference_finder.find_file_reference(reference_path, root, tree,
                                                 item_path)

        self.assertTrue(
            'external reference not found' in str(context.exception))
예제 #9
0
    def test_find_file_reference_invalid_keyword_given(self):
        keyword = "Invalid keyword"
        reference_path = "files/REQ001.yml"
        root = TESTS_ROOT
        tree = Mock()
        tree.vcs = WorkingCopy(TESTS_ROOT)
        item_path = os.path.join('path', 'to', 'RQ001.yml')

        reference_finder = ReferenceFinder()

        with self.assertRaises(DoorstopError) as context:
            reference_finder.find_file_reference(reference_path, root, tree,
                                                 item_path, keyword)

        self.assertTrue(
            'external reference not found' in str(context.exception))
예제 #10
0
    def test_find_file_reference_with_keyword(self):
        reference_path = "files/REQ006.yml"
        root = TESTS_ROOT
        tree = Mock()
        tree.vcs = WorkingCopy(TESTS_ROOT)
        item_path = os.path.join('path', 'to', 'RQ001.yml')

        # Act
        reference_finder = ReferenceFinder()

        path, line = reference_finder.find_file_reference(
            reference_path, root, tree, item_path, 'REF123')

        # Assert
        self.assertEqual(path, 'files/REQ006.yml')
        self.assertEqual(line, 10)
예제 #11
0
    def test_find_file_reference_valid_keyword_given(self):
        keyword = "Lorem ipsum dolor sit amet"
        reference_path = "files/REQ001.yml"
        root = TESTS_ROOT
        tree = Mock()
        tree.vcs = WorkingCopy(TESTS_ROOT)
        item_path = os.path.join('path', 'to', 'RQ001.yml')

        # Act
        reference_finder = ReferenceFinder()

        path, line = reference_finder.find_file_reference(
            reference_path, root, tree, item_path, keyword)

        # Assert
        self.assertEqual(path, 'files/REQ001.yml')
        self.assertEqual(line, 12)
예제 #12
0
    def test_find_references_valid_keyword(self):
        """Verify an item's references can be found."""
        keyword = "Lorem ipsum dolor sit amet"
        self.item.references = [{"path": "files/REQ001.yml", "keyword": keyword}]

        self.item.root = TESTS_ROOT
        self.item.tree = Mock()
        self.item.tree.vcs = WorkingCopy(TESTS_ROOT)

        # Act
        ref = self.item.find_references()

        # Assert
        self.assertEqual(1, len(ref))

        ref_path, ref_keyword_line = ref[0]
        self.assertEqual(ref_path, 'files/REQ001.yml')
        self.assertEqual(ref_keyword_line, 12)
예제 #13
0
    def test_find_references(self):
        """Verify an item's references can be found."""
        self.item.references = [
            {"path": "files/REQ001.yml"},
            {"path": "files/REQ002.yml"},
        ]

        self.item.root = TESTS_ROOT
        self.item.tree = Mock()
        self.item.tree.vcs = WorkingCopy(TESTS_ROOT)

        # Act
        ref = self.item.find_references()

        # Assert
        self.assertEqual(2, len(ref))

        relpath_1, keyword_line_1 = ref[0]
        self.assertEqual(relpath_1, 'files/REQ001.yml')
        self.assertEqual(keyword_line_1, None)

        relpath_2, keyword_line_2 = ref[1]
        self.assertEqual(relpath_2, 'files/REQ002.yml')
        self.assertEqual(keyword_line_2, None)
예제 #14
0
 def __init__(self, *args, **kwargs):
     super().__init__(*args, **kwargs)
     self.tree = Mock()
     self.tree.vcs = WorkingCopy(None)