예제 #1
0
class TestDriverEggGenerator(IDKPackageNose):
    """
    Test the egg generation process
    """
    def setUp(self):
        IDKPackageNose.setUp(self)


        self._metadata = Metadata('seabird', 'sbe37smb', 'ooicore')
        self._generator = EggGenerator(self._metadata)

        # Ensure the base build dir doesnt exists
        build_dir = path.join(self._generator._tmp_dir(), self._generator._build_name())
        if exists(build_dir):
            rmtree(build_dir)
            self._generator._generate_build_dir()

        self._repo_dir = Config().get('working_repo')
        self._tmp_dir  = Config().get('tmp_dir')

    def tearDown(self):
        IDKPackageNose.tearDown(self)
        if exists(self._generator._build_dir()):
            rmtree(self._generator._build_dir())


    def test_path(self):
        """
        Test the object paths
        """
        known_name = "%s_%s_%s_%s" % (
            self._metadata.driver_make,
            self._metadata.driver_model,
            self._metadata.driver_name,
            self._metadata.version,
            )

        self.assertEqual(self._generator._tmp_dir(), self._tmp_dir)
        self.assertEqual(self._generator._repo_dir(), self._repo_dir)
        self.assertEqual(self._generator._setup_path(), path.join(self._tmp_dir,self._generator._build_name(),'setup.py'))
        self.assertEqual(self._generator._build_name(), known_name)
        self.assertEqual(self._generator._build_dir(), path.join(self._tmp_dir,self._generator._build_name()))

    def test_build_dir_create(self):
        """
        test to ensure that the build dir is created properly
        """
        build_dir_orig = self._generator._generate_build_dir()
        self.assertFalse(exists(build_dir_orig))
        makedirs(build_dir_orig)
        self.assertTrue(exists(build_dir_orig))

        build_dir = self._generator._generate_build_dir()

        rmtree(build_dir_orig, True)
        self.assertFalse(exists(build_dir_orig))

        self.assertEqual(build_dir, build_dir_orig)


    def test_version_verify(self):
        with self.assertRaises(ValidationFailure):
            self._generator._verify_version(0)

        with self.assertRaises(ValidationFailure):
            self._generator._verify_version("5.1")

        with self.assertRaises(ValidationFailure):
            self._generator._verify_version(-1)

        with self.assertRaises(ValidationFailure):
            self._generator._verify_version("-1.1.1")

        self._generator._verify_version("1.1.1")


    def test_egg_build(self):
        '''
        Build an egg with some python source files.  Verify the
        egg was created properly and contains all expected files.
        @return:
        '''
        files = [ 'mi/__init__.py',
                  'mi/idk/__init__.py',
                  'mi/idk/config.py',
                  'res/config/mi-logging.yml']

        egg_files = [
            'EGG-INFO/dependency_links.txt',
            'EGG-INFO/entry_points.txt',
            'EGG-INFO/PKG-INFO',
            'EGG-INFO/requires.txt',
            'EGG-INFO/SOURCES.txt',
            'EGG-INFO/top_level.txt',
            'EGG-INFO/zip-safe',
            'mi/main.py',
            'mi/mi-logging.yml',
        ]

        egg_file = self._generator._build_egg(files)
        self.assertTrue(exists(egg_file))

        # Verify that the files in the egg are what we expect.
        zipped = ZipFile(egg_file)

        # this files is actually moved to mi/mi-logging.yml and appears
        # in the egg_files list.
        files.remove('res/config/mi-logging.yml')

        log.debug("EGG FILES: %s", sorted(zipped.namelist()))
        log.debug("EXP FILES: %s", sorted(files + egg_files))

        self.assertListEqual(sorted(zipped.namelist()), sorted(files + egg_files))

    def test_sbe37_egg(self):
        egg_file = self._generator.save()
        self.assertTrue(exists(egg_file))
class TestDriverEggGenerator(IDKPackageNose):
    """
    Test the egg generation process
    """
    def setUp(self):
        IDKPackageNose.setUp(self)


        self._metadata = Metadata('seabird', 'sbe37smb', 'example')
        self._generator = EggGenerator(self._metadata)

        # Ensure the base build dir doesnt exists
        build_dir = path.join(self._generator._tmp_dir(), self._generator._build_name())
        if exists(build_dir):
            rmtree(build_dir)
            self._generator._generate_build_dir()

        self._repo_dir = Config().get('working_repo')
        self._tmp_dir  = Config().get('tmp_dir')

    def tearDown(self):
        IDKPackageNose.tearDown(self)
        if exists(self._generator._build_dir()):
            rmtree(self._generator._build_dir())


    def test_path(self):
        """
        Test the object paths
        """
        known_name = "%s_%s_%s_%s" % (
            self._metadata.driver_make,
            self._metadata.driver_model,
            self._metadata.driver_name,
            self._metadata.version,
            )

        self.assertEqual(self._generator._tmp_dir(), self._tmp_dir)
        self.assertEqual(self._generator._repo_dir(), self._repo_dir)
        self.assertEqual(self._generator._setup_path(), path.join(self._tmp_dir,self._generator._build_name(),'setup.py'))
        self.assertEqual(self._generator._build_name(), known_name)
        self.assertEqual(self._generator._build_dir(), path.join(self._tmp_dir,self._generator._build_name()))

    def test_build_dir_create(self):
        """
        test to ensure that the build dir is created properly
        """
        build_dir_orig = self._generator._generate_build_dir()
        self.assertFalse(exists(build_dir_orig))
        makedirs(build_dir_orig)
        self.assertTrue(exists(build_dir_orig))

        build_dir = self._generator._generate_build_dir()

        rmtree(build_dir_orig)
        self.assertFalse(exists(build_dir_orig))

        self.assertEqual(build_dir, "%s.001" % build_dir_orig)


    def test_version_verify(self):
        with self.assertRaises(ValidationFailure):
            self._generator._verify_version(0)

        with self.assertRaises(ValidationFailure):
            self._generator._verify_version("5.1")

        with self.assertRaises(ValidationFailure):
            self._generator._verify_version(-1)

        with self.assertRaises(ValidationFailure):
            self._generator._verify_version("-1.1.1")

        self._generator._verify_version("1.1.1")


    def test_egg_build(self):
        files = [ 'mi/instrument/seabird/sbe37smb/example/driver.py',
                  'mi/instrument/seabird/sbe37smb/example/test/test_driver.py',
                  'res/config/mi-logging.yml']

        egg_file = self._generator._build_egg(files)
        self.assertTrue(exists(egg_file))


    def test_sbe37_egg(self):
        egg_file = self._generator.save()
        self.assertTrue(exists(egg_file))