1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

from try_parser import TryParser 

import unittest 

from valid_builders import DESKTOP_BUILDERS, MOBILE_BUILDERS, TEST_BUILDERS, TALOS_BUILDERS 

 

# Test cases: 

 

#  DEFAULT SET 

# nothing in comments should give all available platforms opt desktop builders, all mobile, no test or talos 

# only try: in comments same as above 

MESSAGE_DEFAULT1 = '' 

MESSAGE_DEFAULT2 = "junk" 

RESULT_DEFAULT = ['Linux tryserver build', 'Linux x86-64 tryserver build', 'OS X 10.5.2 tryserver build', 'OS X 10.6.2 tryserver build', 'WINNT 5.2 tryserver build', 'Android R7 tryserver build', 'Maemo 4 tryserver build', 'Maemo 5 GTK tryserver build', 'Maemo 5 QT tryserver build'] 

 

# SPECIFYING opt/debug 

MESSAGE_BUILD_D = ['--build', 'd', '--p', 'linux'] 

MESSAGE_BUILD_O = ['--build', 'o', '--p', 'linux'] 

MESSAGE_BUILD_B = ['--build', 'b', '--p', 'linux'] 

# should result in those desktop, all mobile, no tests/talos 

RESULT_D = ['Linux tryserver leak test build', 'Android R7 tryserver build', 'Maemo 4 tryserver build', 'Maemo 5 GTK tryserver build', 'Maemo 5 QT tryserver build'] 

RESULT_O = ['Linux tryserver build', 'Android R7 tryserver build', 'Maemo 4 tryserver build', 'Maemo 5 GTK tryserver build', 'Maemo 5 QT tryserver build'] 

RESULT_B = ['Linux tryserver build', 'Linux tryserver leak test build', 'Android R7 tryserver build', 'Maemo 4 tryserver build', 'Maemo 5 GTK tryserver build', 'Maemo 5 QT tryserver build'] 

 

# SPECIFIC PLATFORMS 

MESSAGE_MAC_ONLY = ['--build', 'o', '--p', 'macosx,macosx64', '--m', 'none'] 

RESULT_MAC_ONLY = ['OS X 10.5.2 tryserver build', 'OS X 10.6.2 tryserver build'] 

 

# MOBILE ONLY 

#--p none -- this also tests what happens if you don't specify --build 

MESSAGE_MOBILE_ONLY = ['--p', 'none'] 

RESULT_MOBILE_ONLY = ['Android R7 tryserver build', 'Maemo 4 tryserver build', 'Maemo 5 GTK tryserver build', 'Maemo 5 QT tryserver build'] 

 

# TEST SUITES 

# test for 'all' and test for selective just opt 

MESSAGE_ALL_TESTS = ['--u', 'all'] 

MESSAGE_SELECT_TESTS = ['--p', 'linux', '--u', 'reftest,crashtest,mochitest-other'] 

RESULT_ALL_TESTS = ['OS X 10.5.2 tryserver build', 'OS X 10.6.2 tryserver build', 'WINNT 5.2 tryserver build', 'Linux x86-64 tryserver build', 'Linux tryserver build', 'Android R7 tryserver build', 'Maemo 4 tryserver build', 'Maemo 5 GTK tryserver build', 'Maemo 5 QT tryserver build', 'Rev3 WINNT 6.1 x64 tryserver opt test mochitests-1/5', 'Rev3 WINNT 6.1 x64 tryserver opt test mochitests-2/5', 'Rev3 WINNT 6.1 x64 tryserver opt test mochitests-3/5', 'Rev3 WINNT 6.1 x64 tryserver opt test mochitests-4/5', 'Rev3 WINNT 6.1 x64 tryserver opt test mochitests-5/5', 'Rev3 WINNT 6.1 x64 tryserver opt test mochitest-other', 'Rev3 WINNT 6.1 x64 tryserver opt test reftest', 'Rev3 WINNT 6.1 x64 tryserver opt test crashtest', 'Rev3 WINNT 6.1 x64 tryserver opt test xpcshell', 'Rev3 WINNT 6.1 x64 tryserver opt test jsreftest', 'Rev3 MacOSX Leopard 10.5.8 tryserver opt test mochitests-1/5', 'Rev3 MacOSX Leopard 10.5.8 tryserver opt test mochitests-2/5', 'Rev3 MacOSX Leopard 10.5.8 tryserver opt test mochitests-3/5', 'Rev3 MacOSX Leopard 10.5.8 tryserver opt test mochitests-4/5', 'Rev3 MacOSX Leopard 10.5.8 tryserver opt test mochitests-5/5', 'Rev3 MacOSX Leopard 10.5.8 tryserver opt test mochitest-other', 'Rev3 MacOSX Leopard 10.5.8 tryserver opt test reftest', 'Rev3 MacOSX Leopard 10.5.8 tryserver opt test crashtest', 'Rev3 MacOSX Leopard 10.5.8 tryserver opt test xpcshell', 'Rev3 MacOSX Leopard 10.5.8 tryserver opt test jsreftest', 'Rev3 MacOSX Snow Leopard 10.6.2 tryserver opt test mochitests-1/5', 'Rev3 MacOSX Snow Leopard 10.6.2 tryserver opt test mochitests-2/5', 'Rev3 MacOSX Snow Leopard 10.6.2 tryserver opt test mochitests-3/5', 'Rev3 MacOSX Snow Leopard 10.6.2 tryserver opt test mochitests-4/5', 'Rev3 MacOSX Snow Leopard 10.6.2 tryserver opt test mochitests-5/5', 'Rev3 MacOSX Snow Leopard 10.6.2 tryserver opt test mochitest-other', 'Rev3 MacOSX Snow Leopard 10.6.2 tryserver opt test reftest', 'Rev3 MacOSX Snow Leopard 10.6.2 tryserver opt test crashtest', 'Rev3 MacOSX Snow Leopard 10.6.2 tryserver opt test xpcshell', 'Rev3 MacOSX Snow Leopard 10.6.2 tryserver opt test jsreftest', 'Rev3 WINNT 6.1 tryserver opt test mochitests-1/5', 'Rev3 WINNT 6.1 tryserver opt test mochitests-2/5', 'Rev3 WINNT 6.1 tryserver opt test mochitests-3/5', 'Rev3 WINNT 6.1 tryserver opt test mochitests-4/5', 'Rev3 WINNT 6.1 tryserver opt test mochitests-5/5', 'Rev3 WINNT 6.1 tryserver opt test mochitest-other', 'Rev3 WINNT 6.1 tryserver opt test reftest', 'Rev3 WINNT 6.1 tryserver opt test reftest-d2d', 'Rev3 WINNT 6.1 tryserver opt test crashtest', 'Rev3 WINNT 6.1 tryserver opt test xpcshell', 'Rev3 WINNT 6.1 tryserver opt test jsreftest', 'Rev3 Fedora 12x64 tryserver opt test mochitests-1/5', 'Rev3 Fedora 12x64 tryserver opt test mochitests-2/5', 'Rev3 Fedora 12x64 tryserver opt test mochitests-3/5', 'Rev3 Fedora 12x64 tryserver opt test mochitests-4/5', 'Rev3 Fedora 12x64 tryserver opt test mochitests-5/5', 'Rev3 Fedora 12x64 tryserver opt test mochitest-other', 'Rev3 Fedora 12x64 tryserver opt test reftest', 'Rev3 Fedora 12x64 tryserver opt test crashtest', 'Rev3 Fedora 12x64 tryserver opt test xpcshell', 'Rev3 Fedora 12x64 tryserver opt test jsreftest', 'Rev3 Fedora 12 tryserver opt test mochitests-1/5', 'Rev3 Fedora 12 tryserver opt test mochitests-2/5', 'Rev3 Fedora 12 tryserver opt test mochitests-3/5', 'Rev3 Fedora 12 tryserver opt test mochitests-4/5', 'Rev3 Fedora 12 tryserver opt test mochitests-5/5', 'Rev3 Fedora 12 tryserver opt test mochitest-other', 'Rev3 Fedora 12 tryserver opt test reftest', 'Rev3 Fedora 12 tryserver opt test crashtest', 'Rev3 Fedora 12 tryserver opt test xpcshell', 'Rev3 Fedora 12 tryserver opt test jsreftest'] 

RESULT_SELECT_TESTS = ['Linux tryserver build', 'Android R7 tryserver build', 'Maemo 4 tryserver build', 'Maemo 5 GTK tryserver build', 'Maemo 5 QT tryserver build', 'Rev3 Fedora 12 tryserver opt test reftest', 'Rev3 Fedora 12 tryserver opt test crashtest', 'Rev3 Fedora 12 tryserver opt test mochitest-other'] 

 

# TALOS SUITES 

# test for 'all' and test for selection 

MESSAGE_ALL_TALOS = ['--t', 'all'] 

MESSAGE_SELECT_TALOS = ['--p', 'linux', '--t', 'scroll,dromaeo,tp4'] 

RESULT_ALL_TALOS = ['OS X 10.5.2 tryserver build', 'OS X 10.6.2 tryserver build', 'WINNT 5.2 tryserver build', 'Linux x86-64 tryserver build', 'Linux tryserver build',  'Android R7 tryserver build', 'Maemo 4 tryserver build', 'Maemo 5 GTK tryserver build', 'Maemo 5 QT tryserver build','Rev3 WINNT 6.1 x64 tryserver talos nochrome', 'Rev3 WINNT 6.1 x64 tryserver talos dromaeo', 'Rev3 WINNT 6.1 x64 tryserver talos a11y', 'Rev3 WINNT 6.1 x64 tryserver talos svg', 'Rev3 WINNT 6.1 x64 tryserver talos chrome', 'Rev3 WINNT 6.1 x64 tryserver talos tp4', 'Rev3 WINNT 6.1 x64 tryserver talos dirty', 'Rev3 WINNT 6.1 x64 tryserver talos scroll', 'Rev3 MacOSX Leopard 10.5.8 tryserver talos nochrome', 'Rev3 MacOSX Leopard 10.5.8 tryserver talos cold', 'Rev3 MacOSX Leopard 10.5.8 tryserver talos dromaeo', 'Rev3 MacOSX Leopard 10.5.8 tryserver talos svg', 'Rev3 MacOSX Leopard 10.5.8 tryserver talos chrome', 'Rev3 MacOSX Leopard 10.5.8 tryserver talos tp4', 'Rev3 MacOSX Leopard 10.5.8 tryserver talos dirty', 'Rev3 MacOSX Leopard 10.5.8 tryserver talos scroll', 'Rev3 MacOSX Snow Leopard 10.6.2 tryserver talos nochrome', 'Rev3 MacOSX Snow Leopard 10.6.2 tryserver talos cold', 'Rev3 MacOSX Snow Leopard 10.6.2 tryserver talos dromaeo', 'Rev3 MacOSX Snow Leopard 10.6.2 tryserver talos svg', 'Rev3 MacOSX Snow Leopard 10.6.2 tryserver talos chrome', 'Rev3 MacOSX Snow Leopard 10.6.2 tryserver talos tp4', 'Rev3 MacOSX Snow Leopard 10.6.2 tryserver talos dirty', 'Rev3 MacOSX Snow Leopard 10.6.2 tryserver talos scroll', 'Rev3 WINNT 5.1 tryserver talos nochrome', 'Rev3 WINNT 5.1 tryserver talos dromaeo', 'Rev3 WINNT 5.1 tryserver talos a11y', 'Rev3 WINNT 5.1 tryserver talos svg', 'Rev3 WINNT 5.1 tryserver talos chrome', 'Rev3 WINNT 5.1 tryserver talos tp4', 'Rev3 WINNT 5.1 tryserver talos dirty', 'Rev3 WINNT 5.1 tryserver talos scroll', 'Rev3 WINNT 6.1 tryserver talos nochrome', 'Rev3 WINNT 6.1 tryserver talos dromaeo', 'Rev3 WINNT 6.1 tryserver talos a11y', 'Rev3 WINNT 6.1 tryserver talos svg', 'Rev3 WINNT 6.1 tryserver talos chrome', 'Rev3 WINNT 6.1 tryserver talos tp4', 'Rev3 WINNT 6.1 tryserver talos dirty', 'Rev3 WINNT 6.1 tryserver talos scroll', 'Rev3 Fedora 12x64 tryserver talos nochrome', 'Rev3 Fedora 12x64 tryserver talos cold', 'Rev3 Fedora 12x64 tryserver talos dromaeo', 'Rev3 Fedora 12x64 tryserver talos a11y', 'Rev3 Fedora 12x64 tryserver talos svg', 'Rev3 Fedora 12x64 tryserver talos chrome', 'Rev3 Fedora 12x64 tryserver talos tp4', 'Rev3 Fedora 12x64 tryserver talos dirty', 'Rev3 Fedora 12x64 tryserver talos scroll', 'Rev3 Fedora 12 tryserver talos nochrome', 'Rev3 Fedora 12 tryserver talos cold', 'Rev3 Fedora 12 tryserver talos dromaeo', 'Rev3 Fedora 12 tryserver talos a11y', 'Rev3 Fedora 12 tryserver talos svg', 'Rev3 Fedora 12 tryserver talos chrome', 'Rev3 Fedora 12 tryserver talos tp4', 'Rev3 Fedora 12 tryserver talos dirty', 'Rev3 Fedora 12 tryserver talos scroll'] 

RESULT_SELECT_TALOS = ['Linux tryserver build', 'Android R7 tryserver build', 'Maemo 4 tryserver build', 'Maemo 5 GTK tryserver build', 'Maemo 5 QT tryserver build', 'Rev3 Fedora 12 tryserver talos scroll', 'Rev3 Fedora 12 tryserver talos dromaeo', 'Rev3 Fedora 12 tryserver talos tp4'] 

 

# TESTS AND TALOS BOTH BUILD TYPES -- note we do not have debug win32 tests yet 

MESSAGE_TEST_AND_TALOS = ['--build', 'b', '--p', 'win32', '--u', 'reftest', '--t', 'nochrome,dirty'] 

RESULT_TEST_AND_TALOS = ['WINNT 5.2 tryserver build', 'WINNT 5.2 tryserver leak test build', 'Android R7 tryserver build', 'Maemo 4 tryserver build', 'Maemo 5 GTK tryserver build', 'Maemo 5 QT tryserver build', 'Rev3 WINNT 6.1 tryserver opt test reftest', 'Rev3 WINNT 5.1 tryserver talos nochrome', 'Rev3 WINNT 6.1 tryserver talos nochrome', 'Rev3 WINNT 5.1 tryserver talos dirty','Rev3 WINNT 6.1 tryserver talos dirty'] 

 

class TestTryParser(unittest.TestCase): 

 

    def setUp(self): 

        self.builderNames = DESKTOP_BUILDERS + MOBILE_BUILDERS + TEST_BUILDERS + TALOS_BUILDERS 

 

    def test_DefaultSet(self): 

        print "Testing the default set with blank input" 

        self.customBuilders = TryParser(MESSAGE_DEFAULT1, self.builderNames) 

        self.assertEqual(self.customBuilders, RESULT_DEFAULT) 

 

        print "Testing the default set with junk input" 

        self.customBuilders = TryParser(MESSAGE_DEFAULT2, self.builderNames) 

        self.assertEqual(self.customBuilders, RESULT_DEFAULT) 

 

    def test_BuildType(self): 

        print "Testing build type selection: Debug only" 

        self.customBuilders = TryParser(MESSAGE_BUILD_D, self.builderNames) 

        self.assertEqual(self.customBuilders, RESULT_D) 

        print "Testing build type selection: Opt only" 

        self.customBuilders = TryParser(MESSAGE_BUILD_B, self.builderNames) 

        self.assertEqual(self.customBuilders, RESULT_B) 

        print "Testing build type selection: Both" 

        self.customBuilders = TryParser(MESSAGE_BUILD_O, self.builderNames) 

        self.assertEqual(self.customBuilders, RESULT_O) 

 

    def test_SpecificPlatform(self): 

        print "Testing a specific platform: Mac Only" 

        self.customBuilders = TryParser(MESSAGE_MAC_ONLY, self.builderNames) 

        self.assertEqual(self.customBuilders, RESULT_MAC_ONLY) 

 

    def test_MobileOnly(self): 

        print "Testing Mobile Only" 

        self.customBuilders = TryParser(MESSAGE_MOBILE_ONLY, self.builderNames) 

        self.assertEqual(self.customBuilders, RESULT_MOBILE_ONLY) 

 

    def test_AllTests(self): 

        print "Testing all tests" 

        self.customBuilders = TryParser(MESSAGE_ALL_TESTS, self.builderNames) 

        for c in self.customBuilders: 

            if c in RESULT_ALL_TESTS: 

                print "Test builder in customBuilders" 

            else: 

                print "Missed a builder" 

 

    def test_SelectTests(self): 

        print "Testing select tests" 

        self.customBuilders = TryParser(MESSAGE_SELECT_TESTS, self.builderNames) 

        self.assertEqual(self.customBuilders, RESULT_SELECT_TESTS) 

 

    def test_AllTalos(self): 

        print "Testing all talos" 

        self.customBuilders = TryParser(MESSAGE_ALL_TALOS, self.builderNames) 

        for c in self.customBuilders: 

            if c in RESULT_ALL_TALOS: 

                print "Talos builder in customBuilders" 

            else: 

                print "Missed a builder" 

 

    def test_SelectTalos(self): 

        print "Testing select talos" 

        self.customBuilders = TryParser(MESSAGE_SELECT_TALOS, self.builderNames) 

        self.assertEqual(self.customBuilders, RESULT_SELECT_TALOS) 

 

    def test_TestsTalosBothBuilds(self): 

        print "Testing test, talos both build types" 

        self.customBuilders = TryParser(MESSAGE_TEST_AND_TALOS, self.builderNames) 

        self.assertEqual(self.customBuilders, RESULT_TEST_AND_TALOS) 

 

if __name__ == '__main__': 

    unittest.main()