Ejemplo n.º 1
0
    def test_snap_defaults(self, mock_call):
        fake_logger = fixtures.FakeLogger(level=logging.INFO)
        self.useFixture(fake_logger)
        self.make_snapcraft_yaml()

        snap.main()

        self.assertEqual(
            'Pulling part1 \n'
            'Building part1 \n'
            'Staging part1 \n'
            'Stripping part1 \n'
            'Snapping snap-test_1.0_amd64.snap\n'
            'Snapped snap-test_1.0_amd64.snap\n',
            fake_logger.output)

        self.assertTrue(os.path.exists(common.get_stagedir()),
                        'Expected a stage directory')
        self.assertTrue(self.state_file,
                        'Expected a state file for the part1 part')

        with open(self.state_file) as sf:
            state = sf.readlines()
        self.assertEqual(len(state), 1, 'Expected only one line in the state '
                         'file for the part1 part')
        self.assertEqual(state[0], 'strip', "Expected the state file for "
                         "part1 to be 'strip'")

        mock_call.assert_called_once_with([
            'mksquashfs', common.get_snapdir(), 'snap-test_1.0_amd64.snap',
            '-noappend', '-comp', 'xz'])
Ejemplo n.º 2
0
def main(argv=None):
    """Upload snap package to the Ubuntu Store."""
    argv = argv if argv else []
    docopt(__doc__, argv=argv)

    # make sure the full lifecycle is executed
    yaml_config = snapcraft.yaml.load_config()
    snap_filename = format_snap_name(yaml_config.data)

    if not os.path.exists(snap_filename):
        logger.info(
            'Snap {} not found. Running snap step to create it.'.format(
                snap_filename))
        snap.main(argv=argv)

    config = load_config()
    upload(snap_filename, yaml_config.data['name'], config=config)
Ejemplo n.º 3
0
    def test_snap_from_dir_with_no_arch(self, mock_call):
        fake_logger = fixtures.FakeLogger(level=logging.INFO)
        self.useFixture(fake_logger)

        meta_dir = os.path.join('mysnap', 'meta')
        os.makedirs(meta_dir)
        with open(os.path.join(meta_dir, 'snap.yaml'), 'w') as f:
            f.write("""name: my_snap
version: 99
""")

        snap.main(['mysnap'])

        self.assertEqual(
            'Snapping my_snap_99_all.snap\n'
            'Snapped my_snap_99_all.snap\n',
            fake_logger.output)

        mock_call.assert_called_once_with([
            'mksquashfs', os.path.abspath('mysnap'), 'my_snap_99_all.snap',
            '-noappend', '-comp', 'xz', '-no-xattrs', '-all-root'])
Ejemplo n.º 4
0
    def test_snap_from_dir(self, mock_call):
        fake_logger = fixtures.FakeLogger(level=logging.INFO)
        self.useFixture(fake_logger)

        meta_dir = os.path.join('mysnap', 'meta')
        os.makedirs(meta_dir)
        with open(os.path.join(meta_dir, 'package.yaml'), 'w') as f:
            f.write("""name: my_snap
version: 99
architectures: [amd64, armhf]
""")

        snap.main(['mysnap'])

        self.assertEqual(
            'Snapping my_snap_99_multi.snap\n'
            'Snapped my_snap_99_multi.snap\n',
            fake_logger.output)

        mock_call.assert_called_once_with([
            'mksquashfs', os.path.abspath('mysnap'), 'my_snap_99_multi.snap',
            '-noappend', '-comp', 'xz'])
Ejemplo n.º 5
0
def main(argv=None):
    """Upload snap package to the Ubuntu Store."""
    argv = argv if argv else []
    docopt(__doc__, argv=argv)

    # make sure the full lifecycle is executed
    yaml_config = snapcraft.yaml.load_config()
    snap_name = _format_snap_name(yaml_config.data)

    if not os.path.exists(snap_name):
        logger.info(
            'Snap {} not found. Running snap step to create it.'.format(
                snap_name))
        snap.main(argv=argv)

    logger.info('Uploading {}'.format(snap_name))
    config = load_config()
    success = upload(snap_name, config=config)
    if success:
        logger.info('{} upload complete'.format(snap_name))
    else:
        logger.info('{} upload failed'.format(snap_name))
Ejemplo n.º 6
0
    def test_snap_defaults_with_parts_in_strip(self, mock_call):
        fake_logger = fixtures.FakeLogger(level=logging.INFO)
        self.useFixture(fake_logger)
        self.make_snapcraft_yaml()

        os.makedirs(os.path.dirname(self.state_file))
        with open(self.state_file, 'w') as f:
            f.write('strip')

        snap.main()

        self.assertEqual(
            'Skipping pull part1  (already ran)\n'
            'Skipping build part1  (already ran)\n'
            'Skipping stage part1  (already ran)\n'
            'Skipping strip part1  (already ran)\n'
            'Snapping snap-test_1.0_amd64.snap\n'
            'Snapped snap-test_1.0_amd64.snap\n',
            fake_logger.output)

        mock_call.assert_called_once_with([
            'mksquashfs', common.get_snapdir(), 'snap-test_1.0_amd64.snap',
            '-noappend', '-comp', 'xz'])
Ejemplo n.º 7
0
    def test_snap_defaults_with_parts_in_strip(self, mock_call):
        fake_logger = fixtures.FakeLogger(level=logging.INFO)
        self.useFixture(fake_logger)
        self.make_snapcraft_yaml()

        # Pretend this part has already been stripped
        os.makedirs(self.state_dir)
        open(os.path.join(self.state_dir, 'strip'), 'w').close()

        snap.main()

        self.assertEqual(
            'Skipping pull part1  (already ran)\n'
            'Skipping build part1  (already ran)\n'
            'Skipping stage part1  (already ran)\n'
            'Skipping strip part1  (already ran)\n'
            'Snapping snap-test_1.0_amd64.snap\n'
            'Snapped snap-test_1.0_amd64.snap\n',
            fake_logger.output)

        mock_call.assert_called_once_with([
            'mksquashfs', common.get_snapdir(), 'snap-test_1.0_amd64.snap',
            '-noappend', '-comp', 'xz', '-no-xattrs', '-all-root'])
Ejemplo n.º 8
0
    def test_snap_type_os_does_not_use_all_root(self, mock_call):
        fake_logger = fixtures.FakeLogger(level=logging.INFO)
        self.useFixture(fake_logger)
        self.make_snapcraft_yaml(snap_type='os')

        snap.main()

        self.assertEqual(
            'Pulling part1 \n'
            'Building part1 \n'
            'Staging part1 \n'
            'Stripping part1 \n'
            'Snapping snap-test_1.0_amd64.snap\n'
            'Snapped snap-test_1.0_amd64.snap\n',
            fake_logger.output)

        self.assertTrue(os.path.exists(common.get_stagedir()),
                        'Expected a stage directory')

        self.verify_state('part1', self.state_dir, 'strip')

        mock_call.assert_called_once_with([
            'mksquashfs', common.get_snapdir(), 'snap-test_1.0_amd64.snap',
            '-noappend', '-comp', 'xz', '-no-xattrs'])
Ejemplo n.º 9
0
    def test_snap_with_output(self, mock_call):
        fake_logger = fixtures.FakeLogger(level=logging.INFO)
        self.useFixture(fake_logger)
        self.make_snapcraft_yaml()

        snap.main(['--output', 'mysnap.snap'])

        self.assertEqual(
            'Pulling part1 \n'
            'Building part1 \n'
            'Staging part1 \n'
            'Stripping part1 \n'
            'Snapping mysnap.snap\n'
            'Snapped mysnap.snap\n',
            fake_logger.output)

        self.assertTrue(os.path.exists(common.get_stagedir()),
                        'Expected a stage directory')

        self.verify_state('part1', self.state_dir, 'strip')

        mock_call.assert_called_once_with([
            'mksquashfs', common.get_snapdir(), 'mysnap.snap',
            '-noappend', '-comp', 'xz', '-no-xattrs', '-all-root'])