Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

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

#! /usr/bin/env python3 

# -*- coding: utf-8 -*- 

 

#       Copyright 2012, Marten de Vries 

# 

#       This file is part of OpenTeacher. 

# 

#       OpenTeacher is free software: you can redistribute it and/or modify 

#       it under the terms of the GNU General Public License as published by 

#       the Free Software Foundation, either version 3 of the License, or 

#       (at your option) any later version. 

# 

#       OpenTeacher 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 General Public License for more details. 

# 

#       You should have received a copy of the GNU General Public License 

#       along with OpenTeacher.  If not, see <http://www.gnu.org/licenses/>. 

 

import unittest 

import os 

import glob 

 

class TestCase(unittest.TestCase): 

        def testFilesWithTranslations(self): 

                """Test if all files specified in filesWithTranslations exist. 

 

                """ 

                for mod in self._mm.mods: 

                        if not hasattr(mod, "filesWithTranslations"): 

                                continue 

                        directory = os.path.dirname(mod.__class__.__file__) 

                        files = mod.filesWithTranslations 

                        for file in files: 

                                path = os.path.join(directory, file) 

                                self.assertTrue(os.path.exists(path), msg="Mod %s's filesWithTranslations contains %s, but that doesn't exist." % (mod.__class__.__file__, file)) 

 

 

        def testPotFiles(self): 

                """Test if every module with a translations dir has a .pot file 

                   in place, which is required. 

 

                """ 

                potFiles = set() 

                for mod in self._mm.mods: 

                        base = os.path.dirname(mod.__class__.__file__) 

                        dir = os.path.join(base, "translations") 

                        if not os.path.exists(dir): 

                                continue 

                        matches = glob.glob(os.path.join(dir, "*.pot")) 

 

                        self.assertEqual(len(matches), 1, msg="No pot file at %s" % base) 

                        self.assertNotIn(matches[0], potFiles) 

                        potFiles.add(matches[0]) 

 

        def testLanguageChanged(self): 

                """Tests if: 

                   1. translator mods have a working sendLanguageChanged 

                      method. 

                   2. modules subscribing to events offered by the translator 

                      modules are doing that correctly (i.e. don't crash when 

                      the actual events are send.) 

 

                """ 

                if self.mode not in ("all", "translation"): # pragma: no cover 

                        self.skipTest("Too heavy for this test mode.") 

                for mod in self._mm.mods("active", type="translator"): 

                        mod.sendLanguageChanged() 

 

class TestModule: 

        def __init__(self, moduleManager, *args, **kwargs): 

                super().__init__(*args, **kwargs) 

                self._mm = moduleManager 

 

                self.type = "test" 

                self.uses = ( 

                        self._mm.mods(type="translator"), 

                ) 

 

        def enable(self): 

                self.TestCase = TestCase 

                self.TestCase._mm = self._mm 

                self.active = True 

 

        def disable(self): 

                self.active = False 

                del self.TestCase 

 

def init(moduleManager): 

        return TestModule(moduleManager)