Esempio n. 1
0
	def run(self):
		win, view = gs.win_view(None, self.window)
		if view is None:
			return

		mats = {}
		args = {}
		vfn = gs.view_fn(view)
		src = gs.view_src(view)
		pkg_dir = ''
		if view.file_name():
			pkg_dir = os.path.dirname(view.file_name())

		res, err = margo.declarations(vfn, src, pkg_dir)
		if err:
			gs.notice(DOMAIN, err)
			return

		decls = res.get('file_decls', [])
		decls.extend(res.get('pkg_decls', []))
		for d in decls:
			name = d['name']
			m = TEST_PAT.match(name)
			if m and d['kind'] == 'func' and d['repr'] == '':
				mats[m.group(1)] = True
				args[name] = name

		names = sorted(args.keys())
		ents = ['Run all tests and examples']
		for k in ['Test', 'Benchmark', 'Example']:
			if mats.get(k):
				s = 'Run %ss Only' % k
				ents.append(s)
				if k == 'Benchmark':
					args[s] = '-test.run=none -test.bench=%s.*' % k
				else:
					args[s] = '-test.run=%s.*' % k

		for k in names:
			ents.append(k)
			if k.startswith('Benchmark'):
				args[k] = '-test.run=none -test.bench=^%s$' % k
			else:
				args[k] = '-test.run=^%s$' % k

		def cb(i):
			if i >= 0:
				s = 'go test %s' % args.get(ents[i], '')
				win.run_command('gs_shell', {'run': s})

		win.show_quick_panel(ents, cb)
Esempio n. 2
0
    def run(self):
        win, view = gs.win_view(None, self.window)
        if view is None:
            return

        mats = {}
        args = {}
        vfn = gs.view_fn(view)
        src = gs.view_src(view)
        pkg_dir = ''
        if view.file_name():
            pkg_dir = os.path.dirname(view.file_name())

        res, err = margo.declarations(vfn, src, pkg_dir)
        if err:
            gs.notice(DOMAIN, err)
            return

        decls = res.get('file_decls', [])
        decls.extend(res.get('pkg_decls', []))
        for d in decls:
            name = d['name']
            prefix, _ = match_prefix_name(name)
            if prefix and d['kind'] == 'func' and d['repr'] == '':
                mats[True] = prefix
                args[name] = name

        names = sorted(args.keys())
        ents = ['Run all tests and examples']
        for k in ['Test', 'Benchmark', 'Example']:
            if mats.get(k):
                s = 'Run %ss Only' % k
                ents.append(s)
                if k == 'Benchmark':
                    args[s] = '-test.run=none -test.bench=%s.*' % k
                else:
                    args[s] = '-test.run=%s.*' % k

        for k in names:
            ents.append(k)
            if k.startswith('Benchmark'):
                args[k] = '-test.run=none -test.bench=^%s$' % k
            else:
                args[k] = '-test.run=^%s$' % k

        def cb(i):
            if i >= 0:
                s = 'go test %s' % args.get(ents[i], '')
                win.run_command('gs_shell', {'run': s})

        win.show_quick_panel(ents, cb)
Esempio n. 3
0
	def palette_declarations(self, view, direct=False):
		indent = '' if direct else '    '
		decls, err = margo.declarations(
			view.file_name(),
			view.substr(sublime.Region(0, view.size()))
		)
		if err:
			gs.notice('GsDeclarations', err)
		decls.sort(key=lambda v: v['line'])
		for i, v in enumerate(decls):
			if v['name'] == '_':
				continue
			loc = Loc(v['filename'], v['line']-1, v['column']-1)
			prefix = u'%s%s \u00B7   ' % (indent, gs.CLASS_PREFIXES.get(v['kind'], ''))
			self.add_item(prefix+v['name'], self.jump_to, (view, loc))