
We already include an .editorconfig that is supported by many editors, including emacs, so no need to repeat an emacs-specific modeline in every source file. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3431>
120 lines
3.7 KiB
JavaScript
120 lines
3.7 KiB
JavaScript
// Test cases for MessageTray URLification
|
||
|
||
import 'resource:///org/gnome/shell/ui/environment.js';
|
||
import {findUrls} from 'resource:///org/gnome/shell/misc/util.js';
|
||
|
||
describe('findUrls()', () => {
|
||
const urlParameters = [
|
||
{
|
||
input: 'This is a test',
|
||
output: [],
|
||
},
|
||
{
|
||
input: 'This is http://www.gnome.org a test',
|
||
output: [{url: 'http://www.gnome.org', pos: 8}],
|
||
},
|
||
{
|
||
input: 'This is http://www.gnome.org',
|
||
output: [{url: 'http://www.gnome.org', pos: 8}],
|
||
},
|
||
{
|
||
input: 'http://www.gnome.org a test',
|
||
output: [{url: 'http://www.gnome.org', pos: 0}],
|
||
},
|
||
{
|
||
input: 'http://www.gnome.org',
|
||
output: [{url: 'http://www.gnome.org', pos: 0}],
|
||
},
|
||
{
|
||
input: 'Go to http://www.gnome.org.',
|
||
output: [{url: 'http://www.gnome.org', pos: 6}],
|
||
},
|
||
{
|
||
input: 'Go to http://www.gnome.org/.',
|
||
output: [{url: 'http://www.gnome.org/', pos: 6}],
|
||
},
|
||
{
|
||
input: '(Go to http://www.gnome.org!)',
|
||
output: [{url: 'http://www.gnome.org', pos: 7}],
|
||
},
|
||
{
|
||
input: 'Use GNOME (http://www.gnome.org).',
|
||
output: [{url: 'http://www.gnome.org', pos: 11}],
|
||
},
|
||
{
|
||
input: 'This is a http://www.gnome.org/path test.',
|
||
output: [{url: 'http://www.gnome.org/path', pos: 10}],
|
||
},
|
||
{
|
||
input: 'This is a www.gnome.org scheme-less test.',
|
||
output: [{url: 'www.gnome.org', pos: 10}],
|
||
},
|
||
{
|
||
input: 'This is a www.gnome.org/scheme-less test.',
|
||
output: [{url: 'www.gnome.org/scheme-less', pos: 10}],
|
||
},
|
||
{
|
||
input: 'This is a http://www.gnome.org:99/port test.',
|
||
output: [{url: 'http://www.gnome.org:99/port', pos: 10}],
|
||
},
|
||
{
|
||
input: 'This is an ftp://www.gnome.org/ test.',
|
||
output: [{url: 'ftp://www.gnome.org/', pos: 11}],
|
||
},
|
||
{
|
||
input: 'https://www.gnome.org/(some_url,_with_very_unusual_characters)',
|
||
output: [{url: 'https://www.gnome.org/(some_url,_with_very_unusual_characters)', pos: 0}],
|
||
},
|
||
{
|
||
input: 'https://www.gnome.org/(some_url_with_unbalanced_parenthesis',
|
||
output: [{url: 'https://www.gnome.org/', pos: 0}],
|
||
},
|
||
{
|
||
input: 'https://www.gnome.org/ plus trailing junk',
|
||
output: [{url: 'https://www.gnome.org/', pos: 0}],
|
||
},
|
||
|
||
{
|
||
input: 'Visit http://www.gnome.org/ and http://developer.gnome.org',
|
||
output: [{url: 'http://www.gnome.org/', pos: 6},
|
||
{url: 'http://developer.gnome.org', pos: 32}],
|
||
},
|
||
|
||
{
|
||
input: 'This is not.a.domain test.',
|
||
output: [],
|
||
},
|
||
{
|
||
input: 'This is not:a.url test.',
|
||
output: [],
|
||
},
|
||
{
|
||
input: 'This is not:/a.url/ test.',
|
||
output: [],
|
||
},
|
||
{
|
||
input: 'This is not:/a.url/ test.',
|
||
output: [],
|
||
},
|
||
{
|
||
input: 'This is not@a.url/ test.',
|
||
output: [],
|
||
},
|
||
{
|
||
input: 'This is surely@not.a/url test.',
|
||
output: [],
|
||
},
|
||
];
|
||
|
||
for (const param of urlParameters) {
|
||
const {input, output} = param;
|
||
const findsOrDoesNotFind = output.length > 0
|
||
? 'finds'
|
||
: 'does not find';
|
||
|
||
it(`${findsOrDoesNotFind} URLs in "${input}"`, () => {
|
||
expect(findUrls(input)).toEqual(output);
|
||
});
|
||
}
|
||
});
|