2021-02-24 02:49:52 +01:00
// Copyright 2021 Google Inc. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package android
2021-03-16 15:08:00 +01:00
import (
"testing"
)
2021-02-24 02:49:52 +01:00
// Make sure that FixturePreparer instances are only called once per fixture and in the order in
// which they were added.
func TestFixtureDedup ( t * testing . T ) {
list := [ ] string { }
appendToList := func ( s string ) FixturePreparer {
return FixtureModifyConfig ( func ( _ Config ) {
list = append ( list , s )
} )
}
preparer1 := appendToList ( "preparer1" )
preparer2 := appendToList ( "preparer2" )
preparer3 := appendToList ( "preparer3" )
2021-03-16 18:46:12 +01:00
preparer4 := OptionalFixturePreparer ( appendToList ( "preparer4" ) )
nilPreparer := OptionalFixturePreparer ( nil )
2021-02-24 02:49:52 +01:00
2021-03-16 18:46:12 +01:00
preparer1Then2 := GroupFixturePreparers ( preparer1 , preparer2 , nilPreparer )
2021-02-24 02:49:52 +01:00
2021-02-28 02:38:51 +01:00
preparer2Then1 := GroupFixturePreparers ( preparer2 , preparer1 )
2021-02-24 02:49:52 +01:00
2021-03-19 19:20:59 +01:00
group := GroupFixturePreparers ( preparer1 , preparer2 , preparer1 , preparer1Then2 )
2021-02-24 02:49:52 +01:00
2021-03-19 19:20:59 +01:00
extension := group . Extend ( preparer4 , preparer2 )
2021-02-24 02:49:52 +01:00
2021-03-30 23:11:24 +02:00
GroupFixturePreparers ( extension , preparer1 , preparer2 , preparer2Then1 , preparer3 ) . Fixture ( t )
2021-02-24 02:49:52 +01:00
2021-03-12 13:20:59 +01:00
AssertDeepEquals ( t , "preparers called in wrong order" ,
2021-02-24 02:49:52 +01:00
[ ] string { "preparer1" , "preparer2" , "preparer4" , "preparer3" } , list )
}
2021-03-16 15:08:00 +01:00
func TestFixtureValidateMockFS ( t * testing . T ) {
t . Run ( "absolute path" , func ( t * testing . T ) {
AssertPanicMessageContains ( t , "source path validation failed" , "Path is outside directory: /abs/path/Android.bp" , func ( ) {
2021-03-30 23:11:24 +02:00
FixtureAddFile ( "/abs/path/Android.bp" , nil ) . Fixture ( t )
2021-03-16 15:08:00 +01:00
} )
} )
t . Run ( "not canonical" , func ( t * testing . T ) {
AssertPanicMessageContains ( t , "source path validation failed" , ` path "path/with/../in/it/Android.bp" is not a canonical path, use "path/in/it/Android.bp" instead ` , func ( ) {
2021-03-30 23:11:24 +02:00
FixtureAddFile ( "path/with/../in/it/Android.bp" , nil ) . Fixture ( t )
2021-03-16 15:08:00 +01:00
} )
} )
t . Run ( "FixtureAddFile" , func ( t * testing . T ) {
AssertPanicMessageContains ( t , "source path validation failed" , ` cannot add output path "out/Android.bp" to the mock file system ` , func ( ) {
2021-03-30 23:11:24 +02:00
FixtureAddFile ( "out/Android.bp" , nil ) . Fixture ( t )
2021-03-16 15:08:00 +01:00
} )
} )
t . Run ( "FixtureMergeMockFs" , func ( t * testing . T ) {
AssertPanicMessageContains ( t , "source path validation failed" , ` cannot add output path "out/Android.bp" to the mock file system ` , func ( ) {
2021-03-30 23:11:24 +02:00
FixtureMergeMockFs ( MockFS {
2021-03-16 15:08:00 +01:00
"out/Android.bp" : nil ,
2021-03-30 23:11:24 +02:00
} ) . Fixture ( t )
2021-03-16 15:08:00 +01:00
} )
} )
t . Run ( "FixtureModifyMockFS" , func ( t * testing . T ) {
AssertPanicMessageContains ( t , "source path validation failed" , ` cannot add output path "out/Android.bp" to the mock file system ` , func ( ) {
2021-03-30 23:11:24 +02:00
FixtureModifyMockFS ( func ( fs MockFS ) {
2021-03-16 15:08:00 +01:00
fs [ "out/Android.bp" ] = nil
2021-03-30 23:11:24 +02:00
} ) . Fixture ( t )
2021-03-16 15:08:00 +01:00
} )
} )
}