forked from cypress-io/cypress
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfiles_spec.js
More file actions
122 lines (103 loc) · 4.45 KB
/
Copy pathfiles_spec.js
File metadata and controls
122 lines (103 loc) · 4.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
require('../spec_helper')
const config = require(`${root}lib/config`)
const files = require(`${root}lib/files`)
const FixturesHelper = require('@tooling/system-tests/lib/fixtures')
describe('lib/files', () => {
beforeEach(function () {
FixturesHelper.scaffold()
this.todosPath = FixturesHelper.projectPath('todos')
return config.get(this.todosPath).then((cfg) => {
this.config = cfg;
({ projectRoot: this.projectRoot } = cfg)
})
})
afterEach(() => {
return FixturesHelper.remove()
})
context('#readFile', () => {
it('returns contents and full file path', function () {
return files.readFile(this.projectRoot, 'tests/_fixtures/message.txt').then(({ contents, filePath }) => {
expect(contents).to.eq('foobarbaz')
expect(filePath).to.include('/.projects/todos/tests/_fixtures/message.txt')
})
})
it('returns uses utf8 by default', function () {
return files.readFile(this.projectRoot, 'tests/_fixtures/ascii.foo').then(({ contents }) => {
expect(contents).to.eq('\n')
})
})
it('uses encoding specified in options', function () {
return files.readFile(this.projectRoot, 'tests/_fixtures/ascii.foo', { encoding: 'ascii' }).then(({ contents }) => {
expect(contents).to.eq('o#?\n')
})
})
// https://github.com/cypress-io/cypress/issues/1558
it('explicit null encoding is sent to driver as a Buffer', function () {
return files.readFile(this.projectRoot, 'tests/_fixtures/ascii.foo', { encoding: null }).then(({ contents }) => {
expect(contents).to.eql(Buffer.from('\n'))
})
})
it('parses json to valid JS object', function () {
return files.readFile(this.projectRoot, 'tests/_fixtures/users.json').then(({ contents }) => {
expect(contents).to.eql([
{
id: 1,
name: 'brian',
}, {
id: 2,
name: 'jennifer',
},
])
})
})
})
context('#writeFile', () => {
it('writes the file\'s contents and returns contents and full file path', function () {
return files.writeFile(this.projectRoot, '.projects/write_file.txt', 'foo').then(() => {
return files.readFile(this.projectRoot, '.projects/write_file.txt').then(({ contents, filePath }) => {
expect(contents).to.equal('foo')
expect(filePath).to.include('/.projects/todos/.projects/write_file.txt')
})
})
})
it('uses encoding specified in options', function () {
return files.writeFile(this.projectRoot, '.projects/write_file.txt', '', { encoding: 'ascii' }).then(() => {
return files.readFile(this.projectRoot, '.projects/write_file.txt').then(({ contents }) => {
expect(contents).to.equal('�')
})
})
})
// https://github.com/cypress-io/cypress/issues/1558
it('explicit null encoding is written exactly as received', function () {
return files.writeFile(this.projectRoot, '.projects/write_file.txt', Buffer.from(''), { encoding: null }).then(() => {
return files.readFile(this.projectRoot, '.projects/write_file.txt', { encoding: null }).then(({ contents }) => {
expect(contents).to.eql(Buffer.from(''))
})
})
})
it('overwrites existing file by default', function () {
return files.writeFile(this.projectRoot, '.projects/write_file.txt', 'foo').then(() => {
return files.readFile(this.projectRoot, '.projects/write_file.txt').then(({ contents }) => {
expect(contents).to.equal('foo')
return files.writeFile(this.projectRoot, '.projects/write_file.txt', 'bar').then(() => {
return files.readFile(this.projectRoot, '.projects/write_file.txt').then(({ contents }) => {
expect(contents).to.equal('bar')
})
})
})
})
})
it('appends content to file when specified', function () {
return files.writeFile(this.projectRoot, '.projects/write_file.txt', 'foo').then(() => {
return files.readFile(this.projectRoot, '.projects/write_file.txt').then(({ contents }) => {
expect(contents).to.equal('foo')
return files.writeFile(this.projectRoot, '.projects/write_file.txt', 'bar', { flag: 'a+' }).then(() => {
return files.readFile(this.projectRoot, '.projects/write_file.txt').then(({ contents }) => {
expect(contents).to.equal('foobar')
})
})
})
})
})
})
})