mirror of
https://github.com/rembo10/headphones.git
synced 2026-05-02 09:49:36 +01:00
Include html5lib for BeautifulSoup
BeautifulSoup needs lxml or html5, have included html5lib. Also latest BeautifulSoup 4.1.3
This commit is contained in:
296
html5lib/tests/test_formfiller.py
Normal file
296
html5lib/tests/test_formfiller.py
Normal file
@@ -0,0 +1,296 @@
|
||||
import sys
|
||||
import unittest
|
||||
|
||||
from html5lib.filters.formfiller import SimpleFilter
|
||||
|
||||
class FieldStorage(dict):
|
||||
def getlist(self, name):
|
||||
l = self[name]
|
||||
if isinstance(l, list):
|
||||
return l
|
||||
elif isinstance(l, tuple) or hasattr(l, '__iter__'):
|
||||
return list(l)
|
||||
return [l]
|
||||
|
||||
class TestCase(unittest.TestCase):
|
||||
def runTest(self, input, formdata, expected):
|
||||
try:
|
||||
output = list(SimpleFilter(input, formdata))
|
||||
except NotImplementedError, nie:
|
||||
# Amnesty for those that confess...
|
||||
print >>sys.stderr, "Not implemented:", str(nie)
|
||||
else:
|
||||
errorMsg = "\n".join(["\n\nInput:", str(input),
|
||||
"\nForm data:", str(formdata),
|
||||
"\nExpected:", str(expected),
|
||||
"\nReceived:", str(output)])
|
||||
self.assertEquals(output, expected, errorMsg)
|
||||
|
||||
def testSingleTextInputWithValue(self):
|
||||
self.runTest(
|
||||
[{"type": u"EmptyTag", "name": u"input",
|
||||
"data": [(u"type", u"text"), (u"name", u"foo"), (u"value", u"quux")]}],
|
||||
FieldStorage({"foo": "bar"}),
|
||||
[{"type": u"EmptyTag", "name": u"input",
|
||||
"data": [(u"type", u"text"), (u"name", u"foo"), (u"value", u"bar")]}])
|
||||
|
||||
def testSingleTextInputWithoutValue(self):
|
||||
self.runTest(
|
||||
[{"type": u"EmptyTag", "name": u"input",
|
||||
"data": [(u"type", u"text"), (u"name", u"foo")]}],
|
||||
FieldStorage({"foo": "bar"}),
|
||||
[{"type": u"EmptyTag", "name": u"input",
|
||||
"data": [(u"type", u"text"), (u"name", u"foo"), (u"value", u"bar")]}])
|
||||
|
||||
def testSingleCheckbox(self):
|
||||
self.runTest(
|
||||
[{"type": u"EmptyTag", "name": u"input",
|
||||
"data": [(u"type", u"checkbox"), (u"name", u"foo"), (u"value", u"bar")]}],
|
||||
FieldStorage({"foo": "bar"}),
|
||||
[{"type": u"EmptyTag", "name": u"input",
|
||||
"data": [(u"type", u"checkbox"), (u"name", u"foo"), (u"value", u"bar"), (u"checked", u"")]}])
|
||||
|
||||
def testSingleCheckboxShouldBeUnchecked(self):
|
||||
self.runTest(
|
||||
[{"type": u"EmptyTag", "name": u"input",
|
||||
"data": [(u"type", u"checkbox"), (u"name", u"foo"), (u"value", u"quux")]}],
|
||||
FieldStorage({"foo": "bar"}),
|
||||
[{"type": u"EmptyTag", "name": u"input",
|
||||
"data": [(u"type", u"checkbox"), (u"name", u"foo"), (u"value", u"quux")]}])
|
||||
|
||||
def testSingleCheckboxCheckedByDefault(self):
|
||||
self.runTest(
|
||||
[{"type": u"EmptyTag", "name": u"input",
|
||||
"data": [(u"type", u"checkbox"), (u"name", u"foo"), (u"value", u"bar"), (u"checked", u"")]}],
|
||||
FieldStorage({"foo": "bar"}),
|
||||
[{"type": u"EmptyTag", "name": u"input",
|
||||
"data": [(u"type", u"checkbox"), (u"name", u"foo"), (u"value", u"bar"), (u"checked", u"")]}])
|
||||
|
||||
def testSingleCheckboxCheckedByDefaultShouldBeUnchecked(self):
|
||||
self.runTest(
|
||||
[{"type": u"EmptyTag", "name": u"input",
|
||||
"data": [(u"type", u"checkbox"), (u"name", u"foo"), (u"value", u"quux"), (u"checked", u"")]}],
|
||||
FieldStorage({"foo": "bar"}),
|
||||
[{"type": u"EmptyTag", "name": u"input",
|
||||
"data": [(u"type", u"checkbox"), (u"name", u"foo"), (u"value", u"quux")]}])
|
||||
|
||||
def testSingleTextareaWithValue(self):
|
||||
self.runTest(
|
||||
[{"type": u"StartTag", "name": u"textarea", "data": [(u"name", u"foo")]},
|
||||
{"type": u"Characters", "data": u"quux"},
|
||||
{"type": u"EndTag", "name": u"textarea", "data": []}],
|
||||
FieldStorage({"foo": "bar"}),
|
||||
[{"type": u"StartTag", "name": u"textarea", "data": [(u"name", u"foo")]},
|
||||
{"type": u"Characters", "data": u"bar"},
|
||||
{"type": u"EndTag", "name": u"textarea", "data": []}])
|
||||
|
||||
def testSingleTextareaWithoutValue(self):
|
||||
self.runTest(
|
||||
[{"type": u"StartTag", "name": u"textarea", "data": [(u"name", u"foo")]},
|
||||
{"type": u"EndTag", "name": u"textarea", "data": []}],
|
||||
FieldStorage({"foo": "bar"}),
|
||||
[{"type": u"StartTag", "name": u"textarea", "data": [(u"name", u"foo")]},
|
||||
{"type": u"Characters", "data": u"bar"},
|
||||
{"type": u"EndTag", "name": u"textarea", "data": []}])
|
||||
|
||||
def testSingleSelectWithValue(self):
|
||||
self.runTest(
|
||||
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||||
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"bar")]},
|
||||
{"type": u"Characters", "data": u"quux"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"EndTag", "name": u"select", "data": []}],
|
||||
FieldStorage({"foo": "bar"}),
|
||||
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||||
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"bar"), (u"selected", u"")]},
|
||||
{"type": u"Characters", "data": u"quux"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"EndTag", "name": u"select", "data": []}])
|
||||
|
||||
def testSingleSelectWithValueShouldBeUnselected(self):
|
||||
self.runTest(
|
||||
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||||
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"bar")]},
|
||||
{"type": u"Characters", "data": u"quux"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"EndTag", "name": u"select", "data": []}],
|
||||
FieldStorage({"foo": "quux"}),
|
||||
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||||
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"bar")]},
|
||||
{"type": u"Characters", "data": u"quux"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"EndTag", "name": u"select", "data": []}])
|
||||
|
||||
def testSingleSelectWithoutValue(self):
|
||||
self.runTest(
|
||||
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||||
{"type": u"StartTag", "name": u"option", "data": []},
|
||||
{"type": u"Characters", "data": u"bar"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"EndTag", "name": u"select", "data": []}],
|
||||
FieldStorage({"foo": "bar"}),
|
||||
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||||
{"type": u"StartTag", "name": u"option", "data": [(u"selected", u"")]},
|
||||
{"type": u"Characters", "data": u"bar"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"EndTag", "name": u"select", "data": []}])
|
||||
|
||||
def testSingleSelectWithoutValueShouldBeUnselected(self):
|
||||
self.runTest(
|
||||
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||||
{"type": u"StartTag", "name": u"option", "data": []},
|
||||
{"type": u"Characters", "data": u"bar"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"EndTag", "name": u"select", "data": []}],
|
||||
FieldStorage({"foo": "quux"}),
|
||||
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||||
{"type": u"StartTag", "name": u"option", "data": []},
|
||||
{"type": u"Characters", "data": u"bar"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"EndTag", "name": u"select", "data": []}])
|
||||
|
||||
def testSingleSelectTwoOptionsWithValue(self):
|
||||
self.runTest(
|
||||
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||||
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"bar")]},
|
||||
{"type": u"Characters", "data": u"quux"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"quux")]},
|
||||
{"type": u"Characters", "data": u"quux"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"EndTag", "name": u"select", "data": []}],
|
||||
FieldStorage({"foo": "bar"}),
|
||||
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||||
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"bar"), (u"selected", u"")]},
|
||||
{"type": u"Characters", "data": u"quux"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"quux")]},
|
||||
{"type": u"Characters", "data": u"quux"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"EndTag", "name": u"select", "data": []}])
|
||||
|
||||
def testSingleSelectTwoOptionsWithValueShouldBeUnselected(self):
|
||||
self.runTest(
|
||||
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||||
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"bar")]},
|
||||
{"type": u"Characters", "data": u"quux"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"baz")]},
|
||||
{"type": u"Characters", "data": u"quux"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"EndTag", "name": u"select", "data": []}],
|
||||
FieldStorage({"foo": "quux"}),
|
||||
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||||
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"bar")]},
|
||||
{"type": u"Characters", "data": u"quux"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"baz")]},
|
||||
{"type": u"Characters", "data": u"quux"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"EndTag", "name": u"select", "data": []}])
|
||||
|
||||
def testSingleSelectTwoOptionsWithoutValue(self):
|
||||
self.runTest(
|
||||
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||||
{"type": u"StartTag", "name": u"option", "data": []},
|
||||
{"type": u"Characters", "data": u"bar"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"StartTag", "name": u"option", "data": []},
|
||||
{"type": u"Characters", "data": u"quux"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"EndTag", "name": u"select", "data": []}],
|
||||
FieldStorage({"foo": "bar"}),
|
||||
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||||
{"type": u"StartTag", "name": u"option", "data": [(u"selected", u"")]},
|
||||
{"type": u"Characters", "data": u"bar"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"StartTag", "name": u"option", "data": []},
|
||||
{"type": u"Characters", "data": u"quux"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"EndTag", "name": u"select", "data": []}])
|
||||
|
||||
def testSingleSelectTwoOptionsWithoutValueShouldBeUnselected(self):
|
||||
self.runTest(
|
||||
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||||
{"type": u"StartTag", "name": u"option", "data": []},
|
||||
{"type": u"Characters", "data": u"bar"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"StartTag", "name": u"option", "data": []},
|
||||
{"type": u"Characters", "data": u"baz"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"EndTag", "name": u"select", "data": []}],
|
||||
FieldStorage({"foo": "quux"}),
|
||||
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||||
{"type": u"StartTag", "name": u"option", "data": []},
|
||||
{"type": u"Characters", "data": u"bar"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"StartTag", "name": u"option", "data": []},
|
||||
{"type": u"Characters", "data": u"baz"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"EndTag", "name": u"select", "data": []}])
|
||||
|
||||
def testSingleSelectMultiple(self):
|
||||
self.runTest(
|
||||
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo"), (u"multiple", u"")]},
|
||||
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"bar")]},
|
||||
{"type": u"Characters", "data": u"quux"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"quux")]},
|
||||
{"type": u"Characters", "data": u"quux"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"EndTag", "name": u"select", "data": []}],
|
||||
FieldStorage({"foo": ["bar", "quux"]}),
|
||||
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo"), (u"multiple", u"")]},
|
||||
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"bar"), (u"selected", u"")]},
|
||||
{"type": u"Characters", "data": u"quux"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"quux"), (u"selected", u"")]},
|
||||
{"type": u"Characters", "data": u"quux"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"EndTag", "name": u"select", "data": []}])
|
||||
|
||||
def testTwoSelect(self):
|
||||
self.runTest(
|
||||
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||||
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"bar")]},
|
||||
{"type": u"Characters", "data": u"quux"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"quux")]},
|
||||
{"type": u"Characters", "data": u"quux"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"EndTag", "name": u"select", "data": []},
|
||||
{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||||
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"bar")]},
|
||||
{"type": u"Characters", "data": u"quux"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"quux")]},
|
||||
{"type": u"Characters", "data": u"quux"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"EndTag", "name": u"select", "data": []}],
|
||||
FieldStorage({"foo": ["bar", "quux"]}),
|
||||
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||||
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"bar"), (u"selected", u"")]},
|
||||
{"type": u"Characters", "data": u"quux"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"quux")]},
|
||||
{"type": u"Characters", "data": u"quux"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"EndTag", "name": u"select", "data": []},
|
||||
{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||||
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"bar")]},
|
||||
{"type": u"Characters", "data": u"quux"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"quux"), (u"selected", u"")]},
|
||||
{"type": u"Characters", "data": u"quux"},
|
||||
{"type": u"EndTag", "name": u"option", "data": []},
|
||||
{"type": u"EndTag", "name": u"select", "data": []}])
|
||||
|
||||
def buildTestSuite():
|
||||
return unittest.defaultTestLoader.loadTestsFromName(__name__)
|
||||
|
||||
def main():
|
||||
buildTestSuite()
|
||||
unittest.main()
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user