# Copyright 2015 Lars Wirzenius # # This program 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. # # This program 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 this program. If not, see . # # =*= License: GPL-3+ =*= import os import shutil import tempfile import unittest import icklib class TargetTests(unittest.TestCase): def setUp(self): self.tempdir = tempfile.mkdtemp() self.run_ssh = os.environ.get( 'ICK_UNIT_TEST_SSH_LOCALHOST_OK', False) def tearDown(self): shutil.rmtree(self.tempdir) def test_sets_name(self): t = icklib.Target('foo') self.assertEqual(t.name, 'foo') def test_syncs_to_target(self): if self.run_ssh: src = os.path.join(self.tempdir, 'src') os.mkdir(src) with open(os.path.join(src, 'source.py'), 'w') as f: f.write('this is source') t = icklib.Target('foo') t.set_address('localhost') t.sync_to_target(src, self.tempdir, 'dst') pathname = os.path.join(self.tempdir, 'dst', 'source.py') self.assertTrue(os.path.exists(pathname)) def test_syncs_from_target(self): if self.run_ssh: src = os.path.join(self.tempdir, 'src') os.mkdir(src) with open(os.path.join(src, 'source.py'), 'w') as f: f.write('this is source') dst = os.path.join(self.tempdir, 'dst') os.mkdir(dst) t = icklib.Target('foo') t.set_address('localhost') t.sync_from_target(src, dst) pathname = os.path.join(dst, 'source.py') self.assertTrue(os.path.exists(pathname)) def test_runs_command_on_target(self): if self.run_ssh: t = icklib.Target('foo') t.set_address('localhost') output = t.ssh_runcmd(['pwd'], remote_cwd=self.tempdir) self.assertEqual(output.rstrip('\n'), self.tempdir) def test_creates_and_removes_temporary_directory(self): if self.run_ssh: t = icklib.Target('foo') t.set_address('localhost') dirname = t.mkdtemp() self.assertTrue(os.path.isdir(dirname)) self.assertEqual(os.listdir(dirname), []) t.remove_all([dirname]) self.assertFalse(os.path.isdir(dirname)) class CreateTargetsFromIcTests(unittest.TestCase): def test_creates_specified_target(self): ick = { 'targets': { 'foo': { 'address': 'foo-address', 'pbuilder-ci-tgz': 'ci.tgz', } }, } targets = icklib.create_targets_from_ick(ick, []) self.assertEqual(len(targets), 1) self.assertEqual(targets[0].name, 'foo') self.assertEqual(targets[0].address, 'foo-address') self.assertEqual(targets[0].pbuilder_ci_tgz, 'ci.tgz')