Merge pull request #870 from atom/some-files-are-just-too-evil

Some files are just too evil
This commit is contained in:
Paul Betts
2013-10-11 15:34:54 -07:00
9 changed files with 57 additions and 12 deletions

1
.gitignore vendored
View File

@@ -8,3 +8,4 @@ npm-debug.log
/tags
/atom-shell/
docs/output
spec/fixtures/evil-files/

View File

@@ -1 +0,0 @@
I am evil because there's a UTF-8 character right here: ă

View File

@@ -1 +0,0 @@
I am evil because there are spaces in my name

View File

@@ -1 +0,0 @@
I am evil because there's a newline in my name

View File

@@ -1 +0,0 @@
I am evil because there's a " in my filename. Why you do that!?

View File

@@ -1 +0,0 @@
I am evil because there's a UTF-8 character in my name

View File

@@ -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 = []

View 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')

View File

@@ -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'