mirror of
https://github.com/atom/atom.git
synced 2026-01-23 13:58:08 -05:00
Merge pull request #870 from atom/some-files-are-just-too-evil
Some files are just too evil
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -8,3 +8,4 @@ npm-debug.log
|
||||
/tags
|
||||
/atom-shell/
|
||||
docs/output
|
||||
spec/fixtures/evil-files/
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
I am evil because there's a UTF-8 character right here: ă
|
||||
@@ -1 +0,0 @@
|
||||
I am evil because there are spaces in my name
|
||||
1
spec/fixtures/evil-files/goddam
newlines
vendored
1
spec/fixtures/evil-files/goddam
newlines
vendored
@@ -1 +0,0 @@
|
||||
I am evil because there's a newline in my name
|
||||
1
spec/fixtures/evil-files/quote".txt
vendored
1
spec/fixtures/evil-files/quote".txt
vendored
@@ -1 +0,0 @@
|
||||
I am evil because there's a " in my filename. Why you do that!?
|
||||
1
spec/fixtures/evil-files/utfă.md
vendored
1
spec/fixtures/evil-files/utfă.md
vendored
@@ -1 +0,0 @@
|
||||
I am evil because there's a UTF-8 character in my name
|
||||
@@ -3,6 +3,7 @@ fstream = require 'fstream'
|
||||
Project = require '../src/project'
|
||||
{_, fs} = require 'atom'
|
||||
path = require 'path'
|
||||
platform = require './spec-helper-platform'
|
||||
BufferedProcess = require '../src/buffered-process'
|
||||
|
||||
describe "Project", ->
|
||||
@@ -394,13 +395,20 @@ describe "Project", ->
|
||||
matches = matches.concat(result.matches)
|
||||
|
||||
runs ->
|
||||
expect(paths.length).toBe 5
|
||||
matches.forEach (match) -> expect(match.matchText).toEqual 'evil'
|
||||
expect(paths[0]).toMatch /a_file_with_utf8.txt$/
|
||||
expect(paths[1]).toMatch /file with spaces.txt$/
|
||||
expect(paths[2]).toMatch /goddam\nnewlines$/m
|
||||
expect(paths[3]).toMatch /quote".txt$/m
|
||||
expect(path.basename(paths[4])).toBe "utfa\u0306.md"
|
||||
_.each(matches, (m) -> expect(m.matchText).toEqual 'evil')
|
||||
|
||||
if platform.isWindows()
|
||||
expect(paths.length).toBe 3
|
||||
expect(paths[0]).toMatch /a_file_with_utf8.txt$/
|
||||
expect(paths[1]).toMatch /file with spaces.txt$/
|
||||
expect(path.basename(paths[2])).toBe "utfa\u0306.md"
|
||||
else
|
||||
expect(paths.length).toBe 5
|
||||
expect(paths[0]).toMatch /a_file_with_utf8.txt$/
|
||||
expect(paths[1]).toMatch /file with spaces.txt$/
|
||||
expect(paths[2]).toMatch /goddam\nnewlines$/m
|
||||
expect(paths[3]).toMatch /quote".txt$/m
|
||||
expect(path.basename(paths[4])).toBe "utfa\u0306.md"
|
||||
|
||||
it "ignores case if the regex includes the `i` flag", ->
|
||||
results = []
|
||||
|
||||
38
spec/spec-helper-platform.coffee
Normal file
38
spec/spec-helper-platform.coffee
Normal file
@@ -0,0 +1,38 @@
|
||||
path = require 'path'
|
||||
fsUtils = require '../src/fs-utils'
|
||||
|
||||
{_} = require 'atom'
|
||||
|
||||
## Platform specific helpers
|
||||
module.exports =
|
||||
# Public: Returns true if being run from within Windows
|
||||
isWindows: ->
|
||||
!!process.platform.match /^win/
|
||||
|
||||
# Public: Some files can not exist on Windows filesystems, so we have to
|
||||
# selectively generate our fixtures.
|
||||
#
|
||||
# Returns nothing.
|
||||
generateEvilFiles: ->
|
||||
evilFilesPath = path.join(__dirname, 'fixtures', 'evil-files')
|
||||
fsUtils.remove(evilFilesPath) if fsUtils.exists(evilFilesPath)
|
||||
fsUtils.mkdirSync(evilFilesPath)
|
||||
|
||||
if (@isWindows())
|
||||
filenames = [
|
||||
"a_file_with_utf8.txt",
|
||||
"file with spaces.txt",
|
||||
"utfa\u0306.md"
|
||||
]
|
||||
else
|
||||
filenames = [
|
||||
"a_file_with_utf8.txt",
|
||||
"file with spaces.txt",
|
||||
"goddam\nnewlines",
|
||||
"quote\".txt",
|
||||
"utfa\u0306.md"
|
||||
]
|
||||
|
||||
for filename in filenames
|
||||
fd = fsUtils.writeFileSync(path.join(evilFilesPath, filename), 'evil file!', flag: 'w')
|
||||
|
||||
@@ -12,8 +12,11 @@ Project = require '../src/project'
|
||||
Editor = require '../src/editor'
|
||||
TokenizedBuffer = require '../src/tokenized-buffer'
|
||||
pathwatcher = require 'pathwatcher'
|
||||
platform = require './spec-helper-platform'
|
||||
clipboard = require 'clipboard'
|
||||
|
||||
platform.generateEvilFiles()
|
||||
|
||||
atom.themes.loadBaseStylesheets()
|
||||
atom.themes.requireStylesheet '../static/jasmine'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user