123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- """
- TEST: test_addons_modules.py
- AUTHOR(S): Vaclav Petras <wenzeslaus gmail com>
- PURPOSE: Test for g.extension individual modules/extensions handling
- COPYRIGHT: (C) 2015 Vaclav Petras, and by the GRASS Development Team
- This program is free software under the GNU General Public
- License (>=v2). Read the file COPYING that comes with GRASS
- for details.
- """
- from grass.gunittest.case import TestCase
- from grass.gunittest.main import test
- from grass.gunittest.gmodules import SimpleModule
- from grass.gunittest.utils import silent_rmtree
- import os
- MODULES_OUTPUT = """\
- d.frame
- d.mon2
- g.copyall
- g.isis3mt
- g.proj.all
- r.gdd
- r.geomorphon
- r.le.patch
- r.le.pixel
- r.traveltime
- r.univar2
- v.civil
- v.class.ml
- v.class.mlpy
- v.colors2
- v.delaunay3d
- v.ellipse
- v.in.proj
- v.in.redwg
- v.neighborhoodmatrix
- v.transects
- wx.metadata
- """.replace('\n', os.linesep)
- class TestModulesMetadata(TestCase):
- url = 'file://' + os.path.abspath('data')
- def test_listing(self):
- """List individual extensions/modules/addons"""
- module = SimpleModule('g.extension', flags='l', url=self.url)
- self.assertModule(module)
- stdout = module.outputs.stdout
- self.assertMultiLineEqual(stdout, MODULES_OUTPUT)
- class TestModulesFromDifferentSources(TestCase):
- url = 'file://' + os.path.abspath('data/sample_modules')
- path = os.path.join('data', 'sample_modules')
- install_prefix = 'gextension_test_install_path'
- # TODO: this is wrong for MS Win
- files = [
- os.path.join(install_prefix, 'scripts', 'r.plus.example'),
- os.path.join(install_prefix, 'docs', 'html', 'r.plus.example.html'),
- ]
- # to create archives from the source, the following was used:
- # zip r.plus.example.zip r.plus.example/*
- # tar czvf r.plus.example.tar.gz r.plus.example
- # cd r.plus.example/
- # tar czvf ../r.plus.example_sep.tar.gz *
- def setUp(self):
- """Make sure we are not dealing with some old files"""
- if os.path.exists(self.install_prefix):
- files = os.listdir(self.install_prefix)
- if files:
- RuntimeError("Install prefix path '{}' contains files {}"
- .format(self.install_prefix, files))
- def tearDown(self):
- """Remove created files"""
- silent_rmtree(self.install_prefix)
- def test_directory_install(self):
- """Test installing extension from directory"""
- self.assertModule('g.extension', extension='r.plus.example',
- url=os.path.join(self.path, 'r.plus.example'),
- prefix=self.install_prefix)
- # TODO: this is wrong for MS Win
- for file in self.files:
- self.assertFileExists(file)
- def test_targz_install(self):
- """Test installing extension from local .tar.gz"""
- self.assertModule('g.extension', extension='r.plus.example',
- url=os.path.join(self.path,
- 'r.plus.example.tar.gz'),
- prefix=self.install_prefix)
- for file in self.files:
- self.assertFileExists(file)
- def test_remote_targz_without_dir_install(self):
- """Test installing extension from (remote) .tar.gz without main dir"""
- self.assertModule('g.extension', extension='r.plus.example',
- url=self.url + '/' + 'r.plus.example_sep.tar.gz',
- prefix=self.install_prefix, verbose=True)
- for file in self.files:
- self.assertFileExists(file)
- def test_remote_zip_install(self):
- """Test installing extension from .zip specified by URL (local)"""
- self.assertModule('g.extension', extension='r.plus.example',
- url=self.url + '/' + 'r.plus.example.zip',
- prefix=self.install_prefix)
- for file in self.files:
- self.assertFileExists(os.path.join(file))
- if __name__ == '__main__':
- test()
|