1 | import { fixture } from './test-functions'
|
2 | import RParser from '../src/RParser'
|
3 | import { SoftwarePackage } from '@stencila/schema'
|
4 | import MockUrlFetcher from './MockUrlFetcher'
|
5 |
|
6 |
|
7 |
|
8 | jest.setTimeout(30 * 60 * 1000)
|
9 |
|
10 | const urlFetcher = new MockUrlFetcher()
|
11 |
|
12 |
|
13 |
|
14 |
|
15 | test('parse:empty', async () => {
|
16 | const parser = new RParser(urlFetcher, fixture('empty'))
|
17 | expect(await parser.parse()).toBeNull()
|
18 | })
|
19 |
|
20 |
|
21 |
|
22 |
|
23 | test('parse:non-r', async () => {
|
24 | const parser = new RParser(urlFetcher, fixture('py-source'))
|
25 | expect(await parser.parse()).toBeNull()
|
26 | })
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 | test('parse:r-source', async () => {
|
33 | const parser = new RParser(urlFetcher, fixture('r-source'))
|
34 | const environ = await parser.parse() as SoftwarePackage
|
35 | expect(environ.name).toEqual('rsource')
|
36 |
|
37 | const reqs = environ.softwareRequirements
|
38 | expect(reqs).not.toBeNull()
|
39 | expect(reqs.map(req => req.name)).toEqual(['MASS', 'digest', 'dplyr', 'ggplot2', 'lubridate'])
|
40 | })
|
41 |
|
42 |
|
43 |
|
44 |
|
45 |
|
46 | test('parse:r-requirements', async () => {
|
47 | const parser = new RParser(urlFetcher, fixture('r-requirements'))
|
48 | const environ = await parser.parse() as SoftwarePackage
|
49 |
|
50 | expect(environ.name).toEqual('rrequirements')
|
51 |
|
52 | const reqs = environ.softwareRequirements
|
53 | expect(reqs).not.toBeNull()
|
54 | expect(reqs.map(req => req.name)).toEqual(['packageone', 'packagetwo'])
|
55 | })
|
56 |
|
57 |
|
58 |
|
59 |
|
60 |
|
61 | test('parse:r-mixed', async () => {
|
62 | const parser = new RParser(urlFetcher, fixture('r-mixed'))
|
63 | const environ = await parser.parse() as SoftwarePackage
|
64 |
|
65 | const reqs = environ.softwareRequirements
|
66 | expect(reqs).not.toBeNull()
|
67 | expect(reqs.map(req => req.name)).toEqual(['car', 'coin', 'ggplot2', 'httr', 'lsmeans'])
|
68 | })
|
69 |
|
70 |
|
71 |
|
72 |
|
73 |
|
74 | test('parse:r-gsl', async () => {
|
75 | const parser = new RParser(urlFetcher, fixture('r-gsl'))
|
76 | const environ = await parser.parse() as SoftwarePackage
|
77 |
|
78 | const reqs = environ.softwareRequirements
|
79 | expect(reqs).not.toBeNull()
|
80 | expect(reqs.map(req => req.name)).toEqual(['gsl'])
|
81 |
|
82 | const gsl = reqs.filter(req => req.name === 'gsl')[0]
|
83 | const gslReqs = gsl.softwareRequirements
|
84 | expect(gslReqs[0].name).toEqual('libgsl-dev')
|
85 | expect(gslReqs[1].name).toEqual('libgsl2')
|
86 | })
|