starter-kit/bots/task/test-checklist
2019-08-22 16:05:13 +00:00

94 lines
4.6 KiB
Python
Executable file

#!/usr/bin/env python3
# This file is part of Cockpit.
#
# Copyright (C) 2017 Red Hat, Inc.
#
# Cockpit is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# Cockpit is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Cockpit; If not, see <http://www.gnu.org/licenses/>.
import os
import sys
import unittest
BASE = os.path.dirname(__file__)
sys.path.insert(1, os.path.join(BASE, ".."))
from task import github
class TestChecklist(unittest.TestCase):
def testParse(self):
parse_line = github.Checklist.parse_line
self.assertEqual(parse_line("blah"), (None, None))
self.assertEqual(parse_line(""), (None, None))
self.assertEqual(parse_line(""), (None, None))
self.assertEqual(parse_line("* [ ] test two"), ("test two", False))
self.assertEqual(parse_line("- [ ] test two"), ("test two", False))
self.assertEqual(parse_line(" * [ ] test two "), ("test two", False))
self.assertEqual(parse_line(" - [ ] test two "), ("test two", False))
self.assertEqual(parse_line(" - [x] test two "), ("test two", True))
self.assertEqual(parse_line(" * [x] test two"), ("test two", True))
self.assertEqual(parse_line(" * [x] FAIL: test two"), ("test two", "FAIL"))
self.assertEqual(parse_line(" * [x] FAIL: test FAIL: two"), ("test FAIL: two", "FAIL"))
self.assertEqual(parse_line(" * [x]test three"), (None, None))
self.assertEqual(parse_line(" - [X] test two "), ("test two", True))
self.assertEqual(parse_line(" * [X] test four"), ("test four", True))
self.assertEqual(parse_line(" * [X] FAIL: test four"), ("test four", "FAIL"))
self.assertEqual(parse_line(" * [X] FAIL: test FAIL: four"), ("test FAIL: four", "FAIL"))
self.assertEqual(parse_line(" * [X]test five"), (None, None))
def testFormat(self):
format_line = github.Checklist.format_line
self.assertEqual(format_line("blah", True), " * [x] blah")
self.assertEqual(format_line("blah", False), " * [ ] blah")
self.assertEqual(format_line("blah", "FAIL"), " * [ ] FAIL: blah")
def testProcess(self):
body = "This is a description\n- [ ] item1\n * [x] Item two\n * [X] Item three\n\nMore lines"
checklist = github.Checklist(body)
self.assertEqual(checklist.body, body)
self.assertEqual(checklist.items, { "item1": False, "Item two": True, "Item three": True })
def testCheck(self):
body = "This is a description\n- [ ] item1\n * [x] Item two\n * [X] Item three\n\nMore lines"
checklist = github.Checklist(body)
checklist.check("item1", True)
checklist.check("Item three", False)
self.assertEqual(checklist.body, "This is a description\n * [x] item1\n * [x] Item two\n * [ ] Item three\n\nMore lines")
self.assertEqual(checklist.items, { "item1": True, "Item two": True, "Item three": False })
def testDisable(self):
body = "This is a description\n- [ ] item1\n * [x] Item two\n\nMore lines"
checklist = github.Checklist(body)
checklist.check("item1", "Status")
self.assertEqual(checklist.body, "This is a description\n * [ ] Status: item1\n * [x] Item two\n\nMore lines")
self.assertEqual(checklist.items, { "item1": "Status", "Item two": True })
def testAdd(self):
body = "This is a description\n- [ ] item1\n * [x] Item two\n\nMore lines"
checklist = github.Checklist(body)
checklist.add("Item three")
self.assertEqual(checklist.body, "This is a description\n- [ ] item1\n * [x] Item two\n\nMore lines\n * [ ] Item three")
self.assertEqual(checklist.items, { "item1": False, "Item two": True, "Item three": False })
def testChecked(self):
body = "This is a description\n- [ ] item1\n * [x] Item two\n * [X] Item three\n\nMore lines"
checklist = github.Checklist(body)
checklist.check("item1", True)
checklist.check("Item three", False)
checked = checklist.checked()
self.assertEqual(checklist.items, { "item1": True, "Item two": True, "Item three": False })
self.assertEqual(checked, { "item1": True, "Item two": True })
if __name__ == '__main__':
unittest.main()